diff options
694 files changed, 13125 insertions, 4242 deletions
diff --git a/.htaccess b/.htaccess index f656d6de444..740329e15a0 100644 --- a/.htaccess +++ b/.htaccess @@ -51,7 +51,7 @@ Options -MultiViews RewriteRule ^core/js/oc.js$ index.php/core/js/oc.js [PT,E=PATH_INFO:$1] RewriteRule ^core/preview.png$ index.php/core/preview.png [PT,E=PATH_INFO:$1] - RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff)$ + RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff|ico)$ RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$ RewriteCond %{REQUEST_FILENAME} !/remote.php RewriteCond %{REQUEST_FILENAME} !/public.php @@ -305,7 +305,8 @@ Robin Appelman <icewind@owncloud.com> Robin <robin@Amaya.(none)> Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail.com> Robin Appelman <icewind@owncloud.com> Robin Appelman <icewind1991@gmail> Robin Appelman <icewind@owncloud.com> Robin Appelman <robin@icewind.nl> -Robin McCorkell <rmccorkell@karoshi.org.uk> Robin McCorkell <rmccorkell@owncloud.com> +Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@karoshi.org.uk> +Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@owncloud.com> Rodrigo Hjort <rodrigo.hjort@gmail.com> Roeland Jago Douma <rullzer@owncloud.com> Roeland Jago Douma <roeland@famdouma.nl> rok <brejktru@gmail.com> diff --git a/.mention-bot b/.mention-bot index b342edbd214..766ea2bacf2 100644 --- a/.mention-bot +++ b/.mention-bot @@ -3,9 +3,21 @@ "numFilesToCheck": 5, "alwaysNotifyForPaths": [ { - "name": "DeepDiver1975", - "files": ["apps/dav/**"] + "name": "DeepDiver1975", + "files": [ + "apps/dav/**" + ] + }, + { + "name": "Xenopathic", + "files": [ + "apps/files_external/**" + ] } ], - "userBlacklist": ["owncloud-bot"] + "userBlacklist": [ + "owncloud-bot", + "scrutinizer-auto-fixer", + "th3fallen" + ] } diff --git a/.travis.yml b/.travis.yml index c599a0c192b..4f79311c33c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,22 +25,22 @@ before_install: install: - sh -c "if [ '$TEST_DAV' = '1' ]; then bash tests/travis/install.sh $DB; fi" + - sh -c "if [ '$TEST_DAV' = '1' ]; then bash apps/dav/tests/travis/$TC/install.sh; fi" + script: - sh -c "if [ '$TEST_DAV' != '1' ]; then echo \"Not testing DAV\"; fi" - sh -c "if [ '$TEST_DAV' = '1' ]; then echo \"Testing DAV\"; fi" - - sh -c "if [ '$TEST_DAV' = '1' ]; then bash apps/dav/tests/travis/$TC.sh; fi" + - sh -c "if [ '$TEST_DAV' = '1' ]; then bash apps/dav/tests/travis/$TC/script.sh; fi" matrix: include: - php: 5.4 env: DB=pgsql;TC=litmus-v1 - php: 5.4 - env: DB=sqlite;TC=carddavtester -# - php: 5.4 -# env: DB=pgsql;TC=carddavtester -# - php: 5.4 -# env: DB=mysql;TC=caldavtester + env: DB=sqlite;TC=carddav + - php: 5.4 + env: DB=sqlite;TC=caldav fast_finish: true diff --git a/3rdparty b/3rdparty -Subproject 8face268eb0db84b3a53b84f6c2a3d4ab555e61 +Subproject 6646666554faeeecc5792b60b770d3bcda05172 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ecd2b1e49e5..66d54c61e98 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,20 +18,8 @@ If you have questions about how to install or use ownCloud, please direct these - [iOS client](https://github.com/owncloud/ios/issues) - [Desktop client](https://github.com/owncloud/client/issues) - [Documentation](https://github.com/owncloud/documentation/issues) - - Apps: - - [Activity](https://github.com/owncloud/activity/issues) - - [Bookmarks](https://github.com/owncloud/bookmarks/issues) - - [Calendar](https://github.com/owncloud/calendar/issues) - - [Contacts](https://github.com/owncloud/contacts/issues) - - [Documents](https://github.com/owncloud/documents/issues) - - [Gallery](https://github.com/owncloud/gallery/issues) - - [Mail](https://github.com/owncloud/mail/issues) - - [Music](https://github.com/owncloud/music/issues) - - [News](https://github.com/owncloud/news/issues) - - [Notes](https://github.com/owncloud/notes/issues) - - [Shorty](https://github.com/owncloud/shorty/issues) - - [Tasks](https://github.com/owncloud/tasks/issues) - - [All other apps](https://github.com/owncloud/apps/issues) + - [ownCloud apps](https://github.com/owncloud/core/wiki/Maintainers#apps-repo) + * Report the issue using our [template][template], it includes all the information we need to track down the issue. Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues. diff --git a/README.md b/README.md index 1e8f6e828a8..c1a9043ce70 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,14 @@ https://doc.owncloud.org/server/9.0/developer_manual/app/index.html ## Contribution Guidelines https://owncloud.org/contribute/ +## Support +Learn about the diffrent ways you can get support for ownCloud: https://owncloud.org/support/ + ## Get in touch * :clipboard: [Forum](https://forum.owncloud.org) * :envelope: [Mailing list](https://mailman.owncloud.org/mailman/listinfo) -* :busts_in_silhouette: [IRC channel](https://webchat.freenode.net/?channels=owncloud) +* :hash: [IRC channel](https://webchat.freenode.net/?channels=owncloud) +* :busts_in_silhouette: [Facebook] (https://facebook.com/ownclouders) * :hatching_chick: [Twitter](https://twitter.com/ownClouders) ## Important notice on translations diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php new file mode 100644 index 00000000000..950754ee941 --- /dev/null +++ b/apps/dav/appinfo/app.php @@ -0,0 +1,42 @@ +<?php +/** + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +$cm = \OC::$server->getContactsManager(); +$cm->register(function() use ($cm) { + $db = \OC::$server->getDatabaseConnection(); + $userId = \OC::$server->getUserSession()->getUser()->getUID(); + $principal = new \OCA\DAV\Connector\Sabre\Principal( + \OC::$server->getConfig(), + \OC::$server->getUserManager() + ); + $cardDav = new \OCA\DAV\CardDAV\CardDavBackend($db, $principal, \OC::$server->getLogger()); + $addressBooks = $cardDav->getAddressBooksForUser("principals/$userId"); + foreach ($addressBooks as $addressBookInfo) { + $addressBook = new \OCA\DAV\CardDAV\AddressBook($cardDav, $addressBookInfo); + $cm->registerAddressBook( + new OCA\DAV\CardDAV\AddressBookImpl( + $addressBook, + $addressBookInfo, + $cardDav + ) + ); + } +}); diff --git a/apps/dav/appinfo/database.xml b/apps/dav/appinfo/database.xml index 48641c2be6f..50c8aa7d8ca 100644 --- a/apps/dav/appinfo/database.xml +++ b/apps/dav/appinfo/database.xml @@ -572,6 +572,78 @@ CREATE TABLE calendarobjects ( </table> <table> + <name>*dbprefix*cards_properties</name> + <declaration> + <field> + <name>id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <autoincrement>1</autoincrement> + <unsigned>true</unsigned> + <length>11</length> + </field> + <field> + <name>addressbookid</name> + <type>integer</type> + <default></default> + <notnull>true</notnull> + <length>11</length> + </field> + <field> + <name>cardid</name> + <type>integer</type> + <default></default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>11</length> + </field> + <field> + <name>name</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>64</length> + </field> + <field> + <name>value</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>255</length> + </field> + <field> + <name>preferred</name> + <type>integer</type> + <default>1</default> + <notnull>true</notnull> + <length>4</length> + </field> + <index> + <name>card_contactid_index</name> + <field> + <name>cardid</name> + <sorting>ascending</sorting> + </field> + </index> + <index> + <name>card_name_index</name> + <field> + <name>name</name> + <sorting>ascending</sorting> + </field> + </index> + <index> + <name>card_value_index</name> + <field> + <name>value</name> + <sorting>ascending</sorting> + </field> + </index> + </declaration> + </table> + + <table> <name>*dbprefix*dav_shares</name> <declaration> <field> diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 5f681e784fc..d9eefaefcf1 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -6,8 +6,6 @@ <licence>AGPL</licence> <author>owncloud.org</author> <version>0.1.3</version> - <requiremin>9.0</requiremin> - <shipped>true</shipped> <standalone/> <default_enable/> <types> @@ -21,4 +19,7 @@ <public> <webdav>appinfo/v1/publicwebdav.php</webdav> </public> + <dependencies> + <owncloud min-version="9.0" max-version="9.0" /> + </dependencies> </info> diff --git a/apps/dav/appinfo/register_command.php b/apps/dav/appinfo/register_command.php index af41036cddc..603832e0c48 100644 --- a/apps/dav/appinfo/register_command.php +++ b/apps/dav/appinfo/register_command.php @@ -8,8 +8,9 @@ $config = \OC::$server->getConfig(); $dbConnection = \OC::$server->getDatabaseConnection(); $userManager = OC::$server->getUserManager(); $config = \OC::$server->getConfig(); +$logger = \OC::$server->getLogger(); /** @var Symfony\Component\Console\Application $application */ -$application->add(new CreateAddressBook($userManager, $dbConnection, $config)); +$application->add(new CreateAddressBook($userManager, $dbConnection, $config, $logger)); $application->add(new CreateCalendar($userManager, $dbConnection)); $application->add(new SyncSystemAddressBook($userManager, $dbConnection, $config)); diff --git a/apps/dav/command/createaddressbook.php b/apps/dav/command/createaddressbook.php index ea89e7aa0a8..7b70cea7f80 100644 --- a/apps/dav/command/createaddressbook.php +++ b/apps/dav/command/createaddressbook.php @@ -6,6 +6,7 @@ use OCA\DAV\CardDAV\CardDavBackend; use OCA\DAV\Connector\Sabre\Principal; use OCP\IConfig; use OCP\IDBConnection; +use OCP\ILogger; use OCP\IUserManager; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; @@ -23,15 +24,25 @@ class CreateAddressBook extends Command { /** @var IConfig */ private $config; + /** @var ILogger */ + private $logger; + /** * @param IUserManager $userManager * @param IDBConnection $dbConnection + * @param IConfig $config + * @param ILogger $logger */ - function __construct(IUserManager $userManager, IDBConnection $dbConnection, IConfig $config) { + function __construct(IUserManager $userManager, + IDBConnection $dbConnection, + IConfig $config, + ILogger $logger + ) { parent::__construct(); $this->userManager = $userManager; $this->dbConnection = $dbConnection; $this->config = $config; + $this->logger = $logger; } protected function configure() { diff --git a/apps/dav/lib/carddav/addressbookimpl.php b/apps/dav/lib/carddav/addressbookimpl.php new file mode 100644 index 00000000000..838ef5aec65 --- /dev/null +++ b/apps/dav/lib/carddav/addressbookimpl.php @@ -0,0 +1,219 @@ +<?php +/** + * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\CardDAV; + +use OCP\Constants; +use OCP\IAddressBook; +use Sabre\VObject\Component\VCard; +use Sabre\VObject\Property\Text; +use Sabre\VObject\Reader; +use Sabre\VObject\UUIDUtil; + +class AddressBookImpl implements IAddressBook { + + /** @var CardDavBackend */ + private $backend; + + /** @var array */ + private $addressBookInfo; + + /** @var AddressBook */ + private $addressBook; + + /** + * AddressBookImpl constructor. + * + * @param AddressBook $addressBook + * @param array $addressBookInfo + * @param CardDavBackend $backend + */ + public function __construct( + AddressBook $addressBook, + array $addressBookInfo, + CardDavBackend $backend) { + + $this->addressBook = $addressBook; + $this->addressBookInfo = $addressBookInfo; + $this->backend = $backend; + } + + /** + * @return string defining the technical unique key + * @since 5.0.0 + */ + public function getKey() { + return $this->addressBookInfo['id']; + } + + /** + * In comparison to getKey() this function returns a human readable (maybe translated) name + * + * @return mixed + * @since 5.0.0 + */ + public function getDisplayName() { + return $this->addressBookInfo['{DAV:}displayname']; + } + + /** + * @param string $pattern which should match within the $searchProperties + * @param array $searchProperties defines the properties within the query pattern should match + * @param array $options - for future use. One should always have options! + * @return array an array of contacts which are arrays of key-value-pairs + * @since 5.0.0 + */ + public function search($pattern, $searchProperties, $options) { + $result = $this->backend->search($this->getKey(), $pattern, $searchProperties); + + $vCards = []; + foreach ($result as $cardData) { + $vCards[] = $this->vCard2Array($this->readCard($cardData)); + } + + return $vCards; + } + + /** + * @param array $properties this array if key-value-pairs defines a contact + * @return array an array representing the contact just created or updated + * @since 5.0.0 + */ + public function createOrUpdate($properties) { + $update = false; + if (!isset($properties['UID'])) { // create a new contact + $uid = $this->createUid(); + $uri = $uid . '.vcf'; + $vCard = $this->createEmptyVCard($uid); + } else { // update existing contact + $uid = $properties['UID']; + $uri = $uid . '.vcf'; + $vCardData = $this->backend->getCard($this->getKey(), $uri); + $vCard = $this->readCard($vCardData['carddata']); + $update = true; + } + + foreach ($properties as $key => $value) { + $vCard->$key = $vCard->createProperty($key, $value); + } + + if ($update) { + $this->backend->updateCard($this->getKey(), $uri, $vCard->serialize()); + } else { + $this->backend->createCard($this->getKey(), $uri, $vCard->serialize()); + } + + return $this->vCard2Array($vCard); + + } + + /** + * @return mixed + * @since 5.0.0 + */ + public function getPermissions() { + $permissions = $this->addressBook->getACL(); + $result = 0; + foreach ($permissions as $permission) { + switch($permission['privilege']) { + case '{DAV:}read': + $result |= Constants::PERMISSION_READ; + break; + case '{DAV:}write': + $result |= Constants::PERMISSION_CREATE; + $result |= Constants::PERMISSION_UPDATE; + break; + case '{DAV:}all': + $result |= Constants::PERMISSION_ALL; + break; + } + } + + return $result; + } + + /** + * @param object $id the unique identifier to a contact + * @return bool successful or not + * @since 5.0.0 + */ + public function delete($id) { + $uri = $this->backend->getCardUri($id); + return $this->backend->deleteCard($this->addressBookInfo['id'], $uri); + } + + /** + * read vCard data into a vCard object + * + * @param string $cardData + * @return VCard + */ + protected function readCard($cardData) { + return Reader::read($cardData); + } + + /** + * create UID for contact + * + * @return string + */ + protected function createUid() { + do { + $uid = $this->getUid(); + } while (!empty($this->backend->getContact($uid . '.vcf'))); + + return $uid; + } + + /** + * getUid is only there for testing, use createUid instead + */ + protected function getUid() { + return UUIDUtil::getUUID(); + } + + /** + * create empty vcard + * + * @param string $uid + * @return VCard + */ + protected function createEmptyVCard($uid) { + $vCard = new VCard(); + $vCard->add(new Text($vCard, 'UID', $uid)); + return $vCard; + } + + /** + * create array with all vCard properties + * + * @param VCard $vCard + * @return array + */ + protected function vCard2Array(VCard $vCard) { + $result = []; + foreach ($vCard->children as $property) { + $result[$property->name] = $property->getValue(); + } + return $result; + } +} diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php index 29b056672b4..95175b20d1b 100644 --- a/apps/dav/lib/carddav/carddavbackend.php +++ b/apps/dav/lib/carddav/carddavbackend.php @@ -23,19 +23,48 @@ namespace OCA\DAV\CardDAV; use OCA\DAV\Connector\Sabre\Principal; +use OCP\IDBConnection; +use OCP\ILogger; use Sabre\CardDAV\Backend\BackendInterface; use Sabre\CardDAV\Backend\SyncSupport; use Sabre\CardDAV\Plugin; use Sabre\DAV\Exception\BadRequest; +use Sabre\VObject\Component\VCard; +use Sabre\VObject\Reader; class CardDavBackend implements BackendInterface, SyncSupport { /** @var Principal */ private $principalBackend; - public function __construct(\OCP\IDBConnection $db, Principal $principalBackend) { + /** @var ILogger */ + private $logger; + + /** @var string */ + private $dbCardsTable = 'cards'; + + /** @var string */ + private $dbCardsPropertiesTable = 'cards_properties'; + + /** @var IDBConnection */ + private $db; + + /** @var array properties to index */ + public static $indexProperties = array( + 'BDAY', 'UID', 'N', 'FN', 'TITLE', 'ROLE', 'NOTE', 'NICKNAME', + 'ORG', 'CATEGORIES', 'EMAIL', 'TEL', 'IMPP', 'ADR', 'URL', 'GEO', 'CLOUD'); + + /** + * CardDavBackend constructor. + * + * @param IDBConnection $db + * @param Principal $principalBackend + * @param ILogger $logger + */ + public function __construct(IDBConnection $db, Principal $principalBackend, ILogger $logger) { $this->db = $db; $this->principalBackend = $principalBackend; + $this->logger = $logger; } /** @@ -263,6 +292,11 @@ class CardDavBackend implements BackendInterface, SyncSupport { ->where($query->expr()->eq('resourceid', $query->createNamedParameter($addressBookId))) ->andWhere($query->expr()->eq('type', $query->createNamedParameter('addressbook'))) ->execute(); + + $query->delete($this->dbCardsPropertiesTable) + ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) + ->execute(); + } /** @@ -398,7 +432,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { $query = $this->db->getQueryBuilder(); $query->insert('cards') ->values([ - 'carddata' => $query->createNamedParameter($cardData), + 'carddata' => $query->createNamedParameter($cardData, \PDO::PARAM_LOB), 'uri' => $query->createNamedParameter($cardUri), 'lastmodified' => $query->createNamedParameter(time()), 'addressbookid' => $query->createNamedParameter($addressBookId), @@ -408,6 +442,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { ->execute(); $this->addChange($addressBookId, $cardUri, 1); + $this->updateProperties($addressBookId, $cardUri, $cardData); return '"' . $etag . '"'; } @@ -451,6 +486,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { ->execute(); $this->addChange($addressBookId, $cardUri, 2); + $this->updateProperties($addressBookId, $cardUri, $cardData); return '"' . $etag . '"'; } @@ -463,6 +499,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @return bool */ function deleteCard($addressBookId, $cardUri) { + $cardId = $this->getCardId($cardUri); $query = $this->db->getQueryBuilder(); $ret = $query->delete('cards') ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) @@ -471,7 +508,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { $this->addChange($addressBookId, $cardUri, 3); - return $ret === 1; + if ($ret === 1) { + $this->purgeProperties($addressBookId, $cardId); + return true; + } + + return false; } /** @@ -638,6 +680,87 @@ class CardDavBackend implements BackendInterface, SyncSupport { } /** + * search contact + * + * @param int $addressBookId + * @param string $pattern which should match within the $searchProperties + * @param array $searchProperties defines the properties within the query pattern should match + * @return array an array of contacts which are arrays of key-value-pairs + */ + public function search($addressBookId, $pattern, $searchProperties) { + $query = $this->db->getQueryBuilder(); + $query2 = $this->db->getQueryBuilder(); + $query2->selectDistinct('cp.cardid')->from($this->dbCardsPropertiesTable, 'cp'); + foreach ($searchProperties as $property) { + $query2->orWhere( + $query2->expr()->andX( + $query2->expr()->eq('cp.name', $query->createNamedParameter($property)), + $query2->expr()->like('cp.value', $query->createNamedParameter('%' . $this->db->escapeLikeParameter($pattern) . '%')) + ) + ); + } + $query2->andWhere($query2->expr()->eq('cp.addressbookid', $query->createNamedParameter($addressBookId))); + + $query->select('c.carddata')->from($this->dbCardsTable, 'c') + ->where($query->expr()->in('c.id', $query->createFunction($query2->getSQL()))); + + $result = $query->execute(); + $cards = $result->fetchAll(); + + $result->closeCursor(); + + return array_map(function($array) {return $this->readBlob($array['carddata']);}, $cards); + + } + + /** + * get URI from a given contact + * + * @param int $id + * @return string + */ + public function getCardUri($id) { + $query = $this->db->getQueryBuilder(); + $query->select('uri')->from($this->dbCardsTable) + ->where($query->expr()->eq('id', $query->createParameter('id'))) + ->setParameter('id', $id); + + $result = $query->execute(); + $uri = $result->fetch(); + $result->closeCursor(); + + if (!isset($uri['uri'])) { + throw new \InvalidArgumentException('Card does not exists: ' . $id); + } + + return $uri['uri']; + } + + /** + * return contact with the given URI + * + * @param string $uri + * @returns array + */ + public function getContact($uri) { + $result = []; + $query = $this->db->getQueryBuilder(); + $query->select('*')->from($this->dbCardsTable) + ->where($query->expr()->eq('uri', $query->createParameter('uri'))) + ->setParameter('uri', $uri); + $queryResult = $query->execute(); + $contact = $queryResult->fetch(); + $queryResult->closeCursor(); + + if (is_array($contact)) { + $result = $contact; + } + + return $result; + } + + + /** * @param string $addressBookUri * @param string $element */ @@ -658,7 +781,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { } // remove the share if it already exists - $this->unshare($addressBookUri, $element); + $this->unshare($addressBookUri, $element['href']); $query = $this->db->getQueryBuilder(); $query->insert('dav_shares') @@ -677,8 +800,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @param string $element */ private function unshare($addressBookUri, $element) { - $user = $element['href']; - $parts = explode(':', $user, 2); + $parts = explode(':', $element, 2); if ($parts[0] !== 'principal') { return; } @@ -734,4 +856,93 @@ class CardDavBackend implements BackendInterface, SyncSupport { return $shares; } + + /** + * update properties table + * + * @param int $addressBookId + * @param string $cardUri + * @param string $vCardSerialized + */ + protected function updateProperties($addressBookId, $cardUri, $vCardSerialized) { + $cardId = $this->getCardId($cardUri); + $vCard = $this->readCard($vCardSerialized); + + $this->purgeProperties($addressBookId, $cardId); + + $query = $this->db->getQueryBuilder(); + $query->insert($this->dbCardsPropertiesTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter($addressBookId), + 'cardid' => $query->createNamedParameter($cardId), + 'name' => $query->createParameter('name'), + 'value' => $query->createParameter('value'), + 'preferred' => $query->createParameter('preferred') + ] + ); + + foreach ($vCard->children as $property) { + if(!in_array($property->name, self::$indexProperties)) { + continue; + } + $preferred = 0; + foreach($property->parameters as $parameter) { + if ($parameter->name == 'TYPE' && strtoupper($parameter->getValue()) == 'PREF') { + $preferred = 1; + break; + } + } + $query->setParameter('name', $property->name); + $query->setParameter('value', substr($property->getValue(), 0, 254)); + $query->setParameter('preferred', $preferred); + $query->execute(); + } + } + + /** + * read vCard data into a vCard object + * + * @param string $cardData + * @return VCard + */ + protected function readCard($cardData) { + return Reader::read($cardData); + } + + /** + * delete all properties from a given card + * + * @param int $addressBookId + * @param int $cardId + */ + protected function purgeProperties($addressBookId, $cardId) { + $query = $this->db->getQueryBuilder(); + $query->delete($this->dbCardsPropertiesTable) + ->where($query->expr()->eq('cardid', $query->createNamedParameter($cardId))) + ->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))); + $query->execute(); + } + + /** + * get ID from a given contact + * + * @param string $uri + * @return int + */ + protected function getCardId($uri) { + $query = $this->db->getQueryBuilder(); + $query->select('id')->from($this->dbCardsTable) + ->where($query->expr()->eq('uri', $query->createNamedParameter($uri))); + + $result = $query->execute(); + $cardIds = $result->fetch(); + $result->closeCursor(); + + if (!isset($cardIds['id'])) { + throw new \InvalidArgumentException('Card does not exists: ' . $uri); + } + + return (int)$cardIds['id']; + } } diff --git a/apps/dav/lib/carddav/sharing/plugin.php b/apps/dav/lib/carddav/sharing/plugin.php index 99c6f8f912c..fd415b4566b 100644 --- a/apps/dav/lib/carddav/sharing/plugin.php +++ b/apps/dav/lib/carddav/sharing/plugin.php @@ -9,11 +9,24 @@ use Sabre\DAV\Exception\NotFound; use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\DAV\XMLUtil; +use Sabre\DAVACL\IACL; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; class Plugin extends ServerPlugin { + /** @var Auth */ + private $auth; + + /** @var IRequest */ + private $request; + + /** + * Plugin constructor. + * + * @param Auth $authBackEnd + * @param IRequest $request + */ public function __construct(Auth $authBackEnd, IRequest $request) { $this->auth = $authBackEnd; $this->request = $request; @@ -68,6 +81,7 @@ class Plugin extends ServerPlugin { function initialize(Server $server) { $this->server = $server; $server->resourceTypeMapping['OCA\\DAV\CardDAV\\ISharedAddressbook'] = '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}shared'; + $this->server->xml->elementMap['{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}share'] = 'OCA\\DAV\\CardDAV\\Sharing\\Xml\\ShareRequest'; $this->server->on('method:POST', [$this, 'httpPost']); } @@ -109,9 +123,7 @@ class Plugin extends ServerPlugin { // re-populated the request body with the existing data. $request->setBody($requestBody); - $dom = XMLUtil::loadDOMDocument($requestBody); - - $documentType = XMLUtil::toClarkNotation($dom->firstChild); + $message = $this->server->xml->parse($requestBody, $request->getUrl(), $documentType); switch ($documentType) { @@ -124,19 +136,18 @@ class Plugin extends ServerPlugin { return; } - $this->server->transactionType = 'post-calendar-share'; + $this->server->transactionType = 'post-oc-addressbook-share'; // Getting ACL info $acl = $this->server->getPlugin('acl'); // If there's no ACL support, we allow everything if ($acl) { + /** @var \Sabre\DAVACL\Plugin $acl */ $acl->checkPrivileges($path, '{DAV:}write'); } - $mutations = $this->parseShareRequest($dom); - - $node->updateShares($mutations[0], $mutations[1]); + $node->updateShares($message->set, $message->remove); $response->setStatus(200); // Adding this because sending a response body may cause issues, @@ -148,59 +159,6 @@ class Plugin extends ServerPlugin { } } - /** - * Parses the 'share' POST request. - * - * This method returns an array, containing two arrays. - * The first array is a list of new sharees. Every element is a struct - * containing a: - * * href element. (usually a mailto: address) - * * commonName element (often a first and lastname, but can also be - * false) - * * readOnly (true or false) - * * summary (A description of the share, can also be false) - * - * The second array is a list of sharees that are to be removed. This is - * just a simple array with 'hrefs'. - * - * @param \DOMDocument $dom - * @return array - */ - function parseShareRequest(\DOMDocument $dom) { - - $xpath = new \DOMXPath($dom); - $xpath->registerNamespace('cs', \Sabre\CardDAV\Plugin::NS_CARDDAV); - $xpath->registerNamespace('d', 'urn:DAV'); - - $set = []; - $elems = $xpath->query('cs:set'); - - for ($i = 0; $i < $elems->length; $i++) { - - $xset = $elems->item($i); - $set[] = [ - 'href' => $xpath->evaluate('string(d:href)', $xset), - 'commonName' => $xpath->evaluate('string(cs:common-name)', $xset), - 'summary' => $xpath->evaluate('string(cs:summary)', $xset), - 'readOnly' => $xpath->evaluate('boolean(cs:read)', $xset) !== false - ]; - - } - - $remove = []; - $elems = $xpath->query('cs:remove'); - - for ($i = 0; $i < $elems->length; $i++) { - - $xremove = $elems->item($i); - $remove[] = $xpath->evaluate('string(d:href)', $xremove); - - } - - return [$set, $remove]; - - } - private function protectAgainstCSRF() { $user = $this->auth->getCurrentUser(); if ($this->auth->isDavAuthenticated($user)) { diff --git a/apps/dav/lib/carddav/sharing/xml/sharerequest.php b/apps/dav/lib/carddav/sharing/xml/sharerequest.php new file mode 100644 index 00000000000..175c5ffc306 --- /dev/null +++ b/apps/dav/lib/carddav/sharing/xml/sharerequest.php @@ -0,0 +1,65 @@ +<?php + +namespace OCA\DAV\CardDAV\Sharing\Xml; + +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; + +class ShareRequest implements XmlDeserializable { + + public $set = []; + + public $remove = []; + + /** + * Constructor + * + * @param array $set + * @param array $remove + */ + function __construct(array $set, array $remove) { + + $this->set = $set; + $this->remove = $remove; + + } + + static function xmlDeserialize(Reader $reader) { + + $elems = $reader->parseInnerTree([ + '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV. '}set' => 'Sabre\\Xml\\Element\\KeyValue', + '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}remove' => 'Sabre\\Xml\\Element\\KeyValue', + ]); + + $set = []; + $remove = []; + + foreach ($elems as $elem) { + switch ($elem['name']) { + + case '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}set' : + $sharee = $elem['value']; + + $sumElem = '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}summary'; + $commonName = '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}common-name'; + + $set[] = [ + 'href' => $sharee['{DAV:}href'], + 'commonName' => isset($sharee[$commonName]) ? $sharee[$commonName] : null, + 'summary' => isset($sharee[$sumElem]) ? $sharee[$sumElem] : null, + 'readOnly' => !array_key_exists('{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}read-write', $sharee), + ]; + break; + + case '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}remove' : + $remove[] = $elem['value']['{DAV:}href']; + break; + + } + } + + return new self($set, $remove); + + } + +} diff --git a/apps/dav/lib/connector/sabre/file.php b/apps/dav/lib/connector/sabre/file.php index c66f627c0a3..6a0a39d04e7 100644 --- a/apps/dav/lib/connector/sabre/file.php +++ b/apps/dav/lib/connector/sabre/file.php @@ -329,7 +329,7 @@ class File extends Node implements IFile { if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PROPFIND') { return $mimeType; } - return \OC_Helper::getSecureMimeType($mimeType); + return \OC::$server->getMimeTypeDetector()->getSecureMimeType($mimeType); } /** diff --git a/apps/dav/lib/connector/sabre/objecttree.php b/apps/dav/lib/connector/sabre/objecttree.php index 2e9c1b9916c..809d202aea4 100644 --- a/apps/dav/lib/connector/sabre/objecttree.php +++ b/apps/dav/lib/connector/sabre/objecttree.php @@ -190,7 +190,7 @@ class ObjectTree extends \Sabre\DAV\Tree { $targetNodeExists = $this->nodeExists($destinationPath); $sourceNode = $this->getNodeForPath($sourcePath); if ($sourceNode instanceof \Sabre\DAV\ICollection && $targetNodeExists) { - throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode . ', target exists'); + throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists'); } list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourcePath); list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destinationPath); diff --git a/apps/dav/lib/rootcollection.php b/apps/dav/lib/rootcollection.php index 9ee32822bbd..96cc2bbc46a 100644 --- a/apps/dav/lib/rootcollection.php +++ b/apps/dav/lib/rootcollection.php @@ -41,11 +41,11 @@ class RootCollection extends SimpleCollection { \OC::$server->getSystemTagObjectMapper() ); - $usersCardDavBackend = new CardDavBackend($db, $principalBackend); + $usersCardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getLogger()); $usersAddressBookRoot = new AddressBookRoot($principalBackend, $usersCardDavBackend, 'principals/users'); $usersAddressBookRoot->disableListing = $disableListing; - $systemCardDavBackend = new CardDavBackend($db, $principalBackend); + $systemCardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getLogger()); $systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, 'principals/system'); $systemAddressBookRoot->disableListing = $disableListing; diff --git a/apps/dav/tests/travis/caldav/install.sh b/apps/dav/tests/travis/caldav/install.sh new file mode 100644 index 00000000000..e836e37f86f --- /dev/null +++ b/apps/dav/tests/travis/caldav/install.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +if [ ! -f CalDAVTester/run.py ]; then + cd "$SCRIPTPATH" + git clone https://github.com/DeepDiver1975/CalDAVTester.git + cd "$SCRIPTPATH/CalDAVTester" + python run.py -s + cd "$SCRIPTPATH" +fi + +# create test user +cd "$SCRIPTPATH/../../../../../" +OC_PASS=user01 php occ user:add --password-from-env user01 +php occ dav:create-calendar user01 calendar +OC_PASS=user02 php occ user:add --password-from-env user02 +php occ dav:create-calendar user02 calendar +cd "$SCRIPTPATH/../../../../../" diff --git a/apps/dav/tests/travis/caldav/script.sh b/apps/dav/tests/travis/caldav/script.sh new file mode 100644 index 00000000000..9a818b553f7 --- /dev/null +++ b/apps/dav/tests/travis/caldav/script.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." & + +sleep 30 + +# run the tests +cd "$SCRIPTPATH/CalDAVTester" +PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail -s "$SCRIPTPATH/../caldavtest/config/serverinfo.xml" -o cdt.txt \ + "$SCRIPTPATH/../caldavtest/tests/CalDAV/current-user-principal.xml" +RESULT=$? + +tail "$/../../../../../data-autotest/owncloud.log" + +exit $RESULT diff --git a/apps/dav/tests/travis/caldavtest/tests/CalDAV/current-user-principal.xml b/apps/dav/tests/travis/caldavtest/tests/CalDAV/current-user-principal.xml new file mode 100644 index 00000000000..d01058fee0a --- /dev/null +++ b/apps/dav/tests/travis/caldavtest/tests/CalDAV/current-user-principal.xml @@ -0,0 +1,151 @@ +<?xml version="1.0" standalone="no"?> + +<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd"> + +<!-- + Copyright (c) 2006-2015 Apple Inc. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<caldavtest> + <description>Test DAV:current-user-principal support</description> + + <require-feature> + <feature>caldav</feature> + <feature>current-user-principal</feature> + </require-feature> + + <start/> + + <test-suite name='Check for the property on /'> + <require-feature> + <feature>own-root</feature> + </require-feature> + <test name='1'> + <description>Check for authenticated property on /</description> + <request> + <method>PROPFIND</method> + <ruri>$root:</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/current-user-principal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value><![CDATA[{DAV:}current-user-principal$<href xmlns="DAV:">$principaluri1:</href>]]></value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>Check for authenticated property on / (user02)</description> + <request user="$userid2:" pswd="$pswd2:"> + <method>PROPFIND</method> + <ruri>$root:</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/current-user-principal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value><![CDATA[{DAV:}current-user-principal$<href xmlns="DAV:">$principaluri2:</href>]]></value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='Check for the property on /principals/'> + <test name='1'> + <description>Check for authenticated property on /</description> + <request> + <method>PROPFIND</method> + <ruri>$principalcollection:</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/current-user-principal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value><![CDATA[{DAV:}current-user-principal$<href xmlns="DAV:">$principaluri1:</href>]]></value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>Check for unauthenticated property on /</description> + <request auth="no"> + <method>PROPFIND</method> + <ruri>$principals_users:</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/current-user-principal/1.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>401</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>Check for authenticated property on / (user02)</description> + <request user="$userid2:" pswd="$pswd2:"> + <method>PROPFIND</method> + <ruri>$principalcollection:</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/current-user-principal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value><![CDATA[{DAV:}current-user-principal$<href xmlns="DAV:">$principaluri2:</href>]]></value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <end/> +</caldavtest> diff --git a/apps/dav/tests/travis/caldavtest/tests/CalDAV/sync-report.xml b/apps/dav/tests/travis/caldavtest/tests/CalDAV/sync-report.xml new file mode 100644 index 00000000000..c675af82065 --- /dev/null +++ b/apps/dav/tests/travis/caldavtest/tests/CalDAV/sync-report.xml @@ -0,0 +1,3512 @@ +<?xml version="1.0" standalone="no"?> + +<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd"> + +<!-- + Copyright (c) 2006-2015 Apple Inc. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<caldavtest> + <require-feature> + <feature>caldav</feature> + <feature>sync-report</feature> + </require-feature> + + <start> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/1.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/2.txt</filepath> + </data> + </request> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/4.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/5.txt</filepath> + </data> + </request> + </start> + + <test-suite name='support-report-set/sync-token property'> + <test name='1'> + <description>Not on calendars</description> + <request> + <method>PROPFIND</method> + <ruri>$calendars:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/1.xml</filepath> + </data> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>notexists</name> + <value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}supported-report-set</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}sync-token</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>On calendar-home</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/1.xml</filepath> + </data> + <verify> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value> + <value>$verify-property-prefix:/{DAV:}sync-token[+data:,]</value> + </arg> + </verify> + <verify> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}supported-report-set</value> + <value>{DAV:}sync-token</value> + </arg> + </verify> + <verify> + <exclude-feature> + <feature>sync-report-home</feature> + </exclude-feature> + <callback>xmlElementMatch</callback> + <arg> + <name>notexists</name> + <value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value> + </arg> + </verify> + <verify> + <exclude-feature> + <feature>sync-report-home</feature> + </exclude-feature> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}supported-report-set</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}sync-token</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>On calendar</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/1.xml</filepath> + </data> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value> + <value>$verify-property-prefix:/{DAV:}sync-token[+data:,]</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}supported-report-set</value> + <value>{DAV:}sync-token</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>On inbox</description> + <request> + <method>PROPFIND</method> + <ruri>$inboxpath1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/1.xml</filepath> + </data> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}supported-report-set</value> + <value>{DAV:}sync-token</value> + </arg> + </verify> + </request> + </test> + <test name='5'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>Look for options header tag on principal</description> + <request> + <method>OPTIONS</method> + <ruri>$principal1:</ruri> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>*DAV$.*calendarserver-home-sync[^-]*</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - sync-level'> + <test name='1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:1, depth:0</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:1, depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:1, depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:0</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='5'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='6'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='7'> + <description>sync-level:1, depth:0</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='8'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:1, depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='9'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:1, depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='10'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:0</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='11'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='12'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>sync-level:infinity, depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/9.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='13'> + <description>Bad sync-level</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/10.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>400</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - empty token - no props'> + <test name='1'> + <description>initial query - calendar collection depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>initial query - home depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>initial query - home depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>add new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/3.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + </test> + <test name='5'> + <description>new resource - calendar collection depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + <value>3.ics</value> + </arg> + </verify> + </request> + </test> + <test name='6'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>new resource - home depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='7'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>new resource - home depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar1/3.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='8'> + <description>remove new resource</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar1/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + </test> + <test name='9'> + <description>remove new resource - calendar collection depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='10'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>remove new resource - home depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='11'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>remove new resource - home depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='12'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/1.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + </test> + <test name='13'> + <description>changed resource - calendar collection depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + </request> + </test> + <test name='14'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>changed resource - home depth:1</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar2/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + <test name='15'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <description>changed resource - home depth:infinity</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar1/</value> + <value>synccalendar1/1.ics</value> + <value>synccalendar1/2.ics</value> + <value>synccalendar2/</value> + <value>synccalendar2/1.ics</value> + <value>synccalendar2/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - no props - calendar depth:1'> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/3.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>3.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar1/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>3.ics</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/4.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>3.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='5'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar1/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/1.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>1.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - empty token - props'> + <test name='1'> + <description>initial query</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/6.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + <value>3.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>remove resource new resource</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar2/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/4.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - props'> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + <value>1.ics</value> + <value>2.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/6.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>3.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar2/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>3.ics</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/7.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>3.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='5'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar2/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/4.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>1.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - no props - home depth:infinity'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>Initialize</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + </request> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + </request> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/7.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/8.txt</filepath> + </data> + </request> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar4/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/10.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/11.txt</filepath> + </data> + </request> + </test> + <test name='2'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar3/1.ics</value> + <value>synccalendar3/2.ics</value> + <value>synccalendar4/</value> + <value>synccalendar4/1.ics</value> + <value>synccalendar4/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/9.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + <value>synccalendar3/3.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='4'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>synccalendar3/3.ics</value> + </arg> + </verify> + </request> + </test> + <test name='5'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/4.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>synccalendar3/3.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/7.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + <value>synccalendar3/1.ics</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='7'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - props - home depth:infinity'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/5.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar3/1.ics</value> + <value>synccalendar3/2.ics</value> + <value>synccalendar4/</value> + <value>synccalendar4/1.ics</value> + <value>synccalendar4/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>ignore</name> + <value>$calendarhome1:/$outbox:/</value> + <value>$calendarhome1:/$freebusy:</value> + <value>$calendarhome1:/$notification:/</value> + <value>$calendarhome1:/$dropbox:/</value> + </arg> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/12.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + <value>synccalendar4/3.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar4/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>synccalendar4/3.ics</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/7.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>synccalendar4/3.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>count</name> + <value>2</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='5'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/10.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + <value>synccalendar4/1.ics</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/6.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - delete/create calendar - home depth:infinity'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar3/1.ics</value> + <value>synccalendar3/2.ics</value> + <value>synccalendar4/</value> + <value>synccalendar4/1.ics</value> + <value>synccalendar4/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>remove resource then calendar</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>add calendar - test last sync</description> + <request> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/4.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>add calendar - test previous sync</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - no props - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>Initialize</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar1/</ruri> + </request> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar2/</ruri> + </request> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/7.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/8.txt</filepath> + </data> + </request> + <request end-delete="yes"> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar4/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/10.txt</filepath> + </data> + </request> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/11.txt</filepath> + </data> + </request> + </test> + <test name='2'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/9.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='4'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + </request> + </test> + <test name='5'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/13.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/7.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='7'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - props - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/14.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>ignore</name> + <value>$calendarhome1:/$outbox:/</value> + <value>$calendarhome1:/$freebusy:</value> + <value>$calendarhome1:/$notification:/</value> + <value>$calendarhome1:/$dropbox:/</value> + </arg> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>new resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/3.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/12.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/15.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>remove resource (treated as new)</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar4/3.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/15.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>remove resource (treated as old)</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/16.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>count</name> + <value>1</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='5'> + <description>changed resource</description> + <request> + <method>PUT</method> + <ruri>$calendarhome1:/synccalendar4/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/10.txt</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/15.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar4/</value> + </arg> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='6'> + <description>no change</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/15.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + </verify> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}getcontenttype</value> + <value>{DAV:}getetag</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - diff token - delete/create calendar - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>remove resource then calendar</description> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/1.ics</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>DELETE</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>badhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken2:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>add calendar - test last sync</description> + <request> + <method>MKCALENDAR</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/13.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>add calendar - test previous sync</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - empty inbox'> + <test name='1'> + <description>initial query</description> + <request> + <method>REPORT</method> + <ruri>$inboxpath1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_sync_extra_items:</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='simple reports - valid token'> + <test name='1'> + <description>initial query</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/11.xml</filepath> + </data> + <verify> + <callback>prepostcondition</callback> + <arg> + <name>error</name> + <value>{DAV:}valid-sync-token</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='calendar webdav property change - home depth:infinity'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/2.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + <value>synccalendar4/1.ics</value> + <value>synccalendar4/2.ics</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>Change a property</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/17.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>Remove a property</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/18.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/3.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + <test-suite name='calendar webdav property change - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>Change a property</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/17.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>Remove a property</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarhome1:/synccalendar3/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/18.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>synccalendar3/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + + <test-suite name='default calendar property change - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/8.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>Change property on Inbox</description> + <request> + <method>PROPPATCH</method> + <ruri>$inboxpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/19.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL</value> + </arg> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$inbox:/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>Reset the property</description> + <request> + <method>PROPPATCH</method> + <ruri>$inboxpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/20.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL</value> + </arg> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/12.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$inbox:/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + + <test-suite name='schedule-calendar-transp in response - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - grab token</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/22.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar_home_items_initial_sync:</value> + <value>synccalendar3/</value> + <value>synccalendar4/</value> + </arg> + <arg> + <name>badhrefs</name> + <value>$dropbox:/</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>contains</name> + <value>opaque</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='2'> + <description>Change property on calendar</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/Common/PROPPATCH/calendar-transp-transparent.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp</value> + </arg> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/23.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar:/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>contains</name> + <value>transparent</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + <test name='3'> + <description>Reset the property</description> + <request> + <method>PROPPATCH</method> + <ruri>$calendarpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/Common/PROPPATCH/calendar-transp-opaque.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp</value> + </arg> + </verify> + </request> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/23.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>$calendar:/</value> + </arg> + </verify> + <verify> + <callback>xmlElementMatch</callback> + <arg> + <name>exists</name> + <value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>contains</name> + <value>opaque</value> + </arg> + </verify> + <grabelement> + <name>/{DAV:}multistatus/{DAV:}sync-token</name> + <variable>$synctoken1:</variable> + </grabelement> + </request> + </test> + </test-suite> + + + + <test-suite name='Prefer:return=minimal - home depth:1'> + <require-feature> + <feature>sync-report-home</feature> + </require-feature> + <test name='1'> + <description>initial query - no minimal</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/24.xml</filepath> + </data> + <verify> + <callback>dataString</callback> + <arg> + <name>contains</name> + <value>foobar</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>initial query - with minimal</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>infinity</value> + </header> + <header> + <name>Prefer</name> + <value>return=minimal</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/24.xml</filepath> + </data> + <verify> + <callback>dataString</callback> + <arg> + <name>notcontains</name> + <value>foobar</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + + <test-suite name='limited reports'> + <test name='1'> + <exclude-feature> + <feature>sync-report-limit</feature> + </exclude-feature> + <description>Limit not allowed</description> + <request> + <method>REPORT</method> + <ruri>$calendarhome1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/sync/21.xml</filepath> + </data> + <verify> + <callback>prepostcondition</callback> + <arg> + <name>error</name> + <value>{DAV:}number-of-matches-within-limits</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <end/> + +</caldavtest> diff --git a/apps/dav/tests/travis/carddav/install.sh b/apps/dav/tests/travis/carddav/install.sh new file mode 100644 index 00000000000..fa5d141ce0d --- /dev/null +++ b/apps/dav/tests/travis/carddav/install.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +if [ ! -f CalDAVTester/run.py ]; then + cd "$SCRIPTPATH" + git clone https://github.com/DeepDiver1975/CalDAVTester.git + cd "$SCRIPTPATH/CalDAVTester" + python run.py -s + cd "$SCRIPTPATH" +fi + +# create test user +cd "$SCRIPTPATH/../../../../../" +OC_PASS=user01 php occ user:add --password-from-env user01 +php occ dav:create-addressbook user01 addressbook +OC_PASS=user02 php occ user:add --password-from-env user02 +php occ dav:create-addressbook user02 addressbook +cd "$SCRIPTPATH/../../../../../" diff --git a/apps/dav/tests/travis/carddav/script.sh b/apps/dav/tests/travis/carddav/script.sh new file mode 100644 index 00000000000..46a6a98e273 --- /dev/null +++ b/apps/dav/tests/travis/carddav/script.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." & + +sleep 30 + +# run the tests +cd "$SCRIPTPATH/CalDAVTester" +PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail -s "$SCRIPTPATH/../caldavtest/config/serverinfo.xml" -o cdt.txt \ + "$SCRIPTPATH/../caldavtest/tests/CardDAV/current-user-principal.xml" \ + "$SCRIPTPATH/../caldavtest/tests/CardDAV/sync-report.xml" +RESULT=$? + +tail "$/../../../../../data-autotest/owncloud.log" + +exit $RESULT diff --git a/apps/dav/tests/travis/carddavtester.sh b/apps/dav/tests/travis/carddavtester.sh deleted file mode 100644 index 17f7e8eb4a8..00000000000 --- a/apps/dav/tests/travis/carddavtester.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -SCRIPT=`realpath $0` -SCRIPTPATH=`dirname $SCRIPT` - - -# start the server -php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../.." & - - -if [ ! -f CalDAVTester/run.py ]; then - cd "$SCRIPTPATH" - git clone https://github.com/DeepDiver1975/CalDAVTester.git - cd "$SCRIPTPATH/CalDAVTester" - python run.py -s - cd "$SCRIPTPATH" -fi - -# create test user -cd "$SCRIPTPATH/../../../../" -OC_PASS=user01 php occ user:add --password-from-env user01 -php occ dav:create-addressbook user01 addressbook -OC_PASS=user02 php occ user:add --password-from-env user02 -php occ dav:create-addressbook user02 addressbook -cd "$SCRIPTPATH/../../../../" - -# run the tests -cd "$SCRIPTPATH/CalDAVTester" -PYTHONPATH="$SCRIPTPATH/pycalendar/src" python testcaldav.py --print-details-onfail -s "$SCRIPTPATH/caldavtest/config/serverinfo.xml" -o cdt.txt \ - "$SCRIPTPATH/caldavtest/tests/CardDAV/current-user-principal.xml" \ - "$SCRIPTPATH/caldavtest/tests/CardDAV/sync-report.xml" -RESULT=$? - -tail "$SCRIPTPATH/../../../../data-autotest/owncloud.log" - -exit $RESULT diff --git a/apps/dav/tests/travis/litmus-v1.sh b/apps/dav/tests/travis/litmus-v1/install.sh index ab0690f392e..0ee2cb08d82 100644 --- a/apps/dav/tests/travis/litmus-v1.sh +++ b/apps/dav/tests/travis/litmus-v1/install.sh @@ -1,11 +1,4 @@ #!/usr/bin/env bash -SCRIPT=`realpath $0` -SCRIPTPATH=`dirname $SCRIPT` - - -# start the server -php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../.." & - # compile litmus if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then @@ -17,7 +10,3 @@ if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then ./configure make fi - -# run the tests -cd /tmp/litmus/litmus-0.13 -make URL=http://127.0.0.1:8888/remote.php/webdav CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/apps/dav/tests/travis/litmus-v1/script.sh b/apps/dav/tests/travis/litmus-v1/script.sh new file mode 100644 index 00000000000..cba305683b2 --- /dev/null +++ b/apps/dav/tests/travis/litmus-v1/script.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." & + +sleep 30 + +# run the tests +cd /tmp/litmus/litmus-0.13 +make URL=http://127.0.0.1:8888/remote.php/webdav CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/apps/dav/tests/travis/litmus-v2.sh b/apps/dav/tests/travis/litmus-v2/install.sh index 892ad327d3b..0ee2cb08d82 100644 --- a/apps/dav/tests/travis/litmus-v2.sh +++ b/apps/dav/tests/travis/litmus-v2/install.sh @@ -1,11 +1,4 @@ #!/usr/bin/env bash -SCRIPT=`realpath $0` -SCRIPTPATH=`dirname $SCRIPT` - - -# start the server -php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../.." & - # compile litmus if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then @@ -17,7 +10,3 @@ if [ ! -f /tmp/litmus/litmus-0.13.tar.gz ]; then ./configure make fi - -# run the tests -cd /tmp/litmus/litmus-0.13 -make URL=http://127.0.0.1:8888/remote.php/dav/files/admin CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/apps/dav/tests/travis/litmus-v2/script.sh b/apps/dav/tests/travis/litmus-v2/script.sh new file mode 100644 index 00000000000..966ed5a2052 --- /dev/null +++ b/apps/dav/tests/travis/litmus-v2/script.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + + +# start the server +php -S 127.0.0.1:8888 -t "$SCRIPTPATH/../../../../.." & + +sleep 30 + +# run the tests +cd /tmp/litmus/litmus-0.13 +make URL=http://127.0.0.1:8888/remote.php/dav/files/admin CREDS="admin admin" TESTS="basic copymove props locks" check diff --git a/apps/dav/tests/unit/carddav/addressbookimpltest.php b/apps/dav/tests/unit/carddav/addressbookimpltest.php new file mode 100644 index 00000000000..73053888b9d --- /dev/null +++ b/apps/dav/tests/unit/carddav/addressbookimpltest.php @@ -0,0 +1,287 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\DAV\Tests\Unit\CardDAV; + + +use OCA\DAV\CardDAV\AddressBook; +use OCA\DAV\CardDAV\AddressBookImpl; +use OCA\DAV\CardDAV\CardDavBackend; +use Sabre\VObject\Component\VCard; +use Sabre\VObject\Property\Text; +use Test\TestCase; + +class AddressBookImplTest extends TestCase { + + /** @var AddressBookImpl */ + private $addressBookImpl; + + /** @var array */ + private $addressBookInfo; + + /** @var AddressBook | \PHPUnit_Framework_MockObject_MockObject */ + private $addressBook; + + /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject */ + private $backend; + + /** @var VCard | \PHPUnit_Framework_MockObject_MockObject */ + private $vCard; + + public function setUp() { + parent::setUp(); + + $this->addressBookInfo = [ + 'id' => 42, + '{DAV:}displayname' => 'display name' + ]; + $this->addressBook = $this->getMockBuilder('OCA\DAV\CardDAV\AddressBook') + ->disableOriginalConstructor()->getMock(); + $this->backend = $this->getMockBuilder('\OCA\DAV\CardDAV\CardDavBackend') + ->disableOriginalConstructor()->getMock(); + $this->vCard = $this->getMock('Sabre\VObject\Component\VCard'); + + $this->addressBookImpl = new AddressBookImpl( + $this->addressBook, + $this->addressBookInfo, + $this->backend + ); + } + + public function testGetKey() { + $this->assertSame($this->addressBookInfo['id'], + $this->addressBookImpl->getKey()); + } + + public function testGetDisplayName() { + $this->assertSame($this->addressBookInfo['{DAV:}displayname'], + $this->addressBookImpl->getDisplayName()); + } + + public function testSearch() { + + /** @var \PHPUnit_Framework_MockObject_MockObject | AddressBookImpl $addressBookImpl */ + $addressBookImpl = $this->getMockBuilder('OCA\DAV\CardDAV\AddressBookImpl') + ->setConstructorArgs( + [ + $this->addressBook, + $this->addressBookInfo, + $this->backend + ] + ) + ->setMethods(['vCard2Array', 'readCard']) + ->getMock(); + + $pattern = 'pattern'; + $searchProperties = 'properties'; + + $this->backend->expects($this->once())->method('search') + ->with($this->addressBookInfo['id'], $pattern, $searchProperties) + ->willReturn( + [ + 'cardData1', + 'cardData2' + ] + ); + + $addressBookImpl->expects($this->exactly(2))->method('readCard') + ->willReturn($this->vCard); + $addressBookImpl->expects($this->exactly(2))->method('vCard2Array') + ->with($this->vCard)->willReturn('vCard'); + + $result = $addressBookImpl->search($pattern, $searchProperties, []); + $this->assertTrue((is_array($result))); + $this->assertSame(2, count($result)); + } + + /** + * @dataProvider dataTestCreate + * + * @param array $properties + */ + public function testCreate($properties) { + + $uid = 'uid'; + + /** @var \PHPUnit_Framework_MockObject_MockObject | AddressBookImpl $addressBookImpl */ + $addressBookImpl = $this->getMockBuilder('OCA\DAV\CardDAV\AddressBookImpl') + ->setConstructorArgs( + [ + $this->addressBook, + $this->addressBookInfo, + $this->backend + ] + ) + ->setMethods(['vCard2Array', 'createUid', 'createEmptyVCard']) + ->getMock(); + + $addressBookImpl->expects($this->once())->method('createUid') + ->willReturn($uid); + $addressBookImpl->expects($this->once())->method('createEmptyVCard') + ->with($uid)->willReturn($this->vCard); + $this->vCard->expects($this->exactly(count($properties))) + ->method('createProperty'); + $this->backend->expects($this->once())->method('createCard'); + $this->backend->expects($this->never())->method('updateCard'); + $this->backend->expects($this->never())->method('getCard'); + $addressBookImpl->expects($this->once())->method('vCard2Array') + ->with($this->vCard)->willReturn(true); + + $this->assertTrue($addressBookImpl->createOrUpdate($properties)); + } + + public function dataTestCreate() { + return [ + [[]], + [['FN' => 'John Doe']] + ]; + } + + public function testUpdate() { + + $uid = 'uid'; + $properties = ['UID' => $uid, 'FN' => 'John Doe']; + + /** @var \PHPUnit_Framework_MockObject_MockObject | AddressBookImpl $addressBookImpl */ + $addressBookImpl = $this->getMockBuilder('OCA\DAV\CardDAV\AddressBookImpl') + ->setConstructorArgs( + [ + $this->addressBook, + $this->addressBookInfo, + $this->backend + ] + ) + ->setMethods(['vCard2Array', 'createUid', 'createEmptyVCard', 'readCard']) + ->getMock(); + + $addressBookImpl->expects($this->never())->method('createUid'); + $addressBookImpl->expects($this->never())->method('createEmptyVCard'); + $this->backend->expects($this->once())->method('getCard') + ->with($this->addressBookInfo['id'], $uid . '.vcf') + ->willReturn(['carddata' => 'data']); + $addressBookImpl->expects($this->once())->method('readCard') + ->with('data')->willReturn($this->vCard); + $this->vCard->expects($this->exactly(count($properties))) + ->method('createProperty'); + $this->backend->expects($this->never())->method('createCard'); + $this->backend->expects($this->once())->method('updateCard'); + $addressBookImpl->expects($this->once())->method('vCard2Array') + ->with($this->vCard)->willReturn(true); + + $this->assertTrue($addressBookImpl->createOrUpdate($properties)); + } + + /** + * @dataProvider dataTestGetPermissions + * + * @param array $permissions + * @param int $expected + */ + public function testGetPermissions($permissions, $expected) { + $this->addressBook->expects($this->once())->method('getACL') + ->willReturn($permissions); + + $this->assertSame($expected, + $this->addressBookImpl->getPermissions() + ); + } + + public function dataTestGetPermissions() { + return [ + [[], 0], + [[['privilege' => '{DAV:}read']], 1], + [[['privilege' => '{DAV:}write']], 6], + [[['privilege' => '{DAV:}all']], 31], + [[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 7], + [[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}all']], 31], + [[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}write']], 31], + [[['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write'],['privilege' => '{DAV:}all']], 31], + [[['privilege' => '{DAV:}all'],['privilege' => '{DAV:}read'],['privilege' => '{DAV:}write']], 31], + ]; + } + + public function testDelete() { + $cardId = 1; + $cardUri = 'cardUri'; + $this->backend->expects($this->once())->method('getCardUri') + ->with($cardId)->willReturn($cardUri); + $this->backend->expects($this->once())->method('deleteCard') + ->with($this->addressBookInfo['id'], $cardUri) + ->willReturn(true); + + $this->assertTrue($this->addressBookImpl->delete($cardId)); + } + + public function testReadCard() { + $vCard = new VCard(); + $vCard->add(new Text($vCard, 'UID', 'uid')); + $vCardSerialized = $vCard->serialize(); + + $result = $this->invokePrivate($this->addressBookImpl, 'readCard', [$vCardSerialized]); + $resultSerialized = $result->serialize(); + + $this->assertSame($vCardSerialized, $resultSerialized); + } + + public function testCreateUid() { + /** @var \PHPUnit_Framework_MockObject_MockObject | AddressBookImpl $addressBookImpl */ + $addressBookImpl = $this->getMockBuilder('OCA\DAV\CardDAV\AddressBookImpl') + ->setConstructorArgs( + [ + $this->addressBook, + $this->addressBookInfo, + $this->backend + ] + ) + ->setMethods(['getUid']) + ->getMock(); + + $addressBookImpl->expects($this->at(0))->method('getUid')->willReturn('uid0'); + $addressBookImpl->expects($this->at(1))->method('getUid')->willReturn('uid1'); + + // simulate that 'uid0' already exists, so the second uid will be returned + $this->backend->expects($this->exactly(2))->method('getContact') + ->willReturnCallback( + function($uid) { + return ($uid === 'uid0.vcf'); + } + ); + + $this->assertSame('uid1', + $this->invokePrivate($addressBookImpl, 'createUid', []) + ); + + } + + public function testCreateEmptyVCard() { + $uid = 'uid'; + $expectedVCard = new VCard(); + $expectedVCard->add(new Text($expectedVCard, 'UID', $uid)); + $expectedVCardSerialized = $expectedVCard->serialize(); + + $result = $this->invokePrivate($this->addressBookImpl, 'createEmptyVCard', [$uid]); + $resultSerialized = $result->serialize(); + + $this->assertSame($expectedVCardSerialized, $resultSerialized); + } + +} diff --git a/apps/dav/tests/unit/carddav/carddavbackendtest.php b/apps/dav/tests/unit/carddav/carddavbackendtest.php index dd5e205242a..fe01aa65cca 100644 --- a/apps/dav/tests/unit/carddav/carddavbackendtest.php +++ b/apps/dav/tests/unit/carddav/carddavbackendtest.php @@ -20,8 +20,14 @@ */ namespace OCA\DAV\Tests\Unit\CardDAV; +use InvalidArgumentException; use OCA\DAV\CardDAV\CardDavBackend; +use OCA\DAV\Connector\Sabre\Principal; +use OCP\IDBConnection; +use OCP\ILogger; use Sabre\DAV\PropPatch; +use Sabre\VObject\Component\VCard; +use Sabre\VObject\Property\Text; use Test\TestCase; /** @@ -36,22 +42,46 @@ class CardDavBackendTest extends TestCase { /** @var CardDavBackend */ private $backend; + /** @var Principal | \PHPUnit_Framework_MockObject_MockObject */ + private $principal; + + /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject */ + private $logger; + + /** @var IDBConnection */ + private $db; + + /** @var string */ + private $dbCardsTable = 'cards'; + + /** @var string */ + private $dbCardsPropertiesTable = 'cards_properties'; + const UNIT_TEST_USER = 'carddav-unit-test'; public function setUp() { parent::setUp(); - $principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') + $this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') ->disableOriginalConstructor() ->setMethods(['getPrincipalByPath']) ->getMock(); - $principal->method('getPrincipalByPath') + $this->principal->method('getPrincipalByPath') ->willReturn([ 'uri' => 'principals/best-friend' ]); + $this->logger = $this->getMock('\OCP\ILogger'); + + $this->db = \OC::$server->getDatabaseConnection(); + + $this->backend = new CardDavBackend($this->db, $this->principal, $this->logger); + + // start every test with a empty cards_properties and cards table + $query = $this->db->getQueryBuilder(); + $query->delete('cards_properties')->execute(); + $query = $this->db->getQueryBuilder(); + $query->delete('cards')->execute(); - $db = \OC::$server->getDatabaseConnection(); - $this->backend = new CardDavBackend($db, $principal); $this->tearDown(); } @@ -96,23 +126,32 @@ class CardDavBackendTest extends TestCase { } public function testCardOperations() { + + /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backend */ + $backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend') + ->setConstructorArgs([$this->db, $this->principal, $this->logger]) + ->setMethods(['updateProperties', 'purgeProperties'])->getMock(); + // create a new address book - $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); - $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); + $backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); + $books = $backend->getAddressBooksForUser(self::UNIT_TEST_USER); $this->assertEquals(1, count($books)); $bookId = $books[0]['id']; - // create a card $uri = $this->getUniqueID('card'); - $this->backend->createCard($bookId, $uri, ''); + // updateProperties is expected twice, once for createCard and once for updateCard + $backend->expects($this->at(0))->method('updateProperties')->with($bookId, $uri, ''); + $backend->expects($this->at(1))->method('updateProperties')->with($bookId, $uri, '***'); + // create a card + $backend->createCard($bookId, $uri, ''); // get all the cards - $cards = $this->backend->getCards($bookId); + $cards = $backend->getCards($bookId); $this->assertEquals(1, count($cards)); $this->assertEquals('', $cards[0]['carddata']); // get the cards - $card = $this->backend->getCard($bookId, $uri); + $card = $backend->getCard($bookId, $uri); $this->assertNotNull($card); $this->assertArrayHasKey('id', $card); $this->assertArrayHasKey('uri', $card); @@ -122,17 +161,23 @@ class CardDavBackendTest extends TestCase { $this->assertEquals('', $card['carddata']); // update the card - $this->backend->updateCard($bookId, $uri, '***'); - $card = $this->backend->getCard($bookId, $uri); + $backend->updateCard($bookId, $uri, '***'); + $card = $backend->getCard($bookId, $uri); $this->assertEquals('***', $card['carddata']); // delete the card - $this->backend->deleteCard($bookId, $uri); - $cards = $this->backend->getCards($bookId); + $backend->expects($this->once())->method('purgeProperties')->with($bookId, $card['id']); + $backend->deleteCard($bookId, $uri); + $cards = $backend->getCards($bookId); $this->assertEquals(0, count($cards)); } public function testMultiCard() { + + $this->backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend') + ->setConstructorArgs([$this->db, $this->principal, $this->logger]) + ->setMethods(['updateProperties'])->getMock(); + // create a new address book $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); @@ -175,6 +220,11 @@ class CardDavBackendTest extends TestCase { } public function testSyncSupport() { + + $this->backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend') + ->setConstructorArgs([$this->db, $this->principal, $this->logger]) + ->setMethods(['updateProperties'])->getMock(); + // create a new address book $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []); $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); @@ -213,7 +263,7 @@ class CardDavBackendTest extends TestCase { $books = $this->backend->getAddressBooksForUser('principals/best-friend'); $this->assertEquals(1, count($books)); - $this->backend->updateShares('Example', [], [['href' => 'principal:principals/best-friend']]); + $this->backend->updateShares('Example', [], ['principal:principals/best-friend']); $shares = $this->backend->getShares('Example'); $this->assertEquals(0, count($shares)); @@ -221,4 +271,273 @@ class CardDavBackendTest extends TestCase { $books = $this->backend->getAddressBooksForUser('principals/best-friend'); $this->assertEquals(0, count($books)); } + + public function testUpdateProperties() { + + $bookId = 42; + $cardUri = 'card-uri'; + $cardId = 2; + + $backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend') + ->setConstructorArgs([$this->db, $this->principal, $this->logger]) + ->setMethods(['getCardId'])->getMock(); + + $backend->expects($this->any())->method('getCardId')->willReturn($cardId); + + // add properties for new vCard + $vCard = new VCard(); + $vCard->add(new Text($vCard, 'UID', $cardUri)); + $vCard->add(new Text($vCard, 'FN', 'John Doe')); + $this->invokePrivate($backend, 'updateProperties', [$bookId, $cardUri, $vCard->serialize()]); + + $query = $this->db->getQueryBuilder(); + $result = $query->select('*')->from('cards_properties')->execute()->fetchAll(); + + $this->assertSame(2, count($result)); + + $this->assertSame('UID', $result[0]['name']); + $this->assertSame($cardUri, $result[0]['value']); + $this->assertSame($bookId, (int)$result[0]['addressbookid']); + $this->assertSame($cardId, (int)$result[0]['cardid']); + + $this->assertSame('FN', $result[1]['name']); + $this->assertSame('John Doe', $result[1]['value']); + $this->assertSame($bookId, (int)$result[1]['addressbookid']); + $this->assertSame($cardId, (int)$result[1]['cardid']); + + // update properties for existing vCard + $vCard = new VCard(); + $vCard->add(new Text($vCard, 'FN', 'John Doe')); + $this->invokePrivate($backend, 'updateProperties', [$bookId, $cardUri, $vCard->serialize()]); + + $query = $this->db->getQueryBuilder(); + $result = $query->select('*')->from('cards_properties')->execute()->fetchAll(); + + $this->assertSame(1, count($result)); + + $this->assertSame('FN', $result[0]['name']); + $this->assertSame('John Doe', $result[0]['value']); + $this->assertSame($bookId, (int)$result[0]['addressbookid']); + $this->assertSame($cardId, (int)$result[0]['cardid']); + } + + public function testPurgeProperties() { + + $query = $this->db->getQueryBuilder(); + $query->insert('cards_properties') + ->values( + [ + 'addressbookid' => $query->createNamedParameter(1), + 'cardid' => $query->createNamedParameter(1), + 'name' => $query->createNamedParameter('name1'), + 'value' => $query->createNamedParameter('value1'), + 'preferred' => $query->createNamedParameter(0) + ] + ); + $query->execute(); + + $query = $this->db->getQueryBuilder(); + $query->insert('cards_properties') + ->values( + [ + 'addressbookid' => $query->createNamedParameter(1), + 'cardid' => $query->createNamedParameter(2), + 'name' => $query->createNamedParameter('name2'), + 'value' => $query->createNamedParameter('value2'), + 'preferred' => $query->createNamedParameter(0) + ] + ); + $query->execute(); + + $this->invokePrivate($this->backend, 'purgeProperties', [1, 1]); + + $query = $this->db->getQueryBuilder(); + $result = $query->select('*')->from('cards_properties')->execute()->fetchAll(); + $this->assertSame(1, count($result)); + $this->assertSame(1 ,(int)$result[0]['addressbookid']); + $this->assertSame(2 ,(int)$result[0]['cardid']); + + } + + public function testGetCardId() { + $query = $this->db->getQueryBuilder(); + + $query->insert('cards') + ->values( + [ + 'addressbookid' => $query->createNamedParameter(1), + 'carddata' => $query->createNamedParameter(''), + 'uri' => $query->createNamedParameter('uri'), + 'lastmodified' => $query->createNamedParameter(4738743), + 'etag' => $query->createNamedParameter('etag'), + 'size' => $query->createNamedParameter(120) + ] + ); + $query->execute(); + $id = $query->getLastInsertId(); + + $this->assertSame($id, + $this->invokePrivate($this->backend, 'getCardId', ['uri'])); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testGetCardIdFailed() { + $this->invokePrivate($this->backend, 'getCardId', ['uri']); + } + + /** + * @dataProvider dataTestSearch + * + * @param string $pattern + * @param array $expected + */ + public function testSearch($pattern, $properties, $expected) { + /** @var VCard $vCards */ + $vCards = []; + $vCards[0] = new VCard(); + $vCards[0]->add(new Text($vCards[0], 'UID', 'uid')); + $vCards[0]->add(new Text($vCards[0], 'FN', 'John Doe')); + $vCards[0]->add(new Text($vCards[0], 'CLOUD', 'john@owncloud.org')); + $vCards[1] = new VCard(); + $vCards[1]->add(new Text($vCards[1], 'UID', 'uid')); + $vCards[1]->add(new Text($vCards[1], 'FN', 'John M. Doe')); + + $vCardIds = []; + $query = $this->db->getQueryBuilder(); + for($i=0; $i<2; $i++) { + $query->insert($this->dbCardsTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter(0), + 'carddata' => $query->createNamedParameter($vCards[$i]->serialize(), \PDO::PARAM_LOB), + 'uri' => $query->createNamedParameter('uri' . $i), + 'lastmodified' => $query->createNamedParameter(time()), + 'etag' => $query->createNamedParameter('etag' . $i), + 'size' => $query->createNamedParameter(120), + ] + ); + $query->execute(); + $vCardIds[] = $query->getLastInsertId(); + } + + $query->insert($this->dbCardsPropertiesTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter(0), + 'cardid' => $query->createNamedParameter($vCardIds[0]), + 'name' => $query->createNamedParameter('FN'), + 'value' => $query->createNamedParameter('John Doe'), + 'preferred' => $query->createNamedParameter(0) + ] + ); + $query->execute(); + $query->insert($this->dbCardsPropertiesTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter(0), + 'cardid' => $query->createNamedParameter($vCardIds[0]), + 'name' => $query->createNamedParameter('CLOUD'), + 'value' => $query->createNamedParameter('John@owncloud.org'), + 'preferred' => $query->createNamedParameter(0) + ] + ); + $query->execute(); + $query->insert($this->dbCardsPropertiesTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter(0), + 'cardid' => $query->createNamedParameter($vCardIds[1]), + 'name' => $query->createNamedParameter('FN'), + 'value' => $query->createNamedParameter('John M. Doe'), + 'preferred' => $query->createNamedParameter(0) + ] + ); + $query->execute(); + + $result = $this->backend->search(0, $pattern, $properties); + + // check result + $this->assertSame(count($expected), count($result)); + $found = []; + foreach ($result as $r) { + foreach ($expected as $exp) { + if (strpos($r, $exp) > 0) { + $found[$exp] = true; + break; + } + } + } + + $this->assertSame(count($expected), count($found)); + } + + public function dataTestSearch() { + return [ + ['John', ['FN'], ['John Doe', 'John M. Doe']], + ['M. Doe', ['FN'], ['John M. Doe']], + ['Do', ['FN'], ['John Doe', 'John M. Doe']], + // check if duplicates are handled correctly + ['John', ['FN', 'CLOUD'], ['John Doe', 'John M. Doe']], + ]; + } + + public function testGetCardUri() { + $query = $this->db->getQueryBuilder(); + $query->insert($this->dbCardsTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter(1), + 'carddata' => $query->createNamedParameter('carddata', \PDO::PARAM_LOB), + 'uri' => $query->createNamedParameter('uri'), + 'lastmodified' => $query->createNamedParameter(5489543), + 'etag' => $query->createNamedParameter('etag'), + 'size' => $query->createNamedParameter(120), + ] + ); + $query->execute(); + + $id = $query->getLastInsertId(); + + $this->assertSame('uri', $this->backend->getCardUri($id)); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testGetCardUriFailed() { + $this->backend->getCardUri(1); + } + + public function testGetContact() { + $query = $this->db->getQueryBuilder(); + for($i=0; $i<2; $i++) { + $query->insert($this->dbCardsTable) + ->values( + [ + 'addressbookid' => $query->createNamedParameter($i), + 'carddata' => $query->createNamedParameter('carddata' . $i, \PDO::PARAM_LOB), + 'uri' => $query->createNamedParameter('uri' . $i), + 'lastmodified' => $query->createNamedParameter(5489543), + 'etag' => $query->createNamedParameter('etag' . $i), + 'size' => $query->createNamedParameter(120), + ] + ); + $query->execute(); + } + + $result = $this->backend->getContact('uri0'); + $this->assertSame(7, count($result)); + $this->assertSame(0, (int)$result['addressbookid']); + $this->assertSame('uri0', $result['uri']); + $this->assertSame(5489543, (int)$result['lastmodified']); + $this->assertSame('etag0', $result['etag']); + $this->assertSame(120, (int)$result['size']); + } + + public function testGetContactFail() { + $this->assertEmpty($this->backend->getContact('uri')); + } + } diff --git a/apps/dav/tests/unit/carddav/sharing/plugintest.php b/apps/dav/tests/unit/carddav/sharing/plugintest.php new file mode 100644 index 00000000000..e9532acbe3b --- /dev/null +++ b/apps/dav/tests/unit/carddav/sharing/plugintest.php @@ -0,0 +1,81 @@ +<?php +/** + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\Unit\CardDAV; + + +use OCA\DAV\CardDAV\Sharing\IShareableAddressBook; +use OCA\DAV\CardDAV\Sharing\Plugin; +use OCA\DAV\Connector\Sabre\Auth; +use OCP\IRequest; +use Sabre\DAV\Server; +use Sabre\DAV\SimpleCollection; +use Sabre\HTTP\Request; +use Sabre\HTTP\Response; +use Test\TestCase; + +class PluginTest extends TestCase { + + /** @var Plugin */ + private $plugin; + /** @var Server */ + private $server; + /** @var IShareableAddressBook | \PHPUnit_Framework_MockObject_MockObject */ + private $book; + + public function setUp() { + parent::setUp(); + + /** @var Auth | \PHPUnit_Framework_MockObject_MockObject $authBackend */ + $authBackend = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Auth')->disableOriginalConstructor()->getMock(); + $authBackend->method('isDavAuthenticated')->willReturn(true); + + /** @var IRequest $request */ + $request = $this->getMockBuilder('OCP\IRequest')->disableOriginalConstructor()->getMock(); + $this->plugin = new Plugin($authBackend, $request); + + $root = new SimpleCollection('root'); + $this->server = new \Sabre\DAV\Server($root); + /** @var SimpleCollection $node */ + $this->book = $this->getMockBuilder('OCA\DAV\CardDAV\Sharing\IShareableAddressBook')->disableOriginalConstructor()->getMock(); + $this->book->method('getName')->willReturn('addressbook1.vcf'); + $root->addChild($this->book); + $this->plugin->initialize($this->server); + } + + public function testSharing() { + + $this->book->expects($this->once())->method('updateShares')->with([[ + 'href' => 'principal:principals/admin', + 'commonName' => null, + 'summary' => null, + 'readOnly' => false + ]], ['mailto:wilfredo@example.com']); + + // setup request + $request = new Request(); + $request->addHeader('Content-Type', 'application/xml'); + $request->setUrl('addressbook1.vcf'); + $request->setBody('<?xml version="1.0" encoding="utf-8" ?><CS:share xmlns:D="DAV:" xmlns:CS="urn:ietf:params:xml:ns:carddav"><CS:set><D:href>principal:principals/admin</D:href><CS:read-write/></CS:set> <CS:remove><D:href>mailto:wilfredo@example.com</D:href></CS:remove></CS:share>'); + $response = new Response(); + $this->plugin->httpPost($request, $response); + } +} diff --git a/apps/dav/tests/unit/connector/sabre/objecttree.php b/apps/dav/tests/unit/connector/sabre/objecttree.php index 1cea4ff0b69..6164b96c986 100644 --- a/apps/dav/tests/unit/connector/sabre/objecttree.php +++ b/apps/dav/tests/unit/connector/sabre/objecttree.php @@ -294,4 +294,45 @@ class ObjectTree extends \Test\TestCase { $this->assertInstanceOf('\Sabre\DAV\INode', $tree->getNodeForPath($path)); } + + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + * @expectedExceptionMessage Could not copy directory nameOfSourceNode, target exists + */ + public function testFailingMove() { + $source = 'a/b'; + $destination = 'b/b'; + $updatables = array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false); + $deletables = array('a/b' => true); + + $view = new TestDoubleFileView($updatables, $deletables); + + $info = new FileInfo('', null, null, array(), null); + + $rootDir = new \OCA\DAV\Connector\Sabre\Directory($view, $info); + $objectTree = $this->getMock('\OCA\DAV\Connector\Sabre\ObjectTree', + array('nodeExists', 'getNodeForPath'), + array($rootDir, $view)); + + $sourceNode = $this->getMockBuilder('\Sabre\DAV\ICollection') + ->disableOriginalConstructor() + ->getMock(); + $sourceNode->expects($this->once()) + ->method('getName') + ->will($this->returnValue('nameOfSourceNode')); + + $objectTree->expects($this->once()) + ->method('nodeExists') + ->with($this->identicalTo($destination)) + ->will($this->returnValue(true)); + $objectTree->expects($this->once()) + ->method('getNodeForPath') + ->with($this->identicalTo($source)) + ->will($this->returnValue($sourceNode)); + + /** @var $objectTree \OCA\DAV\Connector\Sabre\ObjectTree */ + $mountManager = \OC\Files\Filesystem::getMountManager(); + $objectTree->init($rootDir, $view, $mountManager); + $objectTree->move($source, $destination); + } } diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml index 2224f026e4d..1fb4e93c508 100644 --- a/apps/encryption/appinfo/info.xml +++ b/apps/encryption/appinfo/info.xml @@ -14,7 +14,6 @@ <name>Default encryption module</name> <license>AGPL</license> <author>Bjoern Schiessle, Clark Tomlinson</author> - <shipped>true</shipped> <documentation> <user>user-encryption</user> <admin>admin-encryption</admin> @@ -26,7 +25,7 @@ </types> <dependencies> <lib>openssl</lib> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> </info> diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js index 6b49b3917fd..1dadb88064a 100644 --- a/apps/encryption/l10n/es.js +++ b/apps/encryption/l10n/es.js @@ -32,6 +32,7 @@ OC.L10N.register( "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,\n<br><br>\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: <strong>%s</strong>\n<br><br>\nPor favor, identifíquese en la interfaz web, vaya a la sección 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la nueva en su correspondiente campo.<br><br>", + "Encrypt the home storage" : "Encriptar el almacenamiento personal", "Enable recovery key" : "Activa la clave de recuperación", "Disable recovery key" : "Desactiva la clave de recuperación", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clave de recuperación es una clave de cifrado extra que se usa para cifrar ficheros. Permite la recuperación de los ficheros de un usuario si él o ella olvida su contraseña.", diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json index 3f21b4c09a0..5cf2b12ce5f 100644 --- a/apps/encryption/l10n/es.json +++ b/apps/encryption/l10n/es.json @@ -30,6 +30,7 @@ "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,\n<br><br>\nEl administrador ha habilitado el cifrado del lado servidor. Sus archivos serán cifrados usando como contraseña: <strong>%s</strong>\n<br><br>\nPor favor, identifíquese en la interfaz web, vaya a la sección 'Modulo básico de cifrado' de sus opciones personales y actualice su contraseña tecleando esta contraseña en el campo 'contraseña antigua' e introduciendo la nueva en su correspondiente campo.<br><br>", + "Encrypt the home storage" : "Encriptar el almacenamiento personal", "Enable recovery key" : "Activa la clave de recuperación", "Disable recovery key" : "Desactiva la clave de recuperación", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clave de recuperación es una clave de cifrado extra que se usa para cifrar ficheros. Permite la recuperación de los ficheros de un usuario si él o ella olvida su contraseña.", diff --git a/apps/encryption/l10n/et_EE.js b/apps/encryption/l10n/et_EE.js index 501772c2808..3a29b24cc54 100644 --- a/apps/encryption/l10n/et_EE.js +++ b/apps/encryption/l10n/et_EE.js @@ -34,6 +34,7 @@ OC.L10N.register( "New recovery key password" : "Uus taastevõtme parool", "Repeat new recovery key password" : "Korda uut taastevõtme parooli", "Change Password" : "Muuda parooli", + "ownCloud basic encryption module" : "ownCloud peamine küpteerimismoodul", "Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.", "Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.", " If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.", diff --git a/apps/encryption/l10n/et_EE.json b/apps/encryption/l10n/et_EE.json index 14d4c59f9fc..916bc0667ad 100644 --- a/apps/encryption/l10n/et_EE.json +++ b/apps/encryption/l10n/et_EE.json @@ -32,6 +32,7 @@ "New recovery key password" : "Uus taastevõtme parool", "Repeat new recovery key password" : "Korda uut taastevõtme parooli", "Change Password" : "Muuda parooli", + "ownCloud basic encryption module" : "ownCloud peamine küpteerimismoodul", "Your private key password no longer matches your log-in password." : "Sinu provaatvõtme parool ei kattu enam sinu sisselogimise parooliga.", "Set your old private key password to your current log-in password:" : "Pane oma vana privaatvõtme parooliks oma praegune sisselogimise parool.", " If you don't remember your old password you can ask your administrator to recover your files." : "Kui sa ei mäleta oma vana parooli, siis palu oma süsteemihalduril taastada ligipääs failidele.", diff --git a/apps/encryption/l10n/he.js b/apps/encryption/l10n/he.js new file mode 100644 index 00000000000..c3c968eee2c --- /dev/null +++ b/apps/encryption/l10n/he.js @@ -0,0 +1,7 @@ +OC.L10N.register( + "encryption", + { + "Cheers!" : "לחיים!", + "Disabled" : "מנוטרל" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/he.json b/apps/encryption/l10n/he.json new file mode 100644 index 00000000000..44ed9b19997 --- /dev/null +++ b/apps/encryption/l10n/he.json @@ -0,0 +1,5 @@ +{ "translations": { + "Cheers!" : "לחיים!", + "Disabled" : "מנוטרל" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/encryption/l10n/nb_NO.js b/apps/encryption/l10n/nb_NO.js index d5ce6618689..f8f29883d5e 100644 --- a/apps/encryption/l10n/nb_NO.js +++ b/apps/encryption/l10n/nb_NO.js @@ -32,6 +32,8 @@ OC.L10N.register( "The share will expire on %s." : "Delingen vil opphøre %s.", "Cheers!" : "Ha det!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Vennligst logg inn på web-grensesnittet, gå til seksjonen \"ownCloud grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>", + "Encrypt the home storage" : "Krypter hjemmelageret", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av dette valget krypterer alle filer som er lagret på hovedlageret. Ellers vil kun filer på eksterne lagre bli kryptert.", "Enable recovery key" : "Aktiver gjenopprettingsnøkkel", "Disable recovery key" : "Deaktiver gjenopprettingsnøkkel", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Gjenopprettingsnøkkelen er en ekstra krypteringsnøkkel som brukes til å kryptere filer. Den tillater gjenoppretting av en brukers filer i tilfelle brukeren glemmer passordet sitt.", diff --git a/apps/encryption/l10n/nb_NO.json b/apps/encryption/l10n/nb_NO.json index 8b3e8c11747..26b2daab43a 100644 --- a/apps/encryption/l10n/nb_NO.json +++ b/apps/encryption/l10n/nb_NO.json @@ -30,6 +30,8 @@ "The share will expire on %s." : "Delingen vil opphøre %s.", "Cheers!" : "Ha det!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har aktivert serverkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Vennligst logg inn på web-grensesnittet, gå til seksjonen \"ownCloud grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>", + "Encrypt the home storage" : "Krypter hjemmelageret", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av dette valget krypterer alle filer som er lagret på hovedlageret. Ellers vil kun filer på eksterne lagre bli kryptert.", "Enable recovery key" : "Aktiver gjenopprettingsnøkkel", "Disable recovery key" : "Deaktiver gjenopprettingsnøkkel", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Gjenopprettingsnøkkelen er en ekstra krypteringsnøkkel som brukes til å kryptere filer. Den tillater gjenoppretting av en brukers filer i tilfelle brukeren glemmer passordet sitt.", diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index 334bbf05282..80c35dea495 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -30,7 +30,7 @@ OC.L10N.register( "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este arquivo, provavelmente este é um arquivo compartilhado. Por favor, pergunte o dono do arquivo para recompartilhar o arquivo com você.", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'ownCloud módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor faça o login para a interface da Web, vá para a seção 'ownCloud módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login..<br><br>", "Encrypt the home storage" : "Criptografar a pasta de armazenamento home", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção de criptografia para todos os arquivos armazenados no armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index 794eb478c74..b3ce8c7238e 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -28,7 +28,7 @@ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este arquivo, provavelmente este é um arquivo compartilhado. Por favor, pergunte o dono do arquivo para recompartilhar o arquivo com você.", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'ownCloud módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor faça o login para a interface da Web, vá para a seção 'ownCloud módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login..<br><br>", "Encrypt the home storage" : "Criptografar a pasta de armazenamento home", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção de criptografia para todos os arquivos armazenados no armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", diff --git a/apps/encryption/settings/settings-admin.php b/apps/encryption/settings/settings-admin.php index 8d55d587fed..32640ef0661 100644 --- a/apps/encryption/settings/settings-admin.php +++ b/apps/encryption/settings/settings-admin.php @@ -42,7 +42,7 @@ $util = new \OCA\Encryption\Util( $recoveryAdminEnabled = \OC::$server->getConfig()->getAppValue('encryption', 'recoveryAdminEnabled', '0'); $session = new \OCA\Encryption\Session(\OC::$server->getSession()); -$encryptHomeStorage = $util->shouldEncryptHomeStorage($user); +$encryptHomeStorage = $util->shouldEncryptHomeStorage(); $tmpl->assign('recoveryEnabled', $recoveryAdminEnabled); $tmpl->assign('initStatus', $session->getStatus()); diff --git a/apps/encryption/tests/lib/MigrationTest.php b/apps/encryption/tests/lib/MigrationTest.php index fc3d014345b..6df72ac1bf6 100644 --- a/apps/encryption/tests/lib/MigrationTest.php +++ b/apps/encryption/tests/lib/MigrationTest.php @@ -43,15 +43,18 @@ class MigrationTest extends \Test\TestCase { public static function setUpBeforeClass() { parent::setUpBeforeClass(); - \OC_User::createUser(self::TEST_ENCRYPTION_MIGRATION_USER1, 'foo'); - \OC_User::createUser(self::TEST_ENCRYPTION_MIGRATION_USER2, 'foo'); - \OC_User::createUser(self::TEST_ENCRYPTION_MIGRATION_USER3, 'foo'); + \OC::$server->getUserManager()->createUser(self::TEST_ENCRYPTION_MIGRATION_USER1, 'foo'); + \OC::$server->getUserManager()->createUser(self::TEST_ENCRYPTION_MIGRATION_USER2, 'foo'); + \OC::$server->getUserManager()->createUser(self::TEST_ENCRYPTION_MIGRATION_USER3, 'foo'); } public static function tearDownAfterClass() { - \OC_User::deleteUser(self::TEST_ENCRYPTION_MIGRATION_USER1); - \OC_User::deleteUser(self::TEST_ENCRYPTION_MIGRATION_USER2); - \OC_User::deleteUser(self::TEST_ENCRYPTION_MIGRATION_USER3); + $user = \OC::$server->getUserManager()->get(self::TEST_ENCRYPTION_MIGRATION_USER1); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get(self::TEST_ENCRYPTION_MIGRATION_USER2); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get(self::TEST_ENCRYPTION_MIGRATION_USER3); + if ($user !== null) { $user->delete(); } parent::tearDownAfterClass(); } diff --git a/apps/federation/api/ocsauthapi.php b/apps/federation/api/ocsauthapi.php index d165a0bd22f..b94550fd4f2 100644 --- a/apps/federation/api/ocsauthapi.php +++ b/apps/federation/api/ocsauthapi.php @@ -26,6 +26,7 @@ use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; use OCP\BackgroundJob\IJobList; +use OCP\ILogger; use OCP\IRequest; use OCP\Security\ISecureRandom; use OCP\Security\StringUtils; @@ -54,6 +55,9 @@ class OCSAuthAPI { /** @var DbHandler */ private $dbHandler; + /** @var ILogger */ + private $logger; + /** * OCSAuthAPI constructor. * @@ -62,19 +66,22 @@ class OCSAuthAPI { * @param IJobList $jobList * @param TrustedServers $trustedServers * @param DbHandler $dbHandler + * @param ILogger $logger */ public function __construct( IRequest $request, ISecureRandom $secureRandom, IJobList $jobList, TrustedServers $trustedServers, - DbHandler $dbHandler + DbHandler $dbHandler, + ILogger $logger ) { $this->request = $request; $this->secureRandom = $secureRandom; $this->jobList = $jobList; $this->trustedServers = $trustedServers; $this->dbHandler = $dbHandler; + $this->logger = $logger; } /** @@ -88,6 +95,7 @@ class OCSAuthAPI { $token = $this->request->getParam('token'); if ($this->trustedServers->isTrustedServer($url) === false) { + $this->logger->log(\OCP\Util::ERROR, 'remote server not trusted (' . $url . ') while requesting shared secret'); return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); } @@ -95,6 +103,7 @@ class OCSAuthAPI { // token wins $localToken = $this->dbHandler->getToken($url); if (strcmp($localToken, $token) > 0) { + $this->logger->log(\OCP\Util::ERROR, 'remote server (' . $url . ') presented lower token'); return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); } @@ -120,10 +129,13 @@ class OCSAuthAPI { $url = $this->request->getParam('url'); $token = $this->request->getParam('token'); - if ( - $this->trustedServers->isTrustedServer($url) === false - || $this->isValidToken($url, $token) === false - ) { + if ($this->trustedServers->isTrustedServer($url) === false) { + $this->logger->log(\OCP\Util::ERROR, 'remote server not trusted (' . $url . ') while getting shared secret'); + return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); + } + + if ($this->isValidToken($url, $token) === false) { + $this->logger->log(\OCP\Util::ERROR, 'remote server (' . $url . ') didn\'t send a valid token (got ' . $token . ') while getting shared secret'); return new \OC_OCS_Result(null, HTTP::STATUS_FORBIDDEN); } diff --git a/apps/federation/appinfo/application.php b/apps/federation/appinfo/application.php index 172283536b4..45d88548b70 100644 --- a/apps/federation/appinfo/application.php +++ b/apps/federation/appinfo/application.php @@ -108,7 +108,8 @@ class Application extends \OCP\AppFramework\App { $server->getSecureRandom(), $server->getJobList(), $container->query('TrustedServers'), - $container->query('DbHandler') + $container->query('DbHandler'), + $server->getLogger() ); diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml index 53b2926ba53..92afc995366 100644 --- a/apps/federation/appinfo/info.xml +++ b/apps/federation/appinfo/info.xml @@ -8,7 +8,7 @@ <version>0.0.1</version> <namespace>Federation</namespace> <category>other</category> - <dependencies> - <owncloud min-version="9.0" /> - </dependencies> + <dependencies> + <owncloud min-version="9.0" max-version="9.0" /> + </dependencies> </info> diff --git a/apps/federation/backgroundjob/getsharedsecret.php b/apps/federation/backgroundjob/getsharedsecret.php index eb55fa2d6ab..8aa8a08e07b 100644 --- a/apps/federation/backgroundjob/getsharedsecret.php +++ b/apps/federation/backgroundjob/getsharedsecret.php @@ -91,7 +91,7 @@ class GetSharedSecret extends QueuedJob{ $this->trustedServers = new TrustedServers( $this->dbHandler, \OC::$server->getHTTPClientService(), - \OC::$server->getLogger(), + $this->logger, $this->jobList, \OC::$server->getSecureRandom(), \OC::$server->getConfig() @@ -148,6 +148,7 @@ class GetSharedSecret extends QueuedJob{ } catch (ClientException $e) { $status = $e->getCode(); + $this->logger->logException($e); } // if we received a unexpected response we try again later diff --git a/apps/federation/backgroundjob/requestsharedsecret.php b/apps/federation/backgroundjob/requestsharedsecret.php index 24d8adada11..a1906d20823 100644 --- a/apps/federation/backgroundjob/requestsharedsecret.php +++ b/apps/federation/backgroundjob/requestsharedsecret.php @@ -60,6 +60,9 @@ class RequestSharedSecret extends QueuedJob { private $endPoint = '/ocs/v2.php/apps/federation/api/v1/request-shared-secret?format=json'; + /** @var ILogger */ + private $logger; + /** * RequestSharedSecret constructor. * @@ -80,13 +83,14 @@ class RequestSharedSecret extends QueuedJob { $this->jobList = $jobList ? $jobList : \OC::$server->getJobList(); $this->urlGenerator = $urlGenerator ? $urlGenerator : \OC::$server->getURLGenerator(); $this->dbHandler = $dbHandler ? $dbHandler : new DbHandler(\OC::$server->getDatabaseConnection(), \OC::$server->getL10N('federation')); + $this->logger = \OC::$server->getLogger(); if ($trustedServers) { $this->trustedServers = $trustedServers; } else { $this->trustedServers = new TrustedServers( $this->dbHandler, \OC::$server->getHTTPClientService(), - \OC::$server->getLogger(), + $this->logger, $this->jobList, \OC::$server->getSecureRandom(), \OC::$server->getConfig() @@ -142,6 +146,7 @@ class RequestSharedSecret extends QueuedJob { } catch (ClientException $e) { $status = $e->getCode(); + $this->logger->logException($e); } // if we received a unexpected response we try again later diff --git a/apps/federation/tests/api/ocsauthapitest.php b/apps/federation/tests/api/ocsauthapitest.php index a334686c24e..e6a95af8585 100644 --- a/apps/federation/tests/api/ocsauthapitest.php +++ b/apps/federation/tests/api/ocsauthapitest.php @@ -28,6 +28,7 @@ use OCA\Federation\API\OCSAuthAPI; use OCA\Federation\DbHandler; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http; +use OCP\ILogger; use OCP\IRequest; use OCP\Security\ISecureRandom; use Test\TestCase; @@ -49,6 +50,9 @@ class OCSAuthAPITest extends TestCase { /** @var \PHPUnit_Framework_MockObject_MockObject | DbHandler */ private $dbHandler; + /** @var \PHPUnit_Framework_MockObject_MockObject | ILogger */ + private $logger; + /** @var OCSAuthApi */ private $ocsAuthApi; @@ -63,13 +67,16 @@ class OCSAuthAPITest extends TestCase { ->disableOriginalConstructor()->getMock(); $this->jobList = $this->getMockBuilder('OC\BackgroundJob\JobList') ->disableOriginalConstructor()->getMock(); + $this->logger = $this->getMockBuilder('OCP\ILogger') + ->disableOriginalConstructor()->getMock(); $this->ocsAuthApi = new OCSAuthAPI( $this->request, $this->secureRandom, $this->jobList, $this->trustedServers, - $this->dbHandler + $this->dbHandler, + $this->logger ); } @@ -136,7 +143,8 @@ class OCSAuthAPITest extends TestCase { $this->secureRandom, $this->jobList, $this->trustedServers, - $this->dbHandler + $this->dbHandler, + $this->logger ] )->setMethods(['isValidToken'])->getMock(); diff --git a/apps/files/admin.php b/apps/files/admin.php index f23f9b52698..a2092c600a7 100644 --- a/apps/files/admin.php +++ b/apps/files/admin.php @@ -33,7 +33,7 @@ $htaccessWorking=(getenv('htaccessWorking')=='true'); $upload_max_filesize = OC::$server->getIniWrapper()->getBytes('upload_max_filesize'); $post_max_size = OC::$server->getIniWrapper()->getBytes('post_max_size'); $maxUploadFilesize = OCP\Util::humanFileSize(min($upload_max_filesize, $post_max_size)); -if($_POST && OC_Util::isCallRegistered()) { +if($_POST && \OC::$server->getRequest()->passesCSRFCheck()) { if(isset($_POST['maxUploadSize'])) { if(($setMaxSize = OC_Files::setUploadLimit(OCP\Util::computerFileSize($_POST['maxUploadSize']))) !== false) { $maxUploadFilesize = OCP\Util::humanFileSize($setMaxSize); diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml index df12b87397d..37ee564057a 100644 --- a/apps/files/appinfo/info.xml +++ b/apps/files/appinfo/info.xml @@ -5,7 +5,6 @@ <description>File Management</description> <licence>AGPL</licence> <author>Robin Appelman, Vincent Petry</author> - <shipped>true</shipped> <standalone/> <default_enable/> <version>1.4.1</version> @@ -13,7 +12,7 @@ <filesystem/> </types> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> <documentation> <user>user-files</user> diff --git a/apps/files/appinfo/register_command.php b/apps/files/appinfo/register_command.php index 3042c259872..7e541ca26f2 100644 --- a/apps/files/appinfo/register_command.php +++ b/apps/files/appinfo/register_command.php @@ -20,5 +20,5 @@ * */ -$application->add(new OCA\Files\Command\Scan(OC_User::getManager())); +$application->add(new OCA\Files\Command\Scan(\OC::$server->getUserManager())); $application->add(new OCA\Files\Command\DeleteOrphanedFiles(\OC::$server->getDatabaseConnection())); diff --git a/apps/files/command/scan.php b/apps/files/command/scan.php index 31ae555e041..7e00d8a2312 100644 --- a/apps/files/command/scan.php +++ b/apps/files/command/scan.php @@ -32,6 +32,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Helper\Table; class Scan extends Command { @@ -39,6 +40,15 @@ class Scan extends Command { * @var \OC\User\Manager $userManager */ private $userManager; + /** @var float */ + protected $execTime = 0; + /** @var int */ + protected $foldersCounter = 0; + /** @var int */ + protected $filesCounter = 0; + /** @var bool */ + protected $interrupted = false; + public function __construct(\OC\User\Manager $userManager) { $this->userManager = $userManager; @@ -64,7 +74,13 @@ class Scan extends Command { 'quiet', 'q', InputOption::VALUE_NONE, - 'suppress output' + 'suppress any output' + ) + ->addOption( + 'verbose', + '-v|vv|vvv', + InputOption::VALUE_NONE, + 'verbose the output' ) ->addOption( 'all', @@ -74,19 +90,31 @@ class Scan extends Command { ); } - protected function scanFiles($user, $path, $quiet, OutputInterface $output) { + protected function scanFiles($user, $path, $verbose, OutputInterface $output) { $scanner = new \OC\Files\Utils\Scanner($user, \OC::$server->getDatabaseConnection(), \OC::$server->getLogger()); - if (!$quiet) { + # printout and count + if ($verbose) { $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function ($path) use ($output) { $output->writeln("Scanning file <info>$path</info>"); + $this->filesCounter += 1; }); $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function ($path) use ($output) { $output->writeln("Scanning folder <info>$path</info>"); + $this->foldersCounter += 1; }); $scanner->listen('\OC\Files\Utils\Scanner', 'StorageNotAvailable', function (StorageNotAvailableException $e) use ($output) { $output->writeln("Error while scanning, storage not available (" . $e->getMessage() . ")"); }); + # count only + } else { + $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function ($path) use ($output) { + $this->filesCounter += 1; + }); + $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function ($path) use ($output) { + $this->foldersCounter += 1; + }); } + try { $scanner->scan($path); } catch (ForbiddenException $e) { @@ -95,6 +123,7 @@ class Scan extends Command { } } + protected function execute(InputInterface $input, OutputInterface $output) { $inputPath = $input->getOption('path'); if ($inputPath) { @@ -106,24 +135,173 @@ class Scan extends Command { } else { $users = $input->getArgument('user_id'); } - $quiet = $input->getOption('quiet'); - if (count($users) === 0) { $output->writeln("<error>Please specify the user id to scan, \"--all\" to scan for all users or \"--path=...\"</error>"); return; } + # no messaging level option means: no full printout but statistics + # $quiet means no print at all + # $verbose means full printout including statistics + # -q -v full stat + # 0 0 no yes + # 0 1 yes yes + # 1 -- no no (quiet overrules verbose) + $verbose = $input->getOption('verbose'); + $quiet = $input->getOption('quiet'); + # restrict the verbosity level to VERBOSITY_VERBOSE + if ($output->getVerbosity()>OutputInterface::VERBOSITY_VERBOSE) { + $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); + } + if ($quiet) { + $verbose = false; + } + + $this->initTools(); + foreach ($users as $user) { if (is_object($user)) { $user = $user->getUID(); } $path = $inputPath ? $inputPath : '/' . $user; if ($this->userManager->userExists($user)) { - $this->scanFiles($user, $path, $quiet, $output); + # full: printout data if $verbose was set + $this->scanFiles($user, $path, $verbose, $output); } else { $output->writeln("<error>Unknown user $user</error>"); } } + + # stat: printout statistics if $quiet was not set + if (!$quiet) { + $this->presentStats($output); + } + + } + + + /** + * Checks if the command was interrupted by ctrl-c + */ + protected function checkForInterruption($output) { + if ($this->hasBeenInterrupted()) { + $this->presentResults($output); + exit; + } + } + + + /** + * Initialises some useful tools for the Command + */ + protected function initTools() { + // Start the timer + $this->execTime = -microtime(true); + // Convert PHP errors to exceptions + set_error_handler([$this, 'exceptionErrorHandler'], E_ALL); + + // Collect interrupts and notify the running command + pcntl_signal(SIGTERM, [$this, 'cancelOperation']); + pcntl_signal(SIGINT, [$this, 'cancelOperation']); + } + + + /** + * Changes the status of the command to "interrupted" + * + * Gives a chance to the command to properly terminate what it's doing + */ + private function cancelOperation() { + $this->interrupted = true; + } + + + /** + * Processes PHP errors as exceptions in order to be able to keep track of problems + * + * @see https://secure.php.net/manual/en/function.set-error-handler.php + * + * @param int $severity the level of the error raised + * @param string $message + * @param string $file the filename that the error was raised in + * @param int $line the line number the error was raised + * + * @throws \ErrorException + */ + public function exceptionErrorHandler($severity, $message, $file, $line) { + if (!(error_reporting() & $severity)) { + // This error code is not included in error_reporting + return; + } + throw new \ErrorException($message, 0, $severity, $file, $line); } + + + /** + * @return bool + */ + protected function hasBeenInterrupted() { + $cancelled = false; + pcntl_signal_dispatch(); + if ($this->interrupted) { + $cancelled = true; + } + + return $cancelled; + } + + + /** + * @param OutputInterface $output + */ + protected function presentStats(OutputInterface $output) { + // Stop the timer + $this->execTime += microtime(true); + $output->writeln(""); + + $headers = [ + 'Folders', 'Files', 'Elapsed time' + ]; + + $this->showSummary($headers, null, $output); + } + + + /** + * Shows a summary of operations + * + * @param string[] $headers + * @param string[] $rows + * @param OutputInterface $output + */ + protected function showSummary($headers, $rows, OutputInterface $output) { + $niceDate = $this->formatExecTime(); + if (!$rows) { + $rows = [ + $this->foldersCounter, + $this->filesCounter, + $niceDate, + ]; + } + $table = new Table($output); + $table + ->setHeaders($headers) + ->setRows([$rows]); + $table->render(); + } + + + /** + * Formats microtime into a human readable format + * + * @return string + */ + protected function formatExecTime() { + list($secs, $tens) = explode('.', sprintf("%.1f", ($this->execTime))); + $niceDate = date('H:i:s', $secs) . '.' . $tens; + + return $niceDate; + } + } diff --git a/apps/files/css/detailsView.css b/apps/files/css/detailsView.css index 485c20e6865..c65107937da 100644 --- a/apps/files/css/detailsView.css +++ b/apps/files/css/detailsView.css @@ -83,6 +83,9 @@ } #app-sidebar .file-details { + color: #999; +} +#app-sidebar .file-details img { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; opacity: .5; } diff --git a/apps/files/download.php b/apps/files/download.php index b0628e394be..b058f0ebf5b 100644 --- a/apps/files/download.php +++ b/apps/files/download.php @@ -39,7 +39,7 @@ if(!\OC\Files\Filesystem::file_exists($filename)) { exit; } -$ftype=\OC_Helper::getSecureMimeType(\OC\Files\Filesystem::getMimeType( $filename )); +$ftype=\OC::$server->getMimeTypeDetector()->getSecureMimeType(\OC\Files\Filesystem::getMimeType( $filename )); header('Content-Type:'.$ftype); OCP\Response::setContentDispositionHeader(basename($filename), 'attachment'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 672c39a8bb1..0dbf4f938bb 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -990,13 +990,16 @@ } if (fileData.mountType) { - // FIXME: HACK: detect shared-root - if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared') { - // if parent folder isn't share, assume the displayed folder is a share root - fileData.mountType = 'shared-root'; - } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external') { - // if parent folder isn't external, assume the displayed folder is the external storage root - fileData.mountType = 'external-root'; + // dirInfo (parent) only exist for the "real" file list + if (this.dirInfo.id) { + // FIXME: HACK: detect shared-root + if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared' && this.dirInfo.mountType !== 'shared-root') { + // if parent folder isn't share, assume the displayed folder is a share root + fileData.mountType = 'shared-root'; + } else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external' && this.dirInfo.mountType !== 'external-root') { + // if parent folder isn't external, assume the displayed folder is the external storage root + fileData.mountType = 'external-root'; + } } tr.attr('data-mounttype', fileData.mountType); } @@ -1065,7 +1068,7 @@ nameSpan.tooltip({placement: 'right'}); } // dirs can show the number of uploaded files - if (mime !== 'httpd/unix-directory') { + if (mime === 'httpd/unix-directory') { linkElem.append($('<span></span>').attr({ 'class': 'uploadtext', 'currentUploads': 0 @@ -1380,7 +1383,7 @@ * Returns list of webdav properties to request */ _getWebdavProperties: function() { - return this.filesClient.getPropfindProperties(); + return [].concat(this.filesClient.getPropfindProperties()); }, /** @@ -2069,7 +2072,7 @@ */ showFileBusyState: function(files, state) { var self = this; - if (!_.isArray(files)) { + if (!_.isArray(files) && !files.is) { files = [files]; } @@ -2077,10 +2080,13 @@ state = true; } - _.each(files, function($tr) { + _.each(files, function(fileName) { // jquery element already ? - if (!$tr.is) { - $tr = self.findFileEl($tr); + var $tr; + if (_.isString(fileName)) { + $tr = self.findFileEl(fileName); + } else { + $tr = $(fileName); } var $thumbEl = $tr.find('.thumbnail'); @@ -2465,6 +2471,7 @@ } }); fileUploadStart.on('fileuploadadd', function(e, data) { + console.log('XXXXXXX'); OC.Upload.log('filelist handle fileuploadadd', e, data); //finish delete if we are uploading a deleted file @@ -2484,8 +2491,7 @@ var translatedText = n('files', 'Uploading %n file', 'Uploading %n files', currentUploads); if (currentUploads === 1) { - var img = OC.imagePath('core', 'loading.gif'); - data.context.find('.thumbnail').css('background-image', 'url(' + img + ')'); + self.showFileBusyState(uploadText.closest('tr'), true); uploadText.text(translatedText); uploadText.show(); } else { @@ -2523,8 +2529,7 @@ uploadText.attr('currentUploads', currentUploads); var translatedText = n('files', 'Uploading %n file', 'Uploading %n files', currentUploads); if (currentUploads === 0) { - var img = OC.imagePath('core', 'filetypes/folder'); - data.context.find('.thumbnail').css('background-image', 'url(' + img + ')'); + self.showFileBusyState(uploadText.closest('tr'), false); uploadText.text(translatedText); uploadText.hide(); } else { @@ -2601,18 +2606,15 @@ } } }); - fileUploadStart.on('fileuploadstop', function(e, data) { - OC.Upload.log('filelist handle fileuploadstop', e, data); + fileUploadStart.on('fileuploadstop', function() { + OC.Upload.log('filelist handle fileuploadstop'); + + //cleanup uploading to a dir + var uploadText = self.$fileList.find('tr .uploadtext'); + self.showFileBusyState(uploadText.closest('tr'), false); + uploadText.fadeOut(); + uploadText.attr('currentUploads', 0); - //if user pressed cancel hide upload chrome - if (data.errorThrown === 'abort') { - //cleanup uploading to a dir - var uploadText = $('tr .uploadtext'); - var img = OC.imagePath('core', 'filetypes/folder'); - uploadText.parents('td.filename').find('.thumbnail').css('background-image', 'url(' + img + ')'); - uploadText.fadeOut(); - uploadText.attr('currentUploads', 0); - } self.updateStorageStatistics(); }); fileUploadStart.on('fileuploadfail', function(e, data) { @@ -2621,9 +2623,8 @@ //if user pressed cancel hide upload chrome if (data.errorThrown === 'abort') { //cleanup uploading to a dir - var uploadText = $('tr .uploadtext'); - var img = OC.imagePath('core', 'filetypes/folder'); - uploadText.parents('td.filename').find('.thumbnail').css('background-image', 'url(' + img + ')'); + var uploadText = self.$fileList.find('tr .uploadtext'); + self.showFileBusyState(uploadText.closest('tr'), false); uploadText.fadeOut(); uploadText.attr('currentUploads', 0); } diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index 953267393b2..021c6b52b32 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -34,6 +34,7 @@ OC.L10N.register( "Download" : "تحميل", "Rename" : "إعادة التسمية", "Delete" : "حذف ", + "Unshare" : "إلغاء المشاركة", "Details" : "تفاصيل", "Select" : "اختار", "Pending" : "قيد الانتظار", diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json index 245fe9a0b9e..53385598c24 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -32,6 +32,7 @@ "Download" : "تحميل", "Rename" : "إعادة التسمية", "Delete" : "حذف ", + "Unshare" : "إلغاء المشاركة", "Details" : "تفاصيل", "Select" : "اختار", "Pending" : "قيد الانتظار", diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js index 8fc63c1ac35..637adcebc75 100644 --- a/apps/files/l10n/ast.js +++ b/apps/files/l10n/ast.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Descargar", "Rename" : "Renomar", "Delete" : "Desaniciar", + "Disconnect storage" : "Desconeutar almacenamientu", + "Unshare" : "Dexar de compartir", "Details" : "Detalles", "Select" : "Esbillar", "Pending" : "Pendiente", diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json index 33c119771f7..352fbd9fac3 100644 --- a/apps/files/l10n/ast.json +++ b/apps/files/l10n/ast.json @@ -32,6 +32,8 @@ "Download" : "Descargar", "Rename" : "Renomar", "Delete" : "Desaniciar", + "Disconnect storage" : "Desconeutar almacenamientu", + "Unshare" : "Dexar de compartir", "Details" : "Detalles", "Select" : "Esbillar", "Pending" : "Pendiente", diff --git a/apps/files/l10n/az.js b/apps/files/l10n/az.js index cf7d81063ce..302bb051407 100644 --- a/apps/files/l10n/az.js +++ b/apps/files/l10n/az.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Yüklə", "Rename" : "Adı dəyiş", "Delete" : "Sil", + "Disconnect storage" : "Daşıyıcını ayır", + "Unshare" : "Paylaşımı durdur", "Details" : "Detallar", "Select" : "Seç", "Pending" : "Gözləmə", diff --git a/apps/files/l10n/az.json b/apps/files/l10n/az.json index f2c45fda2f7..b213c86cb2f 100644 --- a/apps/files/l10n/az.json +++ b/apps/files/l10n/az.json @@ -32,6 +32,8 @@ "Download" : "Yüklə", "Rename" : "Adı dəyiş", "Delete" : "Sil", + "Disconnect storage" : "Daşıyıcını ayır", + "Unshare" : "Paylaşımı durdur", "Details" : "Detallar", "Select" : "Seç", "Pending" : "Gözləmə", diff --git a/apps/files/l10n/bn_BD.js b/apps/files/l10n/bn_BD.js index b968a225da7..0ee56888df0 100644 --- a/apps/files/l10n/bn_BD.js +++ b/apps/files/l10n/bn_BD.js @@ -26,6 +26,7 @@ OC.L10N.register( "Download" : "ডাউনলোড", "Rename" : "পূনঃনামকরণ", "Delete" : "মুছে", + "Unshare" : "ভাগাভাগি বাতিল ", "Details" : "বিস্তারিত", "Pending" : "মুলতুবি", "Name" : "রাম", diff --git a/apps/files/l10n/bn_BD.json b/apps/files/l10n/bn_BD.json index bed559330ad..15ec2b4b826 100644 --- a/apps/files/l10n/bn_BD.json +++ b/apps/files/l10n/bn_BD.json @@ -24,6 +24,7 @@ "Download" : "ডাউনলোড", "Rename" : "পূনঃনামকরণ", "Delete" : "মুছে", + "Unshare" : "ভাগাভাগি বাতিল ", "Details" : "বিস্তারিত", "Pending" : "মুলতুবি", "Name" : "রাম", diff --git a/apps/files/l10n/bs.js b/apps/files/l10n/bs.js index 9da51ece871..278b6371771 100644 --- a/apps/files/l10n/bs.js +++ b/apps/files/l10n/bs.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Preuzmi", "Rename" : "Preimenuj", "Delete" : "Izbriši", + "Disconnect storage" : "Diskonektuj pohranu", + "Unshare" : "Prestani dijeliti", "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Nemoguće odrediti datum", diff --git a/apps/files/l10n/bs.json b/apps/files/l10n/bs.json index 095fe47048d..678bedcbe36 100644 --- a/apps/files/l10n/bs.json +++ b/apps/files/l10n/bs.json @@ -32,6 +32,8 @@ "Download" : "Preuzmi", "Rename" : "Preimenuj", "Delete" : "Izbriši", + "Disconnect storage" : "Diskonektuj pohranu", + "Unshare" : "Prestani dijeliti", "Select" : "Izaberi", "Pending" : "Na čekanju", "Unable to determine date" : "Nemoguće odrediti datum", diff --git a/apps/files/l10n/de_AT.js b/apps/files/l10n/de_AT.js index d7a77f9ee40..783ff4aaa6b 100644 --- a/apps/files/l10n/de_AT.js +++ b/apps/files/l10n/de_AT.js @@ -5,6 +5,7 @@ OC.L10N.register( "Files" : "Dateien", "Download" : "Herunterladen", "Delete" : "Löschen", + "Unshare" : "Teilung zurücknehmen", "Details" : "Details", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", diff --git a/apps/files/l10n/de_AT.json b/apps/files/l10n/de_AT.json index 7381a96665a..2d54751bdf6 100644 --- a/apps/files/l10n/de_AT.json +++ b/apps/files/l10n/de_AT.json @@ -3,6 +3,7 @@ "Files" : "Dateien", "Download" : "Herunterladen", "Delete" : "Löschen", + "Unshare" : "Teilung zurücknehmen", "Details" : "Details", "New folder" : "Neuer Ordner", "Upload" : "Hochladen", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index d65d062c75d..517799c1bcb 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Herunterladen", "Rename" : "Umbenennen", "Delete" : "Löschen", + "Disconnect storage" : "Speicher trennen", + "Unshare" : "Freigabe aufheben", "Details" : "Details", "Select" : "Auswählen", "Pending" : "Ausstehend", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 79467fc7642..90e499bec2f 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -32,6 +32,8 @@ "Download" : "Herunterladen", "Rename" : "Umbenennen", "Delete" : "Löschen", + "Disconnect storage" : "Speicher trennen", + "Unshare" : "Freigabe aufheben", "Details" : "Details", "Select" : "Auswählen", "Pending" : "Ausstehend", diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index f60e842199f..265381cd670 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Λήψη", "Rename" : "Μετονομασία", "Delete" : "Διαγραφή", + "Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος", + "Unshare" : "Διακοπή διαμοιρασμού", "Details" : "Λεπτομέρειες", "Select" : "Επιλογή", "Pending" : "Εκκρεμεί", diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index 15cb56c87d1..1f0d997b3da 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -32,6 +32,8 @@ "Download" : "Λήψη", "Rename" : "Μετονομασία", "Delete" : "Διαγραφή", + "Disconnect storage" : "Αποσυνδεδεμένος αποθηκευτικός χώρος", + "Unshare" : "Διακοπή διαμοιρασμού", "Details" : "Λεπτομέρειες", "Select" : "Επιλογή", "Pending" : "Εκκρεμεί", diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index a190c45e846..96c5acf9170 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Download", "Rename" : "Rename", "Delete" : "Delete", + "Disconnect storage" : "Disconnect storage", + "Unshare" : "Unshare", "Details" : "Details", "Select" : "Select", "Pending" : "Pending", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index ca8a60ec73b..4b0762f8b70 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -32,6 +32,8 @@ "Download" : "Download", "Rename" : "Rename", "Delete" : "Delete", + "Disconnect storage" : "Disconnect storage", + "Unshare" : "Unshare", "Details" : "Details", "Select" : "Select", "Pending" : "Pending", diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js index dbdd0422911..398d2f669b0 100644 --- a/apps/files/l10n/eo.js +++ b/apps/files/l10n/eo.js @@ -28,6 +28,7 @@ OC.L10N.register( "Download" : "Elŝuti", "Rename" : "Alinomigi", "Delete" : "Forigi", + "Unshare" : "Malkunhavigi", "Details" : "Detaloj", "Select" : "Elekti", "Pending" : "Traktotaj", diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json index b858ccece4d..2a76d0ab2c9 100644 --- a/apps/files/l10n/eo.json +++ b/apps/files/l10n/eo.json @@ -26,6 +26,7 @@ "Download" : "Elŝuti", "Rename" : "Alinomigi", "Delete" : "Forigi", + "Unshare" : "Malkunhavigi", "Details" : "Detaloj", "Select" : "Elekti", "Pending" : "Traktotaj", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 7bc628b8f9b..4b0ddbb7265 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Descargar", "Rename" : "Renombrar", "Delete" : "Eliminar", + "Disconnect storage" : "Desconectar almacenamiento", + "Unshare" : "Dejar de compartir", "Details" : "Detalles", "Select" : "Seleccionar", "Pending" : "Pendiente", @@ -97,6 +99,7 @@ OC.L10N.register( "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", "Save" : "Guardar", + "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\">access your Files via WebDAV</a>" : "Use esta URL <a href=\"%s\" target=\"_blank\">para acceder via WebDAV</a>", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index 27ebcb1da46..09411bc5b2a 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -32,6 +32,8 @@ "Download" : "Descargar", "Rename" : "Renombrar", "Delete" : "Eliminar", + "Disconnect storage" : "Desconectar almacenamiento", + "Unshare" : "Dejar de compartir", "Details" : "Detalles", "Select" : "Seleccionar", "Pending" : "Pendiente", @@ -95,6 +97,7 @@ "Maximum upload size" : "Tamaño máximo de subida", "max. possible: " : "máx. posible:", "Save" : "Guardar", + "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\">access your Files via WebDAV</a>" : "Use esta URL <a href=\"%s\" target=\"_blank\">para acceder via WebDAV</a>", diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index 0e4dbddeda9..9d4924d1d50 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -28,6 +28,7 @@ OC.L10N.register( "Download" : "Descargar", "Rename" : "Renombrar", "Delete" : "Eliminar", + "Unshare" : "Dejar de compartir", "Details" : "Detalles", "Pending" : "Pendiente", "Name" : "Nombre", diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index cb903ddd9dc..9abf30f0c7c 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -26,6 +26,7 @@ "Download" : "Descargar", "Rename" : "Renombrar", "Delete" : "Eliminar", + "Unshare" : "Dejar de compartir", "Details" : "Detalles", "Pending" : "Pendiente", "Name" : "Nombre", diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index f136bd300b1..f577fa663fc 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -34,12 +34,19 @@ OC.L10N.register( "Download" : "Lae alla", "Rename" : "Nimeta ümber", "Delete" : "Kustuta", + "Disconnect storage" : "Ühenda andmehoidla lahti.", + "Unshare" : "Lõpeta jagamine", "Details" : "Üksikasjad", "Select" : "Vali", "Pending" : "Ootel", "Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", + "Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus", + "{newName} already exists" : "{newName} on juba olemas", + "Could not rename \"{fileName}\"" : "\"{fileName}\" ümbernimetamine ebaõnnestus", + "Could not create file \"{file}\"" : "Faili \"{file}\" loomine ebaõnnestus", + "Error deleting file \"{fileName}\"." : "Tõrge faili \"{fileName}\" kustutamisel.", "No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'", "Name" : "Nimi", "Size" : "Suurus", @@ -62,6 +69,7 @@ OC.L10N.register( "Favorite" : "Lemmik", "Folder" : "Kaust", "New folder" : "Uus kaust", + "{newname} already exists" : "{newname} on juba olemas", "Upload" : "Lae üles", "An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge", "A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>", @@ -96,6 +104,7 @@ OC.L10N.register( "Currently scanning" : "Praegu skännimisel", "No favorites" : "Lemmikuid pole", "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", - "Text file" : "Tekstifail" + "Text file" : "Tekstifail", + "New text file.txt" : "Uus tekstifail.txt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index 6e1961770c9..078b8d2d6d7 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -32,12 +32,19 @@ "Download" : "Lae alla", "Rename" : "Nimeta ümber", "Delete" : "Kustuta", + "Disconnect storage" : "Ühenda andmehoidla lahti.", + "Unshare" : "Lõpeta jagamine", "Details" : "Üksikasjad", "Select" : "Vali", "Pending" : "Ootel", "Unable to determine date" : "Kuupäeva tuvastamine ei õnnestunud", "This operation is forbidden" : "See toiming on keelatud", "This directory is unavailable, please check the logs or contact the administrator" : "See kaust pole saadaval. Palun kontrolli logifaile või võta ühendust administraatoriga", + "Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus", + "{newName} already exists" : "{newName} on juba olemas", + "Could not rename \"{fileName}\"" : "\"{fileName}\" ümbernimetamine ebaõnnestus", + "Could not create file \"{file}\"" : "Faili \"{file}\" loomine ebaõnnestus", + "Error deleting file \"{fileName}\"." : "Tõrge faili \"{fileName}\" kustutamisel.", "No entries in this folder match '{filter}'" : "Ükski sissekanne ei kattu filtriga '{filter}'", "Name" : "Nimi", "Size" : "Suurus", @@ -60,6 +67,7 @@ "Favorite" : "Lemmik", "Folder" : "Kaust", "New folder" : "Uus kaust", + "{newname} already exists" : "{newname} on juba olemas", "Upload" : "Lae üles", "An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge", "A new file or folder has been <strong>created</strong>" : "Uus fail või kataloog on <strong>loodud</strong>", @@ -94,6 +102,7 @@ "Currently scanning" : "Praegu skännimisel", "No favorites" : "Lemmikuid pole", "Files and folders you mark as favorite will show up here" : "Siin kuvatakse faile ja kaustasid, mille oled märkinud lemmikuteks", - "Text file" : "Tekstifail" + "Text file" : "Tekstifail", + "New text file.txt" : "Uus tekstifail.txt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js index 9add1516c46..d7b9935ac5e 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Deskargatu", "Rename" : "Berrizendatu", "Delete" : "Ezabatu", + "Disconnect storage" : "Deskonektatu biltegia", + "Unshare" : "Ez elkarbanatu", "Details" : "Xehetasunak", "Select" : "hautatu", "Pending" : "Zain", diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index 96943f33a9a..71dc13b5741 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -32,6 +32,8 @@ "Download" : "Deskargatu", "Rename" : "Berrizendatu", "Delete" : "Ezabatu", + "Disconnect storage" : "Deskonektatu biltegia", + "Unshare" : "Ez elkarbanatu", "Details" : "Xehetasunak", "Select" : "hautatu", "Pending" : "Zain", diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js index 46cbbc376ab..5f6c49e742a 100644 --- a/apps/files/l10n/fa.js +++ b/apps/files/l10n/fa.js @@ -34,6 +34,7 @@ OC.L10N.register( "Download" : "دانلود", "Rename" : "تغییرنام", "Delete" : "حذف", + "Unshare" : "لغو اشتراک", "Details" : "جزئیات", "Select" : "انتخاب", "Pending" : "در انتظار", diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json index b9e32d69e37..a4d0add25ba 100644 --- a/apps/files/l10n/fa.json +++ b/apps/files/l10n/fa.json @@ -32,6 +32,7 @@ "Download" : "دانلود", "Rename" : "تغییرنام", "Delete" : "حذف", + "Unshare" : "لغو اشتراک", "Details" : "جزئیات", "Select" : "انتخاب", "Pending" : "در انتظار", diff --git a/apps/files/l10n/fi_FI.js b/apps/files/l10n/fi_FI.js index 8bebb81fd35..5e1327f7556 100644 --- a/apps/files/l10n/fi_FI.js +++ b/apps/files/l10n/fi_FI.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Lataa", "Rename" : "Nimeä uudelleen", "Delete" : "Poista", + "Disconnect storage" : "Katkaise yhteys tallennustilaan", + "Unshare" : "Peru jakaminen", "Details" : "Tiedot", "Select" : "Valitse", "Pending" : "Odottaa", diff --git a/apps/files/l10n/fi_FI.json b/apps/files/l10n/fi_FI.json index 64b0a886b73..baf6c5d4499 100644 --- a/apps/files/l10n/fi_FI.json +++ b/apps/files/l10n/fi_FI.json @@ -32,6 +32,8 @@ "Download" : "Lataa", "Rename" : "Nimeä uudelleen", "Delete" : "Poista", + "Disconnect storage" : "Katkaise yhteys tallennustilaan", + "Unshare" : "Peru jakaminen", "Details" : "Tiedot", "Select" : "Valitse", "Pending" : "Odottaa", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index 6af58e93094..16f95572933 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Télécharger", "Rename" : "Renommer", "Delete" : "Supprimer", + "Disconnect storage" : "Déconnecter ce support de stockage", + "Unshare" : "Ne plus partager", "Details" : "Détails", "Select" : "Sélectionner", "Pending" : "En attente", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index ba25b77e3df..3f8cdf95538 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -32,6 +32,8 @@ "Download" : "Télécharger", "Rename" : "Renommer", "Delete" : "Supprimer", + "Disconnect storage" : "Déconnecter ce support de stockage", + "Unshare" : "Ne plus partager", "Details" : "Détails", "Select" : "Sélectionner", "Pending" : "En attente", diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js index 389fe8e4d2c..1cd0ff6303d 100644 --- a/apps/files/l10n/he.js +++ b/apps/files/l10n/he.js @@ -14,6 +14,7 @@ OC.L10N.register( "Upload failed. Could not get file info." : "העלאה נכשלה. לא ניתן להשיג את פרטי הקובץ.", "Invalid directory." : "תיקייה שגויה.", "Files" : "קבצים", + "All files" : "כל הקבצים", "Favorites" : "מועדפים", "Home" : "בית", "Close" : "סגירה", @@ -24,15 +25,20 @@ OC.L10N.register( "Download" : "הורדה", "Rename" : "שינוי שם", "Delete" : "מחיקה", + "Unshare" : "הסר שיתוף", "Details" : "פרטים", "Select" : "בחר", "Pending" : "ממתין", + "This operation is forbidden" : "פעולה זו אסורה", + "This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל", "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", "New" : "חדש", "File name cannot be empty." : "שם קובץ אינו יכול להיות ריק", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", + "Path" : "נתיב", + "Favorited" : "מועדף", "Favorite" : "מועדף", "Folder" : "תיקייה", "New folder" : "תיקייה חדשה", @@ -52,12 +58,17 @@ OC.L10N.register( "Maximum upload size" : "גודל העלאה מקסימלי", "max. possible: " : "המרבי האפשרי: ", "Save" : "שמירה", + "Missing permissions to edit from here." : "חסרות הרשאות לעריכה מכאן.", "Settings" : "הגדרות", "WebDAV" : "WebDAV", "Cancel upload" : "ביטול ההעלאה", + "No files in here" : "אין כאן קבצים", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", + "Select all" : "לבחור הכול", "Upload too large" : "העלאה גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה.", "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין.", + "No favorites" : "אין מועדפים", "Text file" : "קובץ טקסט" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json index c4866aea3c0..8d9b8fc47f9 100644 --- a/apps/files/l10n/he.json +++ b/apps/files/l10n/he.json @@ -12,6 +12,7 @@ "Upload failed. Could not get file info." : "העלאה נכשלה. לא ניתן להשיג את פרטי הקובץ.", "Invalid directory." : "תיקייה שגויה.", "Files" : "קבצים", + "All files" : "כל הקבצים", "Favorites" : "מועדפים", "Home" : "בית", "Close" : "סגירה", @@ -22,15 +23,20 @@ "Download" : "הורדה", "Rename" : "שינוי שם", "Delete" : "מחיקה", + "Unshare" : "הסר שיתוף", "Details" : "פרטים", "Select" : "בחר", "Pending" : "ממתין", + "This operation is forbidden" : "פעולה זו אסורה", + "This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל", "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", "New" : "חדש", "File name cannot be empty." : "שם קובץ אינו יכול להיות ריק", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", + "Path" : "נתיב", + "Favorited" : "מועדף", "Favorite" : "מועדף", "Folder" : "תיקייה", "New folder" : "תיקייה חדשה", @@ -50,12 +56,17 @@ "Maximum upload size" : "גודל העלאה מקסימלי", "max. possible: " : "המרבי האפשרי: ", "Save" : "שמירה", + "Missing permissions to edit from here." : "חסרות הרשאות לעריכה מכאן.", "Settings" : "הגדרות", "WebDAV" : "WebDAV", "Cancel upload" : "ביטול ההעלאה", + "No files in here" : "אין כאן קבצים", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", + "Select all" : "לבחור הכול", "Upload too large" : "העלאה גדולה מידי", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה.", "Files are being scanned, please wait." : "הקבצים נסרקים, נא להמתין.", + "No favorites" : "אין מועדפים", "Text file" : "קובץ טקסט" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js index b6ed823de68..321a02235b2 100644 --- a/apps/files/l10n/hu_HU.js +++ b/apps/files/l10n/hu_HU.js @@ -34,12 +34,25 @@ OC.L10N.register( "Download" : "Letöltés", "Rename" : "Átnevezés", "Delete" : "Törlés", + "Disconnect storage" : "Tároló leválasztása", + "Unshare" : "A megosztás visszavonása", "Details" : "Részletek", "Select" : "Kiválaszt", "Pending" : "Folyamatban", "Unable to determine date" : "Nem lehet meghatározni a dátumot", "This operation is forbidden" : "Tiltott művelet", "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", + "Could not move \"{file}\", target exists" : "{file} fájl nem áthelyezhető, mert a cél már létezik", + "Could not move \"{file}\"" : "{file} fájl nem áthelyezhető", + "{newName} already exists" : "{newName} már létezik", + "Could not rename \"{fileName}\", it does not exist any more" : "Nem átnevezhető erre: {fileName}, mert már nem létezik", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "{targetName} már használatban van a(z) {dir} könyvtárban. Kérjük, válassz másik nevet.", + "Could not rename \"{fileName}\"" : "{fileName} fájl nem átnevezhető", + "Could not create file \"{file}\"" : "{file} fájl nem létrehozható", + "Could not create file \"{file}\" because it already exists" : "{file} fájl nem létrehozható, mert már létezik", + "Could not create folder \"{dir}\"" : "{dir} könyvtár nem létrehozható", + "Could not create folder \"{dir}\" because it already exists" : "{dir} könyvtár nem létrehozható, mert már létezik", + "Error deleting file \"{fileName}\"." : "Hiba történt {fileName} fájl törlése közben.", "No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'", "Name" : "Név", "Size" : "Méret", diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json index 8b8fbbd9b57..d54eb151ae1 100644 --- a/apps/files/l10n/hu_HU.json +++ b/apps/files/l10n/hu_HU.json @@ -32,12 +32,25 @@ "Download" : "Letöltés", "Rename" : "Átnevezés", "Delete" : "Törlés", + "Disconnect storage" : "Tároló leválasztása", + "Unshare" : "A megosztás visszavonása", "Details" : "Részletek", "Select" : "Kiválaszt", "Pending" : "Folyamatban", "Unable to determine date" : "Nem lehet meghatározni a dátumot", "This operation is forbidden" : "Tiltott művelet", "This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse az adminisztrátort", + "Could not move \"{file}\", target exists" : "{file} fájl nem áthelyezhető, mert a cél már létezik", + "Could not move \"{file}\"" : "{file} fájl nem áthelyezhető", + "{newName} already exists" : "{newName} már létezik", + "Could not rename \"{fileName}\", it does not exist any more" : "Nem átnevezhető erre: {fileName}, mert már nem létezik", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "{targetName} már használatban van a(z) {dir} könyvtárban. Kérjük, válassz másik nevet.", + "Could not rename \"{fileName}\"" : "{fileName} fájl nem átnevezhető", + "Could not create file \"{file}\"" : "{file} fájl nem létrehozható", + "Could not create file \"{file}\" because it already exists" : "{file} fájl nem létrehozható, mert már létezik", + "Could not create folder \"{dir}\"" : "{dir} könyvtár nem létrehozható", + "Could not create folder \"{dir}\" because it already exists" : "{dir} könyvtár nem létrehozható, mert már létezik", + "Error deleting file \"{fileName}\"." : "Hiba történt {fileName} fájl törlése közben.", "No entries in this folder match '{filter}'" : "Nincsenek egyező bejegyzések ebben a könyvtárban '{filter}'", "Name" : "Név", "Size" : "Méret", diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js index a1548e6b732..8310334287f 100644 --- a/apps/files/l10n/ia.js +++ b/apps/files/l10n/ia.js @@ -10,6 +10,7 @@ OC.L10N.register( "Close" : "Clauder", "Download" : "Discargar", "Delete" : "Deler", + "Unshare" : "Leva compartir", "Name" : "Nomine", "Size" : "Dimension", "Modified" : "Modificate", diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json index bbc3f4bc02a..eee4980e34a 100644 --- a/apps/files/l10n/ia.json +++ b/apps/files/l10n/ia.json @@ -8,6 +8,7 @@ "Close" : "Clauder", "Download" : "Discargar", "Delete" : "Deler", + "Unshare" : "Leva compartir", "Name" : "Nomine", "Size" : "Dimension", "Modified" : "Modificate", diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js index 93ec698cfa4..07b33195d48 100644 --- a/apps/files/l10n/id.js +++ b/apps/files/l10n/id.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Unduh", "Rename" : "Ubah nama", "Delete" : "Hapus", + "Disconnect storage" : "Memutuskan penyimpaan", + "Unshare" : "Batalkan berbagi", "Details" : "Rincian", "Select" : "Pilih", "Pending" : "Tertunda", diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json index dca3e7bd163..efe7c4559e7 100644 --- a/apps/files/l10n/id.json +++ b/apps/files/l10n/id.json @@ -32,6 +32,8 @@ "Download" : "Unduh", "Rename" : "Ubah nama", "Delete" : "Hapus", + "Disconnect storage" : "Memutuskan penyimpaan", + "Unshare" : "Batalkan berbagi", "Details" : "Rincian", "Select" : "Pilih", "Pending" : "Tertunda", diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index 967e205145f..68b0ad573a5 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -17,6 +17,7 @@ OC.L10N.register( "Download" : "Niðurhal", "Rename" : "Endurskýra", "Delete" : "Eyða", + "Unshare" : "Hætta deilingu", "Select" : "Velja", "Pending" : "Bíður", "Name" : "Nafn", diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index caff3b037d5..44153e94106 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -15,6 +15,7 @@ "Download" : "Niðurhal", "Rename" : "Endurskýra", "Delete" : "Eyða", + "Unshare" : "Hætta deilingu", "Select" : "Velja", "Pending" : "Bíður", "Name" : "Nafn", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 93a013492a2..d3a567e1d18 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Scarica", "Rename" : "Rinomina", "Delete" : "Elimina", + "Disconnect storage" : "Disconnetti archiviazione", + "Unshare" : "Rimuovi condivisione", "Details" : "Dettagli", "Select" : "Seleziona", "Pending" : "In corso", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 25d3834b0a3..611de295147 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -32,6 +32,8 @@ "Download" : "Scarica", "Rename" : "Rinomina", "Delete" : "Elimina", + "Disconnect storage" : "Disconnetti archiviazione", + "Unshare" : "Rimuovi condivisione", "Details" : "Dettagli", "Select" : "Seleziona", "Pending" : "In corso", diff --git a/apps/files/l10n/km.js b/apps/files/l10n/km.js index f03aa9c4693..55080926fc3 100644 --- a/apps/files/l10n/km.js +++ b/apps/files/l10n/km.js @@ -10,6 +10,7 @@ OC.L10N.register( "Download" : "ទាញយក", "Rename" : "ប្ដូរឈ្មោះ", "Delete" : "លុប", + "Unshare" : "លែងចែករំលែក", "Details" : "ព័ត៌មានលម្អិត", "Pending" : "កំពុងរង់ចាំ", "Name" : "ឈ្មោះ", diff --git a/apps/files/l10n/km.json b/apps/files/l10n/km.json index f050b00b795..c1e9159ee88 100644 --- a/apps/files/l10n/km.json +++ b/apps/files/l10n/km.json @@ -8,6 +8,7 @@ "Download" : "ទាញយក", "Rename" : "ប្ដូរឈ្មោះ", "Delete" : "លុប", + "Unshare" : "លែងចែករំលែក", "Details" : "ព័ត៌មានលម្អិត", "Pending" : "កំពុងរង់ចាំ", "Name" : "ឈ្មោះ", diff --git a/apps/files/l10n/kn.js b/apps/files/l10n/kn.js index 840837bdad3..f9fb8977f93 100644 --- a/apps/files/l10n/kn.js +++ b/apps/files/l10n/kn.js @@ -25,6 +25,8 @@ OC.L10N.register( "Download" : "ಪ್ರತಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಿಕೊಳ್ಳಿ", "Rename" : "ಮರುಹೆಸರಿಸು", "Delete" : "ಅಳಿಸಿ", + "Disconnect storage" : "ಸಂಗ್ರಹ ಸಾಧನವನ್ನು ತೆಗೆದುಹಾಕಿ", + "Unshare" : "ಹಂಚಿಕೆಯನ್ನು ಹಿಂತೆಗೆ", "Select" : "ಆಯ್ಕೆ ಮಾಡಿ", "Pending" : "ಬಾಕಿ ಇದೆ", "Unable to determine date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", diff --git a/apps/files/l10n/kn.json b/apps/files/l10n/kn.json index d6345be732c..12446a3f8b4 100644 --- a/apps/files/l10n/kn.json +++ b/apps/files/l10n/kn.json @@ -23,6 +23,8 @@ "Download" : "ಪ್ರತಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಉಳಿಸಿಕೊಳ್ಳಿ", "Rename" : "ಮರುಹೆಸರಿಸು", "Delete" : "ಅಳಿಸಿ", + "Disconnect storage" : "ಸಂಗ್ರಹ ಸಾಧನವನ್ನು ತೆಗೆದುಹಾಕಿ", + "Unshare" : "ಹಂಚಿಕೆಯನ್ನು ಹಿಂತೆಗೆ", "Select" : "ಆಯ್ಕೆ ಮಾಡಿ", "Pending" : "ಬಾಕಿ ಇದೆ", "Unable to determine date" : "ಮುಕ್ತಾಯ ದಿನಾಂಕ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index 13e917e3cfa..e6d0f0a1b89 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "다운로드", "Rename" : "이름 바꾸기", "Delete" : "삭제", + "Disconnect storage" : "저장소 연결 해제", + "Unshare" : "공유 해제", "Details" : "자세한 정보", "Select" : "선택", "Pending" : "대기 중", diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 1e77ab1b9bc..e695b9cd42c 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -32,6 +32,8 @@ "Download" : "다운로드", "Rename" : "이름 바꾸기", "Delete" : "삭제", + "Disconnect storage" : "저장소 연결 해제", + "Unshare" : "공유 해제", "Details" : "자세한 정보", "Select" : "선택", "Pending" : "대기 중", diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js index 7a387afee66..726938c57cd 100644 --- a/apps/files/l10n/mk.js +++ b/apps/files/l10n/mk.js @@ -1,6 +1,8 @@ OC.L10N.register( "files", { + "Storage not available" : "Сториџот не е достапен", + "Storage invalid" : "Сториџот не е валиден", "Unknown error" : "Непозната грешка", "Unable to set upload directory." : "Не може да се постави папката за префрлање на податоци.", "Invalid Token" : "Грешен токен", @@ -16,6 +18,7 @@ OC.L10N.register( "Upload failed. Could not find uploaded file" : "Префрлањето е неуспешно. Не можам да го најдам префрлената датотека.", "Invalid directory." : "Погрешна папка.", "Files" : "Датотеки", + "All files" : "Сите датотеки", "Favorites" : "Омилени", "Home" : "Дома", "Close" : "Затвори", @@ -26,9 +29,11 @@ OC.L10N.register( "Download" : "Преземи", "Rename" : "Преименувај", "Delete" : "Избриши", + "Unshare" : "Не споделувај", "Details" : "Детали:", "Select" : "Избери", "Pending" : "Чека", + "This operation is forbidden" : "Операцијата не е дозволена", "Name" : "Име", "Size" : "Големина", "Modified" : "Променето", @@ -37,27 +42,40 @@ OC.L10N.register( "File name cannot be empty." : "Името на датотеката не може да биде празно.", "Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!", "Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)", + "Path" : "Патека", + "Favorited" : "Омилени", + "Favorite" : "Омилен", "Folder" : "Папка", "New folder" : "Нова папка", + "{newname} already exists" : "{newname} веќе постои", "Upload" : "Подигни", + "An error occurred while trying to update the tags" : "Се случи грешка додека се обидувавте да ги освежите таговите", "You created %1$s" : "Вие креиравте %1$s", "%2$s created %1$s" : "%2$s креирано %1$s", "You changed %1$s" : "Вие изменивте %1$s", "%2$s changed %1$s" : "%2$s променето %1$s", "You deleted %1$s" : "Вие избришавте %1$s", "%2$s deleted %1$s" : "%2$s избришани %1$s", + "Changed by %2$s" : "Променето од %2$s", + "Deleted by %2$s" : "Избришано од %2$s", + "Restored by %2$s" : "Повратено од %2$s", "Upload (max. %s)" : "Префрлање (макс. %s)", "File handling" : "Ракување со датотеки", "Maximum upload size" : "Максимална големина за подигање", "max. possible: " : "макс. можно:", "Save" : "Сними", + "Missing permissions to edit from here." : "Недостасуваат пермисии за да уредувате од тука", "Settings" : "Подесувања", "WebDAV" : "WebDAV", "Cancel upload" : "Откажи прикачување", + "No files in here" : "Тука нема датотеки", "No entries found in this folder" : "Нема ништо во оваа папка", + "Select all" : "Избери се", "Upload too large" : "Фајлот кој се вчитува е преголем", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер.", "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте.", - "Text file" : "Текстуална датотека" + "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", + "Text file" : "Текстуална датотека", + "New text file.txt" : "Нова текстуална датотека file.txt" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json index acf8f546d73..2c5b3a4d23d 100644 --- a/apps/files/l10n/mk.json +++ b/apps/files/l10n/mk.json @@ -1,4 +1,6 @@ { "translations": { + "Storage not available" : "Сториџот не е достапен", + "Storage invalid" : "Сториџот не е валиден", "Unknown error" : "Непозната грешка", "Unable to set upload directory." : "Не може да се постави папката за префрлање на податоци.", "Invalid Token" : "Грешен токен", @@ -14,6 +16,7 @@ "Upload failed. Could not find uploaded file" : "Префрлањето е неуспешно. Не можам да го најдам префрлената датотека.", "Invalid directory." : "Погрешна папка.", "Files" : "Датотеки", + "All files" : "Сите датотеки", "Favorites" : "Омилени", "Home" : "Дома", "Close" : "Затвори", @@ -24,9 +27,11 @@ "Download" : "Преземи", "Rename" : "Преименувај", "Delete" : "Избриши", + "Unshare" : "Не споделувај", "Details" : "Детали:", "Select" : "Избери", "Pending" : "Чека", + "This operation is forbidden" : "Операцијата не е дозволена", "Name" : "Име", "Size" : "Големина", "Modified" : "Променето", @@ -35,27 +40,40 @@ "File name cannot be empty." : "Името на датотеката не може да биде празно.", "Your storage is full, files can not be updated or synced anymore!" : "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!", "Your storage is almost full ({usedSpacePercent}%)" : "Вашиот сториџ е скоро полн ({usedSpacePercent}%)", + "Path" : "Патека", + "Favorited" : "Омилени", + "Favorite" : "Омилен", "Folder" : "Папка", "New folder" : "Нова папка", + "{newname} already exists" : "{newname} веќе постои", "Upload" : "Подигни", + "An error occurred while trying to update the tags" : "Се случи грешка додека се обидувавте да ги освежите таговите", "You created %1$s" : "Вие креиравте %1$s", "%2$s created %1$s" : "%2$s креирано %1$s", "You changed %1$s" : "Вие изменивте %1$s", "%2$s changed %1$s" : "%2$s променето %1$s", "You deleted %1$s" : "Вие избришавте %1$s", "%2$s deleted %1$s" : "%2$s избришани %1$s", + "Changed by %2$s" : "Променето од %2$s", + "Deleted by %2$s" : "Избришано од %2$s", + "Restored by %2$s" : "Повратено од %2$s", "Upload (max. %s)" : "Префрлање (макс. %s)", "File handling" : "Ракување со датотеки", "Maximum upload size" : "Максимална големина за подигање", "max. possible: " : "макс. можно:", "Save" : "Сними", + "Missing permissions to edit from here." : "Недостасуваат пермисии за да уредувате од тука", "Settings" : "Подесувања", "WebDAV" : "WebDAV", "Cancel upload" : "Откажи прикачување", + "No files in here" : "Тука нема датотеки", "No entries found in this folder" : "Нема ништо во оваа папка", + "Select all" : "Избери се", "Upload too large" : "Фајлот кој се вчитува е преголем", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер.", "Files are being scanned, please wait." : "Се скенираат датотеки, ве молам почекајте.", - "Text file" : "Текстуална датотека" + "Files and folders you mark as favorite will show up here" : "Датотеките и папките кои ќе ги означите како чести, ќе се појават тука", + "Text file" : "Текстуална датотека", + "New text file.txt" : "Нова текстуална датотека file.txt" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js index 9d01ad626b7..6152d599866 100644 --- a/apps/files/l10n/nb_NO.js +++ b/apps/files/l10n/nb_NO.js @@ -34,12 +34,25 @@ OC.L10N.register( "Download" : "Last ned", "Rename" : "Gi nytt navn", "Delete" : "Slett", + "Disconnect storage" : "Koble fra lagring", + "Unshare" : "Avslutt deling", "Details" : "Detaljer", "Select" : "Velg", "Pending" : "Ventende", "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", + "Could not move \"{file}\", target exists" : "Klarte ikke å flytte \"{file}\", målfilen finnes", + "Could not move \"{file}\"" : "Klarte ikke å flytte \"{file}\"", + "{newName} already exists" : "{newName} finnes allerede", + "Could not rename \"{fileName}\", it does not exist any more" : "Klarte ikke å omdøpe \"{fileName}\", den finnes ikke lenger", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Navnet \"{targetName}\" brukes allerede i mappen \"{dir}\". Velg et annet navn.", + "Could not rename \"{fileName}\"" : "Klarte ikke å omdøpe \"{fileName}\"", + "Could not create file \"{file}\"" : "Klarte ikke å opprette fil \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Klarte ikke å opprette fil \"{file}\" fordi den finnes allerede", + "Could not create folder \"{dir}\"" : "Klarete ikke å opprette mappe \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Klarete ikke å opprette mappe \"{dir}\" fordi den finnes allerede", + "Error deleting file \"{fileName}\"." : "Feil ved sletting av fil \"{fileName}\".", "No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -88,6 +101,8 @@ OC.L10N.register( "Maximum upload size" : "Største opplastingsstørrelse", "max. possible: " : "max. mulige:", "Save" : "Lagre", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Med PHP-FPM kan det ta 5 minutter før endringene trer i kraft.", + "Missing permissions to edit from here." : "Manglende rettigheter til å redigere herfra.", "Settings" : "Innstillinger", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk denne adressen for å <a href=\"%s\" target=\"_blank\">få tilgang til filene dine via WebDAV</a>", diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json index 32eb320296c..9279b560f8e 100644 --- a/apps/files/l10n/nb_NO.json +++ b/apps/files/l10n/nb_NO.json @@ -32,12 +32,25 @@ "Download" : "Last ned", "Rename" : "Gi nytt navn", "Delete" : "Slett", + "Disconnect storage" : "Koble fra lagring", + "Unshare" : "Avslutt deling", "Details" : "Detaljer", "Select" : "Velg", "Pending" : "Ventende", "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappen er utilgjengelig. Sjekk loggene eller kontakt administrator", + "Could not move \"{file}\", target exists" : "Klarte ikke å flytte \"{file}\", målfilen finnes", + "Could not move \"{file}\"" : "Klarte ikke å flytte \"{file}\"", + "{newName} already exists" : "{newName} finnes allerede", + "Could not rename \"{fileName}\", it does not exist any more" : "Klarte ikke å omdøpe \"{fileName}\", den finnes ikke lenger", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Navnet \"{targetName}\" brukes allerede i mappen \"{dir}\". Velg et annet navn.", + "Could not rename \"{fileName}\"" : "Klarte ikke å omdøpe \"{fileName}\"", + "Could not create file \"{file}\"" : "Klarte ikke å opprette fil \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Klarte ikke å opprette fil \"{file}\" fordi den finnes allerede", + "Could not create folder \"{dir}\"" : "Klarete ikke å opprette mappe \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Klarete ikke å opprette mappe \"{dir}\" fordi den finnes allerede", + "Error deleting file \"{fileName}\"." : "Feil ved sletting av fil \"{fileName}\".", "No entries in this folder match '{filter}'" : "Ingen oppføringer i denne mappen stemmer med '{filter}'", "Name" : "Navn", "Size" : "Størrelse", @@ -86,6 +99,8 @@ "Maximum upload size" : "Største opplastingsstørrelse", "max. possible: " : "max. mulige:", "Save" : "Lagre", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Med PHP-FPM kan det ta 5 minutter før endringene trer i kraft.", + "Missing permissions to edit from here." : "Manglende rettigheter til å redigere herfra.", "Settings" : "Innstillinger", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Bruk denne adressen for å <a href=\"%s\" target=\"_blank\">få tilgang til filene dine via WebDAV</a>", diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 4169c053269..d64dc68c474 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Downloaden", "Rename" : "Naam wijzigen", "Delete" : "Verwijderen", + "Disconnect storage" : "Verbinding met opslag verbreken", + "Unshare" : "Stop met delen", "Details" : "Details", "Select" : "Selecteer", "Pending" : "In behandeling", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 07210b13829..1268cc10863 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -32,6 +32,8 @@ "Download" : "Downloaden", "Rename" : "Naam wijzigen", "Delete" : "Verwijderen", + "Disconnect storage" : "Verbinding met opslag verbreken", + "Unshare" : "Stop met delen", "Details" : "Details", "Select" : "Selecteer", "Pending" : "In behandeling", diff --git a/apps/files/l10n/nn_NO.js b/apps/files/l10n/nn_NO.js index efe3707c213..519387d6baf 100644 --- a/apps/files/l10n/nn_NO.js +++ b/apps/files/l10n/nn_NO.js @@ -28,6 +28,7 @@ OC.L10N.register( "Download" : "Last ned", "Rename" : "Endra namn", "Delete" : "Slett", + "Unshare" : "Udel", "Details" : "Detaljar", "Pending" : "Under vegs", "Name" : "Namn", diff --git a/apps/files/l10n/nn_NO.json b/apps/files/l10n/nn_NO.json index 929f8c0d7fe..a29e272ebac 100644 --- a/apps/files/l10n/nn_NO.json +++ b/apps/files/l10n/nn_NO.json @@ -26,6 +26,7 @@ "Download" : "Last ned", "Rename" : "Endra namn", "Delete" : "Slett", + "Unshare" : "Udel", "Details" : "Detaljar", "Pending" : "Under vegs", "Name" : "Namn", diff --git a/apps/files/l10n/oc.js b/apps/files/l10n/oc.js index a3088b663fd..a6f59679a18 100644 --- a/apps/files/l10n/oc.js +++ b/apps/files/l10n/oc.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Telecargar", "Rename" : "Renomenar", "Delete" : "Suprimir", + "Disconnect storage" : "Desconnectar aqueste supòrt d'emmagazinatge", + "Unshare" : "Partejar pas", "Details" : "Detalhs", "Select" : "Seleccionar", "Pending" : "En espèra", diff --git a/apps/files/l10n/oc.json b/apps/files/l10n/oc.json index c6048605696..61caa1724b5 100644 --- a/apps/files/l10n/oc.json +++ b/apps/files/l10n/oc.json @@ -32,6 +32,8 @@ "Download" : "Telecargar", "Rename" : "Renomenar", "Delete" : "Suprimir", + "Disconnect storage" : "Desconnectar aqueste supòrt d'emmagazinatge", + "Unshare" : "Partejar pas", "Details" : "Detalhs", "Select" : "Seleccionar", "Pending" : "En espèra", diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 6478fbe5eb4..de1d8581243 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Pobierz", "Rename" : "Zmień nazwę", "Delete" : "Usuń", + "Disconnect storage" : "Odłącz magazyn", + "Unshare" : "Zatrzymaj współdzielenie", "Details" : "Szczegóły", "Select" : "Wybierz", "Pending" : "Oczekujące", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 98a0592cc75..491991c6f61 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -32,6 +32,8 @@ "Download" : "Pobierz", "Rename" : "Zmień nazwę", "Delete" : "Usuń", + "Disconnect storage" : "Odłącz magazyn", + "Unshare" : "Zatrzymaj współdzielenie", "Details" : "Szczegóły", "Select" : "Wybierz", "Pending" : "Oczekujące", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 6619da366e9..2cf4a3dbc80 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -34,12 +34,25 @@ OC.L10N.register( "Download" : "Baixar", "Rename" : "Renomear", "Delete" : "Excluir", + "Disconnect storage" : "Desconectar armazenamento", + "Unshare" : "Descompartilhar", "Details" : "Detalhes", "Select" : "Selecionar", "Pending" : "Pendente", "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", + "Could not move \"{file}\", target exists" : "Não foi possível mover o \"{file}\", o alvo já existe", + "Could not move \"{file}\"" : "Não foi possível mover \"{file}\"", + "{newName} already exists" : "{newName} já existe", + "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possível renomear \"{fileName}\", ele já não existe", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha um outro nome.", + "Could not rename \"{fileName}\"" : "Não foi possível renomear \"{fileName}\"", + "Could not create file \"{file}\"" : "Não foi possível criar o arquivo \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Não foi possível criar o arquivo \"{file}\" porque ele já existe", + "Could not create folder \"{dir}\"" : "Não foi possível criar a pasta \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Não foi possível criar a pasta \"{dir}\" porque ela já existe", + "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao apagar o arquivo \"{fileName}\".", "No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -68,7 +81,7 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas", "A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>", "A file or folder has been <strong>changed</strong>" : "Um arquivo ou pasta foi <strong>modificado</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite de notificações sobre a criação e alterações em seus <strong>arquivos favoritos</strong> <em>(Stream apenas)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite de notificações sobre a criação e alterações em seus <strong>arquivos favoritos</strong> <em>(apenas Stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Um arquivo ou pasta foi <strong>excluído</strong>", "A file or folder has been <strong>restored</strong>" : "Um arquivo ou pasta foi <strong>restautado</strong>", "You created %1$s" : "Você criou %1$s", @@ -103,7 +116,7 @@ OC.L10N.register( "Files are being scanned, please wait." : "Arquivos sendo escaneados, por favor aguarde.", "Currently scanning" : "Atualmente escaneando", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui", + "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui", "Text file" : "Arquivo texto", "New text file.txt" : "Novo texto file.txt" }, diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index e656d9e0079..be96373df6a 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -32,12 +32,25 @@ "Download" : "Baixar", "Rename" : "Renomear", "Delete" : "Excluir", + "Disconnect storage" : "Desconectar armazenamento", + "Unshare" : "Descompartilhar", "Details" : "Detalhes", "Select" : "Selecionar", "Pending" : "Pendente", "Unable to determine date" : "Impossível determinar a data", "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", + "Could not move \"{file}\", target exists" : "Não foi possível mover o \"{file}\", o alvo já existe", + "Could not move \"{file}\"" : "Não foi possível mover \"{file}\"", + "{newName} already exists" : "{newName} já existe", + "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possível renomear \"{fileName}\", ele já não existe", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha um outro nome.", + "Could not rename \"{fileName}\"" : "Não foi possível renomear \"{fileName}\"", + "Could not create file \"{file}\"" : "Não foi possível criar o arquivo \"{file}\"", + "Could not create file \"{file}\" because it already exists" : "Não foi possível criar o arquivo \"{file}\" porque ele já existe", + "Could not create folder \"{dir}\"" : "Não foi possível criar a pasta \"{dir}\"", + "Could not create folder \"{dir}\" because it already exists" : "Não foi possível criar a pasta \"{dir}\" porque ela já existe", + "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao apagar o arquivo \"{fileName}\".", "No entries in this folder match '{filter}'" : "Nenhuma entrada nesta pasta coincide com '{filter}'", "Name" : "Nome", "Size" : "Tamanho", @@ -66,7 +79,7 @@ "An error occurred while trying to update the tags" : "Ocorreu um erro enquanto tentava atualizar as etiquetas", "A new file or folder has been <strong>created</strong>" : "Um novo arquivo ou pasta foi <strong>criado</strong>", "A file or folder has been <strong>changed</strong>" : "Um arquivo ou pasta foi <strong>modificado</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite de notificações sobre a criação e alterações em seus <strong>arquivos favoritos</strong> <em>(Stream apenas)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite de notificações sobre a criação e alterações em seus <strong>arquivos favoritos</strong> <em>(apenas Stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Um arquivo ou pasta foi <strong>excluído</strong>", "A file or folder has been <strong>restored</strong>" : "Um arquivo ou pasta foi <strong>restautado</strong>", "You created %1$s" : "Você criou %1$s", @@ -101,7 +114,7 @@ "Files are being scanned, please wait." : "Arquivos sendo escaneados, por favor aguarde.", "Currently scanning" : "Atualmente escaneando", "No favorites" : "Sem favoritos", - "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favorito são mostrados aqui", + "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui", "Text file" : "Arquivo texto", "New text file.txt" : "Novo texto file.txt" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js index 54e7c505c9a..e9114f5531e 100644 --- a/apps/files/l10n/ro.js +++ b/apps/files/l10n/ro.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Descarcă", "Rename" : "Redenumește", "Delete" : "Șterge", + "Disconnect storage" : "Deconectează stocarea", + "Unshare" : "Nu mai partaja", "Details" : "Detalii", "Select" : "Alege", "Pending" : "În așteptare", diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json index 3fe8ba180bb..ed4bf8e3851 100644 --- a/apps/files/l10n/ro.json +++ b/apps/files/l10n/ro.json @@ -32,6 +32,8 @@ "Download" : "Descarcă", "Rename" : "Redenumește", "Delete" : "Șterge", + "Disconnect storage" : "Deconectează stocarea", + "Unshare" : "Nu mai partaja", "Details" : "Detalii", "Select" : "Alege", "Pending" : "În așteptare", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index f4b71563e6e..f262957fe55 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Скачать", "Rename" : "Переименовать", "Delete" : "Удалить", + "Disconnect storage" : "Отсоединить хранилище", + "Unshare" : "Закрыть доступ", "Details" : "Подробно", "Select" : "Выбрать", "Pending" : "Ожидание", @@ -43,6 +45,8 @@ OC.L10N.register( "Could not move \"{file}\", target exists" : "Невозможно переместить \"{file}\", цель отсутствует", "Could not move \"{file}\"" : "Невозможно переместить \"{file}\"", "{newName} already exists" : "{newName} уже имеется", + "Could not rename \"{fileName}\", it does not exist any more" : "Невозможно переименовать \"{fileName}\", файл больше не существует", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Имя \"{targetName}\" уже используется в каталоге \"{dir}\". Пожалуйста, выберите другое имя.", "Could not rename \"{fileName}\"" : "Невозможно переименовать \"{fileName}\"", "Could not create file \"{file}\"" : "Невозможно создать файл \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Невозможно создать файл \"{file}\" потому что уже имеется", @@ -97,6 +101,7 @@ OC.L10N.register( "Maximum upload size" : "Максимальный размер загружаемого файла", "max. possible: " : "макс. возможно: ", "Save" : "Сохранить", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.", "Missing permissions to edit from here." : "Отсутствуют права на удаление.", "Settings" : "Настройки", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 81dbf53184e..5c99a793ecd 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -32,6 +32,8 @@ "Download" : "Скачать", "Rename" : "Переименовать", "Delete" : "Удалить", + "Disconnect storage" : "Отсоединить хранилище", + "Unshare" : "Закрыть доступ", "Details" : "Подробно", "Select" : "Выбрать", "Pending" : "Ожидание", @@ -41,6 +43,8 @@ "Could not move \"{file}\", target exists" : "Невозможно переместить \"{file}\", цель отсутствует", "Could not move \"{file}\"" : "Невозможно переместить \"{file}\"", "{newName} already exists" : "{newName} уже имеется", + "Could not rename \"{fileName}\", it does not exist any more" : "Невозможно переименовать \"{fileName}\", файл больше не существует", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Имя \"{targetName}\" уже используется в каталоге \"{dir}\". Пожалуйста, выберите другое имя.", "Could not rename \"{fileName}\"" : "Невозможно переименовать \"{fileName}\"", "Could not create file \"{file}\"" : "Невозможно создать файл \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Невозможно создать файл \"{file}\" потому что уже имеется", @@ -95,6 +99,7 @@ "Maximum upload size" : "Максимальный размер загружаемого файла", "max. possible: " : "макс. возможно: ", "Save" : "Сохранить", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "В режиме PHP-FPM применение изменений может занять до 5 минут.", "Missing permissions to edit from here." : "Отсутствуют права на удаление.", "Settings" : "Настройки", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js index 240bce73af1..103b4861206 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Prejmi", "Rename" : "Preimenuj", "Delete" : "Izbriši", + "Disconnect storage" : "Odklopi shrambo", + "Unshare" : "Prekini souporabo", "Details" : "Podrobnosti", "Select" : "Izberi", "Pending" : "V čakanju ...", diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json index 64ad90f56bd..ef5720b8be3 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -32,6 +32,8 @@ "Download" : "Prejmi", "Rename" : "Preimenuj", "Delete" : "Izbriši", + "Disconnect storage" : "Odklopi shrambo", + "Unshare" : "Prekini souporabo", "Details" : "Podrobnosti", "Select" : "Izberi", "Pending" : "V čakanju ...", diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index 6811dc5791f..023c06eb24b 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Shkarkoje", "Rename" : "Riemërtojeni", "Delete" : "Fshije", + "Disconnect storage" : "Shkëpute depozitën", + "Unshare" : "Hiqe ndarjen", "Details" : "Hollësi", "Select" : "Përzgjidhe", "Pending" : "Në pritje", @@ -100,7 +102,7 @@ OC.L10N.register( "max. possible: " : "maks. i mundshëm: ", "Save" : "Ruaje", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.", - "Missing permissions to edit from here." : "Mungojnë lejet për të përpunuar që këtu.", + "Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.", "Settings" : "Rregullime", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">të hyrë te Kartelat tuaja përmes WebDAV-it</a>", diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index 45b9d6acb61..8b15b6202c0 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -32,6 +32,8 @@ "Download" : "Shkarkoje", "Rename" : "Riemërtojeni", "Delete" : "Fshije", + "Disconnect storage" : "Shkëpute depozitën", + "Unshare" : "Hiqe ndarjen", "Details" : "Hollësi", "Select" : "Përzgjidhe", "Pending" : "Në pritje", @@ -98,7 +100,7 @@ "max. possible: " : "maks. i mundshëm: ", "Save" : "Ruaje", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Me PHP-FPM mund të duhen 5 minuta që ndryshimet të hyjnë në fuqi.", - "Missing permissions to edit from here." : "Mungojnë lejet për të përpunuar që këtu.", + "Missing permissions to edit from here." : "Mungojnë lejet për përpunim që nga këtu.", "Settings" : "Rregullime", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">të hyrë te Kartelat tuaja përmes WebDAV-it</a>", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index 80f81b1e028..6a97b5f282f 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Преузми", "Rename" : "Преименуј", "Delete" : "Обриши", + "Disconnect storage" : "Искључи складиште", + "Unshare" : "Не дели", "Details" : "Подаци", "Select" : "Изабери", "Pending" : "На чекању", diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index f878b9c14d4..7f319f6ab48 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -32,6 +32,8 @@ "Download" : "Преузми", "Rename" : "Преименуј", "Delete" : "Обриши", + "Disconnect storage" : "Искључи складиште", + "Unshare" : "Не дели", "Details" : "Подаци", "Select" : "Изабери", "Pending" : "На чекању", diff --git a/apps/files/l10n/sr@latin.js b/apps/files/l10n/sr@latin.js index d7017005a17..ed166f5ee87 100644 --- a/apps/files/l10n/sr@latin.js +++ b/apps/files/l10n/sr@latin.js @@ -33,6 +33,8 @@ OC.L10N.register( "Download" : "Preuzmi", "Rename" : "Preimenuj", "Delete" : "Obriši", + "Disconnect storage" : "Isključi skladište", + "Unshare" : "Ne deli", "Details" : "Detaljnije", "Select" : "Izaberi", "Pending" : "Na čekanju", diff --git a/apps/files/l10n/sr@latin.json b/apps/files/l10n/sr@latin.json index 98356e441d6..a58df8712a7 100644 --- a/apps/files/l10n/sr@latin.json +++ b/apps/files/l10n/sr@latin.json @@ -31,6 +31,8 @@ "Download" : "Preuzmi", "Rename" : "Preimenuj", "Delete" : "Obriši", + "Disconnect storage" : "Isključi skladište", + "Unshare" : "Ne deli", "Details" : "Detaljnije", "Select" : "Izaberi", "Pending" : "Na čekanju", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index f5e81760b0f..f6df4ee16d0 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Ladda ner", "Rename" : "Byt namn", "Delete" : "Radera", + "Disconnect storage" : "Koppla bort lagring", + "Unshare" : "Sluta dela", "Details" : "Detaljer", "Select" : "Välj", "Pending" : "Väntar", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index c624c34029c..143e35a1e0a 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -32,6 +32,8 @@ "Download" : "Ladda ner", "Rename" : "Byt namn", "Delete" : "Radera", + "Disconnect storage" : "Koppla bort lagring", + "Unshare" : "Sluta dela", "Details" : "Detaljer", "Select" : "Välj", "Pending" : "Väntar", diff --git a/apps/files/l10n/ug.js b/apps/files/l10n/ug.js index 55985f6a655..b587b590632 100644 --- a/apps/files/l10n/ug.js +++ b/apps/files/l10n/ug.js @@ -17,6 +17,7 @@ OC.L10N.register( "Download" : "چۈشۈر", "Rename" : "ئات ئۆزگەرت", "Delete" : "ئۆچۈر", + "Unshare" : "ھەمبەھىرلىمە", "Pending" : "كۈتۈۋاتىدۇ", "Name" : "ئاتى", "Size" : "چوڭلۇقى", diff --git a/apps/files/l10n/ug.json b/apps/files/l10n/ug.json index 716bf62afb9..dd2e9c98ee5 100644 --- a/apps/files/l10n/ug.json +++ b/apps/files/l10n/ug.json @@ -15,6 +15,7 @@ "Download" : "چۈشۈر", "Rename" : "ئات ئۆزگەرت", "Delete" : "ئۆچۈر", + "Unshare" : "ھەمبەھىرلىمە", "Pending" : "كۈتۈۋاتىدۇ", "Name" : "ئاتى", "Size" : "چوڭلۇقى", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index 8d43949d8ff..7da8b160afd 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "Завантажити", "Rename" : "Перейменувати", "Delete" : "Видалити", + "Disconnect storage" : "Від’єднати сховище", + "Unshare" : "Закрити спільний доступ", "Details" : "Деталі", "Select" : "Оберіть", "Pending" : "Очікування", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index d7381e0cfa7..15dabf456f8 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -32,6 +32,8 @@ "Download" : "Завантажити", "Rename" : "Перейменувати", "Delete" : "Видалити", + "Disconnect storage" : "Від’єднати сховище", + "Unshare" : "Закрити спільний доступ", "Details" : "Деталі", "Select" : "Оберіть", "Pending" : "Очікування", diff --git a/apps/files/l10n/ur_PK.js b/apps/files/l10n/ur_PK.js index bac2c3b614b..094511db425 100644 --- a/apps/files/l10n/ur_PK.js +++ b/apps/files/l10n/ur_PK.js @@ -5,6 +5,7 @@ OC.L10N.register( "Close" : "بند ", "Download" : "ڈاؤن لوڈ،", "Delete" : "حذف کریں", + "Unshare" : "شئیرنگ ختم کریں", "Name" : "اسم", "Save" : "حفظ", "Settings" : "ترتیبات" diff --git a/apps/files/l10n/ur_PK.json b/apps/files/l10n/ur_PK.json index be36293b913..3c859bb452d 100644 --- a/apps/files/l10n/ur_PK.json +++ b/apps/files/l10n/ur_PK.json @@ -3,6 +3,7 @@ "Close" : "بند ", "Download" : "ڈاؤن لوڈ،", "Delete" : "حذف کریں", + "Unshare" : "شئیرنگ ختم کریں", "Name" : "اسم", "Save" : "حفظ", "Settings" : "ترتیبات" diff --git a/apps/files/l10n/vi.js b/apps/files/l10n/vi.js index 4af893ab66a..83dd03f48f8 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -30,6 +30,7 @@ OC.L10N.register( "Download" : "Tải về", "Rename" : "Sửa tên", "Delete" : "Xóa", + "Unshare" : "Bỏ chia sẻ", "Details" : "Chi tiết", "Select" : "Chọn", "Pending" : "Đang chờ", diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index ebffb827525..abc83963873 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -28,6 +28,7 @@ "Download" : "Tải về", "Rename" : "Sửa tên", "Delete" : "Xóa", + "Unshare" : "Bỏ chia sẻ", "Details" : "Chi tiết", "Select" : "Chọn", "Pending" : "Đang chờ", diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 09829db3bcc..0283c91b656 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -34,6 +34,8 @@ OC.L10N.register( "Download" : "下載", "Rename" : "重新命名", "Delete" : "刪除", + "Disconnect storage" : "斷開儲存空間連接", + "Unshare" : "取消分享", "Details" : "詳細資料", "Select" : "選擇", "Pending" : "等候中", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 6f2c396ad18..4969b3d5bfb 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -32,6 +32,8 @@ "Download" : "下載", "Rename" : "重新命名", "Delete" : "刪除", + "Disconnect storage" : "斷開儲存空間連接", + "Unshare" : "取消分享", "Details" : "詳細資料", "Select" : "選擇", "Pending" : "等候中", diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index 9a4e8d59786..4f960518839 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -66,15 +66,15 @@ class Helper { */ public static function determineIcon($file) { if($file['type'] === 'dir') { - $icon = \OC_Helper::mimetypeIcon('dir'); + $icon = \OC::$server->getMimeTypeDetector()->mimeTypeIcon('dir'); // TODO: move this part to the client side, using mountType if ($file->isShared()) { - $icon = \OC_Helper::mimetypeIcon('dir-shared'); + $icon = \OC::$server->getMimeTypeDetector()->mimeTypeIcon('dir-shared'); } elseif ($file->isMounted()) { - $icon = \OC_Helper::mimetypeIcon('dir-external'); + $icon = \OC::$server->getMimeTypeDetector()->mimeTypeIcon('dir-external'); } }else{ - $icon = \OC_Helper::mimetypeIcon($file->getMimetype()); + $icon = \OC::$server->getMimeTypeDetector()->mimeTypeIcon($file->getMimetype()); } return substr($icon, 0, -3) . 'svg'; diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 9f7ad50bc60..9dfcdfead7f 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -2402,6 +2402,21 @@ describe('OCA.Files.FileList tests', function() { expect(ev.result).not.toEqual(false); expect(uploadData.targetDir).toEqual('/a/b'); }); + it('renders upload indicator element for folders only', function() { + fileList.add({ + name: 'afolder', + type: 'dir', + mime: 'httpd/unix-directory' + }); + fileList.add({ + name: 'afile.txt', + type: 'file', + mime: 'text/plain' + }); + + expect(fileList.findFileEl('afolder').find('.uploadtext').length).toEqual(1); + expect(fileList.findFileEl('afile.txt').find('.uploadtext').length).toEqual(0); + }); }); }); describe('Handling errors', function () { @@ -2534,4 +2549,34 @@ describe('OCA.Files.FileList tests', function() { expect(newFileMenuStub.notCalled).toEqual(true); }); }); + describe('mount type detection', function() { + function testMountType(dirInfoId, dirInfoMountType, inputMountType, expectedMountType) { + var $tr; + fileList.dirInfo.id = dirInfoId; + fileList.dirInfo.mountType = dirInfoMountType; + $tr = fileList.add({ + type: 'dir', + mimetype: 'httpd/unix-directory', + name: 'test dir', + mountType: inputMountType + }); + + expect($tr.attr('data-mounttype')).toEqual(expectedMountType); + } + + it('leaves mount type as is if no parent exists', function() { + testMountType(null, null, 'external', 'external'); + testMountType(null, null, 'shared', 'shared'); + }); + it('detects share root if parent exists', function() { + testMountType(123, null, 'shared', 'shared-root'); + testMountType(123, 'shared', 'shared', 'shared'); + testMountType(123, 'shared-root', 'shared', 'shared'); + }); + it('detects external storage root if parent exists', function() { + testMountType(123, null, 'external', 'external-root'); + testMountType(123, 'external', 'external', 'external'); + testMountType(123, 'external-root', 'external', 'external'); + }); + }); }); diff --git a/apps/files/tests/service/tagservice.php b/apps/files/tests/service/tagservice.php index 36da3edc61e..b93dedd0efd 100644 --- a/apps/files/tests/service/tagservice.php +++ b/apps/files/tests/service/tagservice.php @@ -54,7 +54,7 @@ class TagServiceTest extends \Test\TestCase { protected function setUp() { parent::setUp(); $this->user = $this->getUniqueId('user'); - \OC_User::createUser($this->user, 'test'); + \OC::$server->getUserManager()->createUser($this->user, 'test'); \OC_User::setUserId($this->user); \OC_Util::setupFS($this->user); /** @@ -82,7 +82,8 @@ class TagServiceTest extends \Test\TestCase { protected function tearDown() { \OC_User::setUserId(''); - \OC_User::deleteUser($this->user); + $user = \OC::$server->getUserManager()->get($this->user); + if ($user !== null) { $user->delete(); } } public function testUpdateFileTags() { diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index 355d9feb4b9..1a9fa73de3f 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -9,7 +9,6 @@ </description> <licence>AGPL</licence> <author>Robin Appelman, Michael Gapczynski, Vincent Petry</author> - <shipped>true</shipped> <documentation> <admin>admin-external-storage</admin> </documentation> @@ -21,6 +20,6 @@ <ocsid>166048</ocsid> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> </info> diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 134db41fc32..59cf55d6ad5 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -27,7 +27,6 @@ var MOUNT_OPTIONS_DROPDOWN_TEMPLATE = ' <select id="mountOptionsFilesystemCheck" name="filesystem_check_changes" data-type="int">' + ' <option value="0">{{t "files_external" "Never"}}</option>' + ' <option value="1" selected="selected">{{t "files_external" "Once every direct access"}}</option>' + - ' <option value="2">{{t "files_external" "Every time the filesystem is used"}}</option>' + ' </select>' + ' </div>' + '</div>'; @@ -39,7 +38,6 @@ var MOUNT_OPTIONS_DROPDOWN_TEMPLATE = t("files_external", "Check for changes") t("files_external", "Never") t("files_external", "Once every direct access") - t("files_external", "Every time the filesystem is used") */ /** diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index d4d00e7f83e..18f67db420f 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -10,10 +10,12 @@ OC.L10N.register( "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", "Invalid mount point" : "Ungültiger mount point", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "%s" : "%s", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Access granted" : "Zugriff gestattet", + "Error configuring OAuth1" : "Fehler beim konfigurieren von OAuth1", "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", @@ -25,7 +27,9 @@ OC.L10N.register( "Every time the filesystem is used" : "Immer, wenn das Dateisystem benutzt wird", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", + "Admin defined" : "Administrator festlegen", "Saved" : "Gespeichert", + "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "None" : "Keine", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index a65f58b0fdb..cae7672260e 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -8,10 +8,12 @@ "Storage with id \"%i\" not found" : "Der Speicher mit der ID „%i“ wurde nicht gefunden", "Invalid mount point" : "Ungültiger mount point", "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "%s" : "%s", "Personal" : "Persönlich", "System" : "System", "Grant access" : "Zugriff gestatten", "Access granted" : "Zugriff gestattet", + "Error configuring OAuth1" : "Fehler beim konfigurieren von OAuth1", "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", @@ -23,7 +25,9 @@ "Every time the filesystem is used" : "Immer, wenn das Dateisystem benutzt wird", "All users. Type to select user or group." : "Alle Benutzer. Benutzer oder Gruppe zur Auswahl eingeben.", "(group)" : "(group)", + "Admin defined" : "Administrator festlegen", "Saved" : "Gespeichert", + "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "None" : "Keine", diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index 294ec9da6ff..6de2ebb2101 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -17,6 +17,7 @@ OC.L10N.register( "Unsatisfied backend parameters" : "Ελλιπείς παράμετροι συστήματος", "Unsatisfied authentication mechanism parameters" : "Ελλιπείς παράμετροι μηχανισμού πιστοποίησης", "Insufficient data: %s" : "Μη επαρκή δεδομένα: %s", + "%s" : "%s", "Personal" : "Προσωπικά", "System" : "Σύστημα", "Grant access" : "Παροχή πρόσβασης", diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index 431e81c3d7a..1c5d7fb6dfc 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -15,6 +15,7 @@ "Unsatisfied backend parameters" : "Ελλιπείς παράμετροι συστήματος", "Unsatisfied authentication mechanism parameters" : "Ελλιπείς παράμετροι μηχανισμού πιστοποίησης", "Insufficient data: %s" : "Μη επαρκή δεδομένα: %s", + "%s" : "%s", "Personal" : "Προσωπικά", "System" : "Σύστημα", "Grant access" : "Παροχή πρόσβασης", diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index 6d8bf0d3139..5aaa3884fd0 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_external", { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "Fallo al acceder a los tokens solicitados. Verfique que su clave de app y la clave secreta son correctas.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "Fallo al acceder a los tokens solicitados. Verfique que su clave de app y la clave secreta son correctas.", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Falló al acceder a los tokens solicitados. Verifique que su clave de app y la clave secreta sean correctas.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Falló al acceder a los tokens solicitados. Verifique que su clave de app y la clave secreta sean correctas.", "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Step 1 failed. Exception: %s" : "El paso 1 falló. Excepción: %s", "Step 2 failed. Exception: %s" : "El paso 2 falló. Excepción: %s", @@ -36,6 +36,7 @@ OC.L10N.register( "(group)" : "(grupo)", "Admin defined" : "Admin definido", "Saved" : "Guardado", + "There was an error with message: " : "Hubo un error con el mensaje:", "Access key" : "Clave de acceso", "Secret key" : "Clave secreta", "None" : "Ninguno", @@ -100,6 +101,7 @@ OC.L10N.register( "Add storage" : "Añadir almacenamiento", "Advanced settings" : "Configuración avanzada", "Delete" : "Eliminar", + "Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo", "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index bf0624e96db..60722de1f41 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -1,6 +1,6 @@ { "translations": { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "Fallo al acceder a los tokens solicitados. Verfique que su clave de app y la clave secreta son correctas.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "Fallo al acceder a los tokens solicitados. Verfique que su clave de app y la clave secreta son correctas.", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Falló al acceder a los tokens solicitados. Verifique que su clave de app y la clave secreta sean correctas.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Falló al acceder a los tokens solicitados. Verifique que su clave de app y la clave secreta sean correctas.", "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Step 1 failed. Exception: %s" : "El paso 1 falló. Excepción: %s", "Step 2 failed. Exception: %s" : "El paso 2 falló. Excepción: %s", @@ -34,6 +34,7 @@ "(group)" : "(grupo)", "Admin defined" : "Admin definido", "Saved" : "Guardado", + "There was an error with message: " : "Hubo un error con el mensaje:", "Access key" : "Clave de acceso", "Secret key" : "Clave secreta", "None" : "Ninguno", @@ -98,6 +99,7 @@ "Add storage" : "Añadir almacenamiento", "Advanced settings" : "Configuración avanzada", "Delete" : "Eliminar", + "Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo", "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js index fa22b4c6591..e21ce7e39ae 100644 --- a/apps/files_external/l10n/et_EE.js +++ b/apps/files_external/l10n/et_EE.js @@ -7,10 +7,14 @@ OC.L10N.register( "Storage with id \"%i\" not found" : "Salvestuskohta ID-ga \"%i\" ei leitud", "Invalid mount point" : "Vigane ühenduspunkt", "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"", + "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", + "%s" : "%s", "Personal" : "Isiklik", "System" : "Süsteem", "Grant access" : "Anna ligipääs", "Access granted" : "Ligipääs on antud", + "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", + "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", "Enable encryption" : "Luba krüpteerimine", @@ -21,18 +25,26 @@ OC.L10N.register( "Every time the filesystem is used" : "Iga kord, kui failisüsteemi kasutatakse", "All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.", "(group)" : "(grupp)", + "Admin defined" : "Admini poolt määratud", "Saved" : "Salvestatud", + "Couldn't get the list of external mount points: {type}" : "Välise ühenduspunkti hankimine ebaõnnestus: {type}", + "There was an error with message: " : "Sõnumiga tekkis tõrge:", + "External mount error" : "Välise seostamise tõrge", + "Access key" : "Ligipääsuvõti", + "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", "None" : "Pole", "OAuth1" : "OAuth1", "App key" : "Rakenduse võti", "App secret" : "Rakenduse salasõna", + "OAuth2" : "OAuth2", "Client ID" : "Kliendi ID", "Client secret" : "Kliendi salasõna", "OpenStack" : "OpenStack", "Username" : "Kasutajanimi", "Password" : "Parool", "API key" : "API võti", + "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", "Amazon S3" : "Amazon S3", "Bucket" : "Korv", diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json index 37e7cc282ce..ad7b8622be8 100644 --- a/apps/files_external/l10n/et_EE.json +++ b/apps/files_external/l10n/et_EE.json @@ -5,10 +5,14 @@ "Storage with id \"%i\" not found" : "Salvestuskohta ID-ga \"%i\" ei leitud", "Invalid mount point" : "Vigane ühenduspunkt", "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"", + "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", + "%s" : "%s", "Personal" : "Isiklik", "System" : "Süsteem", "Grant access" : "Anna ligipääs", "Access granted" : "Ligipääs on antud", + "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", + "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", "Enable encryption" : "Luba krüpteerimine", @@ -19,18 +23,26 @@ "Every time the filesystem is used" : "Iga kord, kui failisüsteemi kasutatakse", "All users. Type to select user or group." : "Kõik kasutajad. Kirjuta, et valida kasutaja või grupp.", "(group)" : "(grupp)", + "Admin defined" : "Admini poolt määratud", "Saved" : "Salvestatud", + "Couldn't get the list of external mount points: {type}" : "Välise ühenduspunkti hankimine ebaõnnestus: {type}", + "There was an error with message: " : "Sõnumiga tekkis tõrge:", + "External mount error" : "Välise seostamise tõrge", + "Access key" : "Ligipääsuvõti", + "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", "None" : "Pole", "OAuth1" : "OAuth1", "App key" : "Rakenduse võti", "App secret" : "Rakenduse salasõna", + "OAuth2" : "OAuth2", "Client ID" : "Kliendi ID", "Client secret" : "Kliendi salasõna", "OpenStack" : "OpenStack", "Username" : "Kasutajanimi", "Password" : "Parool", "API key" : "API võti", + "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", "Amazon S3" : "Amazon S3", "Bucket" : "Korv", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 9ca35b46b4c..eb99f0aaeba 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -42,6 +42,8 @@ OC.L10N.register( "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", "There was an error with message: " : "Il y a eu une erreur avec le message :", "External mount error" : "Erreur de montage externe", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", "Builtin" : "Intégré", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 8be075113a8..a399872c208 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -40,6 +40,8 @@ "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", "There was an error with message: " : "Il y a eu une erreur avec le message :", "External mount error" : "Erreur de montage externe", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Impossible d'obtenir la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Certains points de montage externes configurés ne sont pas connectés. Veuillez cliquer sur la(les) ligne(s) rouge(s) pour plus d'informations", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", "Builtin" : "Intégré", diff --git a/apps/files_external/l10n/hu_HU.js b/apps/files_external/l10n/hu_HU.js index 964c28285fd..a50ca431c02 100644 --- a/apps/files_external/l10n/hu_HU.js +++ b/apps/files_external/l10n/hu_HU.js @@ -2,19 +2,40 @@ OC.L10N.register( "files_external", { "External storage" : "Külső tárolók", + "%s" : "%s", "Personal" : "Személyes", "System" : "Rendszer", "Grant access" : "Megadom a hozzáférést", "Access granted" : "Érvényes hozzáférés", + "Generate keys" : "Kulcsok generálása", + "Error generating key pair" : "Hiba történt a kulcspár generálása közben", "Enable encryption" : "Titkosítás engedélyezése", + "Enable previews" : "Előnézet engedélyezése", + "Check for changes" : "Változások keresése", + "Never" : "Soha", + "Once every direct access" : "Minden közvetlen elérésnél", + "Every time the filesystem is used" : "Mindig, amikor a fájlrendszer használatban van", + "All users. Type to select user or group." : "Összes felhasználó. Írj be egy felhasználót vagy csoportot.", "(group)" : "(csoport)", + "Admin defined" : "Adminisztrátor definiálva", "Saved" : "Elmentve", + "Empty response from the server" : "Üres válasz a szervertől", + "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérjük próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}", + "There was an error with message: " : "Hiba történt ezzel az üzenettel:", + "External mount error" : "Külső csatolási hiba", + "Access key" : "Hozzáférési kulcs", + "Secret key" : "Titkos kulcs", "None" : "Egyik sem", "App key" : "App kulcs", "App secret" : "App titkos kulcs", + "Client secret" : "Kliens titkos", "Username" : "Felhasználónév", "Password" : "Jelszó", "API key" : "API kulcs", + "Username and password" : "Felhasználónév és jelszó", + "RSA public key" : "RSA publikus kulcs", + "Public key" : "Publikus kulcs", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Hosztnév", @@ -25,21 +46,41 @@ OC.L10N.register( "URL" : "URL", "Remote subfolder" : "Távoli alkönyvtár", "Secure https://" : "Biztonságos https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Kiszolgáló", "Secure ftps://" : "Biztonságos ftps://", + "Google Drive" : "Google Drive", "Local" : "Helyi", "Location" : "Hely", "ownCloud" : "ownCloud", + "SFTP" : "SFTP", + "Root" : "Gyökér", + "SFTP with secret key login" : "SFTP titkos kulcs belépéssel", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Megosztás", + "Domain" : "Domain", + "SMB / CIFS using OC login" : "SMB / CIFS OC belépéssel", "Username as share" : "Felhasználónév és megosztás", + "Service name" : "Szolgáltatás neve", + "Request timeout (seconds)" : "Időtúllépés (másodperc)", "<b>Note:</b> " : "<b>Megjegyzés:</b>", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> %s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "No external storage configured" : "Nincs külső tároló beállítva.", + "You can add external storages in the personal settings" : "Hozzáadhatsz külső tárolókat a személyes beállítások közt.", "Name" : "Név", "Storage type" : "Tároló típusa", "External Storage" : "Külső tárolási szolgáltatások becsatolása", "Folder name" : "Mappanév", + "Authentication" : "Azonisítás", "Configuration" : "Beállítások", "Available for" : "Elérhető számukra", "Add storage" : "Tároló becsatolása", - "Delete" : "Törlés" + "Advanced settings" : "Haladó beállítások", + "Delete" : "Törlés", + "Allow users to mount external storage" : "Külső tárolók engedélyezése a felhasználók részére", + "Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/hu_HU.json b/apps/files_external/l10n/hu_HU.json index 7942028d038..30acbfc194d 100644 --- a/apps/files_external/l10n/hu_HU.json +++ b/apps/files_external/l10n/hu_HU.json @@ -1,18 +1,39 @@ { "translations": { "External storage" : "Külső tárolók", + "%s" : "%s", "Personal" : "Személyes", "System" : "Rendszer", "Grant access" : "Megadom a hozzáférést", "Access granted" : "Érvényes hozzáférés", + "Generate keys" : "Kulcsok generálása", + "Error generating key pair" : "Hiba történt a kulcspár generálása közben", "Enable encryption" : "Titkosítás engedélyezése", + "Enable previews" : "Előnézet engedélyezése", + "Check for changes" : "Változások keresése", + "Never" : "Soha", + "Once every direct access" : "Minden közvetlen elérésnél", + "Every time the filesystem is used" : "Mindig, amikor a fájlrendszer használatban van", + "All users. Type to select user or group." : "Összes felhasználó. Írj be egy felhasználót vagy csoportot.", "(group)" : "(csoport)", + "Admin defined" : "Adminisztrátor definiálva", "Saved" : "Elmentve", + "Empty response from the server" : "Üres válasz a szervertől", + "Couldn't access. Please logout and login to activate this mount point" : "Nem férhető hozzá. Kérjük próbálj meg ki- és bejelentkezni a csatolási pont aktiválásához.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Nem sikerült lekérdezni az információkat az ownCloud szerverről: {code} {type}", + "There was an error with message: " : "Hiba történt ezzel az üzenettel:", + "External mount error" : "Külső csatolási hiba", + "Access key" : "Hozzáférési kulcs", + "Secret key" : "Titkos kulcs", "None" : "Egyik sem", "App key" : "App kulcs", "App secret" : "App titkos kulcs", + "Client secret" : "Kliens titkos", "Username" : "Felhasználónév", "Password" : "Jelszó", "API key" : "API kulcs", + "Username and password" : "Felhasználónév és jelszó", + "RSA public key" : "RSA publikus kulcs", + "Public key" : "Publikus kulcs", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Hosztnév", @@ -23,21 +44,41 @@ "URL" : "URL", "Remote subfolder" : "Távoli alkönyvtár", "Secure https://" : "Biztonságos https://", + "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Kiszolgáló", "Secure ftps://" : "Biztonságos ftps://", + "Google Drive" : "Google Drive", "Local" : "Helyi", "Location" : "Hely", "ownCloud" : "ownCloud", + "SFTP" : "SFTP", + "Root" : "Gyökér", + "SFTP with secret key login" : "SFTP titkos kulcs belépéssel", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Megosztás", + "Domain" : "Domain", + "SMB / CIFS using OC login" : "SMB / CIFS OC belépéssel", "Username as share" : "Felhasználónév és megosztás", + "Service name" : "Szolgáltatás neve", + "Request timeout (seconds)" : "Időtúllépés (másodperc)", "<b>Note:</b> " : "<b>Megjegyzés:</b>", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Megjegyzés:</b> %s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", + "No external storage configured" : "Nincs külső tároló beállítva.", + "You can add external storages in the personal settings" : "Hozzáadhatsz külső tárolókat a személyes beállítások közt.", "Name" : "Név", "Storage type" : "Tároló típusa", "External Storage" : "Külső tárolási szolgáltatások becsatolása", "Folder name" : "Mappanév", + "Authentication" : "Azonisítás", "Configuration" : "Beállítások", "Available for" : "Elérhető számukra", "Add storage" : "Tároló becsatolása", - "Delete" : "Törlés" + "Advanced settings" : "Haladó beállítások", + "Delete" : "Törlés", + "Allow users to mount external storage" : "Külső tárolók engedélyezése a felhasználók részére", + "Allow users to mount the following external storage" : "A felhasználók számára engedélyezett külső tárolók:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 8d50794e5b6..2d431342411 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -36,6 +36,14 @@ OC.L10N.register( "(group)" : "(グループ)", "Admin defined" : "管理者設定済", "Saved" : "保存されました", + "Empty response from the server" : "サーバーから空の応答がありました", + "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。", + "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", + "There was an error with message: " : "メッセージ付きのエラーが発生しました:", + "External mount error" : "外部マウントエラー", + "goto-external-storage" : "外部ストレージに行く", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index b704504b088..36360f75a41 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -34,6 +34,14 @@ "(group)" : "(グループ)", "Admin defined" : "管理者設定済", "Saved" : "保存されました", + "Empty response from the server" : "サーバーから空の応答がありました", + "Couldn't access. Please logout and login to activate this mount point" : "アクセス出来ませんでした。このマウントポイントを有効にするには一度ログアウトしてからログインしてください。", + "Couldn't get the information from the ownCloud server: {code} {type}" : "ownCloud サーバーから情報を取得出来ませんでした。: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得出来ませんでした。: {type}", + "There was an error with message: " : "メッセージ付きのエラーが発生しました:", + "External mount error" : "外部マウントエラー", + "goto-external-storage" : "外部ストレージに行く", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows ネットワークドライブのマウントポイントリストを取得出来ませんでした:サーバーから空の応答がありました", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", diff --git a/apps/files_external/l10n/nb_NO.js b/apps/files_external/l10n/nb_NO.js index 0e9e2dd24ce..7df90e24eb7 100644 --- a/apps/files_external/l10n/nb_NO.js +++ b/apps/files_external/l10n/nb_NO.js @@ -16,6 +16,8 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Ikke tillatt å bruke autentiseringsmekanisme \"%s\"", "Unsatisfied backend parameters" : "Noen server-parameter mangler", "Unsatisfied authentication mechanism parameters" : "Noen parametre for autentiseringsmekanisme mangler", + "Insufficient data: %s" : "Utilstrekkelige data: %s", + "%s" : "%s", "Personal" : "Personlig", "System" : "System", "Grant access" : "Gi tilgang", @@ -32,7 +34,16 @@ OC.L10N.register( "Every time the filesystem is used" : "Hver gang filsystemet brukes", "All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.", "(group)" : "(gruppe)", + "Admin defined" : "Admin-definert", "Saved" : "Lagret", + "Empty response from the server" : "Tomt svar fra serveren", + "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Vennligst logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra ownCloud-serveren: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", + "There was an error with message: " : "Det oppstod en feil med melding: ", + "External mount error" : "Ekstern oppkoblingsfeil", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windows nettverk-disker: tomt svar fra serveren", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de konfigurerte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Access key" : "Tilgangsnøkkel", "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", @@ -101,6 +112,7 @@ OC.L10N.register( "Add storage" : "Legg til lagringsplass", "Advanced settings" : "Avanserte innstillinger", "Delete" : "Slett", + "Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre", "Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nb_NO.json b/apps/files_external/l10n/nb_NO.json index ddf5221e955..f6ca25f83eb 100644 --- a/apps/files_external/l10n/nb_NO.json +++ b/apps/files_external/l10n/nb_NO.json @@ -14,6 +14,8 @@ "Not permitted to use authentication mechanism \"%s\"" : "Ikke tillatt å bruke autentiseringsmekanisme \"%s\"", "Unsatisfied backend parameters" : "Noen server-parameter mangler", "Unsatisfied authentication mechanism parameters" : "Noen parametre for autentiseringsmekanisme mangler", + "Insufficient data: %s" : "Utilstrekkelige data: %s", + "%s" : "%s", "Personal" : "Personlig", "System" : "System", "Grant access" : "Gi tilgang", @@ -30,7 +32,16 @@ "Every time the filesystem is used" : "Hver gang filsystemet brukes", "All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.", "(group)" : "(gruppe)", + "Admin defined" : "Admin-definert", "Saved" : "Lagret", + "Empty response from the server" : "Tomt svar fra serveren", + "Couldn't access. Please logout and login to activate this mount point" : "Fikk ikke tilgang. Vennligst logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Klarte ikke å hente informasjon fra ownCloud-serveren: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", + "There was an error with message: " : "Det oppstod en feil med melding: ", + "External mount error" : "Ekstern oppkoblingsfeil", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windows nettverk-disker: tomt svar fra serveren", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de konfigurerte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Access key" : "Tilgangsnøkkel", "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", @@ -99,6 +110,7 @@ "Add storage" : "Legg til lagringsplass", "Advanced settings" : "Avanserte innstillinger", "Delete" : "Slett", + "Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre", "Allow users to mount the following external storage" : "Tillat brukere å koble opp følgende eksterne lagring" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 0d4f04ae226..296d51836ca 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -17,6 +17,7 @@ OC.L10N.register( "Unsatisfied backend parameters" : "Parâmetros de back-end não-atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", + "%s" : "%s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Permitir acesso", @@ -35,6 +36,15 @@ OC.L10N.register( "(group)" : "(grupo)", "Admin defined" : "Definido pelo administrador", "Saved" : "Salvo", + "Empty response from the server" : "Resposta vazia a partir do servidor", + "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, desconectar e conectar novamente para ativar este ponto de montagem", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", + "There was an error with message: " : "Houve um erro com a mensagem:", + "External mount error" : "Erro de montagem externa", + "goto-external-storage" : "ir-montagem-externa", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista unidades de pontos de montagem da rede do Windows: resposta vazia a partir do servidor", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor clique na linha vermelha(s) para mais informações", "Access key" : "Chave da acesso", "Secret key" : "Chave secreta", "Builtin" : "Construídas em", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index d49e818ea0f..5e4aed0b191 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -15,6 +15,7 @@ "Unsatisfied backend parameters" : "Parâmetros de back-end não-atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", + "%s" : "%s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Permitir acesso", @@ -33,6 +34,15 @@ "(group)" : "(grupo)", "Admin defined" : "Definido pelo administrador", "Saved" : "Salvo", + "Empty response from the server" : "Resposta vazia a partir do servidor", + "Couldn't access. Please logout and login to activate this mount point" : "Não foi possível acessar. Por favor, desconectar e conectar novamente para ativar este ponto de montagem", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Não foi possível obter as informações do servidor ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", + "There was an error with message: " : "Houve um erro com a mensagem:", + "External mount error" : "Erro de montagem externa", + "goto-external-storage" : "ir-montagem-externa", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possível obter a lista unidades de pontos de montagem da rede do Windows: resposta vazia a partir do servidor", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Por favor clique na linha vermelha(s) para mais informações", "Access key" : "Chave da acesso", "Secret key" : "Chave secreta", "Builtin" : "Construídas em", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index 6fbfe273557..2beb17d3001 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -17,6 +17,7 @@ OC.L10N.register( "Unsatisfied backend parameters" : "Недопустимые настройки бэкенда", "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", + "%s" : "%s", "Personal" : "Личное", "System" : "Система", "Grant access" : "Предоставить доступ", @@ -33,7 +34,17 @@ OC.L10N.register( "Every time the filesystem is used" : "Каждый раз при обращении к файловой системе", "All users. Type to select user or group." : "Все пользователи. Введите имя пользователя или группы.", "(group)" : "(группа)", + "Admin defined" : "Админ определен", "Saved" : "Сохранено", + "Empty response from the server" : "Пустой ответ от сервера", + "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Пожалуйста, выйти и войдите чтобы активировать эту точку монтирования", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера OwnCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", + "There was an error with message: " : "Обнаружена ошибка в сообщении:", + "External mount error" : "Ошибка внешнего монтажа", + "goto-external-storage" : "goto-external-storage", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список окон сетевого диска точки монтирования: пустой ответ от сервера", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации, пожалуйста нажмите на красную строку (ы)", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 12a62259f50..7366aa01246 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -15,6 +15,7 @@ "Unsatisfied backend parameters" : "Недопустимые настройки бэкенда", "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", + "%s" : "%s", "Personal" : "Личное", "System" : "Система", "Grant access" : "Предоставить доступ", @@ -31,7 +32,17 @@ "Every time the filesystem is used" : "Каждый раз при обращении к файловой системе", "All users. Type to select user or group." : "Все пользователи. Введите имя пользователя или группы.", "(group)" : "(группа)", + "Admin defined" : "Админ определен", "Saved" : "Сохранено", + "Empty response from the server" : "Пустой ответ от сервера", + "Couldn't access. Please logout and login to activate this mount point" : "Не удалось получить доступ. Пожалуйста, выйти и войдите чтобы активировать эту точку монтирования", + "Couldn't get the information from the ownCloud server: {code} {type}" : "Не удалось получить информацию от сервера OwnCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", + "There was an error with message: " : "Обнаружена ошибка в сообщении:", + "External mount error" : "Ошибка внешнего монтажа", + "goto-external-storage" : "goto-external-storage", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Не удалось получить список окон сетевого диска точки монтирования: пустой ответ от сервера", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Некоторые из настроенных внешних точек монтирования не подключены. Для получения дополнительной информации, пожалуйста нажмите на красную строку (ы)", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", diff --git a/apps/files_external/l10n/th_TH.js b/apps/files_external/l10n/th_TH.js index bb9c2dc909d..97a64e78e40 100644 --- a/apps/files_external/l10n/th_TH.js +++ b/apps/files_external/l10n/th_TH.js @@ -36,6 +36,13 @@ OC.L10N.register( "(group)" : "(กลุ่ม)", "Admin defined" : "ถูกกำหนดโดยผู้ดูแลระบบ", "Saved" : "บันทึกแล้ว", + "Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์", + "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้", + "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", + "There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด", + "External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด", + "goto-external-storage" : "ไปยังพื้นที่จัดเก็บข้อมูลภายนอก", "Access key" : "คีย์การเข้าถึง", "Secret key" : "คีย์ลับ", "Builtin" : "ในตัว", diff --git a/apps/files_external/l10n/th_TH.json b/apps/files_external/l10n/th_TH.json index f38d99ae88b..de569c9d61f 100644 --- a/apps/files_external/l10n/th_TH.json +++ b/apps/files_external/l10n/th_TH.json @@ -34,6 +34,13 @@ "(group)" : "(กลุ่ม)", "Admin defined" : "ถูกกำหนดโดยผู้ดูแลระบบ", "Saved" : "บันทึกแล้ว", + "Empty response from the server" : "ไม่มีการตอบสนองจากเซิร์ฟเวอร์", + "Couldn't access. Please logout and login to activate this mount point" : "ไม่สามารถเข้าถึง กรุณออกจากระบบและาเข้าสู่ระบบใหม่เพื่อเปิดใช้งานจุดเชื่อมต่อนี้", + "Couldn't get the information from the ownCloud server: {code} {type}" : "ไม่สามารถรับข้อมูลจากเซิร์ฟเวอร์ ownCloud: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", + "There was an error with message: " : "มีข้อความแสดงข้อผิดพลาด", + "External mount error" : "การติดจากตั้งภายนอกเกิดข้อผิดพลาด", + "goto-external-storage" : "ไปยังพื้นที่จัดเก็บข้อมูลภายนอก", "Access key" : "คีย์การเข้าถึง", "Secret key" : "คีย์ลับ", "Builtin" : "ในตัว", diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php index 4e37e6a4004..4f68c3c7fde 100644 --- a/apps/files_external/lib/config/configadapter.php +++ b/apps/files_external/lib/config/configadapter.php @@ -114,7 +114,7 @@ class ConfigAdapter implements IMountProvider { * @return \OCP\Files\Mount\IMountPoint[] */ public function getMountsForUser(IUser $user, IStorageFactory $loader) { - $this->migrator->migrateUser(); + $this->migrator->migrateUser($user); $mounts = []; diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index a94840ead59..125e0a6dd2c 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -33,6 +33,7 @@ use Icewind\SMB\Exception\Exception; use Icewind\SMB\Exception\NotFoundException; use Icewind\SMB\NativeServer; use Icewind\SMB\Server; +use Icewind\Streams\CallbackWrapper; use Icewind\Streams\IteratorDirectory; use OC\Files\Filesystem; @@ -189,7 +190,10 @@ class SMB extends Common { return $this->share->read($fullPath); case 'w': case 'wb': - return $this->share->write($fullPath); + $source = $this->share->write($fullPath); + return CallBackWrapper::wrap($source, null, null, function () use ($fullPath) { + unset($this->statCache[$fullPath]); + }); case 'a': case 'ab': case 'r+': @@ -219,7 +223,8 @@ class SMB extends Common { } $source = fopen($tmpFile, $mode); $share = $this->share; - return CallBackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share) { + return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share) { + unset($this->statCache[$fullPath]); $share->put($tmpFile, $fullPath); unlink($tmpFile); }); @@ -297,7 +302,9 @@ class SMB extends Common { * check if smbclient is installed */ public static function checkDependencies() { - $smbClientExists = (bool)\OC_Helper::findBinaryPath('smbclient'); - return $smbClientExists ? true : array('smbclient'); + return ( + (bool)\OC_Helper::findBinaryPath('smbclient') + || Server::NativeAvailable() + ) ? true : ['smbclient']; } } diff --git a/apps/files_external/migration/dummyusersession.php b/apps/files_external/migration/dummyusersession.php new file mode 100644 index 00000000000..9ffbfd6309f --- /dev/null +++ b/apps/files_external/migration/dummyusersession.php @@ -0,0 +1,51 @@ +<?php +/** + * @author Robin Appelman <icewind@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_external\Migration; + +use OCP\IUser; +use OCP\IUserSession; + +class DummyUserSession implements IUserSession { + + /** + * @var IUser + */ + private $user; + + public function login($user, $password) { + } + + public function logout() { + } + + public function setUser($user) { + $this->user = $user; + } + + public function getUser() { + return $this->user; + } + + public function isLoggedIn() { + return !is_null($this->user); + } +} diff --git a/apps/files_external/migration/storagemigrator.php b/apps/files_external/migration/storagemigrator.php index c8e323121ea..b469205ac55 100644 --- a/apps/files_external/migration/storagemigrator.php +++ b/apps/files_external/migration/storagemigrator.php @@ -32,6 +32,7 @@ use OCA\Files_external\Service\UserStoragesService; use OCP\IConfig; use OCP\IDBConnection; use OCP\ILogger; +use OCP\IUser; use OCP\IUserSession; /** @@ -49,11 +50,6 @@ class StorageMigrator { private $dbConfig; /** - * @var IUserSession - */ - private $userSession; - - /** * @var IConfig */ private $config; @@ -73,7 +69,6 @@ class StorageMigrator { * * @param BackendService $backendService * @param DBConfigService $dbConfig - * @param IUserSession $userSession * @param IConfig $config * @param IDBConnection $connection * @param ILogger $logger @@ -81,14 +76,12 @@ class StorageMigrator { public function __construct( BackendService $backendService, DBConfigService $dbConfig, - IUserSession $userSession, IConfig $config, IDBConnection $connection, ILogger $logger ) { $this->backendService = $backendService; $this->dbConfig = $dbConfig; - $this->userSession = $userSession; $this->config = $config; $this->connection = $connection; $this->logger = $logger; @@ -121,14 +114,18 @@ class StorageMigrator { /** * Migrate personal storages configured by the current user + * + * @param IUser $user */ - public function migrateUser() { - $userId = $this->userSession->getUser()->getUID(); + public function migrateUser(IUser $user) { + $dummySession = new DummyUserSession(); + $dummySession->setUser($user); + $userId = $user->getUID(); $userVersion = $this->config->getUserValue($userId, 'files_external', 'config_version', '0.0.0'); if (version_compare($userVersion, '0.5.0', '<')) { $this->config->setUserValue($userId, 'files_external', 'config_version', '0.5.0'); - $legacyService = new UserLegacyStoragesService($this->backendService, $this->userSession); - $storageService = new UserStoragesService($this->backendService, $this->dbConfig, $this->userSession); + $legacyService = new UserLegacyStoragesService($this->backendService, $dummySession); + $storageService = new UserStoragesService($this->backendService, $this->dbConfig, $dummySession); $this->migrate($legacyService, $storageService); } diff --git a/apps/files_external/tests/js/settingsSpec.js b/apps/files_external/tests/js/settingsSpec.js index 3d0168898ca..b6372649fb8 100644 --- a/apps/files_external/tests/js/settingsSpec.js +++ b/apps/files_external/tests/js/settingsSpec.js @@ -254,13 +254,13 @@ describe('OCA.External.Settings tests', function() { // defaults to true var $field = $td.find('.dropdown [name=previews]'); expect($field.prop('checked')).toEqual(true); - $td.find('.dropdown [name=filesystem_check_changes]').val(2); + $td.find('.dropdown [name=filesystem_check_changes]').val(0); $('body').mouseup(); expect(JSON.parse($tr.find('input.mountOptions').val())).toEqual({ encrypt: true, previews: true, - filesystem_check_changes: 2 + filesystem_check_changes: 0 }); }); }); diff --git a/apps/files_sharing/ajax/external.php b/apps/files_sharing/ajax/external.php index 0f8a3d56cf0..2ba1cb470c2 100644 --- a/apps/files_sharing/ajax/external.php +++ b/apps/files_sharing/ajax/external.php @@ -40,6 +40,7 @@ if (OCA\Files_Sharing\Helper::isIncomingServer2serverShareEnabled() === false) { $token = $_POST['token']; $remote = $_POST['remote']; $owner = $_POST['owner']; +$ownerDisplayName = $_POST['ownerDisplayName']; $name = $_POST['name']; $password = $_POST['password']; @@ -49,6 +50,14 @@ if(!\OCP\Util::isValidFileName($name)) { exit(); } +$currentUser = \OC::$server->getUserSession()->getUser()->getUID(); +$currentServer = \OC::$server->getURLGenerator()->getAbsoluteURL('/'); +if (\OC\Share\Helper::isSameUserOnSameServer($owner, $remote, $currentUser, $currentServer )) { + \OCP\JSON::error(array('data' => array('message' => $l->t('Not allowed to create a federated share with the same user server')))); + exit(); +} + + $externalManager = new \OCA\Files_Sharing\External\Manager( \OC::$server->getDatabaseConnection(), \OC\Files\Filesystem::getMountManager(), @@ -68,7 +77,7 @@ if (substr($remote, 0, 5) === 'https') { } } -$mount = $externalManager->addShare($remote, $token, $password, $name, $owner, true); +$mount = $externalManager->addShare($remote, $token, $password, $name, $ownerDisplayName, true); /** * @var \OCA\Files_Sharing\External\Storage $storage diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php index aaafafb269f..5b2f2e06e75 100644 --- a/apps/files_sharing/api/local.php +++ b/apps/files_sharing/api/local.php @@ -64,9 +64,10 @@ class Local { if ($shares === false) { return new \OC_OCS_Result(null, 404, 'could not get shares'); } else { + $mimetypeDetector = \OC::$server->getMimeTypeDetector(); foreach ($shares as &$share) { if ($share['item_type'] === 'file' && isset($share['path'])) { - $share['mimetype'] = \OC_Helper::getFileNameMimeType($share['path']); + $share['mimetype'] = $mimetypeDetector->detectPath($share['path']); if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) { $share['isPreviewAvailable'] = true; } @@ -227,9 +228,10 @@ class Local { private static function getFilesSharedWithMe() { try { $shares = \OCP\Share::getItemsSharedWith('file'); + $mimetypeDetector = \OC::$server->getMimeTypeDetector(); foreach ($shares as &$share) { if ($share['item_type'] === 'file') { - $share['mimetype'] = \OC_Helper::getFileNameMimeType($share['file_target']); + $share['mimetype'] = $mimetypeDetector->detectPath($share['file_target']); if (\OC::$server->getPreviewManager()->isMimeSupported($share['mimetype'])) { $share['isPreviewAvailable'] = true; } diff --git a/apps/files_sharing/api/ocssharewrapper.php b/apps/files_sharing/api/ocssharewrapper.php index ca04c656c28..4640f4ea185 100644 --- a/apps/files_sharing/api/ocssharewrapper.php +++ b/apps/files_sharing/api/ocssharewrapper.php @@ -29,13 +29,18 @@ class OCSShareWrapper { return new Share20OCS( new \OC\Share20\Manager( \OC::$server->getLogger(), - \OC::$server->getAppConfig(), + \OC::$server->getConfig(), new \OC\Share20\DefaultShareProvider( \OC::$server->getDatabaseConnection(), \OC::$server->getUserManager(), \OC::$server->getGroupManager(), \OC::$server->getRootFolder() - ) + ), + \OC::$server->getSecureRandom(), + \OC::$server->getHasher(), + \OC::$server->getMountManager(), + \OC::$server->getGroupManager(), + \OC::$server->getL10N('core') ), \OC::$server->getGroupManager(), \OC::$server->getUserManager(), @@ -49,8 +54,8 @@ class OCSShareWrapper { return \OCA\Files_Sharing\API\Local::getAllShares($params); } - public function createShare($params) { - return \OCA\Files_Sharing\API\Local::createShare($params); + public function createShare() { + return $this->getShare20OCS()->createShare(); } public function getShare($params) { diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php index 6c25b4a4426..003c028bf97 100644 --- a/apps/files_sharing/api/share20ocs.php +++ b/apps/files_sharing/api/share20ocs.php @@ -25,7 +25,6 @@ use OC\Share20\IShare; use OCP\IGroupManager; use OCP\IUserManager; use OCP\IRequest; -use OCP\Files\Folder; use OCP\IURLGenerator; use OCP\IUser; use OCP\Files\IRootFolder; @@ -98,7 +97,7 @@ class Share20OCS { $result['item_type'] = 'file'; } $result['storage_id'] = $path->getStorage()->getId(); - $result['storage'] = \OC\Files\Cache\Storage::getNumericStorageId($path->getStorage()->getId()); + $result['storage'] = $path->getStorage()->getCache()->getNumericStorageId(); $result['item_source'] = $path->getId(); $result['file_source'] = $path->getId(); $result['file_parent'] = $path->getParent()->getId(); @@ -192,6 +191,130 @@ class Share20OCS { } /** + * @return \OC_OCS_Result + */ + public function createShare() { + $share = $this->shareManager->newShare(); + + // Verify path + $path = $this->request->getParam('path', null); + if ($path === null) { + return new \OC_OCS_Result(null, 404, 'please specify a file or folder path'); + } + + $userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID()); + try { + $path = $userFolder->get($path); + } catch (\OCP\Files\NotFoundException $e) { + return new \OC_OCS_Result(null, 404, 'wrong path, file/folder doesn\'t exist'); + } + + $share->setPath($path); + + // Parse permissions (if available) + $permissions = $this->request->getParam('permissions', null); + if ($permissions === null) { + $permissions = \OCP\Constants::PERMISSION_ALL; + } else { + $permissions = (int)$permissions; + } + + if ($permissions < 0 || $permissions > \OCP\Constants::PERMISSION_ALL) { + return new \OC_OCS_Result(null, 404, 'invalid permissions'); + } + + // Shares always require read permissions + $permissions |= \OCP\Constants::PERMISSION_READ; + + if ($path instanceof \OCP\Files\File) { + // Single file shares should never have delete or create permissions + $permissions &= ~\OCP\Constants::PERMISSION_DELETE; + $permissions &= ~\OCP\Constants::PERMISSION_CREATE; + } + + $shareWith = $this->request->getParam('shareWith', null); + $shareType = (int)$this->request->getParam('shareType', '-1'); + + if ($shareType === \OCP\Share::SHARE_TYPE_USER) { + // Valid user is required to share + if ($shareWith === null || !$this->userManager->userExists($shareWith)) { + return new \OC_OCS_Result(null, 404, 'please specify a valid user'); + } + $share->setSharedWith($this->userManager->get($shareWith)); + $share->setPermissions($permissions); + } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { + // Valid group is required to share + if ($shareWith === null || !$this->groupManager->groupExists($shareWith)) { + return new \OC_OCS_Result(null, 404, 'please specify a valid group'); + } + $share->setSharedWith($this->groupManager->get($shareWith)); + $share->setPermissions($permissions); + } else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) { + //Can we even share links? + if (!$this->shareManager->shareApiAllowLinks()) { + return new \OC_OCS_Result(null, 404, 'public link sharing is disabled by the administrator'); + } + + $publicUpload = $this->request->getParam('publicUpload', null); + if ($publicUpload === 'true') { + // Check if public upload is allowed + if (!$this->shareManager->shareApiLinkAllowPublicUpload()) { + return new \OC_OCS_Result(null, 403, '"public upload disabled by the administrator'); + } + + // Public upload can only be set for folders + if ($path instanceof \OCP\Files\File) { + return new \OC_OCS_Result(null, 404, '"public upload is only possible for public shared folders'); + } + + $share->setPermissions( + \OCP\Constants::PERMISSION_READ | + \OCP\Constants::PERMISSION_CREATE | + \OCP\Constants::PERMISSION_UPDATE + ); + } else { + $share->setPermissions(\OCP\Constants::PERMISSION_READ); + } + + // Set password + $share->setPassword($this->request->getParam('password', null)); + + //Expire date + $expireDate = $this->request->getParam('expireDate', null); + + if ($expireDate !== null) { + try { + $expireDate = $this->parseDate($expireDate); + $share->setExpirationDate($expireDate); + } catch (\Exception $e) { + return new \OC_OCS_Result(null, 404, 'Invalid Date. Format must be YYYY-MM-DD.'); + } + } + + } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) { + //fixme Remote shares are handled by old code path for now + return \OCA\Files_Sharing\API\Local::createShare([]); + } else { + return new \OC_OCS_Result(null, 400, "unknown share type"); + } + + $share->setShareType($shareType); + $share->setSharedBy($this->currentUser); + + try { + $share = $this->shareManager->createShare($share); + } catch (\OC\HintException $e) { + $code = $e->getCode() === 0 ? 403 : $e->getCode(); + return new \OC_OCS_Result(null, $code, $e->getHint()); + }catch (\Exception $e) { + return new \OC_OCS_Result(null, 403, $e->getMessage()); + } + + $share = $this->formatShare($share); + return new \OC_OCS_Result($share); + } + + /** * @param IShare $share * @return bool */ @@ -216,4 +339,30 @@ class Share20OCS { return false; } + + /** + * Make sure that the passed date is valid ISO 8601 + * So YYYY-MM-DD + * If not throw an exception + * + * @param string $expireDate + * + * @throws \Exception + * @return \DateTime + */ + private function parseDate($expireDate) { + try { + $date = new \DateTime($expireDate); + } catch (\Exception $e) { + throw new \Exception('Invalid date. Format must be YYYY-MM-DD'); + } + + if ($date === false) { + throw new \Exception('Invalid date. Format must be YYYY-MM-DD'); + } + + $date->setTime(0,0,0); + + return $date; + } } diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index 72e56456961..bb16345f101 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -9,14 +9,13 @@ Turning the feature off removes shared files and folders on the server for all s </description> <licence>AGPL</licence> <author>Michael Gapczynski, Bjoern Schiessle</author> - <shipped>true</shipped> <default_enable/> <version>0.8.1</version> <types> <filesystem/> </types> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> <public> <files>public.php</files> diff --git a/apps/files_sharing/js/external.js b/apps/files_sharing/js/external.js index f658de307ab..45a6ef02758 100644 --- a/apps/files_sharing/js/external.js +++ b/apps/files_sharing/js/external.js @@ -19,7 +19,7 @@ */ OCA.Sharing.showAddExternalDialog = function (share, passwordProtected, callback) { var remote = share.remote; - var owner = share.owner; + var owner = share.ownerDisplayName || share.owner; var name = share.name; var remoteClean = (remote.substr(0, 8) === 'https://') ? remote.substr(8) : remote.substr(7); @@ -92,6 +92,7 @@ remote: share.remote, token: share.token, owner: share.owner, + ownerDisplayName: share.ownerDisplayName || share.owner, name: share.name, password: password}, function(result) { if (result.status === 'error') { diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 70c1ba5c0c2..f2d6355d76a 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -155,7 +155,11 @@ OCA.Sharing.PublicApp = { this.fileList.getDownloadUrl = function (filename, dir, isDir) { var path = dir || this.getCurrentDirectory(); if (filename && !_.isArray(filename) && !isDir) { - return OC.getRootPath() + '/public.php/webdav' + OC.joinPaths(path, filename); + var portPart = ''; + if (OC.getPort()) { + portPart = ':' + OC.getPort(); + } + return OC.getProtocol() + '://' + token + '@' + OC.getHost() + portPart + OC.getRootPath() + '/public.php/webdav' + OC.joinPaths(path, filename); } if (_.isArray(filename)) { filename = JSON.stringify(filename); @@ -242,9 +246,10 @@ OCA.Sharing.PublicApp = { var remote = $(this).find('input[type="text"]').val(); var token = $('#sharingToken').val(); var owner = $('#save').data('owner'); + var ownerDisplayName = $('#save').data('owner-display-name'); var name = $('#save').data('name'); var isProtected = $('#save').data('protected') ? 1 : 0; - OCA.Sharing.PublicApp._saveToOwnCloud(remote, token, owner, name, isProtected); + OCA.Sharing.PublicApp._saveToOwnCloud(remote, token, owner, ownerDisplayName, name, isProtected); }); $('#remote_address').on("keyup paste", function() { @@ -291,7 +296,7 @@ OCA.Sharing.PublicApp = { this.fileList.changeDirectory(params.path || params.dir, false, true); }, - _saveToOwnCloud: function (remote, token, owner, name, isProtected) { + _saveToOwnCloud: function (remote, token, owner, ownerDisplayName, name, isProtected) { var location = window.location.protocol + '//' + window.location.host + OC.webroot; if(remote.substr(-1) !== '/') { @@ -299,7 +304,7 @@ OCA.Sharing.PublicApp = { }; var url = remote + 'index.php/apps/files#' + 'remote=' + encodeURIComponent(location) // our location is the remote for the other server - + "&token=" + encodeURIComponent(token) + "&owner=" + encodeURIComponent(owner) + "&name=" + encodeURIComponent(name) + "&protected=" + isProtected; + + "&token=" + encodeURIComponent(token) + "&owner=" + encodeURIComponent(owner) +"&ownerDisplayName=" + encodeURIComponent(ownerDisplayName) + "&name=" + encodeURIComponent(name) + "&protected=" + isProtected; if (remote.indexOf('://') > 0) { diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 3d105f283d8..f8d89828f4d 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -45,6 +45,9 @@ if (fileData.type === 'file') { // files can't be shared with delete permissions sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; + + // create permissions don't mean anything for files + sharePermissions = sharePermissions & ~OC.PERMISSION_CREATE; } tr.attr('data-share-permissions', sharePermissions); if (fileData.shareOwner) { diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 650fb5c524a..e77c4b974f7 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -52,6 +52,7 @@ OC.L10N.register( "Shared by %2$s" : "Compartido por %2$s", "Shared via public link" : "Compartido vía enlace público", "Shares" : "Compartidos", + "You received %2$s as a remote share from %1$s" : "Ha recibido %2$s como un recurso compartido de %1$s", "Accept" : "Aceptar", "Decline" : "Denegar", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index 6f963ab8fee..96fb368f76b 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -50,6 +50,7 @@ "Shared by %2$s" : "Compartido por %2$s", "Shared via public link" : "Compartido vía enlace público", "Shares" : "Compartidos", + "You received %2$s as a remote share from %1$s" : "Ha recibido %2$s como un recurso compartido de %1$s", "Accept" : "Aceptar", "Decline" : "Denegar", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s", diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index 6d02bdd6ced..2fcce251407 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -30,6 +30,8 @@ OC.L10N.register( "You shared %1$s with group %2$s" : "Jagasid %1$s %2$s grupiga", "%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s", "You shared %1$s via link" : "Jagasid %1$s lingiga", + "Downloaded via public link" : "Alla laetud avalikult lingilt", + "Shared with %2$s" : "Jagatud kasutajaga %2$s", "Shares" : "Jagamised", "Accept" : "Nõustu", "Decline" : "Lükka tagasi", diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index 481a75210ee..34ddd9f1b15 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -28,6 +28,8 @@ "You shared %1$s with group %2$s" : "Jagasid %1$s %2$s grupiga", "%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s", "You shared %1$s via link" : "Jagasid %1$s lingiga", + "Downloaded via public link" : "Alla laetud avalikult lingilt", + "Shared with %2$s" : "Jagatud kasutajaga %2$s", "Shares" : "Jagamised", "Accept" : "Nõustu", "Decline" : "Lükka tagasi", diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js index a87d6156d40..accd43020ff 100644 --- a/apps/files_sharing/l10n/fi_FI.js +++ b/apps/files_sharing/l10n/fi_FI.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Palvelimelta-palvelimelle-jakaminen ei ole käytössä tällä palvelimella", "The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.", + "Not allowed to create a federated share with the same user server" : "Saman käyttäjäpalvelimen kanssa ei ole sallittua luoda federoitua jakoa", "Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne", "Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä", "Storage not valid" : "Tallennustila ei ole kelvollinen", diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json index 172b8476092..e321d64732f 100644 --- a/apps/files_sharing/l10n/fi_FI.json +++ b/apps/files_sharing/l10n/fi_FI.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Palvelimelta-palvelimelle-jakaminen ei ole käytössä tällä palvelimella", "The mountpoint name contains invalid characters." : "Liitospisteen nimi sisältää virheellisiä merkkejä.", + "Not allowed to create a federated share with the same user server" : "Saman käyttäjäpalvelimen kanssa ei ole sallittua luoda federoitua jakoa", "Invalid or untrusted SSL certificate" : "Virheellinen tai ei-luotettu SSL-varmenne", "Could not authenticate to remote share, password might be wrong" : "Tunnistautuminen etäjakoa kohtaan epäonnistui. Salasana saattaa olla väärä", "Storage not valid" : "Tallennustila ei ole kelvollinen", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 9d26127d472..bdf8ee8224a 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères non valides.", + "Not allowed to create a federated share with the same user server" : "Non autorisé à créer un partage fédéré avec un utilisateur du même serveur", "Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable", "Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant : le mot de passe en probablement incorrect", "Storage not valid" : "Support de stockage non valide", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 0f1edc51dc7..6d30043fb84 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Le partage de serveur à serveur n'est pas activé sur ce serveur", "The mountpoint name contains invalid characters." : "Le nom du point de montage contient des caractères non valides.", + "Not allowed to create a federated share with the same user server" : "Non autorisé à créer un partage fédéré avec un utilisateur du même serveur", "Invalid or untrusted SSL certificate" : "Certificat SSL non valable ou non fiable", "Could not authenticate to remote share, password might be wrong" : "Impossible de s'authentifier au partage distant : le mot de passe en probablement incorrect", "Storage not valid" : "Support de stockage non valide", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index a9292dc8206..0c43c0a7b3b 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -11,6 +11,7 @@ OC.L10N.register( "You shared %1$s via link" : "שיתפת %1$s על בסיס קישור", "Shares" : "שיתופים", "Password" : "סיסמא", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Name" : "שם", "Download" : "הורדה" }, diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 9f9ab2593f2..344f6a32f13 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -9,6 +9,7 @@ "You shared %1$s via link" : "שיתפת %1$s על בסיס קישור", "Shares" : "שיתופים", "Password" : "סיסמא", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Name" : "שם", "Download" : "הורדה" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/hu_HU.js b/apps/files_sharing/l10n/hu_HU.js index c0d2d01b2c4..6471b491fac 100644 --- a/apps/files_sharing/l10n/hu_HU.js +++ b/apps/files_sharing/l10n/hu_HU.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón", "The mountpoint name contains invalid characters." : "A csatlakozási pont neve érvénytelen karaktereket tartalmaz ", + "Not allowed to create a federated share with the same user server" : "Nem lehet létrehozni egy egyesített megosztást azonos felhasználóval és szerverrel", "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány", "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.", "Storage not valid" : "Tároló nem érvényes", diff --git a/apps/files_sharing/l10n/hu_HU.json b/apps/files_sharing/l10n/hu_HU.json index a2e15c46c52..4c5501803ea 100644 --- a/apps/files_sharing/l10n/hu_HU.json +++ b/apps/files_sharing/l10n/hu_HU.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "A kiszolgálók közötti megosztás nincs engedélyezve ezen a kiszolgálón", "The mountpoint name contains invalid characters." : "A csatlakozási pont neve érvénytelen karaktereket tartalmaz ", + "Not allowed to create a federated share with the same user server" : "Nem lehet létrehozni egy egyesített megosztást azonos felhasználóval és szerverrel", "Invalid or untrusted SSL certificate" : "Érvénytelen vagy nem megbízható az SSL tanúsítvány", "Could not authenticate to remote share, password might be wrong" : "Nem sikerült az azonosítás a távoli megosztáshoz. Lehet, hogy rossz a jelszó.", "Storage not valid" : "Tároló nem érvényes", diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 8cd66b34d24..39f7ced4bbd 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server", "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.", + "Not allowed to create a federated share with the same user server" : "Non è consentito creare una condivisione federata con lo stesso server dell'utente", "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile", "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata", "Storage not valid" : "Archiviazione non valida", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index b93dafd7555..f40fbb4b232 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "La condivisione tra server non è abilitata su questo server", "The mountpoint name contains invalid characters." : "Il nome del punto di mount contiene caratteri non validi.", + "Not allowed to create a federated share with the same user server" : "Non è consentito creare una condivisione federata con lo stesso server dell'utente", "Invalid or untrusted SSL certificate" : "Certificato SSL non valido o non attendibile", "Could not authenticate to remote share, password might be wrong" : "Impossibile autenticarsi sulla condivisione remota, la password potrebbe essere errata", "Storage not valid" : "Archiviazione non valida", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index e40acc0104a..e3427ea1f7b 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "このサーバーでは、サーバー間の共有が有効ではありません", "The mountpoint name contains invalid characters." : "マウントポイント名 に不正な文字列が含まれています。", + "Not allowed to create a federated share with the same user server" : "同じユーザーのサーバーでフェデレーション共有を作成することは出来ません", "Invalid or untrusted SSL certificate" : "無効または信頼できないSSL証明書", "Could not authenticate to remote share, password might be wrong" : "リモート共有が認証できませんでした,パスワードが間違っているかもしれません", "Storage not valid" : "ストレージが無効です", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index 989a723b2a8..9dc64e2b3ec 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "このサーバーでは、サーバー間の共有が有効ではありません", "The mountpoint name contains invalid characters." : "マウントポイント名 に不正な文字列が含まれています。", + "Not allowed to create a federated share with the same user server" : "同じユーザーのサーバーでフェデレーション共有を作成することは出来ません", "Invalid or untrusted SSL certificate" : "無効または信頼できないSSL証明書", "Could not authenticate to remote share, password might be wrong" : "リモート共有が認証できませんでした,パスワードが間違っているかもしれません", "Storage not valid" : "ストレージが無効です", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 93848326605..517cc0915be 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje", "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.", + "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.", "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", "Storage not valid" : "Talpykla negalioja", diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 6d777024052..923971c336b 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Serveris - serveris dalinimasis neįjungtas šiame serveryje", "The mountpoint name contains invalid characters." : "Prijungimo taškas su neleistinais simboliais.", + "Not allowed to create a federated share with the same user server" : "Neleidžiama dalintis tarp serverių, nes vartotojas tame pačiame serveryje.", "Invalid or untrusted SSL certificate" : "Netinkamas arba nepatikimas SSL sertifikatas", "Could not authenticate to remote share, password might be wrong" : "Nepavyko identifikuotis serveryje, gal netinkamas slaptažodis", "Storage not valid" : "Talpykla negalioja", diff --git a/apps/files_sharing/l10n/nb_NO.js b/apps/files_sharing/l10n/nb_NO.js index 4f7fb08ef16..bb6cd2e08c1 100644 --- a/apps/files_sharing/l10n/nb_NO.js +++ b/apps/files_sharing/l10n/nb_NO.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Server til server-deling er ikke aktivert på denne serveren", "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.", + "Not allowed to create a federated share with the same user server" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme bruker-serveren", "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke tiltrodd SSL-sertifikat", "Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil", "Storage not valid" : "Lagerplass ikke gyldig", diff --git a/apps/files_sharing/l10n/nb_NO.json b/apps/files_sharing/l10n/nb_NO.json index e75f095f354..5a4852691e2 100644 --- a/apps/files_sharing/l10n/nb_NO.json +++ b/apps/files_sharing/l10n/nb_NO.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Server til server-deling er ikke aktivert på denne serveren", "The mountpoint name contains invalid characters." : "Navnet på oppkoblingspunktet inneholder ugyldige tegn.", + "Not allowed to create a federated share with the same user server" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme bruker-serveren", "Invalid or untrusted SSL certificate" : "Ugyldig eller ikke tiltrodd SSL-sertifikat", "Could not authenticate to remote share, password might be wrong" : "Klarte ikke å autentisere mot ekstern deling. Passordet kan være feil", "Storage not valid" : "Lagerplass ikke gyldig", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index 7b31b7c73e2..523213f6d9b 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Server met server delen is niet geactiveerd op deze server", "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.", + "Not allowed to create a federated share with the same user server" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", "Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat", "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord", "Storage not valid" : "Opslag ongeldig", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index 92ba1c04268..e6501e874ea 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Server met server delen is niet geactiveerd op deze server", "The mountpoint name contains invalid characters." : "De naam van het mountpoint bevat ongeldige karakters.", + "Not allowed to create a federated share with the same user server" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", "Invalid or untrusted SSL certificate" : "Ongeldig of onvertrouwd SSL-certificaat", "Could not authenticate to remote share, password might be wrong" : "Kon niet authenticeren bij externe share, misschien verkeerd wachtwoord", "Storage not valid" : "Opslag ongeldig", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index d2dac6d5955..2faf1455480 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Compartilhamento de servidor para servidor não está habilitado no servidor", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", + "Not allowed to create a federated share with the same user server" : "Não permitido para criar um compartilhamento associado com o mesmo servidor do usuário", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticação com o compartilhamento remoto, a senha deve estar errada", "Storage not valid" : "Armazenamento não válido", @@ -27,8 +28,8 @@ OC.L10N.register( "Shared by" : "Compartilhado por", "Sharing" : "Compartilhamento", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", - "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhada a partir de <strong>outro servidor</strong>", - "A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhada publicamente foi <strong>baixado</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", + "A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado publicamente foi <strong>baixado</strong>", "You received a new remote share %2$s from %1$s" : "Você recebeu um novo conpartilhamento remoto %2$s de %1$s", "You received a new remote share from %s" : "Você recebeu um novo compartilhamento remoto de %s", "%1$s accepted remote share %2$s" : "%1$s aceitou o compartilhamento remoto %2$s", @@ -55,14 +56,14 @@ OC.L10N.register( "You received %2$s as a remote share from %1$s" : "Você recebeu %2$s como um compartilhamento remoto de %1$s", "Accept" : "Aceitar", "Decline" : "Rejeitar", - "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s", - "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem ID Associada, veja %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem ID Associada", "This share is password-protected" : "Este compartilhamento esta protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Name" : "Nome", - "Share time" : "Tempo de compartilhamento", + "Share time" : "Data compartilhado", "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", "Reasons might be:" : "As razões podem ser:", "the item was removed" : "o item foi removido", @@ -73,12 +74,12 @@ OC.L10N.register( "Download" : "Baixar", "Download %s" : "Baixar %s", "Direct link" : "Link direto", - "Federated Cloud Sharing" : "Compartilhamento de Nuvem Conglomerada", + "Federated Cloud Sharing" : "Compartilhamento de Nuvem Associada", "Open documentation" : "Abrir documentação", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores", - "Federated Cloud" : "Nuvem Conglomerada", - "Your Federated Cloud ID:" : "Seu Federados Nuvem ID:", + "Federated Cloud" : "Nuvem Associada", + "Your Federated Cloud ID:" : "Sua ID na Nuvem Associada:", "Share it:" : "Compartilhe:", "Add to your website" : "Adicione ao seu website", "Share with me via ownCloud" : "Compartilhe comigo via ownCloud", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index e64c07ff8e0..51e6e9e6f0a 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Compartilhamento de servidor para servidor não está habilitado no servidor", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", + "Not allowed to create a federated share with the same user server" : "Não permitido para criar um compartilhamento associado com o mesmo servidor do usuário", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", "Could not authenticate to remote share, password might be wrong" : "Não foi possível autenticação com o compartilhamento remoto, a senha deve estar errada", "Storage not valid" : "Armazenamento não válido", @@ -25,8 +26,8 @@ "Shared by" : "Compartilhado por", "Sharing" : "Compartilhamento", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", - "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhada a partir de <strong>outro servidor</strong>", - "A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhada publicamente foi <strong>baixado</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", + "A public shared file or folder was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado publicamente foi <strong>baixado</strong>", "You received a new remote share %2$s from %1$s" : "Você recebeu um novo conpartilhamento remoto %2$s de %1$s", "You received a new remote share from %s" : "Você recebeu um novo compartilhamento remoto de %s", "%1$s accepted remote share %2$s" : "%1$s aceitou o compartilhamento remoto %2$s", @@ -53,14 +54,14 @@ "You received %2$s as a remote share from %1$s" : "Você recebeu %2$s como um compartilhamento remoto de %1$s", "Accept" : "Aceitar", "Decline" : "Rejeitar", - "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID, veja %s", - "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem Federados ID", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #ownCloud Nuvem ID Associada, veja %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Compartilhe comigo através do meu #ownCloud Nuvem ID Associada", "This share is password-protected" : "Este compartilhamento esta protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Name" : "Nome", - "Share time" : "Tempo de compartilhamento", + "Share time" : "Data compartilhado", "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", "Reasons might be:" : "As razões podem ser:", "the item was removed" : "o item foi removido", @@ -71,12 +72,12 @@ "Download" : "Baixar", "Download %s" : "Baixar %s", "Direct link" : "Link direto", - "Federated Cloud Sharing" : "Compartilhamento de Nuvem Conglomerada", + "Federated Cloud Sharing" : "Compartilhamento de Nuvem Associada", "Open documentation" : "Abrir documentação", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores", - "Federated Cloud" : "Nuvem Conglomerada", - "Your Federated Cloud ID:" : "Seu Federados Nuvem ID:", + "Federated Cloud" : "Nuvem Associada", + "Your Federated Cloud ID:" : "Sua ID na Nuvem Associada:", "Share it:" : "Compartilhe:", "Add to your website" : "Adicione ao seu website", "Share with me via ownCloud" : "Compartilhe comigo via ownCloud", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 1a84d10ecea..15b26160f6e 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", + "Not allowed to create a federated share with the same user server" : "Не допускается создание федеративного общего ресурса с тем-же сервером пользователя", "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL", "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль", "Storage not valid" : "Хранилище недоступно", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 401896709d6..3b92d4cc4c3 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", + "Not allowed to create a federated share with the same user server" : "Не допускается создание федеративного общего ресурса с тем-же сервером пользователя", "Invalid or untrusted SSL certificate" : "Недействительный или недоверенный сертификат SSL", "Could not authenticate to remote share, password might be wrong" : "Не удалось произвести аутентификацию для доступа к удалённому хранилищу, возможно неправильно указан пароль", "Storage not valid" : "Хранилище недоступно", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index 413214d58de..699578fb0fc 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "Ndarja mes shërbyesish s’është e aktivizuar në këtë shërbyes", "The mountpoint name contains invalid characters." : "Emri i pikës së montimit përmban shenja të pavlefshme.", + "Not allowed to create a federated share with the same user server" : "Nuk i lejohet të krijojë një ndarje të federuar me të njëjtin shërbyes përdoruesi", "Invalid or untrusted SSL certificate" : "Dëshmi SSL e pavlefshme ose e pabesuar", "Could not authenticate to remote share, password might be wrong" : "S’bëri dot mirëfilltësimin te ndarja e largët, fjalëkalimi mund të jetë i gabuar", "Storage not valid" : "Depozitë jo e vlefshme", @@ -33,6 +34,7 @@ OC.L10N.register( "You received a new remote share from %s" : "Morët një ndarje të largët nga %s", "%1$s accepted remote share %2$s" : "%1$s pranoi ndarjen e largët %2$s", "%1$s declined remote share %2$s" : "%1$s hodhi tej ndarjen e largët %2$s", + "%1$s unshared %2$s from you" : "%1$s shndau me ju %2$s", "Public shared folder %1$s was downloaded" : "U shkarkua dosja e ndarë publikisht %1$s", "Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s", "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s", @@ -72,10 +74,12 @@ OC.L10N.register( "Download" : "Shkarko", "Download %s" : "Shkarko %s", "Direct link" : "Lidhje e drejtpërdrejtë", + "Federated Cloud Sharing" : "Ndarje e Federuar Në Re", "Open documentation" : "Hap dokumentimin", "Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë", "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", - "Your Federated Cloud ID:" : "ID-ja juaj Federated Cloud:", + "Federated Cloud" : "Re e Federuar", + "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", "Share it:" : "Ndajeni:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via ownCloud" : "Ndani me mua përmes ownCloud-it", diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index 8722966f5da..92c76b4c509 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "Ndarja mes shërbyesish s’është e aktivizuar në këtë shërbyes", "The mountpoint name contains invalid characters." : "Emri i pikës së montimit përmban shenja të pavlefshme.", + "Not allowed to create a federated share with the same user server" : "Nuk i lejohet të krijojë një ndarje të federuar me të njëjtin shërbyes përdoruesi", "Invalid or untrusted SSL certificate" : "Dëshmi SSL e pavlefshme ose e pabesuar", "Could not authenticate to remote share, password might be wrong" : "S’bëri dot mirëfilltësimin te ndarja e largët, fjalëkalimi mund të jetë i gabuar", "Storage not valid" : "Depozitë jo e vlefshme", @@ -31,6 +32,7 @@ "You received a new remote share from %s" : "Morët një ndarje të largët nga %s", "%1$s accepted remote share %2$s" : "%1$s pranoi ndarjen e largët %2$s", "%1$s declined remote share %2$s" : "%1$s hodhi tej ndarjen e largët %2$s", + "%1$s unshared %2$s from you" : "%1$s shndau me ju %2$s", "Public shared folder %1$s was downloaded" : "U shkarkua dosja e ndarë publikisht %1$s", "Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s", "You shared %1$s with %2$s" : "Ndatë %1$s me %2$s", @@ -70,10 +72,12 @@ "Download" : "Shkarko", "Download %s" : "Shkarko %s", "Direct link" : "Lidhje e drejtpërdrejtë", + "Federated Cloud Sharing" : "Ndarje e Federuar Në Re", "Open documentation" : "Hap dokumentimin", "Allow users on this server to send shares to other servers" : "Lejoju përdoruesve në këtë shërbyes të dërgojnë ndarje në shërbyes të tjerë", "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", - "Your Federated Cloud ID:" : "ID-ja juaj Federated Cloud:", + "Federated Cloud" : "Re e Federuar", + "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", "Share it:" : "Ndajeni:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via ownCloud" : "Ndani me mua përmes ownCloud-it", diff --git a/apps/files_sharing/l10n/th_TH.js b/apps/files_sharing/l10n/th_TH.js index b1400469af8..b0022e9d959 100644 --- a/apps/files_sharing/l10n/th_TH.js +++ b/apps/files_sharing/l10n/th_TH.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Server to server sharing is not enabled on this server" : "เซิร์ฟเวอร์ไปยังแชร์เซิร์ฟเวอร์ไม่ได้เปิดใช้งานบนเซิร์ฟเวอร์นี้", "The mountpoint name contains invalid characters." : "ชื่อจุดเชื่อมต่อมีตัวอักษรที่ไม่ถูกต้อง", + "Not allowed to create a federated share with the same user server" : "ไม่อนุญาตให้สร้างแชร์ในเครือกับเซิร์ฟเวอร์ที่มีผู้ใช้เดียวกัน", "Invalid or untrusted SSL certificate" : "ใบรับรอง SSL ไม่ถูกต้องหรือไม่น่าเชื่อถือ", "Could not authenticate to remote share, password might be wrong" : "ไม่สามารถรับรองความถูกต้องจากการแชร์ระยะไกลรหัสผ่านอาจจะผิด", "Storage not valid" : "การจัดเก็บข้อมูลไม่ถูกต้อง", diff --git a/apps/files_sharing/l10n/th_TH.json b/apps/files_sharing/l10n/th_TH.json index a9ee8d6eb53..d973ad6ba19 100644 --- a/apps/files_sharing/l10n/th_TH.json +++ b/apps/files_sharing/l10n/th_TH.json @@ -1,6 +1,7 @@ { "translations": { "Server to server sharing is not enabled on this server" : "เซิร์ฟเวอร์ไปยังแชร์เซิร์ฟเวอร์ไม่ได้เปิดใช้งานบนเซิร์ฟเวอร์นี้", "The mountpoint name contains invalid characters." : "ชื่อจุดเชื่อมต่อมีตัวอักษรที่ไม่ถูกต้อง", + "Not allowed to create a federated share with the same user server" : "ไม่อนุญาตให้สร้างแชร์ในเครือกับเซิร์ฟเวอร์ที่มีผู้ใช้เดียวกัน", "Invalid or untrusted SSL certificate" : "ใบรับรอง SSL ไม่ถูกต้องหรือไม่น่าเชื่อถือ", "Could not authenticate to remote share, password might be wrong" : "ไม่สามารถรับรองความถูกต้องจากการแชร์ระยะไกลรหัสผ่านอาจจะผิด", "Storage not valid" : "การจัดเก็บข้อมูลไม่ถูกต้อง", diff --git a/apps/files_sharing/lib/controllers/sharecontroller.php b/apps/files_sharing/lib/controllers/sharecontroller.php index fe7b159449c..e28019c358c 100644 --- a/apps/files_sharing/lib/controllers/sharecontroller.php +++ b/apps/files_sharing/lib/controllers/sharecontroller.php @@ -181,6 +181,7 @@ class ShareController extends Controller { $shareTmpl = []; $shareTmpl['displayName'] = User::getDisplayName($shareOwner); + $shareTmpl['owner'] = $shareOwner; $shareTmpl['filename'] = $file; $shareTmpl['directory_path'] = $linkItem['file_target']; $shareTmpl['mimetype'] = Filesystem::getMimeType($originalSharePath); diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index b5dd653d718..aa1f926ea35 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -41,7 +41,7 @@ $thumbSize = 1024; <input type="hidden" name="filename" value="<?php p($_['filename']) ?>" id="filename"> <input type="hidden" name="mimetype" value="<?php p($_['mimetype']) ?>" id="mimetype"> <input type="hidden" name="previewSupported" value="<?php p($_['previewSupported'] ? 'true' : 'false'); ?>" id="previewSupported"> -<input type="hidden" name="mimetypeIcon" value="<?php p(OC_Helper::mimetypeIcon($_['mimetype'])); ?>" id="mimetypeIcon"> +<input type="hidden" name="mimetypeIcon" value="<?php p(\OC::$server->getMimeTypeDetector()->mimeTypeIcon($_['mimetype'])); ?>" id="mimetypeIcon"> <input type="hidden" name="filesize" value="<?php p($_['nonHumanFileSize']); ?>" id="filesize"> <input type="hidden" name="maxSizeAnimateGif" value="<?php p($_['maxSizeAnimateGif']); ?>" id="maxSizeAnimateGif"> @@ -72,7 +72,7 @@ $thumbSize = 1024; if ($_['server2serversharing']) { ?> <span id="save" data-protected="<?php p($_['protected']) ?>" - data-owner="<?php p($_['displayName']) ?>" data-name="<?php p($_['filename']) ?>"> + data-owner-display-name="<?php p($_['displayName']) ?>" data-owner="<?php p($_['owner']) ?>" data-name="<?php p($_['filename']) ?>"> <button id="save-button"><?php p($l->t('Add to your ownCloud')) ?></button> <form class="save-form hidden" action="#"> <input type="text" id="remote_address" placeholder="example.com/owncloud"/> diff --git a/apps/files_sharing/tests/api/share20ocstest.php b/apps/files_sharing/tests/api/share20ocstest.php index b7c56fe17f6..74a5d0752a4 100644 --- a/apps/files_sharing/tests/api/share20ocstest.php +++ b/apps/files_sharing/tests/api/share20ocstest.php @@ -65,6 +65,7 @@ class Share20OCSTest extends \Test\TestCase { $this->rootFolder = $this->getMock('OCP\Files\IRootFolder'); $this->urlGenerator = $this->getMock('OCP\IURLGenerator'); $this->currentUser = $this->getMock('OCP\IUser'); + $this->currentUser->method('getUID')->willReturn('currentUser'); $this->ocs = new Share20OCS( $this->shareManager, @@ -171,8 +172,18 @@ class Share20OCSTest extends \Test\TestCase { $group = $this->getMock('OCP\IGroup'); $group->method('getGID')->willReturn('groupId'); - $storage = $this->getMock('OCP\Files\Storage'); + $cache = $this->getMockBuilder('OC\Files\Cache\Cache') + ->disableOriginalConstructor() + ->getMock(); + $cache->method('getNumericStorageId')->willReturn(101); + + $storage = $this->getMockBuilder('OC\Files\Storage\Storage') + ->disableOriginalConstructor() + ->getMock(); $storage->method('getId')->willReturn('STORAGE'); + $storage->method('getCache')->willReturn($cache); + + $parentFolder = $this->getMock('OCP\Files\Folder'); $parentFolder->method('getId')->willReturn(3); @@ -223,7 +234,7 @@ class Share20OCSTest extends \Test\TestCase { 'parent' => 6, 'storage_id' => 'STORAGE', 'path' => 'file', - 'storage' => null, // HACK around static function + 'storage' => 101, 'mail_send' => 0, ]; $data[] = [$share, $expected]; @@ -262,7 +273,7 @@ class Share20OCSTest extends \Test\TestCase { 'parent' => 6, 'storage_id' => 'STORAGE', 'path' => 'folder', - 'storage' => null, // HACK around static function + 'storage' => 101, 'mail_send' => 0, ]; $data[] = [$share, $expected]; @@ -304,7 +315,7 @@ class Share20OCSTest extends \Test\TestCase { 'parent' => 6, 'storage_id' => 'STORAGE', 'path' => 'folder', - 'storage' => null, // HACK around static function + 'storage' => 101, 'mail_send' => 0, 'url' => 'url', ]; @@ -391,4 +402,280 @@ class Share20OCSTest extends \Test\TestCase { $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_LINK); $this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); } + + public function testCreateShareNoPath() { + $expected = new \OC_OCS_Result(null, 404, 'please specify a file or folder path'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareInvalidPath() { + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'invalid-path'], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $userFolder->expects($this->once()) + ->method('get') + ->with('invalid-path') + ->will($this->throwException(new \OCP\Files\NotFoundException())); + + $expected = new \OC_OCS_Result(null, 404, 'wrong path, file/folder doesn\'t exist'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareInvalidPermissions() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, 32], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\File'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $expected = new \OC_OCS_Result(null, 404, 'invalid permissions'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareUserNoShareWith() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, \OCP\Constants::PERMISSION_ALL], + ['shareType', $this->any(), \OCP\Share::SHARE_TYPE_USER], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\File'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $expected = new \OC_OCS_Result(null, 404, 'please specify a valid user'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareUserNoValidShareWith() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, \OCP\Constants::PERMISSION_ALL], + ['shareType', $this->any(), \OCP\Share::SHARE_TYPE_USER], + ['shareWith', $this->any(), 'invalidUser'], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\File'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $expected = new \OC_OCS_Result(null, 404, 'please specify a valid user'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareUser() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') + ->setConstructorArgs([ + $this->shareManager, + $this->groupManager, + $this->userManager, + $this->request, + $this->rootFolder, + $this->urlGenerator, + $this->currentUser + ])->setMethods(['formatShare']) + ->getMock(); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, \OCP\Constants::PERMISSION_ALL], + ['shareType', $this->any(), \OCP\Share::SHARE_TYPE_USER], + ['shareWith', null, 'validUser'], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\File'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $user = $this->getMock('\OCP\IUser'); + $this->userManager->method('userExists')->with('validUser')->willReturn(true); + $this->userManager->method('get')->with('validUser')->willReturn($user); + + $share->method('setPath')->with($path); + $share->method('setPermissions') + ->with( + \OCP\Constants::PERMISSION_ALL & + ~\OCP\Constants::PERMISSION_DELETE & + ~\OCP\Constants::PERMISSION_CREATE); + $share->method('setShareType')->with(\OCP\Share::SHARE_TYPE_USER); + $share->method('setSharedWith')->with($user); + $share->method('setSharedBy')->with($this->currentUser); + + $expected = new \OC_OCS_Result(); + $result = $ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareGroupNoValidShareWith() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, \OCP\Constants::PERMISSION_ALL], + ['shareType', $this->any(), \OCP\Share::SHARE_TYPE_GROUP], + ['shareWith', $this->any(), 'invalidGroup'], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\File'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $expected = new \OC_OCS_Result(null, 404, 'please specify a valid user'); + + $result = $this->ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + + public function testCreateShareGroup() { + $share = $this->getMock('\OC\Share20\IShare'); + $this->shareManager->method('newShare')->willReturn($share); + + $ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS') + ->setConstructorArgs([ + $this->shareManager, + $this->groupManager, + $this->userManager, + $this->request, + $this->rootFolder, + $this->urlGenerator, + $this->currentUser + ])->setMethods(['formatShare']) + ->getMock(); + + $this->request + ->method('getParam') + ->will($this->returnValueMap([ + ['path', null, 'valid-path'], + ['permissions', null, \OCP\Constants::PERMISSION_ALL], + ['shareType', '-1', \OCP\Share::SHARE_TYPE_GROUP], + ['shareWith', null, 'validGroup'], + ])); + + $userFolder = $this->getMock('\OCP\Files\Folder'); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->with('currentUser') + ->willReturn($userFolder); + + $path = $this->getMock('\OCP\Files\Folder'); + $userFolder->expects($this->once()) + ->method('get') + ->with('valid-path') + ->willReturn($path); + + $group = $this->getMock('\OCP\IGroup'); + $this->groupManager->method('groupExists')->with('validGroup')->willReturn(true); + $this->groupManager->method('get')->with('validGroup')->willReturn($group); + + $share->method('setPath')->with($path); + $share->method('setPermissions')->with(\OCP\Constants::PERMISSION_ALL); + $share->method('setShareType')->with(\OCP\Share::SHARE_TYPE_GROUP); + $share->method('setSharedWith')->with($group); + $share->method('setSharedBy')->with($this->currentUser); + + $expected = new \OC_OCS_Result(); + $result = $ocs->createShare(); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } } diff --git a/apps/files_sharing/tests/controller/sharecontroller.php b/apps/files_sharing/tests/controller/sharecontroller.php index ccef4263c2b..398538f0943 100644 --- a/apps/files_sharing/tests/controller/sharecontroller.php +++ b/apps/files_sharing/tests/controller/sharecontroller.php @@ -78,7 +78,7 @@ class ShareControllerTest extends \Test\TestCase { // Create a dummy user $this->user = \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate(12, ISecureRandom::CHAR_LOWER); - \OC_User::createUser($this->user, $this->user); + \OC::$server->getUserManager()->createUser($this->user, $this->user); \OC_Util::tearDownFS(); $this->loginAsUser($this->user); @@ -98,7 +98,8 @@ class ShareControllerTest extends \Test\TestCase { \OC_Util::tearDownFS(); \OC_User::setUserId(''); Filesystem::tearDown(); - \OC_User::deleteUser($this->user); + $user = \OC::$server->getUserManager()->get($this->user); + if ($user !== null) { $user->delete(); } \OC_User::setIncognitoMode(false); \OC::$server->getSession()->set('public_link_authenticated', ''); @@ -168,6 +169,7 @@ class ShareControllerTest extends \Test\TestCase { $response = $this->shareController->showShare($this->token); $sharedTmplParams = array( 'displayName' => $this->user, + 'owner' => $this->user, 'filename' => 'file1.txt', 'directory_path' => '/file1.txt', 'mimetype' => 'text/plain', diff --git a/apps/files_sharing/tests/js/externalSpec.js b/apps/files_sharing/tests/js/externalSpec.js index 255f0fc3a48..362df49252b 100644 --- a/apps/files_sharing/tests/js/externalSpec.js +++ b/apps/files_sharing/tests/js/externalSpec.js @@ -67,6 +67,7 @@ describe('OCA.Sharing external tests', function() { remote: 'http://example.com/owncloud', token: 'abcdefg', owner: 'theowner', + ownerDisplayName: 'The Generous Owner', name: 'the share name' }; }); @@ -88,6 +89,7 @@ describe('OCA.Sharing external tests', function() { remote: 'http://example.com/owncloud', token: 'abcdefg', owner: 'theowner', + ownerDisplayName: 'The Generous Owner', name: 'the share name', password: '' }); @@ -104,6 +106,7 @@ describe('OCA.Sharing external tests', function() { remote: 'http://example.com/owncloud', token: 'abcdefg', owner: 'theowner', + ownerDisplayName: 'The Generous Owner', name: 'the share name', password: 'thepassword' }); @@ -148,6 +151,7 @@ describe('OCA.Sharing external tests', function() { remote: 'http://example.com/owncloud', token: 'abcdefg', owner: 'theowner', + ownerDisplayName: 'The Generous Owner', name: 'the share name' }; }); diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js index 74f008025e1..cedc51f98f1 100644 --- a/apps/files_sharing/tests/js/publicAppSpec.js +++ b/apps/files_sharing/tests/js/publicAppSpec.js @@ -89,7 +89,8 @@ describe('OCA.Sharing.PublicApp tests', function() { it('Uses public webdav endpoint', function() { expect(fakeServer.requests.length).toEqual(1); expect(fakeServer.requests[0].method).toEqual('PROPFIND'); - expect(fakeServer.requests[0].url).toEqual('https://sh4tok@example.com/owncloud/public.php/webdav/subdir'); + expect(fakeServer.requests[0].url).toEqual('https://example.com/owncloud/public.php/webdav/subdir'); + expect(fakeServer.requests[0].requestHeaders.Authorization).toEqual('Basic c2g0dG9rOm51bGw='); }); describe('Download Url', function() { @@ -101,12 +102,12 @@ describe('OCA.Sharing.PublicApp tests', function() { it('returns correct download URL for single files', function() { expect(fileList.getDownloadUrl('some file.txt')) - .toEqual('/owncloud/public.php/webdav/subdir/some file.txt'); + .toEqual('https://sh4tok@example.com:9876/owncloud/public.php/webdav/subdir/some file.txt'); expect(fileList.getDownloadUrl('some file.txt', '/another path/abc')) - .toEqual('/owncloud/public.php/webdav/another path/abc/some file.txt'); + .toEqual('https://sh4tok@example.com:9876/owncloud/public.php/webdav/another path/abc/some file.txt'); fileList.changeDirectory('/'); expect(fileList.getDownloadUrl('some file.txt')) - .toEqual('/owncloud/public.php/webdav/some file.txt'); + .toEqual('https://sh4tok@example.com:9876/owncloud/public.php/webdav/some file.txt'); }); it('returns correct download URL for multiple files', function() { expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])) diff --git a/apps/files_sharing/tests/js/sharedfilelistSpec.js b/apps/files_sharing/tests/js/sharedfilelistSpec.js index fdc9de49c17..0b0676a19e6 100644 --- a/apps/files_sharing/tests/js/sharedfilelistSpec.js +++ b/apps/files_sharing/tests/js/sharedfilelistSpec.js @@ -712,7 +712,7 @@ describe('OCA.Sharing.FileList tests', function() { $tr = fileList.$el.find('tr:first'); expect(parseInt($tr.attr('data-share-permissions'), 10)) - .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE - OC.PERMISSION_DELETE); + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE - OC.PERMISSION_DELETE - OC.PERMISSION_CREATE); }); }); }); diff --git a/apps/files_sharing/tests/testcase.php b/apps/files_sharing/tests/testcase.php index a74ee83c25b..c4037c7c42e 100644 --- a/apps/files_sharing/tests/testcase.php +++ b/apps/files_sharing/tests/testcase.php @@ -117,9 +117,12 @@ abstract class TestCase extends \Test\TestCase { public static function tearDownAfterClass() { // cleanup users - \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER1); - \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER2); - \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER3); + $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER1); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER2); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER3); + if ($user !== null) { $user->delete(); } // delete group \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1); @@ -149,7 +152,7 @@ abstract class TestCase extends \Test\TestCase { } if ($create) { - \OC_User::createUser($user, $password); + \OC::$server->getUserManager()->createUser($user, $password); \OC_Group::createGroup('group'); \OC_Group::addToGroup($user, 'group'); } diff --git a/apps/files_trashbin/ajax/preview.php b/apps/files_trashbin/ajax/preview.php index 49d6d93f574..ecb4971253f 100644 --- a/apps/files_trashbin/ajax/preview.php +++ b/apps/files_trashbin/ajax/preview.php @@ -62,7 +62,7 @@ try{ $fileName = substr($fileName, 0, $i); } } - $mimetype = \OC_Helper::getFileNameMimeType($fileName); + $mimetype = \OC::$server->getMimeTypeDetector()->detectPath($fileName); } $preview->setMimetype($mimetype); $preview->setMaxX($maxX); diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml index c4bade081b3..8fcb9956c7d 100644 --- a/apps/files_trashbin/appinfo/info.xml +++ b/apps/files_trashbin/appinfo/info.xml @@ -9,14 +9,13 @@ To prevent a user from running out of disk space, the ownCloud Deleted files app </description> <licence>AGPL</licence> <author>Bjoern Schiessle</author> - <shipped>true</shipped> <default_enable/> <version>0.8.0</version> <types> <filesystem/> </types> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> <documentation> <user>user-trashbin</user> diff --git a/apps/files_trashbin/l10n/he.js b/apps/files_trashbin/l10n/he.js index e63798008b5..e2104b9b570 100644 --- a/apps/files_trashbin/l10n/he.js +++ b/apps/files_trashbin/l10n/he.js @@ -8,7 +8,13 @@ OC.L10N.register( "Delete" : "מחיקה", "Delete permanently" : "מחיקה לצמיתות", "Error" : "שגיאה", + "This operation is forbidden" : "פעולה זו אסורה", + "This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל", "restored" : "שוחזר", + "No deleted files" : "אין קבצים שנמחקו", + "You will be able to recover deleted files from here" : "ניתן לבטל מחיקת קבצים מכאן", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", + "Select all" : "לבחור הכול", "Name" : "שם", "Deleted" : "נמחק" }, diff --git a/apps/files_trashbin/l10n/he.json b/apps/files_trashbin/l10n/he.json index 1f65ace6a90..c76079b0d34 100644 --- a/apps/files_trashbin/l10n/he.json +++ b/apps/files_trashbin/l10n/he.json @@ -6,7 +6,13 @@ "Delete" : "מחיקה", "Delete permanently" : "מחיקה לצמיתות", "Error" : "שגיאה", + "This operation is forbidden" : "פעולה זו אסורה", + "This directory is unavailable, please check the logs or contact the administrator" : "תיקייה זו לא קיימת, יש לבדוק את הלוגים או ליצור קשר עם המנהל", "restored" : "שוחזר", + "No deleted files" : "אין קבצים שנמחקו", + "You will be able to recover deleted files from here" : "ניתן לבטל מחיקת קבצים מכאן", + "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", + "Select all" : "לבחור הכול", "Name" : "שם", "Deleted" : "נמחק" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_trashbin/l10n/mk.js b/apps/files_trashbin/l10n/mk.js index 8a4b16c52d8..4e6e5da77df 100644 --- a/apps/files_trashbin/l10n/mk.js +++ b/apps/files_trashbin/l10n/mk.js @@ -8,8 +8,10 @@ OC.L10N.register( "Delete" : "Избриши", "Delete permanently" : "Трајно избришани", "Error" : "Грешка", + "This operation is forbidden" : "Операцијата не е дозволена", "restored" : "повратени", "No entries found in this folder" : "Нема ништо во оваа папка", + "Select all" : "Избери се", "Name" : "Име", "Deleted" : "Избришан" }, diff --git a/apps/files_trashbin/l10n/mk.json b/apps/files_trashbin/l10n/mk.json index 2ec0b3c9500..1e1a8aff42a 100644 --- a/apps/files_trashbin/l10n/mk.json +++ b/apps/files_trashbin/l10n/mk.json @@ -6,8 +6,10 @@ "Delete" : "Избриши", "Delete permanently" : "Трајно избришани", "Error" : "Грешка", + "This operation is forbidden" : "Операцијата не е дозволена", "restored" : "повратени", "No entries found in this folder" : "Нема ништо во оваа папка", + "Select all" : "Избери се", "Name" : "Име", "Deleted" : "Избришан" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js index b1a3768a3bd..806200ea651 100644 --- a/apps/files_trashbin/l10n/pt_BR.js +++ b/apps/files_trashbin/l10n/pt_BR.js @@ -11,8 +11,8 @@ OC.L10N.register( "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", - "No deleted files" : "Aquivos não removidos", - "You will be able to recover deleted files from here" : "Você pode recuperar arquivos removidos daqui", + "No deleted files" : "Nenhum arquivo excluído", + "You will be able to recover deleted files from here" : "Neste local, você será capaz de recuperar arquivos excluídos", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json index db2dc331d5d..177a377bdfd 100644 --- a/apps/files_trashbin/l10n/pt_BR.json +++ b/apps/files_trashbin/l10n/pt_BR.json @@ -9,8 +9,8 @@ "This operation is forbidden" : "Esta operação é proibida", "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponível, por favor, verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", - "No deleted files" : "Aquivos não removidos", - "You will be able to recover deleted files from here" : "Você pode recuperar arquivos removidos daqui", + "No deleted files" : "Nenhum arquivo excluído", + "You will be able to recover deleted files from here" : "Neste local, você será capaz de recuperar arquivos excluídos", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php index d14e97285c5..0ccf15cd2bc 100644 --- a/apps/files_trashbin/lib/helper.php +++ b/apps/files_trashbin/lib/helper.php @@ -87,7 +87,7 @@ class Helper $i = array( 'name' => $id, 'mtime' => $timestamp, - 'mimetype' => $view->is_dir($dir . '/' . $entryName) ? 'httpd/unix-directory' : \OC_Helper::getFileNameMimeType($id), + 'mimetype' => $view->is_dir($dir . '/' . $entryName) ? 'httpd/unix-directory' : \OC::$server->getMimeTypeDetector()->detectPath($id), 'type' => $view->is_dir($dir . '/' . $entryName) ? 'dir' : 'file', 'directory' => ($dir === '/') ? '' : $dir, 'size' => $size, diff --git a/apps/files_trashbin/tests/storage.php b/apps/files_trashbin/tests/storage.php index 387bb20c6d4..30735fe7bc3 100644 --- a/apps/files_trashbin/tests/storage.php +++ b/apps/files_trashbin/tests/storage.php @@ -75,7 +75,8 @@ class Storage extends \Test\TestCase { protected function tearDown() { \OC\Files\Filesystem::getLoader()->removeStorageWrapper('oc_trashbin'); $this->logout(); - \OC_User::deleteUser($this->user); + $user = \OC::$server->getUserManager()->get($this->user); + if ($user !== null) { $user->delete(); } \OC_Hook::clear(); parent::tearDown(); } diff --git a/apps/files_trashbin/tests/trashbin.php b/apps/files_trashbin/tests/trashbin.php index db7e7e6e840..9c19b67a904 100644 --- a/apps/files_trashbin/tests/trashbin.php +++ b/apps/files_trashbin/tests/trashbin.php @@ -88,7 +88,8 @@ class Test_Trashbin extends \Test\TestCase { public static function tearDownAfterClass() { // cleanup test user - \OC_User::deleteUser(self::TEST_TRASHBIN_USER1); + $user = \OC::$server->getUserManager()->get(self::TEST_TRASHBIN_USER1); + if ($user !== null) { $user->delete(); } \OC::$server->getConfig()->setSystemValue('trashbin_retention_obligation', self::$rememberRetentionObligation); @@ -636,7 +637,7 @@ class Test_Trashbin extends \Test\TestCase { public static function loginHelper($user, $create = false) { if ($create) { try { - \OC_User::createUser($user, $user); + \OC::$server->getUserManager()->createUser($user, $user); } catch(\Exception $e) { // catch username is already being used from previous aborted runs } diff --git a/apps/files_versions/ajax/preview.php b/apps/files_versions/ajax/preview.php index 0da518f3eaa..f21911abc9b 100644 --- a/apps/files_versions/ajax/preview.php +++ b/apps/files_versions/ajax/preview.php @@ -48,7 +48,7 @@ if($maxX === 0 || $maxY === 0) { try { list($user, $file) = \OCA\Files_Versions\Storage::getUidAndFilename($file); $preview = new \OC\Preview($user, 'files_versions', $file.'.v'.$version); - $mimetype = \OC_Helper::getFileNameMimeType($file); + $mimetype = \OC::$server->getMimeTypeDetector()->detectPath($file); $preview->setMimetype($mimetype); $preview->setMaxX($maxX); $preview->setMaxY($maxY); diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml index 8fe6372279a..0098ea9e20f 100644 --- a/apps/files_versions/appinfo/info.xml +++ b/apps/files_versions/appinfo/info.xml @@ -4,7 +4,6 @@ <name>Versions</name> <licence>AGPL</licence> <author>Frank Karlitschek, Bjoern Schiessle</author> - <shipped>true</shipped> <description> This application enables ownCloud to automatically maintain older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. ownCloud then automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions. In addition to the expiry of versions, ownCloud’s versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, ownCloud will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation. @@ -15,7 +14,7 @@ In addition to the expiry of versions, ownCloud’s versions app makes certain n <filesystem/> </types> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> <documentation> <user>user-versions</user> diff --git a/apps/files_versions/download.php b/apps/files_versions/download.php index 22a218f472a..d3c38f3d4e1 100644 --- a/apps/files_versions/download.php +++ b/apps/files_versions/download.php @@ -35,7 +35,7 @@ $versionName = '/'.$uid.'/files_versions/'.$filename.'.v'.$revision; $view = new OC\Files\View('/'); -$ftype = \OC_Helper::getSecureMimeType($view->getMimeType('/'.$uid.'/files/'.$filename)); +$ftype = \OC::$server->getMimeTypeDetector()->getSecureMimeType($view->getMimeType('/'.$uid.'/files/'.$filename)); header('Content-Type:'.$ftype); OCP\Response::setContentDispositionHeader(basename($filename), 'attachment'); diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php index ffc98c2e98c..ee4978ff784 100644 --- a/apps/files_versions/tests/versions.php +++ b/apps/files_versions/tests/versions.php @@ -61,8 +61,10 @@ class Test_Files_Versioning extends \Test\TestCase { public static function tearDownAfterClass() { // cleanup test user - \OC_User::deleteUser(self::TEST_VERSIONS_USER); - \OC_User::deleteUser(self::TEST_VERSIONS_USER2); + $user = \OC::$server->getUserManager()->get(self::TEST_VERSIONS_USER); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get(self::TEST_VERSIONS_USER2); + if ($user !== null) { $user->delete(); } parent::tearDownAfterClass(); } diff --git a/apps/provisioning_api/appinfo/info.xml b/apps/provisioning_api/appinfo/info.xml index a77b1f67e21..a8702aaf1ef 100644 --- a/apps/provisioning_api/appinfo/info.xml +++ b/apps/provisioning_api/appinfo/info.xml @@ -13,7 +13,6 @@ </description> <licence>AGPL</licence> <author>Tom Needham</author> - <shipped>true</shipped> <default_enable/> <documentation> <admin>admin-provisioning-api</admin> @@ -24,6 +23,6 @@ <filesystem/> </types> <dependencies> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> </info> diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php index 22a923f5c20..1b9328d608a 100644 --- a/apps/provisioning_api/appinfo/routes.php +++ b/apps/provisioning_api/appinfo/routes.php @@ -62,7 +62,8 @@ API::register('get', '/cloud/groups/{groupid}/subadmins', [$groups, 'getSubAdmin // Apps $apps = new \OCA\Provisioning_API\Apps( - \OC::$server->getAppManager() + \OC::$server->getAppManager(), + \OC::$server->getOcsClient() ); API::register('get', '/cloud/apps', [$apps, 'getApps'], 'provisioning_api', API::ADMIN_AUTH); API::register('get', '/cloud/apps/{appid}', [$apps, 'getAppInfo'], 'provisioning_api', API::ADMIN_AUTH); diff --git a/apps/provisioning_api/lib/apps.php b/apps/provisioning_api/lib/apps.php index e0fa63cca34..2a3fd414d39 100644 --- a/apps/provisioning_api/lib/apps.php +++ b/apps/provisioning_api/lib/apps.php @@ -25,19 +25,23 @@ namespace OCA\Provisioning_API; +use OC\OCSClient; use \OC_OCS_Result; use \OC_App; class Apps { - /** @var \OCP\App\IAppManager */ private $appManager; + /** @var OCSClient */ + private $ocsClient; /** * @param \OCP\App\IAppManager $appManager */ - public function __construct(\OCP\App\IAppManager $appManager) { + public function __construct(\OCP\App\IAppManager $appManager, + OCSClient $ocsClient) { $this->appManager = $appManager; + $this->ocsClient = $ocsClient; } /** @@ -45,7 +49,7 @@ class Apps { * @return OC_OCS_Result */ public function getApps($parameters) { - $apps = OC_App::listAllApps(); + $apps = OC_App::listAllApps(false, true, $this->ocsClient); $list = []; foreach($apps as $app) { $list[] = $app['id']; diff --git a/apps/provisioning_api/tests/appstest.php b/apps/provisioning_api/tests/appstest.php index 4ccba704a3a..871158c5545 100644 --- a/apps/provisioning_api/tests/appstest.php +++ b/apps/provisioning_api/tests/appstest.php @@ -23,6 +23,7 @@ */ namespace OCA\Provisioning_API\Tests; +use OC\OCSClient; use OCA\Provisioning_API\Apps; use OCP\API; use OCP\App\IAppManager; @@ -36,42 +37,43 @@ use OCP\IUserSession; * @package OCA\Provisioning_API\Tests */ class AppsTest extends TestCase { - /** @var IAppManager */ private $appManager; - /** @var Apps */ private $api; - /** @var IUserSession */ private $userSession; + /** @var OCSClient */ + private $ocsClient; public function setup() { parent::setup(); $this->appManager = \OC::$server->getAppManager(); $this->groupManager = \OC::$server->getGroupManager(); $this->userSession = \OC::$server->getUserSession(); - $this->api = new Apps($this->appManager); + $this->ocsClient = $this->getMockBuilder('\OC\OCSClient') + ->disableOriginalConstructor()->getMock(); + $this->api = new Apps($this->appManager, $this->ocsClient); } public function testGetAppInfo() { $result = $this->api->getAppInfo(['appid' => 'provisioning_api']); $this->assertInstanceOf('OC_OCS_Result', $result); $this->assertTrue($result->succeeded()); - } public function testGetAppInfoOnBadAppID() { - $result = $this->api->getAppInfo(['appid' => 'not_provisioning_api']); $this->assertInstanceOf('OC_OCS_Result', $result); $this->assertFalse($result->succeeded()); $this->assertEquals(API::RESPOND_NOT_FOUND, $result->getStatusCode()); - } public function testGetApps() { - + $this->ocsClient + ->expects($this->any()) + ->method($this->anything()) + ->will($this->returnValue(null)); $user = $this->generateUsers(); $this->groupManager->get('admin')->addUser($user); $this->userSession->setUser($user); @@ -80,27 +82,27 @@ class AppsTest extends TestCase { $this->assertTrue($result->succeeded()); $data = $result->getData(); - $this->assertEquals(count(\OC_App::listAllApps()), count($data['apps'])); - + $this->assertEquals(count(\OC_App::listAllApps(false, true, $this->ocsClient)), count($data['apps'])); } public function testGetAppsEnabled() { - $_GET['filter'] = 'enabled'; $result = $this->api->getApps(['filter' => 'enabled']); $this->assertTrue($result->succeeded()); $data = $result->getData(); $this->assertEquals(count(\OC_App::getEnabledApps()), count($data['apps'])); - } public function testGetAppsDisabled() { - + $this->ocsClient + ->expects($this->any()) + ->method($this->anything()) + ->will($this->returnValue(null)); $_GET['filter'] = 'disabled'; $result = $this->api->getApps(['filter' => 'disabled']); $this->assertTrue($result->succeeded()); $data = $result->getData(); - $apps = \OC_App::listAllApps(); + $apps = \OC_App::listAllApps(false, true, $this->ocsClient); $list = array(); foreach($apps as $app) { $list[] = $app['id']; diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml index 7dbce1da5fa..864eaebe4d0 100644 --- a/apps/user_ldap/appinfo/info.xml +++ b/apps/user_ldap/appinfo/info.xml @@ -9,7 +9,6 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce </description> <licence>AGPL</licence> <author>Dominik Schmidt and Arthur Schiwon</author> - <shipped>true</shipped> <version>0.8.0</version> <types> <authentication/> @@ -19,6 +18,6 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce </documentation> <dependencies> <lib>ldap</lib> - <owncloud min-version="9.0" /> + <owncloud min-version="9.0" max-version="9.0" /> </dependencies> </info> diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index 7d358e5b268..7a61101f578 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -21,21 +21,5 @@ * */ -$installedVersion = \OC::$server->getConfig()->getAppValue('user_ldap', 'installed_version'); - -if (version_compare($installedVersion, '0.6.1', '<')) { - \OC::$server->getConfig()->setAppValue('user_ldap', 'enforce_home_folder_naming_rule', false); -} - -if(version_compare($installedVersion, '0.6.2', '<')) { - // Remove LDAP case insensitive setting from DB as it is no longer beeing used. - $helper = new \OCA\user_ldap\lib\Helper(); - $prefixes = $helper->getServerConfigurationPrefixes(); - - foreach($prefixes as $prefix) { - \OC::$server->getConfig()->deleteAppValue('user_ldap', $prefix . "ldap_nocase"); - } -} - OCP\Backgroundjob::registerJob('OCA\user_ldap\lib\Jobs'); OCP\Backgroundjob::registerJob('\OCA\User_LDAP\Jobs\CleanUp'); diff --git a/apps/user_ldap/command/showremnants.php b/apps/user_ldap/command/showremnants.php index 72217c50972..1aa3c49475f 100644 --- a/apps/user_ldap/command/showremnants.php +++ b/apps/user_ldap/command/showremnants.php @@ -24,6 +24,7 @@ namespace OCA\user_ldap\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use OCA\user_ldap\lib\user\DeletedUsersIndex; @@ -50,7 +51,7 @@ class ShowRemnants extends Command { $this ->setName('ldap:show-remnants') ->setDescription('shows which users are not available on LDAP anymore, but have remnants in ownCloud.') - ; + ->addOption('json', null, InputOption::VALUE_NONE, 'return JSON array instead of pretty table.'); } /** @@ -70,18 +71,21 @@ class ShowRemnants extends Command { $hAS = $user->getHasActiveShares() ? 'Y' : 'N'; $lastLogin = ($user->getLastLogin() > 0) ? $this->dateFormatter->formatDate($user->getLastLogin()) : '-'; - $rows[] = array( - $user->getOCName(), - $user->getDisplayName(), - $user->getUid(), - $user->getDN(), - $lastLogin, - $user->getHomePath(), - $hAS + $rows[] = array('ocName' => $user->getOCName(), + 'displayName' => $user->getDisplayName(), + 'uid' => $user->getUid(), + 'dn' => $user->getDN(), + 'lastLogin' => $lastLogin, + 'homePath' => $user->getHomePath(), + 'sharer' => $hAS ); } - $table->setRows($rows); - $table->render($output); + if ($input->getOption('json')) { + $output->writeln(json_encode($rows)); + } else { + $table->setRows($rows); + $table->render($output); + } } } diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js index aa0727c9bc1..649950716b6 100644 --- a/apps/user_ldap/l10n/et_EE.js +++ b/apps/user_ldap/l10n/et_EE.js @@ -18,18 +18,22 @@ OC.L10N.register( "Select groups" : "Vali grupid", "Select object classes" : "Vali objekti klassid", "Please check the credentials, they seem to be wrong." : "Palu nkontrolli kasutajaandmeid, need näivad olevat valed.", + "Could not detect Base DN, please enter it manually." : "BaasDN-i tuvastamine ebaõnnestus. Palun sisesta see käsitsi.", "{nthServer}. Server" : "{nthServer}. Server", "Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?", "Confirm Deletion" : "Kinnita kustutamine", + "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.", "Mode switch" : "Režiimi lüliti", "Select attributes" : "Vali atribuudid", "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.", + "Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida", "_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"], "_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"], "Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust", "Invalid Host" : "Vigane server", "Server" : "Server", "Users" : "Kasutajad", + "Login Attributes" : "Sisselogimise andmed", "Groups" : "Grupid", "Test Configuration" : "Testi seadistust", "Help" : "Abiinfo", @@ -43,6 +47,8 @@ OC.L10N.register( "LDAP Filter:" : "LDAP filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.", "Verify settings and count groups" : "Kontrolli seadeid ja loe grupid üle", + "LDAP / AD Username:" : "LDAP / AD kasutajanimi:", + "LDAP / AD Email Address:" : "LDAP / AD e-posti aadress:", "Other Attributes:" : "Muud atribuudid:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"", "Test Loginname" : "Testi kasutajanime", diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json index 5d8fbe2f81b..04b22459b18 100644 --- a/apps/user_ldap/l10n/et_EE.json +++ b/apps/user_ldap/l10n/et_EE.json @@ -16,18 +16,22 @@ "Select groups" : "Vali grupid", "Select object classes" : "Vali objekti klassid", "Please check the credentials, they seem to be wrong." : "Palu nkontrolli kasutajaandmeid, need näivad olevat valed.", + "Could not detect Base DN, please enter it manually." : "BaasDN-i tuvastamine ebaõnnestus. Palun sisesta see käsitsi.", "{nthServer}. Server" : "{nthServer}. Server", "Do you really want to delete the current Server Configuration?" : "Oled kindel, et tahad kustutada praegust serveri seadistust?", "Confirm Deletion" : "Kinnita kustutamine", + "Error while clearing the mappings." : "Tõrgeseose eemaldamisel.", "Mode switch" : "Režiimi lüliti", "Select attributes" : "Vali atribuudid", "User found and settings verified." : "Kasutaja leiti ja seaded on kontrollitud.", + "Please provide a login name to test against" : "Palun sisesta kasutajanimi, mida testida", "_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"], "_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"], "Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust", "Invalid Host" : "Vigane server", "Server" : "Server", "Users" : "Kasutajad", + "Login Attributes" : "Sisselogimise andmed", "Groups" : "Grupid", "Test Configuration" : "Testi seadistust", "Help" : "Abiinfo", @@ -41,6 +45,8 @@ "LDAP Filter:" : "LDAP filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filter määrab millised LDAP grupid saavad ligipääsu sellele %s instantsile.", "Verify settings and count groups" : "Kontrolli seadeid ja loe grupid üle", + "LDAP / AD Username:" : "LDAP / AD kasutajanimi:", + "LDAP / AD Email Address:" : "LDAP / AD e-posti aadress:", "Other Attributes:" : "Muud atribuudid:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Määrab sisselogimisel kasutatava filtri. %%uid asendab sisselogimistegevuses kasutajanime. Näide: \"uid=%%uid\"", "Test Loginname" : "Testi kasutajanime", diff --git a/apps/user_ldap/l10n/eu.js b/apps/user_ldap/l10n/eu.js index 44ce45a1b96..410b626745c 100644 --- a/apps/user_ldap/l10n/eu.js +++ b/apps/user_ldap/l10n/eu.js @@ -10,15 +10,22 @@ OC.L10N.register( "No configuration specified" : "Ez da konfiguraziorik zehaztu", "No data specified" : "Ez da daturik zehaztu", " Could not set configuration %s" : "Ezin izan da %s konfigurazioa ezarri", + "Action does not exist" : "Ekintza ez da existitzen", + "The Base DN appears to be wrong" : "Oinarrizko DN gaizki dagoela dirudi", "Configuration incorrect" : "Konfigurazioa ez dago ongi", "Configuration incomplete" : "Konfigurazioa osatu gabe dago", "Configuration OK" : "Konfigurazioa ongi dago", "Select groups" : "Hautatu taldeak", "Select object classes" : "Hautatu objektu klaseak", "{nthServer}. Server" : "{nthServer}. Zerbitzaria", + "More than 1,000 directory entries available." : "1.000 baino direktorio sarrera gehiago daude.", + " entries available within the provided Base DN" : "sarrera eskuragarri emandako Oinarrizko DNarekin", "Do you really want to delete the current Server Configuration?" : "Ziur zaude Zerbitzariaren Konfigurazioa ezabatu nahi duzula?", "Confirm Deletion" : "Baieztatu Ezabatzea", "Select attributes" : "Hautatu atributuak", + "User found and settings verified." : "Erabiltzailea aurkituta eta ezarpenak egiaztatutak.", + "Please provide a login name to test against" : "Mesedez saioa hasteko izen bat eman frogatu ahal izateko", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Taldeen sarrera desgaitu da, LDAP / AD zerbitzariak ez duelako memberOf onartzen.", "_%s group found_::_%s groups found_" : ["Talde %s aurkitu da","%s talde aurkitu dira"], "_%s user found_::_%s users found_" : ["Erabiltzaile %s aurkitu da","%s erabiltzaile aurkitu dira"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ezin izan da erabiltzailearen bistaratze izenaren atributua antzeman. Mesedez zehaztu ldap ezarpen aurreratuetan.", @@ -26,27 +33,47 @@ OC.L10N.register( "Invalid Host" : "Baliogabeko hostalaria", "Server" : "Zerbitzaria", "Users" : "Erabiltzaileak", + "Login Attributes" : "Saioa hasteko atributuak", "Groups" : "Taldeak", "Test Configuration" : "Egiaztatu Konfigurazioa", "Help" : "Laguntza", "Groups meeting these criteria are available in %s:" : "Baldintza horiek betetzen dituzten taldeak bertan eskuragarri %s:", + "Only these object classes:" : "Bakarrik objektu klase hauetakoak:", + "Only from these groups:" : "Bakarrik talde hauetakoak:", + "Search groups" : "Bilatu taldeak", + "Available groups" : "Eskuragarri dauden taldeak", + "Selected groups" : "Hautatuko taldeak", + "Edit LDAP Query" : "Editatu LDAP kontsulta", + "LDAP Filter:" : "LDAP Iragazkia:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP taldek izango duten sarrera %s instantziara:", + "Verify settings and count groups" : "Egiaztatu ezarpetak eta zenbatu taldeak", + "LDAP / AD Username:" : "LDAP / AD Erabiltzaile izena:", + "LDAP / AD Email Address:" : "LDAP / AD E-posta Helbidea:", "Other Attributes:" : "Bestelako atributuak:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definitu aplikatu beharreko iragazkia sartzen saiatzean. %%uid erabiltzailearen izena ordezten du sartzeko ekintzan. Adibidez: \"uid=%%uid\"", + "Test Loginname" : "Egiaztatu Saioa hasteko izena", + "Verify settings" : "Egiaztatu ezarpenak", "1. Server" : "1. Zerbitzaria", "%s. Server:" : "%s. Zerbitzaria:", + "Add a new and blank configuration" : "Gehitu konfigurazio berri eta huts bat", + "Copy current configuration into new directory binding" : "Kopiatu uneko konfigurazioa direktorio lotura berrian", + "Delete the current configuration" : "Ezabatu uneko konfigurazioa", "Host" : "Hostalaria", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokoloa ez da beharrezkoa, SSL behar baldin ez baduzu. Honela bada hasi ldaps://", "Port" : "Portua", + "Detect Port" : "Antzeman Ataka", "User DN" : "Erabiltzaile DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Lotura egingo den bezero erabiltzailearen DNa, adb. uid=agent,dc=example,dc=com. Sarrera anonimoak gaitzeko utzi DN eta Pasahitza hutsik.", "Password" : "Pasahitza", "For anonymous access, leave DN and Password empty." : "Sarrera anonimoak gaitzeko utzi DN eta Pasahitza hutsik.", "One Base DN per line" : "DN Oinarri bat lerroko", "You can specify Base DN for users and groups in the Advanced tab" : "Erabiltzaile eta taldeentzako Oinarrizko DN zehaztu dezakezu Aurreratu fitxan", + "Detect Base DN" : "Anteman Oinarrizko DN", + "Test Base DN" : "Egiaztatu Oinarrizko DN", "Manually enter LDAP filters (recommended for large directories)" : "Eskuz sartu LDAP iragazkiak (direktorio handietarako gomendatuta)", "Limit %s access to users meeting these criteria:" : "Mugatu %s sarbidea baldintza horiek betetzen dituzten erabiltzaileei.", "The filter specifies which LDAP users shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP erabiltzailek izango duten sarrera %s instantziara:", + "Verify settings and count users" : "Egiaztatu ezarpetak eta zenbatu erabiltzaileak", "Saving" : "Gordetzen", "Back" : "Atzera", "Continue" : "Jarraitu", diff --git a/apps/user_ldap/l10n/eu.json b/apps/user_ldap/l10n/eu.json index 64539c16e11..f0599392c50 100644 --- a/apps/user_ldap/l10n/eu.json +++ b/apps/user_ldap/l10n/eu.json @@ -8,15 +8,22 @@ "No configuration specified" : "Ez da konfiguraziorik zehaztu", "No data specified" : "Ez da daturik zehaztu", " Could not set configuration %s" : "Ezin izan da %s konfigurazioa ezarri", + "Action does not exist" : "Ekintza ez da existitzen", + "The Base DN appears to be wrong" : "Oinarrizko DN gaizki dagoela dirudi", "Configuration incorrect" : "Konfigurazioa ez dago ongi", "Configuration incomplete" : "Konfigurazioa osatu gabe dago", "Configuration OK" : "Konfigurazioa ongi dago", "Select groups" : "Hautatu taldeak", "Select object classes" : "Hautatu objektu klaseak", "{nthServer}. Server" : "{nthServer}. Zerbitzaria", + "More than 1,000 directory entries available." : "1.000 baino direktorio sarrera gehiago daude.", + " entries available within the provided Base DN" : "sarrera eskuragarri emandako Oinarrizko DNarekin", "Do you really want to delete the current Server Configuration?" : "Ziur zaude Zerbitzariaren Konfigurazioa ezabatu nahi duzula?", "Confirm Deletion" : "Baieztatu Ezabatzea", "Select attributes" : "Hautatu atributuak", + "User found and settings verified." : "Erabiltzailea aurkituta eta ezarpenak egiaztatutak.", + "Please provide a login name to test against" : "Mesedez saioa hasteko izen bat eman frogatu ahal izateko", + "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Taldeen sarrera desgaitu da, LDAP / AD zerbitzariak ez duelako memberOf onartzen.", "_%s group found_::_%s groups found_" : ["Talde %s aurkitu da","%s talde aurkitu dira"], "_%s user found_::_%s users found_" : ["Erabiltzaile %s aurkitu da","%s erabiltzaile aurkitu dira"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Ezin izan da erabiltzailearen bistaratze izenaren atributua antzeman. Mesedez zehaztu ldap ezarpen aurreratuetan.", @@ -24,27 +31,47 @@ "Invalid Host" : "Baliogabeko hostalaria", "Server" : "Zerbitzaria", "Users" : "Erabiltzaileak", + "Login Attributes" : "Saioa hasteko atributuak", "Groups" : "Taldeak", "Test Configuration" : "Egiaztatu Konfigurazioa", "Help" : "Laguntza", "Groups meeting these criteria are available in %s:" : "Baldintza horiek betetzen dituzten taldeak bertan eskuragarri %s:", + "Only these object classes:" : "Bakarrik objektu klase hauetakoak:", + "Only from these groups:" : "Bakarrik talde hauetakoak:", + "Search groups" : "Bilatu taldeak", + "Available groups" : "Eskuragarri dauden taldeak", + "Selected groups" : "Hautatuko taldeak", + "Edit LDAP Query" : "Editatu LDAP kontsulta", + "LDAP Filter:" : "LDAP Iragazkia:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP taldek izango duten sarrera %s instantziara:", + "Verify settings and count groups" : "Egiaztatu ezarpetak eta zenbatu taldeak", + "LDAP / AD Username:" : "LDAP / AD Erabiltzaile izena:", + "LDAP / AD Email Address:" : "LDAP / AD E-posta Helbidea:", "Other Attributes:" : "Bestelako atributuak:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Definitu aplikatu beharreko iragazkia sartzen saiatzean. %%uid erabiltzailearen izena ordezten du sartzeko ekintzan. Adibidez: \"uid=%%uid\"", + "Test Loginname" : "Egiaztatu Saioa hasteko izena", + "Verify settings" : "Egiaztatu ezarpenak", "1. Server" : "1. Zerbitzaria", "%s. Server:" : "%s. Zerbitzaria:", + "Add a new and blank configuration" : "Gehitu konfigurazio berri eta huts bat", + "Copy current configuration into new directory binding" : "Kopiatu uneko konfigurazioa direktorio lotura berrian", + "Delete the current configuration" : "Ezabatu uneko konfigurazioa", "Host" : "Hostalaria", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokoloa ez da beharrezkoa, SSL behar baldin ez baduzu. Honela bada hasi ldaps://", "Port" : "Portua", + "Detect Port" : "Antzeman Ataka", "User DN" : "Erabiltzaile DN", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Lotura egingo den bezero erabiltzailearen DNa, adb. uid=agent,dc=example,dc=com. Sarrera anonimoak gaitzeko utzi DN eta Pasahitza hutsik.", "Password" : "Pasahitza", "For anonymous access, leave DN and Password empty." : "Sarrera anonimoak gaitzeko utzi DN eta Pasahitza hutsik.", "One Base DN per line" : "DN Oinarri bat lerroko", "You can specify Base DN for users and groups in the Advanced tab" : "Erabiltzaile eta taldeentzako Oinarrizko DN zehaztu dezakezu Aurreratu fitxan", + "Detect Base DN" : "Anteman Oinarrizko DN", + "Test Base DN" : "Egiaztatu Oinarrizko DN", "Manually enter LDAP filters (recommended for large directories)" : "Eskuz sartu LDAP iragazkiak (direktorio handietarako gomendatuta)", "Limit %s access to users meeting these criteria:" : "Mugatu %s sarbidea baldintza horiek betetzen dituzten erabiltzaileei.", "The filter specifies which LDAP users shall have access to the %s instance." : "Iragazkiak zehazten du ze LDAP erabiltzailek izango duten sarrera %s instantziara:", + "Verify settings and count users" : "Egiaztatu ezarpetak eta zenbatu erabiltzaileak", "Saving" : "Gordetzen", "Back" : "Atzera", "Continue" : "Jarraitu", diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index 1baa1d43a66..63bf0ebac8c 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Do you really want to delete the current Server Configuration?" : "האם אכן למחוק את הגדרות השרת הנוכחיות?", "Confirm Deletion" : "אישור המחיקה", + "Server" : "שרת", "Users" : "משתמשים", "Groups" : "קבוצות", "Help" : "עזרה", @@ -12,6 +13,7 @@ OC.L10N.register( "Password" : "סיסמא", "For anonymous access, leave DN and Password empty." : "לגישה אנונימית, השאר את הDM והסיסמא ריקים.", "Back" : "אחורה", + "Continue" : "המשך", "Advanced" : "מתקדם", "in seconds. A change empties the cache." : "בשניות. שינוי מרוקן את המטמון.", "in bytes" : "בבתים" diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index 77ef6d25887..9265e86df5f 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -1,6 +1,7 @@ { "translations": { "Do you really want to delete the current Server Configuration?" : "האם אכן למחוק את הגדרות השרת הנוכחיות?", "Confirm Deletion" : "אישור המחיקה", + "Server" : "שרת", "Users" : "משתמשים", "Groups" : "קבוצות", "Help" : "עזרה", @@ -10,6 +11,7 @@ "Password" : "סיסמא", "For anonymous access, leave DN and Password empty." : "לגישה אנונימית, השאר את הDM והסיסמא ריקים.", "Back" : "אחורה", + "Continue" : "המשך", "Advanced" : "מתקדם", "in seconds. A change empties the cache." : "בשניות. שינוי מרוקן את המטמון.", "in bytes" : "בבתים" diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js index c08dd0e2a93..0ed95377acb 100644 --- a/apps/user_ldap/l10n/ko.js +++ b/apps/user_ldap/l10n/ko.js @@ -24,6 +24,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "기본 DN을 자동으로 감지할 수 없습니다. 직접 입력하십시오.", "{nthServer}. Server" : "{nthServer}. 서버", "No object found in the given Base DN. Please revise." : "입력한 기본 DN에서 객체를 찾을 수 없습니다. 다시 입력하십시오.", + "More than 1,000 directory entries available." : "디렉터리 항목이 1,000개 이상 존재합니다.", " entries available within the provided Base DN" : "개(지정한 DN의 기본 항목 수)", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "오류가 발생했습니다. 기본 DN, 연결 설정, 인증 정보를 확인하십시오.", "Do you really want to delete the current Server Configuration?" : "현재 서버 설정을 지우시겠습니까?", diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json index 59037ab0a2b..3fccad0577c 100644 --- a/apps/user_ldap/l10n/ko.json +++ b/apps/user_ldap/l10n/ko.json @@ -22,6 +22,7 @@ "Could not detect Base DN, please enter it manually." : "기본 DN을 자동으로 감지할 수 없습니다. 직접 입력하십시오.", "{nthServer}. Server" : "{nthServer}. 서버", "No object found in the given Base DN. Please revise." : "입력한 기본 DN에서 객체를 찾을 수 없습니다. 다시 입력하십시오.", + "More than 1,000 directory entries available." : "디렉터리 항목이 1,000개 이상 존재합니다.", " entries available within the provided Base DN" : "개(지정한 DN의 기본 항목 수)", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "오류가 발생했습니다. 기본 DN, 연결 설정, 인증 정보를 확인하십시오.", "Do you really want to delete the current Server Configuration?" : "현재 서버 설정을 지우시겠습니까?", diff --git a/apps/user_ldap/l10n/mk.js b/apps/user_ldap/l10n/mk.js index 560aa4b6b8c..1165678b925 100644 --- a/apps/user_ldap/l10n/mk.js +++ b/apps/user_ldap/l10n/mk.js @@ -1,6 +1,7 @@ OC.L10N.register( "user_ldap", { + "Select groups" : "Одбери групи", "Confirm Deletion" : "Потврдете го бришењето", "Users" : "Корисници", "Groups" : "Групи", diff --git a/apps/user_ldap/l10n/mk.json b/apps/user_ldap/l10n/mk.json index 85fab2fb2d1..3bd03720893 100644 --- a/apps/user_ldap/l10n/mk.json +++ b/apps/user_ldap/l10n/mk.json @@ -1,4 +1,5 @@ { "translations": { + "Select groups" : "Одбери групи", "Confirm Deletion" : "Потврдете го бришењето", "Users" : "Корисници", "Groups" : "Групи", diff --git a/apps/user_ldap/l10n/nb_NO.js b/apps/user_ldap/l10n/nb_NO.js index 8770dfa0841..62fadd9365e 100644 --- a/apps/user_ldap/l10n/nb_NO.js +++ b/apps/user_ldap/l10n/nb_NO.js @@ -24,6 +24,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise basis-DN. Det må skrives inn manuelt.", "{nthServer}. Server" : "{nthServer}. server", "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt basis-DN. Revider oppsettet.", + "More than 1,000 directory entries available." : "Mer enn 1.000 katalogoppføringer tilgjengelig.", " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt basis-DN", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Det oppstod en feil. Sjekk basis-DN, tilkoblingsoppsett og påloggingsdetaljer.", "Do you really want to delete the current Server Configuration?" : "Er du sikker på at du vil slette aktiv tjener-konfigurasjon?", diff --git a/apps/user_ldap/l10n/nb_NO.json b/apps/user_ldap/l10n/nb_NO.json index 9cc0e4964dd..ee049b8a50f 100644 --- a/apps/user_ldap/l10n/nb_NO.json +++ b/apps/user_ldap/l10n/nb_NO.json @@ -22,6 +22,7 @@ "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise basis-DN. Det må skrives inn manuelt.", "{nthServer}. Server" : "{nthServer}. server", "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt basis-DN. Revider oppsettet.", + "More than 1,000 directory entries available." : "Mer enn 1.000 katalogoppføringer tilgjengelig.", " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt basis-DN", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Det oppstod en feil. Sjekk basis-DN, tilkoblingsoppsett og påloggingsdetaljer.", "Do you really want to delete the current Server Configuration?" : "Er du sikker på at du vil slette aktiv tjener-konfigurasjon?", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 40705449edf..08069e28fd9 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -24,6 +24,7 @@ OC.L10N.register( "Could not detect Base DN, please enter it manually." : "Не возможно обнаружить Base DN, пожалуйста задайте в ручную.", "{nthServer}. Server" : "Сервер {nthServer}.", "No object found in the given Base DN. Please revise." : "Не найдено объектов в Base DN. Пожалуйста перепроверьте.", + "More than 1,000 directory entries available." : "В каталоге доступно более 1,000 записей.", " entries available within the provided Base DN" : "элементы доступные в Базе", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Произошла ошибка. Пожалуйста проверьте базу поиска DN, а также настройки подключения и учетные данные.", "Do you really want to delete the current Server Configuration?" : "Вы действительно хотите удалить существующую конфигурацию сервера?", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 4a6f9ea52d0..126e78593d1 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -22,6 +22,7 @@ "Could not detect Base DN, please enter it manually." : "Не возможно обнаружить Base DN, пожалуйста задайте в ручную.", "{nthServer}. Server" : "Сервер {nthServer}.", "No object found in the given Base DN. Please revise." : "Не найдено объектов в Base DN. Пожалуйста перепроверьте.", + "More than 1,000 directory entries available." : "В каталоге доступно более 1,000 записей.", " entries available within the provided Base DN" : "элементы доступные в Базе", "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Произошла ошибка. Пожалуйста проверьте базу поиска DN, а также настройки подключения и учетные данные.", "Do you really want to delete the current Server Configuration?" : "Вы действительно хотите удалить существующую конфигурацию сервера?", diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index 4f0d1d3697c..aaebf07862d 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -81,7 +81,7 @@ OC.L10N.register( "Add a new and blank configuration" : "Shtoni një formësim të ri të zbrazët", "Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie", "Delete the current configuration" : "Fshije formësimin e tanishëm", - "Host" : "Pritësi", + "Host" : "Strehë", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokollin mund ta lini pa vënë, hiq rastin kur ju duhet SSL. Në atë rast filloni me ldaps://", "Port" : "Portë", "Detect Port" : "Zbulo Portë", @@ -96,7 +96,7 @@ OC.L10N.register( "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.", "Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)", "Limit %s access to users meeting these criteria:" : "Kufizo hyrje %s vetëm për përdorues që plotësojnë këtë kusht:", - "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesht për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhniI, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.", "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit", "Saving" : "Po ruhet", @@ -122,16 +122,16 @@ OC.L10N.register( "Directory Settings" : "Rregullime Drejtorie", "User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.", - "Base User Tree" : "Struktura bazë e përdoruesit", + "Base User Tree" : "Strukturë Bazë Përdoruesi", "One User Base DN per line" : "Një DN Bazë Përdoruesi për rresht", - "User Search Attributes" : "Atributet e kërkimit të përdoruesëve", + "User Search Attributes" : "Atribute Kërkimesh Nga Përdoruesi", "Optional; one attribute per line" : "Opsionale; një atribut për rresht", "Group Display Name Field" : "Fushë Emri Grupi Në Ekran", "The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për grupin.", - "Base Group Tree" : "Struktura bazë e grupit", + "Base Group Tree" : "Strukturë Bazë Grupi", "One Group Base DN per line" : "Një DN Bazë Grupi për rresht", "Group Search Attributes" : "Atribute Kërkimi Grupi", - "Group-Member association" : "Pjestar Grup-Përdorues ", + "Group-Member association" : "Përshoqërim Grup-Përdorues", "Nested Groups" : "Grupe Brenda Njëri-Tjetrit", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)", "Special Attributes" : "Atribute Speciale", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index 6045b61f57d..335a42630b5 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -79,7 +79,7 @@ "Add a new and blank configuration" : "Shtoni një formësim të ri të zbrazët", "Copy current configuration into new directory binding" : "Kopjojeni formësimin e tanishëm te një lidhmë e re drejtorie", "Delete the current configuration" : "Fshije formësimin e tanishëm", - "Host" : "Pritësi", + "Host" : "Strehë", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Protokollin mund ta lini pa vënë, hiq rastin kur ju duhet SSL. Në atë rast filloni me ldaps://", "Port" : "Portë", "Detect Port" : "Zbulo Portë", @@ -94,7 +94,7 @@ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Shmang kërkesa LDAP automatike. Më e përshtatshme për instalime më të mëdha, por lyp ca dije rreth LDAP-it.", "Manually enter LDAP filters (recommended for large directories)" : "Jepni filtra LDAP dorazi (e këshilluar për drejtori të mëdha)", "Limit %s access to users meeting these criteria:" : "Kufizo hyrje %s vetëm për përdorues që plotësojnë këtë kusht:", - "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesht për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhniI, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Klasat më të rëndomta objektesh për përdoruesit janë organizationalPerson, person, user, dhe inetOrgPerson. Nëse s’jeni i sigurt cilën klasë objekti të përzgjidhni, ju lutemi, lidhuni me përgjegjësin e drejtorisë suaj.", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtri përcakton se cilët përdorues LDAP do të kenë hyrje te instanca %s.", "Verify settings and count users" : "Verifiko rregullimet dhe numëro përdoruesit", "Saving" : "Po ruhet", @@ -120,16 +120,16 @@ "Directory Settings" : "Rregullime Drejtorie", "User Display Name Field" : "Fushë Emri Përdoruesi Në Ekran", "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për përdoruesin.", - "Base User Tree" : "Struktura bazë e përdoruesit", + "Base User Tree" : "Strukturë Bazë Përdoruesi", "One User Base DN per line" : "Një DN Bazë Përdoruesi për rresht", - "User Search Attributes" : "Atributet e kërkimit të përdoruesëve", + "User Search Attributes" : "Atribute Kërkimesh Nga Përdoruesi", "Optional; one attribute per line" : "Opsionale; një atribut për rresht", "Group Display Name Field" : "Fushë Emri Grupi Në Ekran", "The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP që përdoret për të prodhuar emër ekrani për grupin.", - "Base Group Tree" : "Struktura bazë e grupit", + "Base Group Tree" : "Strukturë Bazë Grupi", "One Group Base DN per line" : "Një DN Bazë Grupi për rresht", "Group Search Attributes" : "Atribute Kërkimi Grupi", - "Group-Member association" : "Pjestar Grup-Përdorues ", + "Group-Member association" : "Përshoqërim Grup-Përdorues", "Nested Groups" : "Grupe Brenda Njëri-Tjetrit", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Kur aktivizohet, grupet që përmbajnë grupe mbulohen. (Funksionon vetëm nëse atributi për anëtar grupi përmban DN-ra.)", "Special Attributes" : "Atribute Speciale", diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 667f1076235..693a420a74d 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -1277,6 +1277,54 @@ class Access extends LDAPUtility implements user\IUserTools { } /** + * reverse lookup of a DN given a known UUID + * + * @param string $uuid + * @return string + * @throws \Exception + */ + public function getUserDnByUuid($uuid) { + $uuidOverride = $this->connection->ldapExpertUUIDUserAttr; + $filter = $this->connection->ldapUserFilter; + $base = $this->connection->ldapBaseUsers; + + if($this->connection->ldapUuidUserAttribute === 'auto' && empty($uuidOverride)) { + // Sacrebleu! The UUID attribute is unknown :( We need first an + // existing DN to be able to reliably detect it. + $result = $this->search($filter, $base, ['dn'], 1); + if(!isset($result[0]) || !isset($result[0]['dn'])) { + throw new \Exception('Cannot determine UUID attribute'); + } + $dn = $result[0]['dn'][0]; + if(!$this->detectUuidAttribute($dn, true)) { + throw new \Exception('Cannot determine UUID attribute'); + } + } else { + // The UUID attribute is either known or an override is given. + // By calling this method we ensure that $this->connection->$uuidAttr + // is definitely set + if(!$this->detectUuidAttribute('', true)) { + throw new \Exception('Cannot determine UUID attribute'); + } + } + + $uuidAttr = $this->connection->ldapUuidUserAttribute; + if($uuidAttr === 'guid' || $uuidAttr === 'objectguid') { + $uuid = $this->formatGuid2ForFilterUser($uuid); + } + + $filter = $uuidAttr . '=' . $uuid; + $result = $this->searchUsers($filter, ['dn'], 2); + if(is_array($result) && isset($result[0]) && isset($result[0]['dn']) && count($result) === 1) { + // we put the count into account to make sure that this is + // really unique + return $result[0]['dn'][0]; + } + + throw new \Exception('Cannot determine UUID attribute'); + } + + /** * auto-detects the directory's UUID attribute * @param string $dn a known DN used to check against * @param bool $isUser @@ -1379,6 +1427,53 @@ class Access extends LDAPUtility implements user\IUserTools { } /** + * the first three blocks of the string-converted GUID happen to be in + * reverse order. In order to use it in a filter, this needs to be + * corrected. Furthermore the dashes need to be replaced and \\ preprended + * to every two hax figures. + * + * If an invalid string is passed, it will be returned without change. + * + * @param string $guid + * @return string + */ + public function formatGuid2ForFilterUser($guid) { + if(!is_string($guid)) { + throw new \InvalidArgumentException('String expected'); + } + $blocks = explode('-', $guid); + if(count($blocks) !== 5) { + /* + * Why not throw an Exception instead? This method is a utility + * called only when trying to figure out whether a "missing" known + * LDAP user was or was not renamed on the LDAP server. And this + * even on the use case that a reverse lookup is needed (UUID known, + * not DN), i.e. when finding users (search dialog, users page, + * login, …) this will not be fired. This occurs only if shares from + * a users are supposed to be mounted who cannot be found. Throwing + * an exception here would kill the experience for a valid, acting + * user. Instead we write a log message. + */ + \OC::$server->getLogger()->info( + 'Passed string does not resemble a valid GUID. Known UUID ' . + '({uuid}) probably does not match UUID configuration.', + [ 'app' => 'user_ldap', 'uuid' => $guid ] + ); + return $guid; + } + for($i=0; $i < 3; $i++) { + $pairs = str_split($blocks[$i], 2); + $pairs = array_reverse($pairs); + $blocks[$i] = implode('', $pairs); + } + for($i=0; $i < 5; $i++) { + $pairs = str_split($blocks[$i], 2); + $blocks[$i] = '\\' . implode('\\', $pairs); + } + return implode('', $blocks); + } + + /** * gets a SID of the domain of the given dn * @param string $dn * @return string|bool diff --git a/apps/user_ldap/lib/mapping/abstractmapping.php b/apps/user_ldap/lib/mapping/abstractmapping.php index f0f0f6df75e..c3d38ce8b71 100644 --- a/apps/user_ldap/lib/mapping/abstractmapping.php +++ b/apps/user_ldap/lib/mapping/abstractmapping.php @@ -158,7 +158,7 @@ abstract class AbstractMapping { } /** - * Gets the name based on the provided LDAP DN. + * Gets the name based on the provided LDAP UUID. * @param string $uuid * @return string|false */ @@ -167,6 +167,16 @@ abstract class AbstractMapping { } /** + * Gets the UUID based on the provided LDAP DN + * @param string $dn + * @return false|string + * @throws \Exception + */ + public function getUUIDByDN($dn) { + return $this->getXbyY('directory_uuid', 'ldap_dn', $dn); + } + + /** * gets a piece of the mapping list * @param int $offset * @param int $limit diff --git a/apps/user_ldap/lib/user/user.php b/apps/user_ldap/lib/user/user.php index 0dc3c8c0c26..7a121920a35 100644 --- a/apps/user_ldap/lib/user/user.php +++ b/apps/user_ldap/lib/user/user.php @@ -474,8 +474,8 @@ class User { $this->fs->setup($this->uid); } - $avatar = $this->avatarManager->getAvatar($this->uid); try { + $avatar = $this->avatarManager->getAvatar($this->uid); $avatar->set($this->image); } catch (\Exception $e) { \OC::$server->getLogger()->notice( diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index 7593371d85d..3aec2a5ce57 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -70,14 +70,26 @@ class Test_User_Ldap_Direct extends \Test\TestCase { array($lw, null, null)); $this->configMock = $this->getMock('\OCP\IConfig'); - $um = new \OCA\user_ldap\lib\user\Manager( + + $offlineUser = $this->getMockBuilder('\OCA\user_ldap\lib\user\OfflineUser') + ->disableOriginalConstructor() + ->getMock(); + + $um = $this->getMockBuilder('\OCA\user_ldap\lib\user\Manager') + ->setMethods(['getDeletedUser']) + ->setConstructorArgs([ $this->configMock, $this->getMock('\OCA\user_ldap\lib\FilesystemHelper'), $this->getMock('\OCA\user_ldap\lib\LogWrapper'), $this->getMock('\OCP\IAvatarManager'), $this->getMock('\OCP\Image'), $this->getMock('\OCP\IDBConnection') - ); + ]) + ->getMock(); + + $um->expects($this->any()) + ->method('getDeletedUser') + ->will($this->returnValue($offlineUser)); $access = $this->getMock('\OCA\user_ldap\lib\Access', $accMethods, @@ -661,6 +673,44 @@ class Test_User_Ldap_Direct extends \Test\TestCase { $this->assertFalse($result); } + /** + * @expectedException \OC\User\NoUserException + */ + public function testGetHomeDeletedUser() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); + $this->prepareMockForUserExists($access); + + $access->connection->expects($this->any()) + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'homeFolderNamingRule') { + return 'attr:testAttribute'; + } + return null; + })); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnValue([])); + + $userMapper = $this->getMockBuilder('\OCA\User_LDAP\Mapping\UserMapping') + ->disableOriginalConstructor() + ->getMock(); + + $access->expects($this->any()) + ->method('getUserMapper') + ->will($this->returnValue($userMapper)); + + $this->configMock->expects($this->any()) + ->method('getUserValue') + ->will($this->returnValue(true)); + + //no path at all – triggers OC default behaviour + $result = $backend->getHome('newyorker'); + $this->assertFalse($result); + } + private function prepareAccessForGetDisplayName(&$access) { $access->connection->expects($this->any()) ->method('__get') @@ -686,6 +736,14 @@ class Test_User_Ldap_Direct extends \Test\TestCase { return false; } })); + + $userMapper = $this->getMockBuilder('\OCA\User_LDAP\Mapping\UserMapping') + ->disableOriginalConstructor() + ->getMock(); + + $access->expects($this->any()) + ->method('getUserMapper') + ->will($this->returnValue($userMapper)); } public function testGetDisplayName() { diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 0097dda89b5..c568905f3d9 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -30,6 +30,7 @@ namespace OCA\user_ldap; +use OC\User\NoUserException; use OCA\user_ldap\lib\BackendUtility; use OCA\user_ldap\lib\Access; use OCA\user_ldap\lib\user\OfflineUser; @@ -117,6 +118,7 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn try { $ldapRecord = $this->getLDAPUserByLoginName($uid); } catch(\Exception $e) { + \OC::$server->getLogger()->logException($e, ['app' => 'user_ldap']); return false; } $dn = $ldapRecord['dn'][0]; @@ -190,15 +192,18 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn /** * checks whether a user is still available on LDAP + * * @param string|\OCA\User_LDAP\lib\user\User $user either the ownCloud user * name or an instance of that user * @return bool + * @throws \Exception + * @throws \OC\ServerNotAvailableException */ public function userExistsOnLDAP($user) { if(is_string($user)) { $user = $this->access->userManager->get($user); } - if(!$user instanceof User) { + if(is_null($user)) { return false; } @@ -209,7 +214,22 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn if(is_null($lcr)) { throw new \Exception('No LDAP Connection to server ' . $this->access->connection->ldapHost); } - return false; + + try { + $uuid = $this->access->getUserMapper()->getUUIDByDN($dn); + if(!$uuid) { + return false; + } + $newDn = $this->access->getUserDnByUuid($uuid); + $this->access->getUserMapper()->setDNbyUUID($newDn, $uuid); + return true; + } catch (\Exception $e) { + return false; + } + } + + if($user instanceof OfflineUser) { + $user->unmark(); } return true; @@ -274,10 +294,13 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn } /** - * get the user's home directory - * @param string $uid the username - * @return string|bool - */ + * get the user's home directory + * + * @param string $uid the username + * @return bool|string + * @throws NoUserException + * @throws \Exception + */ public function getHome($uid) { if(isset($this->homesToKill[$uid]) && !empty($this->homesToKill[$uid])) { //a deleted user who needs some clean up @@ -295,6 +318,15 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn } $user = $this->access->userManager->get($uid); + if(is_null($user) || ($user instanceof OfflineUser && !$this->userExistsOnLDAP($user->getOCName()))) { + throw new NoUserException($uid . ' is not a valid user anymore'); + } + if($user instanceof OfflineUser) { + // apparently this user survived the userExistsOnLDAP check, + // we request the user instance again in order to retrieve a User + // instance instead + $user = $this->access->userManager->get($uid); + } $path = $user->getHomePath(); $this->access->cacheUserHome($uid, $path); diff --git a/bower.json b/bower.json index eb8d1ce0b7f..ae9575249c9 100644 --- a/bower.json +++ b/bower.json @@ -29,6 +29,7 @@ "bootstrap": "~3.3.6", "backbone": "~1.2.3", "davclient.js": "https://github.com/evert/davclient.js.git", - "es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0" + "es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0", + "base64": "~0.3.0" } } diff --git a/build/integration/features/bootstrap/Provisioning.php b/build/integration/features/bootstrap/Provisioning.php index 9a21c0bb1d4..65a6611b06c 100644 --- a/build/integration/features/bootstrap/Provisioning.php +++ b/build/integration/features/bootstrap/Provisioning.php @@ -90,7 +90,13 @@ trait Provisioning { } elseif ($this->currentServer === 'REMOTE') { $this->createdRemoteUsers[$user] = $user; } - + + //Quick hack to login once with the current user + $options2 = [ + 'auth' => [$user, '123456'], + ]; + $url = $fullUrl.'/'.$user; + $client->send($client->createRequest('GET', $url, $options2)); } public function createUser($user) { diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index 31ba0d4ad7f..65a8459e9a1 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -231,20 +231,23 @@ Feature: sharing And User "user2" should be included in the response And User "user3" should not be included in the response - Scenario: getting all shares of a file with reshares - Given user "user0" exists - And user "user1" exists - And user "user2" exists - And user "user3" exists - And file "textfile0.txt" of user "user0" is shared with user "user1" - And file "textfile0.txt" of user "user1" is shared with user "user2" - And As an "user0" - When sending "GET" to "/apps/files_sharing/api/v1/shares?reshares=true&path=textfile0.txt" - Then the OCS status code should be "100" - And the HTTP status code should be "200" - And User "user1" should be included in the response - And User "user2" should be included in the response - And User "user3" should not be included in the response +# Skip this test for now. Since the new shares do not create reshares +# TODO enable when getshares is updated +# +# Scenario: getting all shares of a file with reshares +# Given user "user0" exists +# And user "user1" exists +# And user "user2" exists +# And user "user3" exists +# And file "textfile0.txt" of user "user0" is shared with user "user1" +# And file "textfile0.txt" of user "user1" is shared with user "user2" +# And As an "user0" +# When sending "GET" to "/apps/files_sharing/api/v1/shares?reshares=true&path=textfile0.txt" +# Then the OCS status code should be "100" +# And the HTTP status code should be "200" +# And User "user1" should be included in the response +# And User "user2" should be included in the response +# And User "user3" should not be included in the response Scenario: getting share info of a share Given user "user0" exists @@ -263,7 +266,7 @@ Feature: sharing | file_source | A_NUMBER | | file_target | /textfile0.txt | | path | /textfile0.txt | - | permissions | 23 | + | permissions | 19 | | stime | A_NUMBER | | storage | A_NUMBER | | mail_send | 0 | @@ -326,7 +329,7 @@ Feature: sharing | permissions | 8 | And As an "user1" When creating a share with - | path | /textfile0. (2).txt | + | path | /textfile0 (2).txt | | shareType | 0 | | shareWith | user2 | | permissions | 31 | @@ -346,7 +349,7 @@ Feature: sharing | permissions | 16 | And As an "user1" When creating a share with - | path | /textfile0. (2).txt | + | path | /textfile0 (2).txt | | shareType | 0 | | shareWith | user2 | | permissions | 31 | diff --git a/config/config.sample.php b/config/config.sample.php index 9b10792944f..3208a255144 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -405,7 +405,7 @@ $CONFIG = array( * delete all files in the trash bin that are older than D days * automatically, delete other files anytime if space needed * * ``D1, D2`` - * keep files and folders the in trash bin for at least D1 days and + * keep files and folders in the trash bin for at least D1 days and * delete when exceeds D2 days * * ``disabled`` * trash bin auto clean disabled, files and folders will be kept forever @@ -799,22 +799,6 @@ $CONFIG = array( 'ldapUserCleanupInterval' => 51, /** - * Enforce the existence of the home folder naming rule for all users - * - * Following scenario: - * * a home folder naming rule is set in LDAP advanced settings - * * a user doesn't have the home folder naming rule attribute set - * - * If this is set to **true** (default) it will NOT fallback to the core's - * default naming rule of using the internal user ID as home folder name. - * - * If this is set to **false** it will fallback for the users without the - * attribute set to naming the home folder like the internal user ID. - * - */ -'enforce_home_folder_naming_rule' => true, - -/** * Comments * * Global settings for the Comments infrastructure @@ -1079,9 +1063,6 @@ $CONFIG = array( * * 1 -> Check each file or folder at most once per request, recommended for * general use if outside changes might happen. - * - * 2 -> Check every time the filesystem is used, causes a performance hit when - * using external storages, not recommended for regular use. */ 'filesystem_check_changes' => 0, diff --git a/console.php b/console.php index 8bfbabf2a03..9386f544939 100644 --- a/console.php +++ b/console.php @@ -60,10 +60,21 @@ try { echo "Console has to be executed with the user that owns the file config/config.php" . PHP_EOL; echo "Current user: " . $user['name'] . PHP_EOL; echo "Owner of config.php: " . $configUser['name'] . PHP_EOL; + echo "Try adding 'sudo -u " . $configUser['name'] . " ' to the beginning of the command (without the single quotes)" . PHP_EOL; exit(0); } } + $oldWorkingDir = getcwd(); + if ($oldWorkingDir === false) { + echo "This script can be run from the ownCloud root directory only." . PHP_EOL; + echo "Can't determine current working dir - the script will continue to work but be aware of the above fact." . PHP_EOL; + } else if ($oldWorkingDir !== __DIR__ && !chdir(__DIR__)) { + echo "This script can be run from the ownCloud root directory only." . PHP_EOL; + echo "Can't change to ownCloud root diretory." . PHP_EOL; + exit(1); + } + $application = new Application(\OC::$server->getConfig()); $application->loadCommands(new ConsoleOutput()); $application->run(); diff --git a/core/ajax/update.php b/core/ajax/update.php index a5c1f79e3ea..879f66e1024 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -104,10 +104,10 @@ if (OC::checkUpgrade(false)) { $config->setSystemValue('maintenance', false); }); $updater->listen('\OC\Updater', 'setDebugLogLevel', function ($logLevel, $logLevelName) use($eventSource, $l) { - $eventSource->send('success', (string)$l->t('Set log level to debug - current level: "%s"', [ $logLevelName ])); + $eventSource->send('success', (string)$l->t('Set log level to debug')); }); $updater->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use($eventSource, $l) { - $eventSource->send('success', (string)$l->t('Reset log level to "%s"', [ $logLevelName ])); + $eventSource->send('success', (string)$l->t('Reset log level')); }); $updater->listen('\OC\Updater', 'startCheckCodeIntegrity', function () use($eventSource, $l) { $eventSource->send('success', (string)$l->t('Starting code integrity check')); diff --git a/core/avatar/avatarcontroller.php b/core/avatar/avatarcontroller.php index 6c0321e6b5e..e8139aa50ae 100644 --- a/core/avatar/avatarcontroller.php +++ b/core/avatar/avatarcontroller.php @@ -30,6 +30,7 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\Files\NotFoundException; use OCP\IAvatarManager; use OCP\ILogger; use OCP\IL10N; @@ -112,20 +113,23 @@ class AvatarController extends Controller { $size = 64; } - $avatar = $this->avatarManager->getAvatar($userId); - $image = $avatar->get($size); - - if ($image instanceof \OCP\IImage) { - $resp = new DataDisplayResponse($image->data(), + try { + $avatar = $this->avatarManager->getAvatar($userId)->getFile($size); + $resp = new DataDisplayResponse($avatar->getContent(), Http::STATUS_OK, - ['Content-Type' => $image->mimeType()]); - $resp->setETag(crc32($image->data())); - } else { + ['Content-Type' => $avatar->getMimeType()]); + $resp->setETag($avatar->getEtag()); + } catch (NotFoundException $e) { $user = $this->userManager->get($userId); - $userName = $user ? $user->getDisplayName() : ''; $resp = new DataResponse([ 'data' => [ - 'displayname' => $userName, + 'displayname' => $user->getDisplayName(), + ], + ]); + } catch (\Exception $e) { + $resp = new DataResponse([ + 'data' => [ + 'displayname' => '', ], ]); } diff --git a/core/command/app/checkcode.php b/core/command/app/checkcode.php index e186d458c01..bc3ae07890c 100644 --- a/core/command/app/checkcode.php +++ b/core/command/app/checkcode.php @@ -131,6 +131,10 @@ class CheckCode extends Command { } }); + $infoChecker->listen('InfoChecker', 'missingRequirement', function($minMax) use ($output) { + $output->writeln("<comment>ownCloud $minMax version requirement missing (will be an error in ownCloud 11 and later)</comment>"); + }); + $infoChecker->listen('InfoChecker', 'duplicateRequirement', function($minMax) use ($output) { $output->writeln("<error>Duplicate $minMax ownCloud version requirement found</error>"); }); diff --git a/core/command/status.php b/core/command/status.php index 2eb58525d3e..c2a28ff822f 100644 --- a/core/command/status.php +++ b/core/command/status.php @@ -39,7 +39,7 @@ class Status extends Base { protected function execute(InputInterface $input, OutputInterface $output) { $values = array( 'installed' => (bool) \OC::$server->getConfig()->getSystemValue('installed', false), - 'version' => implode('.', \OC_Util::getVersion()), + 'version' => implode('.', \OCP\Util::getVersion()), 'versionstring' => \OC_Util::getVersionString(), 'edition' => \OC_Util::getEditionString(), ); diff --git a/core/command/upgrade.php b/core/command/upgrade.php index 9031e284f85..7675c168f35 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -199,10 +199,10 @@ class Upgrade extends Command { $output->writeln("<error>$message</error>"); }); $updater->listen('\OC\Updater', 'setDebugLogLevel', function ($logLevel, $logLevelName) use($output) { - $output->writeln("<info>Set log level to debug - current level: '$logLevelName'</info>"); + $output->writeln("<info>Set log level to debug</info>"); }); $updater->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use($output) { - $output->writeln("<info>Reset log level to '$logLevelName'</info>"); + $output->writeln("<info>Reset log level</info>"); }); if(OutputInterface::VERBOSITY_NORMAL < $output->getVerbosity()) { diff --git a/core/css/styles.css b/core/css/styles.css index 62161d69273..04ac387974c 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -254,6 +254,10 @@ body { width: 22em; margin: 0 auto; padding-top: 20px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } #body-login p.info a { font-weight: 600; @@ -291,6 +295,10 @@ body { #body-login form fieldset { margin-bottom: 20px; text-align: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } #body-login form #sqliteInformation { margin-top: -20px; @@ -348,6 +356,10 @@ body { .groupmiddle, .groupbottom { position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } #body-login .grouptop input, .grouptop input { @@ -369,6 +381,8 @@ body { .groupbottom input { margin-top: 0; border-top: 0; +} +#body-login .groupbottom #password { border-top-right-radius: 0; border-top-left-radius: 0; box-shadow: 0 1px 0 rgba(0,0,0,.1) inset !important; @@ -385,6 +399,10 @@ label.infield { padding: 14px; padding-left: 28px; vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } html.ie8 #body-login form input[type="checkbox"]+label { margin-left: -28px; @@ -689,9 +707,9 @@ code { font-family:"Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono #quota { cursor: default; - margin: 30px; + margin: 30px !important; position: relative; - padding: 0; + padding: 0 !important; } #quota div { padding: 0; diff --git a/core/js/avatar.js b/core/js/avatar.js deleted file mode 100644 index 8ff136d67ca..00000000000 --- a/core/js/avatar.js +++ /dev/null @@ -1,10 +0,0 @@ -$(document).ready(function(){ - if (OC.currentUser) { - // Personal settings - $('#avatar .avatardiv').avatar(OC.currentUser, 128); - } - // User settings - $.each($('td.avatar .avatardiv'), function(i, element) { - $(element).avatar($(element).parent().parent().data('uid'), 32); - }); -}); diff --git a/core/js/config.php b/core/js/config.php index e51ae903729..c975c6db2dc 100644 --- a/core/js/config.php +++ b/core/js/config.php @@ -138,7 +138,7 @@ $array = array( array( 'session_lifetime' => min(\OCP\Config::getSystemValue('session_lifetime', OC::$server->getIniWrapper()->getNumeric('session.gc_maxlifetime')), OC::$server->getIniWrapper()->getNumeric('session.gc_maxlifetime')), 'session_keepalive' => \OCP\Config::getSystemValue('session_keepalive', true), - 'version' => implode('.', OC_Util::getVersion()), + 'version' => implode('.', \OCP\Util::getVersion()), 'versionstring' => OC_Util::getVersionString(), 'enable_avatars' => \OC::$server->getConfig()->getSystemValue('enable_avatars', true), 'lost_password_link'=> \OC::$server->getConfig()->getSystemValue('lost_password_link', null), diff --git a/core/js/files/client.js b/core/js/files/client.js index 82cf3ff5121..3d31f974ff8 100644 --- a/core/js/files/client.js +++ b/core/js/files/client.js @@ -35,27 +35,25 @@ if (options.useHTTPS) { url = 'https://'; } - var credentials = ''; - if (options.userName) { - credentials += encodeURIComponent(options.userName); - } - if (options.password) { - credentials += ':' + encodeURIComponent(options.password); - } - if (credentials.length > 0) { - url += credentials + '@'; - } url += options.host + this._root; this._defaultHeaders = options.defaultHeaders || {'X-Requested-With': 'XMLHttpRequest'}; this._baseUrl = url; - this._client = new dav.Client({ + + var clientOptions = { baseUrl: this._baseUrl, xmlNamespaces: { 'DAV:': 'd', 'http://owncloud.org/ns': 'oc' } - }); + }; + if (options.userName) { + clientOptions.userName = options.userName; + } + if (options.password) { + clientOptions.password = options.password; + } + this._client = new dav.Client(clientOptions); this._client.xhrProvider = _.bind(this._xhrProvider, this); }; @@ -253,7 +251,7 @@ id: props['{' + Client.NS_OWNCLOUD + '}fileid'], path: OC.dirname(path) || '/', name: OC.basename(path), - mtime: new Date(props['{' + Client.NS_DAV + '}getlastmodified']) + mtime: (new Date(props['{' + Client.NS_DAV + '}getlastmodified'])).getTime() }; var etagProp = props['{' + Client.NS_DAV + '}getetag']; @@ -303,10 +301,6 @@ } break; case 'W': - if (isFile) { - // also add create permissions - data.permissions |= OC.PERMISSION_CREATE; - } data.permissions |= OC.PERMISSION_UPDATE; break; case 'D': diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index fe93d0ea657..b77063a9eae 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -753,6 +753,7 @@ var OCdialogs = { var sorted = dirs.concat(others); $.each(sorted, function(idx, entry) { + entry.icon = OC.MimeType.getIconUrl(entry.mimetype); var $li = self.$listTmpl.octemplate({ type: entry.type, dir: dir, diff --git a/core/js/placeholder.js b/core/js/placeholder.js index 74bb9b1881d..5fb5b5b8f80 100644 --- a/core/js/placeholder.js +++ b/core/js/placeholder.js @@ -47,16 +47,20 @@ */ (function ($) { - $.fn.imageplaceholder = function(seed, text) { + $.fn.imageplaceholder = function(seed, text, size) { // set optional argument "text" to value of "seed" if undefined text = text || seed; - var hash = md5(seed), - maxRange = parseInt('ffffffffffffffffffffffffffffffff', 16), + var hash = md5(seed).substring(0, 4), + maxRange = parseInt('ffff', 16), hue = parseInt(hash, 16) / maxRange * 256, - height = this.height(); + height = this.height() || size || 32; this.css('background-color', 'hsl(' + hue + ', 90%, 65%)'); + // Placeholders are square + this.height(height); + this.width(height); + // CSS rules this.css('color', '#fff'); this.css('font-weight', 'normal'); diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js index 5ac1945da73..8763ec1c71b 100644 --- a/core/js/setupchecks.js +++ b/core/js/setupchecks.js @@ -70,13 +70,13 @@ } if(!data.isMemcacheConfigured) { messages.push({ - msg: t('core', 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="{docLink}">documentation</a>.', {docLink: data.memcacheDocs}), + msg: t('core', '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" href="{docLink}">documentation</a>.', {docLink: data.memcacheDocs}), type: OC.SetupChecks.MESSAGE_TYPE_INFO }); } if(!data.isUrandomAvailable) { messages.push({ - msg: t('core', '/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href="{docLink}">documentation</a>.', {docLink: data.securityDocs}), + msg: t('core', '/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target="_blank" href="{docLink}">documentation</a>.', {docLink: data.securityDocs}), type: OC.SetupChecks.MESSAGE_TYPE_WARNING }); } @@ -88,19 +88,19 @@ } if(data.phpSupported && data.phpSupported.eol) { messages.push({ - msg: t('core', 'Your PHP version ({version}) is no longer <a href="{phpLink}">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', {version: data.phpSupported.version, phpLink: 'https://secure.php.net/supported-versions.php'}), + msg: t('core', 'Your PHP version ({version}) is no longer <a target="_blank" href="{phpLink}">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', {version: data.phpSupported.version, phpLink: 'https://secure.php.net/supported-versions.php'}), type: OC.SetupChecks.MESSAGE_TYPE_INFO }); } if(!data.forwardedForHeadersWorking) { messages.push({ - msg: t('core', 'The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href="{docLink}">documentation</a>.', {docLink: data.reverseProxyDocs}), + msg: t('core', '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" href="{docLink}">documentation</a>.', {docLink: data.reverseProxyDocs}), type: OC.SetupChecks.MESSAGE_TYPE_WARNING }); } if(!data.isCorrectMemcachedPHPModuleInstalled) { messages.push({ - msg: t('core', 'Memcached is configured as distributed cache, but the wrong PHP module "memcache" is installed. \\OC\\Memcache\\Memcached only supports "memcached" and not "memcache". See the <a href="{wikiLink}">memcached wiki about both modules</a>.', {wikiLink: 'https://code.google.com/p/memcached/wiki/PHPClientComparison'}), + msg: t('core', '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" href="{wikiLink}">memcached wiki about both modules</a>.', {wikiLink: 'https://code.google.com/p/memcached/wiki/PHPClientComparison'}), type: OC.SetupChecks.MESSAGE_TYPE_WARNING }); } @@ -108,7 +108,7 @@ messages.push({ msg: t( 'core', - 'Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href="{docLink}">documentation</a>. (<a href="{codeIntegrityDownloadEndpoint}">List of invalid files…</a> / <a href="{rescanEndpoint}">Rescan…</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" href="{docLink}">documentation</a>. (<a href="{codeIntegrityDownloadEndpoint}">List of invalid files…</a> / <a href="{rescanEndpoint}">Rescan…</a>)', { docLink: data.codeIntegrityCheckerDocumentation, codeIntegrityDownloadEndpoint: OC.generateUrl('/settings/integrity/failed'), diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index dd07adceac4..4cebf7962e8 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -117,22 +117,95 @@ var $loading = this.$el.find('.shareWithLoading'); $loading.removeClass('hidden'); $loading.addClass('inlineblock'); - $.get(OC.filePath('core', 'ajax', 'share.php'), { - fetch: 'getShareWith', - search: search.term.trim(), - limit: 200, - itemShares: OC.Share.itemShares, - itemType: view.model.get('itemType') - }, function (result) { - $loading.addClass('hidden'); - $loading.removeClass('inlineblock'); - if (result.status == 'success' && result.data.length > 0) { - $('.shareWithField').autocomplete("option", "autoFocus", true); - response(result.data); - } else { - response(); + $.get( + OC.linkToOCS('apps/files_sharing/api/v1') + 'sharees', + { + format: 'json', + search: search.term.trim(), + perPage: 200, + itemType: view.model.get('itemType') + }, + function (result) { + $loading.addClass('hidden'); + $loading.removeClass('inlineblock'); + if (result.ocs.meta.statuscode == 100) { + var users = result.ocs.data.exact.users.concat(result.ocs.data.users); + var groups = result.ocs.data.exact.groups.concat(result.ocs.data.groups); + var remotes = result.ocs.data.exact.remotes.concat(result.ocs.data.remotes); + + var usersLength; + var groupsLength; + var remotesLength; + + var i, j; + + //Filter out the current user + usersLength = users.length; + for (i = 0 ; i < usersLength; i++) { + if (users[i].value.shareWith === OC.currentUser) { + users.splice(i, 1); + break; + } + } + + // Filter out the owner of the share + if (view.model.hasReshare()) { + usersLength = users.length; + for (i = 0 ; i < usersLength; i++) { + if (users[i].value.shareWith === view.model.getReshareOwner()) { + users.splice(i, 1); + break; + } + } + } + + var shares = view.model.get('shares'); + var sharesLength = shares.length; + + // Now filter out all sharees that are already shared with + for (i = 0; i < sharesLength; i++) { + var share = shares[i]; + + if (share.share_type === OC.Share.SHARE_TYPE_USER) { + usersLength = users.length; + for (j = 0; j < usersLength; j++) { + if (users[j].value.shareWith === share.share_with) { + users.splice(j, 1); + break; + } + } + } else if (share.share_type === OC.Share.SHARE_TYPE_GROUP) { + groupsLength = groups.length; + for (j = 0; j < groupsLength; j++) { + if (groups[j].value.shareWith === share.share_with) { + groups.splice(j, 1); + break; + } + } + } else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE) { + remotesLength = remotes.length; + for (j = 0; j < remotesLength; j++) { + if (remotes[j].value.shareWith === share.share_with) { + remotes.splice(j, 1); + break; + } + } + } + } + + var suggestions = users.concat(groups).concat(remotes); + + if (suggestions.length > 0) { + $('.shareWithField').autocomplete("option", "autoFocus", true); + response(suggestions); + } else { + response(); + } + } else { + response(); + } } - }).fail(function () { + ).fail(function() { $loading.addClass('hidden'); $loading.removeClass('inlineblock'); OC.Notification.show(t('core', 'An error occured. Please try again')); diff --git a/core/js/tests/specs/files/clientSpec.js b/core/js/tests/specs/files/clientSpec.js index 3a3181d8426..61cff0a66ec 100644 --- a/core/js/tests/specs/files/clientSpec.js +++ b/core/js/tests/specs/files/clientSpec.js @@ -252,7 +252,7 @@ describe('OC.Files.Client tests', function() { expect(info.name).toEqual('One.txt'); expect(info.permissions).toEqual(31); expect(info.size).toEqual(250); - expect(info.mtime.getTime()).toEqual(1436535485000); + expect(info.mtime).toEqual(1436535485000); expect(info.mimetype).toEqual('text/plain'); expect(info.etag).toEqual('559fcabd79a38'); @@ -264,7 +264,7 @@ describe('OC.Files.Client tests', function() { expect(info.name).toEqual('sub'); expect(info.permissions).toEqual(31); expect(info.size).toEqual(100); - expect(info.mtime.getTime()).toEqual(1436536800000); + expect(info.mtime).toEqual(1436536800000); expect(info.mimetype).toEqual('httpd/unix-directory'); expect(info.etag).toEqual('66cfcabd79abb'); }); @@ -295,7 +295,7 @@ describe('OC.Files.Client tests', function() { expect(info.name).toEqual('文件夹'); expect(info.permissions).toEqual(31); expect(info.size).toEqual(120); - expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mtime).toEqual(1436522405000); expect(info.mimetype).toEqual('httpd/unix-directory'); expect(info.etag).toEqual('56cfcabd79abb'); @@ -376,7 +376,7 @@ describe('OC.Files.Client tests', function() { expect(info.name).toEqual('文件夹'); expect(info.permissions).toEqual(31); expect(info.size).toEqual(120); - expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mtime).toEqual(1436522405000); expect(info.mimetype).toEqual('httpd/unix-directory'); expect(info.etag).toEqual('56cfcabd79abb'); }); @@ -425,7 +425,7 @@ describe('OC.Files.Client tests', function() { expect(info.name).toEqual('in root'); expect(info.permissions).toEqual(31); expect(info.size).toEqual(120); - expect(info.mtime.getTime()).toEqual(1436522405000); + expect(info.mtime).toEqual(1436522405000); expect(info.mimetype).toEqual('httpd/unix-directory'); expect(info.etag).toEqual('56cfcabd79abb'); }); diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js index 4bad893cf37..c5f1aa5effe 100644 --- a/core/js/tests/specs/setupchecksSpec.js +++ b/core/js/tests/specs/setupchecksSpec.js @@ -88,7 +88,7 @@ describe('OC.SetupChecks tests', function() { msg: '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.', type: OC.SetupChecks.MESSAGE_TYPE_ERROR }, { - msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance">documentation</a>.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target="_blank" href="https://doc.owncloud.org/server/go.php?to=admin-performance">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); @@ -125,7 +125,7 @@ describe('OC.SetupChecks tests', function() { type: OC.SetupChecks.MESSAGE_TYPE_ERROR }, { - msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href="https://doc.owncloud.org/server/go.php?to=admin-performance">documentation</a>.', + msg: 'No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target="_blank" href="https://doc.owncloud.org/server/go.php?to=admin-performance">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); @@ -187,7 +187,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: '/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href="https://docs.owncloud.org/myDocs.html">documentation</a>.', + msg: '/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target="_blank" href="https://docs.owncloud.org/myDocs.html">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); @@ -216,7 +216,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'Memcached is configured as distributed cache, but the wrong PHP module "memcache" is installed. \\OC\\Memcache\\Memcached only supports "memcached" and not "memcache". See the <a href="https://code.google.com/p/memcached/wiki/PHPClientComparison">memcached wiki about both modules</a>.', + msg: '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" href="https://code.google.com/p/memcached/wiki/PHPClientComparison">memcached wiki about both modules</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); @@ -245,7 +245,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href="https://docs.owncloud.org/foo/bar.html">documentation</a>.', + msg: '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" href="https://docs.owncloud.org/foo/bar.html">documentation</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); @@ -295,7 +295,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'Your PHP version (5.4.0) is no longer <a href="https://secure.php.net/supported-versions.php">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', + msg: 'Your PHP version (5.4.0) is no longer <a target="_blank" href="https://secure.php.net/supported-versions.php">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', type: OC.SetupChecks.MESSAGE_TYPE_INFO }]); done(); diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js index bfd3d987866..63cfe5299ae 100644 --- a/core/js/tests/specs/sharedialogviewSpec.js +++ b/core/js/tests/specs/sharedialogviewSpec.js @@ -702,6 +702,7 @@ describe('OC.Share.ShareDialogView', function() { }); }); }); + describe('remote sharing', function() { it('shows remote share info when allowed', function() { configModel.set({ @@ -724,23 +725,336 @@ describe('OC.Share.ShareDialogView', function() { var response = sinon.stub(); dialog.autocompleteHandler({term: 'bob'}, response); var jsonData = JSON.stringify({ - "data": [{"label": "bob", "value": {"shareType": 0, "shareWith": "test"}}], - "status": "success" + 'ocs' : { + 'meta' : { + 'status' : 'success', + 'statuscode' : 100, + 'message' : null + }, + 'data' : { + 'exact' : { + 'users' : [], + 'groups' : [], + 'remotes': [] + }, + 'users' : [{'label': 'bob', 'value': {'shareType': 0, 'shareWith': 'test'}}], + 'groups' : [], + 'remotes': [] + } + } }); fakeServer.requests[0].respond( 200, {'Content-Type': 'application/json'}, jsonData ); - expect(response.calledWithExactly(JSON.parse(jsonData).data)).toEqual(true); + expect(response.calledWithExactly(JSON.parse(jsonData).ocs.data.users)).toEqual(true); expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); }); + describe('filter out', function() { + it('the current user', function () { + dialog.render(); + var response = sinon.stub(); + dialog.autocompleteHandler({term: 'bob'}, response); + var jsonData = JSON.stringify({ + 'ocs': { + 'meta': { + 'status': 'success', + 'statuscode': 100, + 'message': null + }, + 'data': { + 'exact': { + 'users': [], + 'groups': [], + 'remotes': [] + }, + 'users': [ + { + 'label': 'bob', + 'value': { + 'shareType': 0, + 'shareWith': OC.currentUser + } + }, + { + 'label': 'bobby', + 'value': { + 'shareType': 0, + 'shareWith': 'imbob' + } + } + ], + 'groups': [], + 'remotes': [] + } + } + }); + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'application/json'}, + jsonData + ); + expect(response.calledWithExactly([{ + 'label': 'bobby', + 'value': {'shareType': 0, 'shareWith': 'imbob'} + }])).toEqual(true); + expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); + }); + + it('the share owner', function () { + shareModel.set({ + reshare: { + uid_owner: 'user1' + }, + shares: [], + permissions: OC.PERMISSION_READ + }); + + dialog.render(); + var response = sinon.stub(); + dialog.autocompleteHandler({term: 'bob'}, response); + var jsonData = JSON.stringify({ + 'ocs': { + 'meta': { + 'status': 'success', + 'statuscode': 100, + 'message': null + }, + 'data': { + 'exact': { + 'users': [], + 'groups': [], + 'remotes': [] + }, + 'users': [ + { + 'label': 'bob', + 'value': { + 'shareType': 0, + 'shareWith': 'user1' + } + }, + { + 'label': 'bobby', + 'value': { + 'shareType': 0, + 'shareWith': 'imbob' + } + } + ], + 'groups': [], + 'remotes': [] + } + } + }); + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'application/json'}, + jsonData + ); + expect(response.calledWithExactly([{ + 'label': 'bobby', + 'value': {'shareType': 0, 'shareWith': 'imbob'} + }])).toEqual(true); + expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); + }); + + describe('already shared with', function () { + beforeEach(function() { + shareModel.set({ + reshare: {}, + shares: [{ + id: 100, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_USER, + share_with: 'user1', + share_with_displayname: 'User One' + },{ + id: 101, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_GROUP, + share_with: 'group', + share_with_displayname: 'group' + },{ + id: 102, + item_source: 123, + permissions: 31, + share_type: OC.Share.SHARE_TYPE_REMOTE, + share_with: 'foo@bar.com/baz', + share_with_displayname: 'foo@bar.com/baz' + + }] + }); + }); + + it('users', function () { + dialog.render(); + var response = sinon.stub(); + dialog.autocompleteHandler({term: 'bob'}, response); + var jsonData = JSON.stringify({ + 'ocs': { + 'meta': { + 'status': 'success', + 'statuscode': 100, + 'message': null + }, + 'data': { + 'exact': { + 'users': [], + 'groups': [], + 'remotes': [] + }, + 'users': [ + { + 'label': 'bob', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_USER, + 'shareWith': 'user1' + } + }, + { + 'label': 'bobby', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_USER, + 'shareWith': 'imbob' + } + } + ], + 'groups': [], + 'remotes': [] + } + } + }); + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'application/json'}, + jsonData + ); + expect(response.calledWithExactly([{ + 'label': 'bobby', + 'value': {'shareType': OC.Share.SHARE_TYPE_USER, 'shareWith': 'imbob'} + }])).toEqual(true); + expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); + }); + + it('groups', function () { + dialog.render(); + var response = sinon.stub(); + dialog.autocompleteHandler({term: 'group'}, response); + var jsonData = JSON.stringify({ + 'ocs': { + 'meta': { + 'status': 'success', + 'statuscode': 100, + 'message': null + }, + 'data': { + 'exact': { + 'users': [], + 'groups': [], + 'remotes': [] + }, + 'users': [], + 'groups': [ + { + 'label': 'group', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_GROUP, + 'shareWith': 'group' + } + }, + { + 'label': 'group2', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_GROUP, + 'shareWith': 'group2' + } + } + ], + 'remotes': [] + } + } + }); + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'application/json'}, + jsonData + ); + expect(response.calledWithExactly([{ + 'label': 'group2', + 'value': {'shareType': OC.Share.SHARE_TYPE_GROUP, 'shareWith': 'group2'} + }])).toEqual(true); + expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); + }); + + it('remotes', function () { + dialog.render(); + var response = sinon.stub(); + dialog.autocompleteHandler({term: 'bob'}, response); + var jsonData = JSON.stringify({ + 'ocs': { + 'meta': { + 'status': 'success', + 'statuscode': 100, + 'message': null + }, + 'data': { + 'exact': { + 'users': [], + 'groups': [], + 'remotes': [] + }, + 'users': [], + 'groups': [], + 'remotes': [ + { + 'label': 'foo@bar.com/baz', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_REMOTE, + 'shareWith': 'foo@bar.com/baz' + } + }, + { + 'label': 'foo2@bar.com/baz', + 'value': { + 'shareType': OC.Share.SHARE_TYPE_REMOTE, + 'shareWith': 'foo2@bar.com/baz' + } + } + ] + } + } + }); + fakeServer.requests[0].respond( + 200, + {'Content-Type': 'application/json'}, + jsonData + ); + expect(response.calledWithExactly([{ + 'label': 'foo2@bar.com/baz', + 'value': {'shareType': OC.Share.SHARE_TYPE_REMOTE, 'shareWith': 'foo2@bar.com/baz'} + }])).toEqual(true); + expect(autocompleteStub.calledWith("option", "autoFocus", true)).toEqual(true); + }); + }); + }); + it('gracefully handles successful ajax call with failure content', function () { dialog.render(); var response = sinon.stub(); dialog.autocompleteHandler({term: 'bob'}, response); - var jsonData = JSON.stringify({"status": "failure"}); + var jsonData = JSON.stringify({ + 'ocs' : { + 'meta' : { + 'status': 'failure', + 'statuscode': 400 + } + } + }); fakeServer.requests[0].respond( 200, {'Content-Type': 'application/json'}, diff --git a/core/l10n/ca.js b/core/l10n/ca.js index 90b5c697de5..6af8618f1ec 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -102,9 +102,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", "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." : "Aquest servidor no té connexió a internet. Això significa que algunes de les característiques com el muntatge d'emmagatzemament extern, les notificacions quant a actualitzacions o la instal·lació d'aplicacions de tercers no funcionarà. L'accés remot a fitxers i l'enviament de correus electrònics podria tampoc no funcionar. Us suggerim que habiliteu la connexió a internet per aquest servidor si voleu tenir totes les característiques.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "No hi ha configurada cap memòria cau. Per millorar el rendiment configureu una memòria cau si està disponible. Podeu trobar més informació a la <a href=\"{docLink}\">documentació</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP no pot llegir /dev/urandom, cosa poc recomanable per raons de seguretat. Podeu trobar més informació a la <a href=\"{docLink}\">documentació</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La versió de PHP ({version}) ja no està <a href=\"{phpLink}\">mantinguda per PHP</a>. Us recomanem que actualitzeu la versió per gaudir de les millores de rendiment i seguretat proporcionades per PHP.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>", "Shared" : "Compartit", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index eaa7fe37e82..e2fb2d41a1f 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -100,9 +100,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "El servidor web no està configurat correctament per permetre la sincronització de fitxers perquè la interfície WebDAV sembla no funcionar correctament.", "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." : "Aquest servidor no té connexió a internet. Això significa que algunes de les característiques com el muntatge d'emmagatzemament extern, les notificacions quant a actualitzacions o la instal·lació d'aplicacions de tercers no funcionarà. L'accés remot a fitxers i l'enviament de correus electrònics podria tampoc no funcionar. Us suggerim que habiliteu la connexió a internet per aquest servidor si voleu tenir totes les característiques.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La carpeta de dades i els vostres fitxers probablement són accessibles des d'Internet. El fitxer .htaccess no funciona. Us recomanem que configureu el servidor web de tal manera que la carpeta de dades no sigui accessible o que moveu la carpeta de dades fora de l'arrel de documents del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "No hi ha configurada cap memòria cau. Per millorar el rendiment configureu una memòria cau si està disponible. Podeu trobar més informació a la <a href=\"{docLink}\">documentació</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP no pot llegir /dev/urandom, cosa poc recomanable per raons de seguretat. Podeu trobar més informació a la <a href=\"{docLink}\">documentació</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La versió de PHP ({version}) ja no està <a href=\"{phpLink}\">mantinguda per PHP</a>. Us recomanem que actualitzeu la versió per gaudir de les millores de rendiment i seguretat proporcionades per PHP.", "Error occurred while checking server setup" : "Hi ha hagut un error en comprovar la configuració del servidor", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Esteu accedint aquesta web a través de HTTP. Us recomanem que configureu el servidor per requerir HTTPS tal i com es descriu als <a href=\"{docUrl}\">consells de seguretat</a>", "Shared" : "Compartit", diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js index c9c8ca08ebe..2ed187b088e 100644 --- a/core/l10n/cs_CZ.js +++ b/core/l10n/cs_CZ.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Aktualizováno z \"%s\" na %s", "Repair warning: " : "Upozornění opravy:", "Repair error: " : "Chyba opravy:", - "Set log level to debug - current level: \"%s\"" : "Nastavit úroveň logování na debug - aktuální úroveň: \"%s\"", - "Reset log level to \"%s\"" : "Vrátit úroveň logování na \"%s\"", "Starting code integrity check" : "Spouští se kontrola integrity kódu", "Finished code integrity check" : "Kontrola integrity kódu dokončena", "%s (3rdparty)" : "%s (3. strana)", @@ -114,12 +112,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Váš webový server ještě není správně nastaven pro umožnění synchronizace souborů, protože rozhraní WebDAV je pravděpodobně rozbité.", "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." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.", "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." : "Váš datový adresář i vaše soubory jsou pravděpodobně přístupné z Internetu. Soubor .htaccess nefunguje. Důrazně doporučujeme nakonfigurovat webový server tak, aby datový adresář nebyl nadále přístupný, nebo přesunout datový adresář mimo prostor zpřístupňovaný webovým serverem.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nebyla nakonfigurována paměťová cache. Pro zlepšení výkonu a dostupnosti ji prosím nakonfigurujte. Další informace lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP nemá práva pro čtení v /dev/urandom, to je ale z bezpečnostních důvodů velmi doporučováno. Více informací lze nalézt v <a href=\"{docLink}\">dokumentaci</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Vaše verze PHP ({version}) již není <a href=\"{phpLink}\">podporována</a>. Doporučujeme aktualizovat na poslední verzi PHP pro využití vylepšení výkonu a bezpečnosti.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurace hlaviček zpětné proxy není správná nebo přistupujete na ownCloud přes důvěryhodnou proxy. Pokud přistupujete na ownCloud přes nedůvěryhodnou proxy je toto považováno za bezpečnostní problém který může útočníkovi umožnit záměnu IP adresy viděné ownCloudem. Více informací lze nalézt v naší <a href=\"{docLink}\">dokumentaci</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurován jako distribuovaná cache, ale je nainstalován nesprávný PHP modul \"memcache\". \\OC\\Memcache\\Memcached podporuje pouze \"memcached\" a ne \"memcache\". Projděte si <a href=\"{wikiLink}\">memcached wiki popisující oba moduly</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Některé soubory neprošly kontrolou integrity. Více informací o tom jak tento problém vyřešit, lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neplatných souborů…</a> / <a href=\"{rescanEndpoint}\">Znovu ověřit…</a>)", "Error occurred while checking server setup" : "Při ověřování nastavení serveru došlo k chybě", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP hlavička \"{header}\" není nakonfigurována ve shodě s \"{expected}\". To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP hlavička \"Strict-Transport-Security\" není nakonfigurována na minimum \"{seconds}\" sekund. Pro vylepšení bezpečnosti doporučujeme povolit HSTS dle popisu v našich <a href=\"{docUrl}\">bezpečnostních tipech</a>.", diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json index 4fa79ebec9c..a4071452dd4 100644 --- a/core/l10n/cs_CZ.json +++ b/core/l10n/cs_CZ.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Aktualizováno z \"%s\" na %s", "Repair warning: " : "Upozornění opravy:", "Repair error: " : "Chyba opravy:", - "Set log level to debug - current level: \"%s\"" : "Nastavit úroveň logování na debug - aktuální úroveň: \"%s\"", - "Reset log level to \"%s\"" : "Vrátit úroveň logování na \"%s\"", "Starting code integrity check" : "Spouští se kontrola integrity kódu", "Finished code integrity check" : "Kontrola integrity kódu dokončena", "%s (3rdparty)" : "%s (3. strana)", @@ -112,12 +110,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Váš webový server ještě není správně nastaven pro umožnění synchronizace souborů, protože rozhraní WebDAV je pravděpodobně rozbité.", "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." : "Tento server nemá funkční připojení k Internetu. Některé moduly jako např. externí úložiště, oznámení o dostupných aktualizacích nebo instalace aplikací třetích stran nebudou fungovat. Přístup k souborům z jiných míst a odesílání oznamovacích emailů také nemusí fungovat. Pokud chcete využívat všechny možnosti ownCloud, doporučujeme povolit pro tento server připojení k Internetu.", "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." : "Váš datový adresář i vaše soubory jsou pravděpodobně přístupné z Internetu. Soubor .htaccess nefunguje. Důrazně doporučujeme nakonfigurovat webový server tak, aby datový adresář nebyl nadále přístupný, nebo přesunout datový adresář mimo prostor zpřístupňovaný webovým serverem.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nebyla nakonfigurována paměťová cache. Pro zlepšení výkonu a dostupnosti ji prosím nakonfigurujte. Další informace lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP nemá práva pro čtení v /dev/urandom, to je ale z bezpečnostních důvodů velmi doporučováno. Více informací lze nalézt v <a href=\"{docLink}\">dokumentaci</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Vaše verze PHP ({version}) již není <a href=\"{phpLink}\">podporována</a>. Doporučujeme aktualizovat na poslední verzi PHP pro využití vylepšení výkonu a bezpečnosti.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurace hlaviček zpětné proxy není správná nebo přistupujete na ownCloud přes důvěryhodnou proxy. Pokud přistupujete na ownCloud přes nedůvěryhodnou proxy je toto považováno za bezpečnostní problém který může útočníkovi umožnit záměnu IP adresy viděné ownCloudem. Více informací lze nalézt v naší <a href=\"{docLink}\">dokumentaci</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached je nakonfigurován jako distribuovaná cache, ale je nainstalován nesprávný PHP modul \"memcache\". \\OC\\Memcache\\Memcached podporuje pouze \"memcached\" a ne \"memcache\". Projděte si <a href=\"{wikiLink}\">memcached wiki popisující oba moduly</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Některé soubory neprošly kontrolou integrity. Více informací o tom jak tento problém vyřešit, lze nalézt v naší <a href=\"{docLink}\">dokumentaci</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Seznam neplatných souborů…</a> / <a href=\"{rescanEndpoint}\">Znovu ověřit…</a>)", "Error occurred while checking server setup" : "Při ověřování nastavení serveru došlo k chybě", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP hlavička \"{header}\" není nakonfigurována ve shodě s \"{expected}\". To značí možné ohrožení bezpečnosti a soukromí a je doporučeno toto nastavení upravit.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP hlavička \"Strict-Transport-Security\" není nakonfigurována na minimum \"{seconds}\" sekund. Pro vylepšení bezpečnosti doporučujeme povolit HSTS dle popisu v našich <a href=\"{docUrl}\">bezpečnostních tipech</a>.", diff --git a/core/l10n/da.js b/core/l10n/da.js index 21dd4627814..0049723161e 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Opdaterede \"%s\" til %s", "Repair warning: " : "Reparationsadvarsel:", "Repair error: " : "Reparationsfejl:", - "Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"", - "Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (inkombatible)", "Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s", @@ -111,10 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Din webserver er endnu ikke sat korrekt op til at tillade filsynkronisering, fordi WebDAV-grænsefladen ser ud til at være i stykker.", "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." : "Denne ownCloud-server har ikke en fungerende forbindelse til internettet. Det betyder, at visse funktioner som montering af eksterne drev, oplysninger om opdatering eller installation af applikationer fra tredjepart ikke fungerer. Det vil sandsynligvis heller ikke være muligt at tilgå filer fra eksterne drev eller afsendelse af e-mail med notifikationer virker sandsynligvis heller ikke. Vi opfordrer til at etablere forbindelse til internettet for denne server, såfremt du ønsker samtlige funktioner.", "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 data mappe og dine filer er muligvis tilgængelige fra internettet. Filen .htaccess fungerer ikke. Vi anbefaler på det kraftigste, at du konfigurerer din webserver således at datamappen ikke længere er tilgængelig, eller at du flytter datamappen uden for webserverens dokumentrod. ", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Der er ikke konfigureret et hukommelsesmellemlager. For at forbedre din ydelse, skal du konfigurere et mellemlager, hvis den er tilgængelig. Du finder mere information i din <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke læses af PHP, hvilket stærkt frarådes af sikkerhedsmæssige årsager. Der fås mere information i vores <a href=\"{docLink}\">dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din version af PHP ({version}) bliver ikke længere <a href=\"{phpLink}\">understøttet af PHP</a>. Vi opfordrer dig til at opgradere din PHP-version, for at opnå fordelene i ydelse og sikkerhed gennem opdateringerne som fås fra PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Den omvendte konnfiguration af proxyen er ikke korrekt, eller også tilgår du ownCloud fra en proxy som der er tillid til. Hvis ikke tilgår ownCloud fra en proxy som der er tillid til, så er der er et sikkerhedsproblem, hvilket kan tillade at en angriber kan forfalske deres IP-adresse som synlig for ownCloud. Mere information fås i vores <a href=\"{docLink}\">dokumentation</a>.", "Error occurred while checking server setup" : "Der opstod fejl under tjek af serveropsætningen", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-hovedet \"Strict-Transport-Security\" er ikke konfigureret til mindst \"{seconds}\" sekunder. For udvidet sikkerhed anbefaler vi at aktivere HSTS, som foreskrevet i vores <a href=\"{docUrl}\">sikkerhedstips</a>.", diff --git a/core/l10n/da.json b/core/l10n/da.json index 84cd2e09ed7..cabee9f2cc1 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Opdaterede \"%s\" til %s", "Repair warning: " : "Reparationsadvarsel:", "Repair error: " : "Reparationsfejl:", - "Set log level to debug - current level: \"%s\"" : "Sæt log niveau til fejlfinding - nuværende niveau: \"%s\"", - "Reset log level to \"%s\"" : "Nulstil log niveau til \"%s\"", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (inkombatible)", "Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s", @@ -109,10 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Din webserver er endnu ikke sat korrekt op til at tillade filsynkronisering, fordi WebDAV-grænsefladen ser ud til at være i stykker.", "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." : "Denne ownCloud-server har ikke en fungerende forbindelse til internettet. Det betyder, at visse funktioner som montering af eksterne drev, oplysninger om opdatering eller installation af applikationer fra tredjepart ikke fungerer. Det vil sandsynligvis heller ikke være muligt at tilgå filer fra eksterne drev eller afsendelse af e-mail med notifikationer virker sandsynligvis heller ikke. Vi opfordrer til at etablere forbindelse til internettet for denne server, såfremt du ønsker samtlige funktioner.", "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 data mappe og dine filer er muligvis tilgængelige fra internettet. Filen .htaccess fungerer ikke. Vi anbefaler på det kraftigste, at du konfigurerer din webserver således at datamappen ikke længere er tilgængelig, eller at du flytter datamappen uden for webserverens dokumentrod. ", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Der er ikke konfigureret et hukommelsesmellemlager. For at forbedre din ydelse, skal du konfigurere et mellemlager, hvis den er tilgængelig. Du finder mere information i din <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke læses af PHP, hvilket stærkt frarådes af sikkerhedsmæssige årsager. Der fås mere information i vores <a href=\"{docLink}\">dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din version af PHP ({version}) bliver ikke længere <a href=\"{phpLink}\">understøttet af PHP</a>. Vi opfordrer dig til at opgradere din PHP-version, for at opnå fordelene i ydelse og sikkerhed gennem opdateringerne som fås fra PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Den omvendte konnfiguration af proxyen er ikke korrekt, eller også tilgår du ownCloud fra en proxy som der er tillid til. Hvis ikke tilgår ownCloud fra en proxy som der er tillid til, så er der er et sikkerhedsproblem, hvilket kan tillade at en angriber kan forfalske deres IP-adresse som synlig for ownCloud. Mere information fås i vores <a href=\"{docLink}\">dokumentation</a>.", "Error occurred while checking server setup" : "Der opstod fejl under tjek af serveropsætningen", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-hovedet \"Strict-Transport-Security\" er ikke konfigureret til mindst \"{seconds}\" sekunder. For udvidet sikkerhed anbefaler vi at aktivere HSTS, som foreskrevet i vores <a href=\"{docUrl}\">sikkerhedstips</a>.", diff --git a/core/l10n/de.js b/core/l10n/de.js index 79527a46e0b..7ae1895a4d1 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -14,8 +14,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (nicht kompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", @@ -109,9 +107,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Du es aus dem Document-Root-Verzeichnis des Webservers herausverschiebst.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist für PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu findest Du in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Deine PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", @@ -172,6 +167,7 @@ OC.L10N.register( "Hello {name}" : "Hallo {name}", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Hole weitere Informationen zu Aktualisierungen ein.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Update Prozess in einigen Umgebungen unterbrechen.", "Updating {productName} to version {version}, this may take a while." : "Aktualisiere {productName} auf Version {version}. Dies könnte eine Weile dauern.", "An error occurred." : "Es ist ein Fehler aufgetreten.", "Please reload the page." : "Bitte lade die Seite neu.", @@ -181,6 +177,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stelle sicher, dass Dein Benutzername korrekt ist.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktiere den Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Benutze den folgenden Link, um Dein Passwort zurückzusetzen: {link}", "New password" : "Neues Passwort", @@ -255,6 +252,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.", "Log in" : "Anmelden", "Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?", + "Wrong password." : "Falsches Passwort.", "Stay logged in" : "Angemeldet bleiben", "Alternative Logins" : "Alternative Logins", "This ownCloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", diff --git a/core/l10n/de.json b/core/l10n/de.json index b567d209a49..2a9d1b74f38 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -12,8 +12,6 @@ "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (nicht kompatibel)", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", @@ -107,9 +105,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Du es aus dem Document-Root-Verzeichnis des Webservers herausverschiebst.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist für PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu findest Du in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Deine PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade deiner PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", @@ -170,6 +165,7 @@ "Hello {name}" : "Hallo {name}", "_download %n file_::_download %n files_" : ["Lade %n Datei herunter","Lade %n Dateien herunter"], "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Hole weitere Informationen zu Aktualisierungen ein.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Das Update läuft gerade. Das Verlassen dieser Seite könnte den Update Prozess in einigen Umgebungen unterbrechen.", "Updating {productName} to version {version}, this may take a while." : "Aktualisiere {productName} auf Version {version}. Dies könnte eine Weile dauern.", "An error occurred." : "Es ist ein Fehler aufgetreten.", "Please reload the page." : "Bitte lade die Seite neu.", @@ -179,6 +175,7 @@ "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stelle sicher, dass Dein Benutzername korrekt ist.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktiere den Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Benutze den folgenden Link, um Dein Passwort zurückzusetzen: {link}", "New password" : "Neues Passwort", @@ -253,6 +250,7 @@ "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere Deinen Administrator.", "Log in" : "Anmelden", "Wrong password. Reset it?" : "Falsches Passwort. Soll es zurückgesetzt werden?", + "Wrong password." : "Falsches Passwort.", "Stay logged in" : "Angemeldet bleiben", "Alternative Logins" : "Alternative Logins", "This ownCloud instance is currently in single user mode." : "Diese ownClound-Instanz befindet sich derzeit im Einzelbenutzermodus.", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 404a2b3dd03..1489f1584e1 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -14,8 +14,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", @@ -107,9 +105,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.", "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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ihre PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade ihrer PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index ab1839fa890..93519571f71 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -12,8 +12,6 @@ "Updated \"%s\" to %s" : "„%s“ zu %s aktualisiert", "Repair warning: " : "Reperaturwarnung:", "Repair error: " : "Reperaturfehler:", - "Set log level to debug - current level: \"%s\"" : "Log-Level auf Debug gesetzt - aktuelles Level: \"%s\"", - "Reset log level to \"%s\"" : "Log-Level auf \"%s\" zurückgesetzt", "Following apps have been disabled: %s" : "Die folgenden Apps sind deaktiviert worden: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", @@ -105,9 +103,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ihr Webserver ist noch nicht hinreichend für Datei-Synchronisation konfiguriert, weil die WebDAV-Schnittstelle vermutlich defekt ist.", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Sie alle Funktionen nutzen möchten.", "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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen finden Sie in unserer <a 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom ist von PHP nicht lesbar, wovon aus Sicherheitsgründen dringend abgeraten wird. Weitere Informationen hierzu finden Sie in unserer <a href=\"{docLink}\">Dokumentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ihre PHP Version ({version}) wird nicht länger <a href=\"{phpLink}\">unterstützt</a>. Wir empfehlen ein Upgrade ihrer PHP Version, um die volle Performance und Sicherheit zu gewährleisten.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für umfassende Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> erläutert ist.", diff --git a/core/l10n/el.js b/core/l10n/el.js index e075b123a57..07877d1c44a 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Προειδοποίηση διόρθωσης:", "Repair error: " : "Σφάλμα διόρθωσης:", - "Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"", - "Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"", "%s (3rdparty)" : "%s (3ου μέρους)", "%s (incompatible)" : "%s (ασύμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ο διακομιστής σας δεν έχει ρυθμιστεί κατάλληλα ώστε να επιτρέπει τον συγχρονισμό αρχείων γιατί η διεπαφή WebDAV πιθανόν είναι κατεστραμμένη.", "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." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Αυτό σημαίνει ότι κάποιες υπηρεσίες όπως η σύνδεση με εξωτερικούς αποθηκευτικούς χώρους, ειδοποιήσεις για ενημερώσεις ή η εγκατάσταση εφαρμογών 3ων δεν θα είναι διαθέσιμες. Η πρόσβαση απομακρυσμένων αρχείων και η αποστολή ειδοποιήσεων μέσω ηλεκτρονικού ταχυδρομείου μπορεί επίσης να μην είναι διαθέσιμες. Προτείνουμε να ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για αυτόν το διακομιστή εάν θέλετε να χρησιμοποιήσετε όλες τις υπηρεσίες.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν διαθέσιμα στο διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του καταλόγου της ρίζας εγγράφων-document root του διακομιστή.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Δεν έχει οριστεί προσωρινή μνήμη. Για να βελτιώσετε την απόδοσή σας παρακαλούμε να διαμορφώσετε ένα χώρο προσωρινής αποθήκευσης εάν υπάρχει διαθέσιμος. Περαιτέρω πληροφορίες μπορείτε να βρείτε στην <a href=\"{docLink}\">τεκμηρίωση</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Το /dev/urandom δεν είναι αναγνώσιμο από την PHP, το οποίο δεν συνίσταται για λόγους ασφαλείας. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωσή</a> μας.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Η έκδοσή σας της PHP ({version}) <a href=\"{phpLink}\">δεν υποστηρίζεται πια από την PHP</a>. Σας παροτρύνουμε να αναβαθμίσετε την PHP για να επωφεληθείτε από την απόδοση και την ασφάλεια που παρέχει η PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers δεν είναι σωστή ή συνδέεστε στο ownCloud από ένα έμπιστο διαμεσολαβητή. Αν δεν συνδέεστε στο ownCloud από έμπιστο διαμεσολαβητή, αυτό είναι ένα θέμα ασφαλείας και μπορεί να επιτρέψει σε έναν επιτιθέμενο να μασκαρέψει τη διεύθυνση IP του ως ορατή στο ownCloud. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωση</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη cache, αλλά είναι εγκατεστημένη η λάθος μονάδα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε τη <a href=\"{wikiLink}\">memcached wiki και για τις δύο μονάδες</a>.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο της εγκατάστασης με το διακομιστή", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη διόρθωση αυτής της ρύθμισης.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Η «Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\">προτάσεις ασφαλείας</a> μας.", diff --git a/core/l10n/el.json b/core/l10n/el.json index 7c203945b5e..a61b7040233 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Αναβαθμίστηκε \"%s\" σε %s", "Repair warning: " : "Προειδοποίηση διόρθωσης:", "Repair error: " : "Σφάλμα διόρθωσης:", - "Set log level to debug - current level: \"%s\"" : "Καθορισμός του επιπέδου καταγραφής σε αποσφαλμάτωση - τρέχον επίπεδο: \"%s\"", - "Reset log level to \"%s\"" : "Επαναφορά επιπέδου καταγραφής σε \"%s\"", "%s (3rdparty)" : "%s (3ου μέρους)", "%s (incompatible)" : "%s (ασύμβατη)", "Following apps have been disabled: %s" : "Οι ακόλουθες εφαρμογές έχουν απενεργοποιηθεί: %s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ο διακομιστής σας δεν έχει ρυθμιστεί κατάλληλα ώστε να επιτρέπει τον συγχρονισμό αρχείων γιατί η διεπαφή WebDAV πιθανόν είναι κατεστραμμένη.", "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." : "Αυτός ο διακομιστής δεν έχει ενεργή σύνδεση στο διαδίκτυο. Αυτό σημαίνει ότι κάποιες υπηρεσίες όπως η σύνδεση με εξωτερικούς αποθηκευτικούς χώρους, ειδοποιήσεις για ενημερώσεις ή η εγκατάσταση εφαρμογών 3ων δεν θα είναι διαθέσιμες. Η πρόσβαση απομακρυσμένων αρχείων και η αποστολή ειδοποιήσεων μέσω ηλεκτρονικού ταχυδρομείου μπορεί επίσης να μην είναι διαθέσιμες. Προτείνουμε να ενεργοποιήσετε την πρόσβαση στο διαδίκτυο για αυτόν το διακομιστή εάν θέλετε να χρησιμοποιήσετε όλες τις υπηρεσίες.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν διαθέσιμα στο διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του καταλόγου της ρίζας εγγράφων-document root του διακομιστή.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Δεν έχει οριστεί προσωρινή μνήμη. Για να βελτιώσετε την απόδοσή σας παρακαλούμε να διαμορφώσετε ένα χώρο προσωρινής αποθήκευσης εάν υπάρχει διαθέσιμος. Περαιτέρω πληροφορίες μπορείτε να βρείτε στην <a href=\"{docLink}\">τεκμηρίωση</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Το /dev/urandom δεν είναι αναγνώσιμο από την PHP, το οποίο δεν συνίσταται για λόγους ασφαλείας. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωσή</a> μας.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Η έκδοσή σας της PHP ({version}) <a href=\"{phpLink}\">δεν υποστηρίζεται πια από την PHP</a>. Σας παροτρύνουμε να αναβαθμίσετε την PHP για να επωφεληθείτε από την απόδοση και την ασφάλεια που παρέχει η PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Η διαμόρφωση των reverse proxy headers δεν είναι σωστή ή συνδέεστε στο ownCloud από ένα έμπιστο διαμεσολαβητή. Αν δεν συνδέεστε στο ownCloud από έμπιστο διαμεσολαβητή, αυτό είναι ένα θέμα ασφαλείας και μπορεί να επιτρέψει σε έναν επιτιθέμενο να μασκαρέψει τη διεύθυνση IP του ως ορατή στο ownCloud. Περισσότερες πληροφορίες υπάρχουν στην <a href=\"{docLink}\">τεκμηρίωση</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Το Memcached είναι ρυθμισμένο ως κατανεμημένη cache, αλλά είναι εγκατεστημένη η λάθος μονάδα \"memcache\" της PHP. Το \\OC\\Memcache\\Memcached υποστηρίζει μόνο τη \"memcached\" και όχι τη \"memcache\". Δείτε τη <a href=\"{wikiLink}\">memcached wiki και για τις δύο μονάδες</a>.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο της εγκατάστασης με το διακομιστή", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη διόρθωση αυτής της ρύθμισης.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Η «Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\">προτάσεις ασφαλείας</a> μας.", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index d51892019d0..82e17dc59a1 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -90,8 +90,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Your web server is not yet set up properly to allow file synchronisation because the WebDAV interface seems to be broken.", "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." : "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 enabling the Internet connection for this server.", "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." : "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.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>.", "Error occurred while checking server setup" : "Error occurred whilst checking server setup", "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." : "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.", "Shared" : "Shared", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 9042f4d0c00..a9129acaa83 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -88,8 +88,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Your web server is not yet set up properly to allow file synchronisation because the WebDAV interface seems to be broken.", "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." : "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 enabling the Internet connection for this server.", "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." : "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.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>.", "Error occurred while checking server setup" : "Error occurred whilst checking server setup", "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." : "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.", "Shared" : "Shared", diff --git a/core/l10n/es.js b/core/l10n/es.js index fd8df5f6c2f..070369bfb41 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -8,13 +8,18 @@ OC.L10N.register( "Maintenance mode is kept active" : "El modo mantenimiento aún está activo.", "Updating database schema" : "Actualizando el esquema del base de datos", "Updated database" : "Base de datos actualizada", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)", "Checked database schema update" : "Actualización del esquema de base de datos revisado", + "Checking updates of apps" : "Comprobar actualizaciones de apps", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos %s (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)", "Checked database schema update for apps" : "Comprobada la actualización del esquema de la base de datos para aplicaciones", "Updated \"%s\" to %s" : "Se ha actualizado \"%s\" a %s", "Repair warning: " : "Advertencia de reparación:", "Repair error: " : "Error que reparar:", - "Set log level to debug - current level: \"%s\"" : "Establecer nivel de registro para depurar - nivel actual: \"%s\"", - "Reset log level to \"%s\"" : "Restablecer nivel de registro a \"%s\"", + "Starting code integrity check" : "Comenzando comprobación de integridad de código", + "Finished code integrity check" : "Terminando comprobación de integridad de código", + "%s (3rdparty)" : "%s (tercer parte)", + "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Siguiendo aplicaciones ha sido deshabilitado: %s", "Already up to date" : "Ya actualizado", "File is too big" : "El archivo es demasiado grande", @@ -107,11 +112,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando.", "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." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionan. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.", "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." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le sugerimos encarecidamente que configure su servidor web de modo que el directorio de datos ya no sea accesible o que mueva el directorio de datos fuera de la raíz de documentos del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La memoria caché no ha sido configurada. Para aumentar su performance por favor configure memcache si está disponible. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom no es legible por PHP el mismo es altamente desalentado por razones de seguridad. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Su versión PHP ({version}) ya no es <a href=\"{phpLink}\">respaldada por PHP</a>. Recomendamos actualizar su versión de PHP para aprovechar las actualizaciones de rendimiento y seguridad proporcionadas por PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuración de las cabeceras inversas del proxy son incorrectas, o está accediendo a ownCloud desde un proxy confiable. Si no está accediendo a ownCloud desde un proxy certificado y confiable, este es un problema de seguridad y puede permitirle a un hacker camuflar su dirección IP a ownCloud. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "memcached es un sistema de cache distribuido. pero ha sido instalado por error el modulo PHP memcache.\nConsulte <a href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</a>", "Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor", "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." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como es descripta en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", @@ -256,6 +256,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Por favor reintente nuevamente o contáctese con su administrador.", "Log in" : "Ingresar", "Wrong password. Reset it?" : "Contraseña incorrecta. ¿Restablecerla?", + "Wrong password." : "Contraseña incorrecta.", "Stay logged in" : "Permanecer autenticado", "Alternative Logins" : "Inicios de sesión alternativos", "This ownCloud instance is currently in single user mode." : "Esta instalación de ownCloud se encuentra en modo de usuario único.", diff --git a/core/l10n/es.json b/core/l10n/es.json index a3ad1e2a9a4..12e45a828dd 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -6,13 +6,18 @@ "Maintenance mode is kept active" : "El modo mantenimiento aún está activo.", "Updating database schema" : "Actualizando el esquema del base de datos", "Updated database" : "Base de datos actualizada", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)", "Checked database schema update" : "Actualización del esquema de base de datos revisado", + "Checking updates of apps" : "Comprobar actualizaciones de apps", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Comprobar si se puede actualizar el esquema de la base de datos %s (esto puede tardar bastante tiempo, dependiendo del tamaño de la base de datos)", "Checked database schema update for apps" : "Comprobada la actualización del esquema de la base de datos para aplicaciones", "Updated \"%s\" to %s" : "Se ha actualizado \"%s\" a %s", "Repair warning: " : "Advertencia de reparación:", "Repair error: " : "Error que reparar:", - "Set log level to debug - current level: \"%s\"" : "Establecer nivel de registro para depurar - nivel actual: \"%s\"", - "Reset log level to \"%s\"" : "Restablecer nivel de registro a \"%s\"", + "Starting code integrity check" : "Comenzando comprobación de integridad de código", + "Finished code integrity check" : "Terminando comprobación de integridad de código", + "%s (3rdparty)" : "%s (tercer parte)", + "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Siguiendo aplicaciones ha sido deshabilitado: %s", "Already up to date" : "Ya actualizado", "File is too big" : "El archivo es demasiado grande", @@ -105,11 +110,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Su servidor web aún no está configurado adecuadamente para permitir sincronización de archivos ya que la interfaz WebDAV parece no estar funcionando.", "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." : "Este servidor no tiene una conexión a Internet. Esto significa que algunas de las características como el montaje de almacenamiento externo, las notificaciones sobre actualizaciones o instalación de aplicaciones de terceros no funcionan. Podría no funcionar el acceso a los archivos de forma remota y el envío de correos electrónicos de notificación. Sugerimos habilitar la conexión a Internet de este servidor, si quiere tener todas las funciones.", "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." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le sugerimos encarecidamente que configure su servidor web de modo que el directorio de datos ya no sea accesible o que mueva el directorio de datos fuera de la raíz de documentos del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La memoria caché no ha sido configurada. Para aumentar su performance por favor configure memcache si está disponible. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom no es legible por PHP el mismo es altamente desalentado por razones de seguridad. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Su versión PHP ({version}) ya no es <a href=\"{phpLink}\">respaldada por PHP</a>. Recomendamos actualizar su versión de PHP para aprovechar las actualizaciones de rendimiento y seguridad proporcionadas por PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuración de las cabeceras inversas del proxy son incorrectas, o está accediendo a ownCloud desde un proxy confiable. Si no está accediendo a ownCloud desde un proxy certificado y confiable, este es un problema de seguridad y puede permitirle a un hacker camuflar su dirección IP a ownCloud. Más información puede ser encontrada en nuestra <a href=\"{docLink}\">documentación</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "memcached es un sistema de cache distribuido. pero ha sido instalado por error el modulo PHP memcache.\nConsulte <a href=\"{wikiLink}\">memcached wiki acerca de ambos modulos</a>", "Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor", "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." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como es descripta en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", @@ -254,6 +254,7 @@ "Please try again or contact your administrator." : "Por favor reintente nuevamente o contáctese con su administrador.", "Log in" : "Ingresar", "Wrong password. Reset it?" : "Contraseña incorrecta. ¿Restablecerla?", + "Wrong password." : "Contraseña incorrecta.", "Stay logged in" : "Permanecer autenticado", "Alternative Logins" : "Inicios de sesión alternativos", "This ownCloud instance is currently in single user mode." : "Esta instalación de ownCloud se encuentra en modo de usuario único.", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js index 7cb375149ac..b3dc78ba16d 100644 --- a/core/l10n/et_EE.js +++ b/core/l10n/et_EE.js @@ -5,12 +5,15 @@ OC.L10N.register( "Preparing update" : "Uuendamise ettevalmistamine", "Turned on maintenance mode" : "Haldusrežiimis sisse lülitatud", "Turned off maintenance mode" : "Haldusrežiimis välja lülitatud", + "Maintenance mode is kept active" : "Hooldusrežiim on aktiivne", "Updated database" : "Uuendatud andmebaas", "Checked database schema update" : "Andmebaasi skeemi uuendus kontrollitud", "Checked database schema update for apps" : "Andmebaasi skeemi uuendus rakendustele on kontrollitud", "Updated \"%s\" to %s" : "Uuendatud \"%s\" -> %s", "Repair warning: " : "Paranda hoiatus:", "Repair error: " : "Paranda viga:", + "%s (3rdparty)" : "%s (3nda osapoole arendaja)", + "%s (incompatible)" : "%s (pole ühilduv)", "Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s", "Already up to date" : "On juba ajakohane", "File is too big" : "Fail on liiga suur", @@ -18,6 +21,7 @@ OC.L10N.register( "No image or file provided" : "Ühtegi pilti või faili pole pakutud", "Unknown filetype" : "Tundmatu failitüüp", "Invalid image" : "Vigane pilt", + "An error occurred. Please contact your admin." : "Tekkis tõrge. Palun võta ühendust administraatoriga.", "No temporary profile picture available, try again" : "Ühtegi ajutist profiili pilti pole saadaval, proovi uuesti", "No crop data provided" : "Lõikeandmeid ei leitud", "Crop is not square" : "Lõikamine pole ruudukujuline", @@ -138,6 +142,7 @@ OC.L10N.register( "Share with users or groups …" : "Jaga kasutajate või gruppidega ...", "Share with users, groups or remote users …" : "Jaga kasutajate, gruppide või eemal olevate kasutajatega ...", "Warning" : "Hoiatus", + "Error while sending notification" : "Tõrge teavituse saatmisel", "The object type is not specified." : "Objekti tüüp pole määratletud.", "Enter new" : "Sisesta uus", "Delete" : "Kustuta", @@ -226,6 +231,9 @@ OC.L10N.register( "An internal error occured." : "Tekkis sisemine tõrge.", "Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.", "Log in" : "Logi sisse", + "Wrong password. Reset it?" : "Vale parool. Kas vajad parooli taastamist?", + "Wrong password." : "Vale parool.", + "Stay logged in" : "Püsi sisselogituna", "Alternative Logins" : "Alternatiivsed sisselogimisviisid", "This ownCloud instance is currently in single user mode." : "See ownCloud on momendil seadistatud ühe kasutaja jaoks.", "This means only administrators can use the instance." : "See tähendab, et seda saavad kasutada ainult administraatorid.", diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json index d10decffc5d..1c1ed60244b 100644 --- a/core/l10n/et_EE.json +++ b/core/l10n/et_EE.json @@ -3,12 +3,15 @@ "Preparing update" : "Uuendamise ettevalmistamine", "Turned on maintenance mode" : "Haldusrežiimis sisse lülitatud", "Turned off maintenance mode" : "Haldusrežiimis välja lülitatud", + "Maintenance mode is kept active" : "Hooldusrežiim on aktiivne", "Updated database" : "Uuendatud andmebaas", "Checked database schema update" : "Andmebaasi skeemi uuendus kontrollitud", "Checked database schema update for apps" : "Andmebaasi skeemi uuendus rakendustele on kontrollitud", "Updated \"%s\" to %s" : "Uuendatud \"%s\" -> %s", "Repair warning: " : "Paranda hoiatus:", "Repair error: " : "Paranda viga:", + "%s (3rdparty)" : "%s (3nda osapoole arendaja)", + "%s (incompatible)" : "%s (pole ühilduv)", "Following apps have been disabled: %s" : "Järgnevad rakendused on välja lülitatud: %s", "Already up to date" : "On juba ajakohane", "File is too big" : "Fail on liiga suur", @@ -16,6 +19,7 @@ "No image or file provided" : "Ühtegi pilti või faili pole pakutud", "Unknown filetype" : "Tundmatu failitüüp", "Invalid image" : "Vigane pilt", + "An error occurred. Please contact your admin." : "Tekkis tõrge. Palun võta ühendust administraatoriga.", "No temporary profile picture available, try again" : "Ühtegi ajutist profiili pilti pole saadaval, proovi uuesti", "No crop data provided" : "Lõikeandmeid ei leitud", "Crop is not square" : "Lõikamine pole ruudukujuline", @@ -136,6 +140,7 @@ "Share with users or groups …" : "Jaga kasutajate või gruppidega ...", "Share with users, groups or remote users …" : "Jaga kasutajate, gruppide või eemal olevate kasutajatega ...", "Warning" : "Hoiatus", + "Error while sending notification" : "Tõrge teavituse saatmisel", "The object type is not specified." : "Objekti tüüp pole määratletud.", "Enter new" : "Sisesta uus", "Delete" : "Kustuta", @@ -224,6 +229,9 @@ "An internal error occured." : "Tekkis sisemine tõrge.", "Please try again or contact your administrator." : "Palun proovi uuesti või võta ühendust oma administraatoriga.", "Log in" : "Logi sisse", + "Wrong password. Reset it?" : "Vale parool. Kas vajad parooli taastamist?", + "Wrong password." : "Vale parool.", + "Stay logged in" : "Püsi sisselogituna", "Alternative Logins" : "Alternatiivsed sisselogimisviisid", "This ownCloud instance is currently in single user mode." : "See ownCloud on momendil seadistatud ühe kasutaja jaoks.", "This means only administrators can use the instance." : "See tähendab, et seda saavad kasutada ainult administraatorid.", diff --git a/core/l10n/eu.js b/core/l10n/eu.js index dd247c80e30..2283c5969de 100644 --- a/core/l10n/eu.js +++ b/core/l10n/eu.js @@ -27,6 +27,8 @@ OC.L10N.register( "Thu." : "og.", "Fri." : "ol.", "Sat." : "lr.", + "Su" : "Ig", + "Sa" : "La", "January" : "Urtarrila", "February" : "Otsaila", "March" : "Martxoa", @@ -134,6 +136,7 @@ OC.L10N.register( "Hello {name}" : "Kaixo {name}", "_download %n file_::_download %n files_" : ["%n fitxategia jaitsi","jaitsi %n fitxategiak"], "Updating {productName} to version {version}, this may take a while." : "Eguneratu {productName} {version} bertsiora, bere denbora behar du.", + "An error occurred." : "Errore bat gertatu da.", "Please reload the page." : "Mesedez birkargatu orria.", "The update was unsuccessful. " : "Eguneraketa ongi burutu da.", "The update was successful. Redirecting you to ownCloud now." : "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara.", @@ -145,6 +148,7 @@ OC.L10N.register( "New Password" : "Pasahitz Berria", "Reset password" : "Berrezarri pasahitza", "Searching other places" : "Beste lekuak bilatzen", + "No search results in other folders" : "Ez da bilaketaren emaitzik lortu beste karpetatan", "Personal" : "Pertsonala", "Users" : "Erabiltzaileak", "Apps" : "Aplikazioak", @@ -176,6 +180,7 @@ OC.L10N.register( "File: %s" : "Fitxategia: %s", "Line: %s" : "Lerroa: %s", "Trace" : "Arrastoa", + "Security warning" : "Segurtasun abisua", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Zure zerbitrzaria ongi konfiguratzeko, mezedez <a href=\"%s\" target=\"_blank\">dokumentazioa</a> ikusi.", "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat", @@ -191,6 +196,7 @@ OC.L10N.register( "Database host" : "Datubasearen hostalaria", "Finish setup" : "Bukatu konfigurazioa", "Finishing …" : "Bukatzen...", + "Need help?" : "Laguntza behar al duzu?", "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>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s", "Log out" : "Saioa bukatu", "Search" : "Bilatu", diff --git a/core/l10n/eu.json b/core/l10n/eu.json index 9a81a86df26..d422e1276b9 100644 --- a/core/l10n/eu.json +++ b/core/l10n/eu.json @@ -25,6 +25,8 @@ "Thu." : "og.", "Fri." : "ol.", "Sat." : "lr.", + "Su" : "Ig", + "Sa" : "La", "January" : "Urtarrila", "February" : "Otsaila", "March" : "Martxoa", @@ -132,6 +134,7 @@ "Hello {name}" : "Kaixo {name}", "_download %n file_::_download %n files_" : ["%n fitxategia jaitsi","jaitsi %n fitxategiak"], "Updating {productName} to version {version}, this may take a while." : "Eguneratu {productName} {version} bertsiora, bere denbora behar du.", + "An error occurred." : "Errore bat gertatu da.", "Please reload the page." : "Mesedez birkargatu orria.", "The update was unsuccessful. " : "Eguneraketa ongi burutu da.", "The update was successful. Redirecting you to ownCloud now." : "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara.", @@ -143,6 +146,7 @@ "New Password" : "Pasahitz Berria", "Reset password" : "Berrezarri pasahitza", "Searching other places" : "Beste lekuak bilatzen", + "No search results in other folders" : "Ez da bilaketaren emaitzik lortu beste karpetatan", "Personal" : "Pertsonala", "Users" : "Erabiltzaileak", "Apps" : "Aplikazioak", @@ -174,6 +178,7 @@ "File: %s" : "Fitxategia: %s", "Line: %s" : "Lerroa: %s", "Trace" : "Arrastoa", + "Security warning" : "Segurtasun abisua", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Zure zerbitrzaria ongi konfiguratzeko, mezedez <a href=\"%s\" target=\"_blank\">dokumentazioa</a> ikusi.", "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat", @@ -189,6 +194,7 @@ "Database host" : "Datubasearen hostalaria", "Finish setup" : "Bukatu konfigurazioa", "Finishing …" : "Bukatzen...", + "Need help?" : "Laguntza behar al duzu?", "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>" : "Kaixo<br><br>%s-ek %s zurekin partekatu duela jakin dezazun.\nIkusi ezazu: %s", "Log out" : "Saioa bukatu", "Search" : "Bilatu", diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index 5291a0d1c2a..6c5aa67f2f3 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Päivitetty \"%s\" versioon %s", "Repair warning: " : "Korjausvaroitus:", "Repair error: " : "Korjausvirhe:", - "Set log level to debug - current level: \"%s\"" : "Aseta lokitasoksi vianjäljitys - nykyinen taso: \"%s\"", - "Reset log level to \"%s\"" : "Palauta lokitasoksi \"%s\"", + "Set log level to debug" : "Aseta lokitustasoksi vianetsintä", + "Reset log level" : "Nollaa lokitustaso", "Starting code integrity check" : "Aloitetaan koodin eheystarkistus", "Finished code integrity check" : "Koodin eheystarkistus suoritettu", "%s (3rdparty)" : "%s (kolmannen osapuolen)", @@ -114,12 +114,12 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "HTTP-palvelinta ei ole määritetty oikein tiedostojen synkronointia varten, koska WebDAV-liittymä vaikuttaa olevan rikki.", "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." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.", "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." : "Datahakemistosi ja tiedostosi ovat luultavasti käytettävissä suoraan internetistä. .htaccess-tiedosto ei toimi oikein. Suosittelemme määrittämään http-palvelimen asetukset siten, ettei datahakemisto ole suoraan käytettävissä internetistä, tai siirtämään datahakemiston http-palvelimen juurihakemiston ulkopuolelle.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Muistissa toimivaa cachea ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole luettavissa PHP:n toimesta. Turvallisuussyistä tämä ei ole suositeltava asetus. Lisätietoja on tarjolla <a href=\"{docLink}\">dokumentaatiossa</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Käytössäsi oleva PHP-versio ({version}) ei ole enää <a href=\"{phpLink}\">PHP:n tukema</a>. Päivitä PHP:n versio, jotta hyödyt suorituskykyyn ja tietoturvaan vaikuttavista päivityksistä.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakkaiden asetukset ovat väärin, tai vaihtoehtoisesti käytät ownCloudia luotetun välityspalvelimen kautta. Jos et käytä ownCloudia luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentää ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritelty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettuna. \\OC\\Memcache\\Memcached tukee vain \"memcached\":ia, ei \"memcache\":a. Lisätietoja <a href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a href=\"{docLink}\">dokumentaation kautta</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-versiosi ({version}) ei ole enää tuettu <a target=\"_blank\" href=\"{phpLink}\"> PHP:n toimesta</a>. Suosittelemme päivittämään PHP:n version, jotta hyödyt suorituskykyparannuksista sekä tietoturvakorjauksista.", + "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\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)", "Error occurred while checking server setup" : "Virhe palvelimen määrityksiä tarkistaessa", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-otsaketta \"{header}\" ei ole määritetty vastaamaan arvoa \"{expected}\". Kyseessä on mahdollinen tietoturvaan tai -suojaan liittyvä riski, joten suosittelemme muuttamaan asetuksen arvoa.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-otsaketta \"Strict-Transport-Security\" ei ole määritetty vähintään \"{seconds}\" sekuntiin. Suosittelemme HSTS:n käyttöä paremman tietoturvan vuoksi, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.", diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index b5312561062..f66767023da 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "Päivitetty \"%s\" versioon %s", "Repair warning: " : "Korjausvaroitus:", "Repair error: " : "Korjausvirhe:", - "Set log level to debug - current level: \"%s\"" : "Aseta lokitasoksi vianjäljitys - nykyinen taso: \"%s\"", - "Reset log level to \"%s\"" : "Palauta lokitasoksi \"%s\"", + "Set log level to debug" : "Aseta lokitustasoksi vianetsintä", + "Reset log level" : "Nollaa lokitustaso", "Starting code integrity check" : "Aloitetaan koodin eheystarkistus", "Finished code integrity check" : "Koodin eheystarkistus suoritettu", "%s (3rdparty)" : "%s (kolmannen osapuolen)", @@ -112,12 +112,12 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "HTTP-palvelinta ei ole määritetty oikein tiedostojen synkronointia varten, koska WebDAV-liittymä vaikuttaa olevan rikki.", "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." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.", "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." : "Datahakemistosi ja tiedostosi ovat luultavasti käytettävissä suoraan internetistä. .htaccess-tiedosto ei toimi oikein. Suosittelemme määrittämään http-palvelimen asetukset siten, ettei datahakemisto ole suoraan käytettävissä internetistä, tai siirtämään datahakemiston http-palvelimen juurihakemiston ulkopuolelle.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Muistissa toimivaa cachea ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole luettavissa PHP:n toimesta. Turvallisuussyistä tämä ei ole suositeltava asetus. Lisätietoja on tarjolla <a href=\"{docLink}\">dokumentaatiossa</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Käytössäsi oleva PHP-versio ({version}) ei ole enää <a href=\"{phpLink}\">PHP:n tukema</a>. Päivitä PHP:n versio, jotta hyödyt suorituskykyyn ja tietoturvaan vaikuttavista päivityksistä.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakkaiden asetukset ovat väärin, tai vaihtoehtoisesti käytät ownCloudia luotetun välityspalvelimen kautta. Jos et käytä ownCloudia luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentää ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a href=\"{docLink}\">dokumentaatiosta</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritelty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettuna. \\OC\\Memcache\\Memcached tukee vain \"memcached\":ia, ei \"memcache\":a. Lisätietoja <a href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a href=\"{docLink}\">dokumentaation kautta</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP-versiosi ({version}) ei ole enää tuettu <a target=\"_blank\" href=\"{phpLink}\"> PHP:n toimesta</a>. Suosittelemme päivittämään PHP:n version, jotta hyödyt suorituskykyparannuksista sekä tietoturvakorjauksista.", + "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\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)", "Error occurred while checking server setup" : "Virhe palvelimen määrityksiä tarkistaessa", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-otsaketta \"{header}\" ei ole määritetty vastaamaan arvoa \"{expected}\". Kyseessä on mahdollinen tietoturvaan tai -suojaan liittyvä riski, joten suosittelemme muuttamaan asetuksen arvoa.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP-otsaketta \"Strict-Transport-Security\" ei ole määritetty vähintään \"{seconds}\" sekuntiin. Suosittelemme HSTS:n käyttöä paremman tietoturvan vuoksi, kuten <a href=\"{docUrl}\">tietoturvavinkeissä</a> neuvotaan.", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index f845185c525..664de561da0 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Repair warning: " : "Avertissement de réparation :", "Repair error: " : "Erreur de réparation :", - "Set log level to debug - current level: \"%s\"" : "Réglage du niveau de log à \"debug\" - niveau actuel: \"%s\"", - "Reset log level to \"%s\"" : "Réglage du niveau de log à \"%s\"", + "Set log level to debug" : "Changer le niveau de journalisation pour le débogage", + "Reset log level" : "Réinitialiser le niveau de journalisation", "Starting code integrity check" : "Lancement de la vérification d'integrite du code", "Finished code integrity check" : "Fin de la vérification d’intégrité du code", "%s (3rdparty)" : "%s (origine tierce)", @@ -114,12 +114,12 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour la synchronisation de fichiers : l'interface WebDAV semble ne pas fonctionner.", "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." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "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." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a href=\"{docLink}\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a href=\"{docLink}\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a href=\"{docLink}\">Plus d'info dans la documentation.</a>", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a href=\"{wikiLink}\">Consulter le wiki memcached parlant de ces deux modules.</a>", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas réussi à passer la vérification d’intégrité. Plus d'information sur comment résoudre ce problème dans notre <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a target=\"_blank\" href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a target=\"_blank\" href=\"{docLink}\">Plus d'info dans la documentation.</a>", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a target=\"_blank\" href=\"{wikiLink}\">Consulter le wiki memcached parlant de ces deux 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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas réussi à passer la vérification d’intégrité. Plus d'information sur comment résoudre ce problème dans notre <a href=\"{docLink}\">documentation</a>. (<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d'ajuster ce paramètre.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans notre <a href=\"{docUrl}\">Guide pour le renforcement et la sécurité</a>.", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 070e03a9587..a99b4c1cd77 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Repair warning: " : "Avertissement de réparation :", "Repair error: " : "Erreur de réparation :", - "Set log level to debug - current level: \"%s\"" : "Réglage du niveau de log à \"debug\" - niveau actuel: \"%s\"", - "Reset log level to \"%s\"" : "Réglage du niveau de log à \"%s\"", + "Set log level to debug" : "Changer le niveau de journalisation pour le débogage", + "Reset log level" : "Réinitialiser le niveau de journalisation", "Starting code integrity check" : "Lancement de la vérification d'integrite du code", "Finished code integrity check" : "Fin de la vérification d’intégrité du code", "%s (3rdparty)" : "%s (origine tierce)", @@ -112,12 +112,12 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour la synchronisation de fichiers : l'interface WebDAV semble ne pas fonctionner.", "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." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "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." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a href=\"{docLink}\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a href=\"{docLink}\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a href=\"{docLink}\">Plus d'info dans la documentation.</a>", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a href=\"{wikiLink}\">Consulter le wiki memcached parlant de ces deux modules.</a>", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas réussi à passer la vérification d’intégrité. Plus d'information sur comment résoudre ce problème dans notre <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a target=\"_blank\" href=\"{docLink}\">documentation</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a target=\"_blank\" href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a target=\"_blank\" href=\"{docLink}\">Plus d'info dans la documentation.</a>", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" est configuré comme cache distribué, mais le module installé est \"memcache\". \\OC\\Memcache\\Memcached ne prend en charge que \"memcached\" et non \"memcache\". <a target=\"_blank\" href=\"{wikiLink}\">Consulter le wiki memcached parlant de ces deux 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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Des fichiers n'ont pas réussi à passer la vérification d’intégrité. Plus d'information sur comment résoudre ce problème dans notre <a href=\"{docLink}\">documentation</a>. (<a target=\"_blank\" href=\"{codeIntegrityDownloadEndpoint}\">Liste des fichiers invalides…</a> / <a href=\"{rescanEndpoint}\">Relancer…</a>)", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d'ajuster ce paramètre.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans notre <a href=\"{docUrl}\">Guide pour le renforcement et la sécurité</a>.", diff --git a/core/l10n/gl.js b/core/l10n/gl.js index eaef574eef3..d0a5468a235 100644 --- a/core/l10n/gl.js +++ b/core/l10n/gl.js @@ -100,8 +100,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "O servidor aínda non está configurado correctamente para permitir a sincronización de ficheiros, semella que a interface WebDAV non está a funcionar.", "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." : "Este servidor non ten conexión activa a Internet. Isto significa que algunhas características como a montaxe do almacenamento externo, as notificacións sobre actualizacións ou a instalación de engadidos de terceiros non funcionarán. Así mesmo, o acceso remoto a ficheiros e enviar correos de notificación poderían non funcionar. Suxerímoslle que active a conexión a Internet para este servidor se quere ter todos estes servizos.", "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." : "O directorio de datos e os seus ficheiros probabelmente son accesíbeis desde a Internet. O ficheiro .htaccess non funciona. Recomendámoslle que configure o seu servidor web de xeito que o directorio de datos non sexa accesíbel ou que mova o directorio de datos fora do directorio root do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Non foi configurada a memoria cache. Para mellorar o rendemento configure unha «memcache», se está dispoñíbel. Pode atopar máis información na nosa <a href=\"{docLink}\">documentación</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom non é lexíbel por PHP xa que esta absolutamente desaconsellado por razóns de seguridade. Pode atopar máis información na nosa <a href=\"{docLink}\">documentación</a>.", "Error occurred while checking server setup" : "Aconteceu un erro mentras se comprobaba a configuración do servidor", "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." : "A cabeceira HTTP «{header}» non está configurada como igual a «{expected}». Isto é un posíbel risco para a seguridade ou a intimidade, recomendámoslle que axuste esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A cabeceira HTTP «Strict-Transport-Security» non está configurada para menos de «{seconds}» segundos . Para mellorar a seguridade, recomendámoslle que active o uso de HTTPS, tal e como se describe nos <a href=\"{docUrl}\">consellos de seguridade</a>.", diff --git a/core/l10n/gl.json b/core/l10n/gl.json index f72db710e89..823b08c4d14 100644 --- a/core/l10n/gl.json +++ b/core/l10n/gl.json @@ -98,8 +98,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "O servidor aínda non está configurado correctamente para permitir a sincronización de ficheiros, semella que a interface WebDAV non está a funcionar.", "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." : "Este servidor non ten conexión activa a Internet. Isto significa que algunhas características como a montaxe do almacenamento externo, as notificacións sobre actualizacións ou a instalación de engadidos de terceiros non funcionarán. Así mesmo, o acceso remoto a ficheiros e enviar correos de notificación poderían non funcionar. Suxerímoslle que active a conexión a Internet para este servidor se quere ter todos estes servizos.", "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." : "O directorio de datos e os seus ficheiros probabelmente son accesíbeis desde a Internet. O ficheiro .htaccess non funciona. Recomendámoslle que configure o seu servidor web de xeito que o directorio de datos non sexa accesíbel ou que mova o directorio de datos fora do directorio root do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Non foi configurada a memoria cache. Para mellorar o rendemento configure unha «memcache», se está dispoñíbel. Pode atopar máis información na nosa <a href=\"{docLink}\">documentación</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom non é lexíbel por PHP xa que esta absolutamente desaconsellado por razóns de seguridade. Pode atopar máis información na nosa <a href=\"{docLink}\">documentación</a>.", "Error occurred while checking server setup" : "Aconteceu un erro mentras se comprobaba a configuración do servidor", "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." : "A cabeceira HTTP «{header}» non está configurada como igual a «{expected}». Isto é un posíbel risco para a seguridade ou a intimidade, recomendámoslle que axuste esta opción.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A cabeceira HTTP «Strict-Transport-Security» non está configurada para menos de «{seconds}» segundos . Para mellorar a seguridade, recomendámoslle que active o uso de HTTPS, tal e como se describe nos <a href=\"{docUrl}\">consellos de seguridade</a>.", diff --git a/core/l10n/he.js b/core/l10n/he.js index d66e67605f0..4c413f75704 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -1,6 +1,13 @@ OC.L10N.register( "core", { + "Preparing update" : "מכין עדכון", + "Updated database" : "עדכון מסד נתונים", + "Updated \"%s\" to %s" : "מעדכן \"%s\" ל- %s", + "Already up to date" : "כבר עדכני", + "File is too big" : "הקובץ גדול מדי", + "Unknown filetype" : "סוג קובץ לא מוכר", + "Invalid image" : "תמונה לא חוקית", "Sunday" : "יום ראשון", "Monday" : "יום שני", "Tuesday" : "יום שלישי", @@ -46,39 +53,65 @@ OC.L10N.register( "Yes" : "כן", "Choose" : "בחירה", "Ok" : "בסדר", + "read-only" : "לקריאה בלבד", "New Files" : "קבצים חדשים", "Cancel" : "ביטול", + "Continue" : "המשך", + "(all selected)" : "(הכול נבחר)", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", "Shared" : "שותף", "Error" : "שגיאה", "Error while sharing" : "שגיאה במהלך השיתוף", "Error while unsharing" : "שגיאה במהלך ביטול השיתוף", "Error while changing permissions" : "שגיאה במהלך שינוי ההגדרות", "Error setting expiration date" : "אירעה שגיאה בעת הגדרת תאריך התפוגה", + "The public link will expire no later than {days} days after it is created" : "הקישור הציבורי יפוג עד {days} ימים לאחר שנוצר", "Set expiration date" : "הגדרת תאריך תפוגה", + "Expiration" : "תפוגה", "Expiration date" : "תאריך התפוגה", + "Choose a password for the public link" : "בחירת סיסמא לקישור ציבורי", "Sending ..." : "מתבצעת שליחה ...", "Email sent" : "הודעת הדוא״ל נשלחה", "Resharing is not allowed" : "אסור לעשות שיתוף מחדש", "Share link" : "קישור לשיתוף", + "Link" : "קישור", "Password protect" : "הגנה בססמה", "Password" : "סיסמא", + "Allow editing" : "אישור עריכה", "Email link to person" : "שליחת קישור בדוא״ל למשתמש", "Send" : "שליחה", "Shared with you and the group {group} by {owner}" : "שותף אתך ועם הקבוצה {group} שבבעלות {owner}", "Shared with you by {owner}" : "שותף אתך על ידי {owner}", "Shared in {item} with {user}" : "שותף תחת {item} עם {user}", "group" : "קבוצה", + "remote" : "נשלט מרחוק", + "notify by email" : "קבלת הודעה בדואר אלקטרוני", "Unshare" : "הסר שיתוף", "can share" : "ניתן לשתף", "can edit" : "ניתן לערוך", "create" : "יצירה", + "change" : "שינוי", "delete" : "מחיקה", "access control" : "בקרת גישה", + "An error occured. Please try again" : "אירעה שגיאה. יש לנסות בבקשה שוב", "Share" : "שתף", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "ניתן לשתף עם אנשים אחרים המשתמשים ב- ownClouds בעזרת הפורמט הבא username@example.com/owncloud", + "Share with users or groups …" : "שיתוף עם משתמשים או קבוצות...", + "Share with users, groups or remote users …" : "שיתוף עם משתמשים, קבוצות או משתמשים חצוניים...", "Warning" : "אזהרה", "The object type is not specified." : "סוג הפריט לא צוין.", + "Enter new" : "הכנסת חדש", "Delete" : "מחיקה", "Add" : "הוספה", + "unknown text" : "מלל לא מוכר", + "Hello world!" : "שלום עולם!", + "sunny" : "שמשי", + "Hello {name}, the weather is {weather}" : "שלום {name}, מזג האוויר הנו {weather}", + "Hello {name}" : "שלום {name}", "The update was successful. Redirecting you to ownCloud now." : "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.", "Use the following link to reset your password: {link}" : "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", "New password" : "ססמה חדשה", @@ -89,6 +122,7 @@ OC.L10N.register( "Admin" : "מנהל", "Help" : "עזרה", "Access forbidden" : "הגישה נחסמה", + "Cheers!" : "לחיים!", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", "Create an <strong>admin account</strong>" : "יצירת <strong>חשבון מנהל</strong>", "Username" : "שם משתמש", @@ -100,9 +134,14 @@ OC.L10N.register( "Database tablespace" : "מרחב הכתובות של מסד הנתונים", "Database host" : "שרת בסיס נתונים", "Finish setup" : "סיום התקנה", + "Need help?" : "עזרה נזקקת?", "Log out" : "התנתקות", "Search" : "חיפוש", "Log in" : "כניסה", - "Alternative Logins" : "כניסות אלטרנטיביות" + "Wrong password." : "סיסמא שגוייה.", + "Stay logged in" : "השאר מחובר", + "Alternative Logins" : "כניסות אלטרנטיביות", + "Thank you for your patience." : "תודה על הסבלנות.", + "Start update" : "התחלת עדכון" }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/he.json b/core/l10n/he.json index 02c333c21d1..26eeaaac14f 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -1,4 +1,11 @@ { "translations": { + "Preparing update" : "מכין עדכון", + "Updated database" : "עדכון מסד נתונים", + "Updated \"%s\" to %s" : "מעדכן \"%s\" ל- %s", + "Already up to date" : "כבר עדכני", + "File is too big" : "הקובץ גדול מדי", + "Unknown filetype" : "סוג קובץ לא מוכר", + "Invalid image" : "תמונה לא חוקית", "Sunday" : "יום ראשון", "Monday" : "יום שני", "Tuesday" : "יום שלישי", @@ -44,39 +51,65 @@ "Yes" : "כן", "Choose" : "בחירה", "Ok" : "בסדר", + "read-only" : "לקריאה בלבד", "New Files" : "קבצים חדשים", "Cancel" : "ביטול", + "Continue" : "המשך", + "(all selected)" : "(הכול נבחר)", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", "Shared" : "שותף", "Error" : "שגיאה", "Error while sharing" : "שגיאה במהלך השיתוף", "Error while unsharing" : "שגיאה במהלך ביטול השיתוף", "Error while changing permissions" : "שגיאה במהלך שינוי ההגדרות", "Error setting expiration date" : "אירעה שגיאה בעת הגדרת תאריך התפוגה", + "The public link will expire no later than {days} days after it is created" : "הקישור הציבורי יפוג עד {days} ימים לאחר שנוצר", "Set expiration date" : "הגדרת תאריך תפוגה", + "Expiration" : "תפוגה", "Expiration date" : "תאריך התפוגה", + "Choose a password for the public link" : "בחירת סיסמא לקישור ציבורי", "Sending ..." : "מתבצעת שליחה ...", "Email sent" : "הודעת הדוא״ל נשלחה", "Resharing is not allowed" : "אסור לעשות שיתוף מחדש", "Share link" : "קישור לשיתוף", + "Link" : "קישור", "Password protect" : "הגנה בססמה", "Password" : "סיסמא", + "Allow editing" : "אישור עריכה", "Email link to person" : "שליחת קישור בדוא״ל למשתמש", "Send" : "שליחה", "Shared with you and the group {group} by {owner}" : "שותף אתך ועם הקבוצה {group} שבבעלות {owner}", "Shared with you by {owner}" : "שותף אתך על ידי {owner}", "Shared in {item} with {user}" : "שותף תחת {item} עם {user}", "group" : "קבוצה", + "remote" : "נשלט מרחוק", + "notify by email" : "קבלת הודעה בדואר אלקטרוני", "Unshare" : "הסר שיתוף", "can share" : "ניתן לשתף", "can edit" : "ניתן לערוך", "create" : "יצירה", + "change" : "שינוי", "delete" : "מחיקה", "access control" : "בקרת גישה", + "An error occured. Please try again" : "אירעה שגיאה. יש לנסות בבקשה שוב", "Share" : "שתף", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "ניתן לשתף עם אנשים אחרים המשתמשים ב- ownClouds בעזרת הפורמט הבא username@example.com/owncloud", + "Share with users or groups …" : "שיתוף עם משתמשים או קבוצות...", + "Share with users, groups or remote users …" : "שיתוף עם משתמשים, קבוצות או משתמשים חצוניים...", "Warning" : "אזהרה", "The object type is not specified." : "סוג הפריט לא צוין.", + "Enter new" : "הכנסת חדש", "Delete" : "מחיקה", "Add" : "הוספה", + "unknown text" : "מלל לא מוכר", + "Hello world!" : "שלום עולם!", + "sunny" : "שמשי", + "Hello {name}, the weather is {weather}" : "שלום {name}, מזג האוויר הנו {weather}", + "Hello {name}" : "שלום {name}", "The update was successful. Redirecting you to ownCloud now." : "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.", "Use the following link to reset your password: {link}" : "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", "New password" : "ססמה חדשה", @@ -87,6 +120,7 @@ "Admin" : "מנהל", "Help" : "עזרה", "Access forbidden" : "הגישה נחסמה", + "Cheers!" : "לחיים!", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", "Create an <strong>admin account</strong>" : "יצירת <strong>חשבון מנהל</strong>", "Username" : "שם משתמש", @@ -98,9 +132,14 @@ "Database tablespace" : "מרחב הכתובות של מסד הנתונים", "Database host" : "שרת בסיס נתונים", "Finish setup" : "סיום התקנה", + "Need help?" : "עזרה נזקקת?", "Log out" : "התנתקות", "Search" : "חיפוש", "Log in" : "כניסה", - "Alternative Logins" : "כניסות אלטרנטיביות" + "Wrong password." : "סיסמא שגוייה.", + "Stay logged in" : "השאר מחובר", + "Alternative Logins" : "כניסות אלטרנטיביות", + "Thank you for your patience." : "תודה על הסבלנות.", + "Start update" : "התחלת עדכון" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js index a9b84b6bcf9..c69087ed82b 100644 --- a/core/l10n/hu_HU.js +++ b/core/l10n/hu_HU.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Frissítettük \"%s\"-t erre: %s", "Repair warning: " : "Javítás figyelmeztetés:", "Repair error: " : "Javítás hiba:", - "Set log level to debug - current level: \"%s\"" : "Hibakeresési naplózási szint beállítása - jelenlegi szint: \"%s\"", - "Reset log level to \"%s\"" : "Naplózási szint visszaállítása \"%s\"-re", "%s (3rdparty)" : "%s (harmadik fél által)", "%s (incompatible)" : "%s (nem kompatibilis)", "Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s", @@ -111,11 +109,8 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "A webszerver nincs megfelelően beállítva a fájl szinkronizációhoz, mert a WebDAV interfész nem működik.", "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." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány tulajdonság, mint pl. külső tárolók felcsatolása, frissítési értesítések, vagy egyéb applikációk nem működnek. A fájlok távoli elérése és az email értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden tulajdonságot használni akar.", "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." : "Az adat könyvtára és a fáljai valószínűleg elérhetőek az internetről. A .htaccess fájl nem működik. Erősen ajánlott, hogy úgy állítsa be a webszerverét, hogy az adatkönyvtár ne legyen elérhető az internetről, vagy mogassa ki az adatokat a webszerver gyökérkönyvtárából.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nem lett gyorsítótár memória beállítva. A teljesítmény növeléséhez kérem állítson be gyorsítótárat, ha lehetséges. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "a /dev/urandom eszköz nem elérhető PHP-ből, ami nagyon nagy biztonsági problémát jelent. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) már nem <a href=\"{phpLink}\">támogatott a PHP által</a>. Javasoljuk, hogy frissítsd a PHP verziót, hogy kihasználd a teljesítménybeli és biztonsági javításokat.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. További információ található a <a href=\"{docLink}\">dokumentációban</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézd meg a <a href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt találhatsz a <a target=\"_blank\" href=\"{docLink}\">dokumentációban</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) többé nem támogatott a <a target=\"_blank\" href=\"{phpLink}\">PHP által</a>. Azt javasoljuk, hogy frissítsd a PHP verziód, hogy kitud használni a teljesítménybeli és biztonsági javításokat.", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "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." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági kockázat és kérjük, hogy változtassa meg a beállításokat.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban.", @@ -187,6 +182,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Nem lehet a jelszót törölni, mert a token érvénytelen.", "Couldn't reset password because the token is expired" : "Nem lehet a jelszót törölni, mert a token lejárt.", "Couldn't send reset email. Please make sure your username is correct." : "Visszaállítási e-mail nem küldhető. Kérjük, lépjen kapcsolatba a rendszergazdával. ", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nem tudtunk visszaállítási e-mailt küldeni, mert ehhez a felhasználóhoz nem tartozik e-mail cím. Kérjük, vedd fel a kapcsolatot a rendszergazdáddal!", "%s password reset" : "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}", "New password" : "Az új jelszó", @@ -261,6 +257,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.", "Log in" : "Bejelentkezés", "Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?", + "Wrong password." : "Rossz jelszó.", "Stay logged in" : "Maradjon bejelentkezve", "Alternative Logins" : "Alternatív bejelentkezés", "This ownCloud instance is currently in single user mode." : "Ez az ownCloud szolgáltatás jelenleg egyfelhasználós üzemmódban működik.", diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json index 991851b5beb..f3468817d44 100644 --- a/core/l10n/hu_HU.json +++ b/core/l10n/hu_HU.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Frissítettük \"%s\"-t erre: %s", "Repair warning: " : "Javítás figyelmeztetés:", "Repair error: " : "Javítás hiba:", - "Set log level to debug - current level: \"%s\"" : "Hibakeresési naplózási szint beállítása - jelenlegi szint: \"%s\"", - "Reset log level to \"%s\"" : "Naplózási szint visszaállítása \"%s\"-re", "%s (3rdparty)" : "%s (harmadik fél által)", "%s (incompatible)" : "%s (nem kompatibilis)", "Following apps have been disabled: %s" : "A következő applikációk lettek tiltva: %s", @@ -109,11 +107,8 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "A webszerver nincs megfelelően beállítva a fájl szinkronizációhoz, mert a WebDAV interfész nem működik.", "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." : "Ennek a szervernek nincs működő internet kapcsolata. Ez azt jelenti, hogy néhány tulajdonság, mint pl. külső tárolók felcsatolása, frissítési értesítések, vagy egyéb applikációk nem működnek. A fájlok távoli elérése és az email értesítések is lehet, hogy nem működnek. Ajánlott az internet kapcsolat engedélyezése a szerveren, ha minden tulajdonságot használni akar.", "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." : "Az adat könyvtára és a fáljai valószínűleg elérhetőek az internetről. A .htaccess fájl nem működik. Erősen ajánlott, hogy úgy állítsa be a webszerverét, hogy az adatkönyvtár ne legyen elérhető az internetről, vagy mogassa ki az adatokat a webszerver gyökérkönyvtárából.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nem lett gyorsítótár memória beállítva. A teljesítmény növeléséhez kérem állítson be gyorsítótárat, ha lehetséges. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "a /dev/urandom eszköz nem elérhető PHP-ből, ami nagyon nagy biztonsági problémát jelent. További információ található az alábbi <a href=\"{docLink}\">dokumentációban</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) már nem <a href=\"{phpLink}\">támogatott a PHP által</a>. Javasoljuk, hogy frissítsd a PHP verziót, hogy kihasználd a teljesítménybeli és biztonsági javításokat.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "A fordított proxy fejlécek konfigurációs beállításai helytelenek, vagy egy megbízható proxy-ból próbálja az ownCloud-ot elérni. Ha nem megbízható proxy-ból próbálja elérni az ownCloud-ot, akkor ez egy biztonsági probléma, a támadó az ownCloud számára látható IP cím csalást tud végrehajtani. További információ található a <a href=\"{docLink}\">dokumentációban</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached be van konfigurálva gyorsítótárnak, de rossz \"memcache\" PHP modul van telepítve. \\OC\\Memcache\\Memcached csak a \"memcached\"-t támogatja, és nem a \"memcache\"-t. Kérjük, nézd meg a <a href=\"{wikiLink}\">memcached wiki oldalt a modulokkal kapcsolatban</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom nem olvasható a PHP számára, mely nagy biztonsági probléma. Bővebb információt találhatsz a <a target=\"_blank\" href=\"{docLink}\">dokumentációban</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A PHP verziód ({version}) többé nem támogatott a <a target=\"_blank\" href=\"{phpLink}\">PHP által</a>. Azt javasoljuk, hogy frissítsd a PHP verziód, hogy kitud használni a teljesítménybeli és biztonsági javításokat.", "Error occurred while checking server setup" : "Hiba történt a szerver beállítások ellenőrzése közben", "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." : "A \"{header}\" HTTP fejléc nincs beállítva, hogy megegyezzen az elvárttal \"{expected}\". Ez egy potenciális biztonsági kockázat és kérjük, hogy változtassa meg a beállításokat.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "A \"Strict-Transport-Security\" HTTP fejléc nincs beállítva hogy \"{seconds}\" másodpercig tartson. Biztonsági okokból ajánljuk, hogy engedélyezze a HSTS, ahogyan ezt részletezzük a <a href=\"{docUrl}\">biztonsági tippek</a> dokumentációban.", @@ -185,6 +180,7 @@ "Couldn't reset password because the token is invalid" : "Nem lehet a jelszót törölni, mert a token érvénytelen.", "Couldn't reset password because the token is expired" : "Nem lehet a jelszót törölni, mert a token lejárt.", "Couldn't send reset email. Please make sure your username is correct." : "Visszaállítási e-mail nem küldhető. Kérjük, lépjen kapcsolatba a rendszergazdával. ", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nem tudtunk visszaállítási e-mailt küldeni, mert ehhez a felhasználóhoz nem tartozik e-mail cím. Kérjük, vedd fel a kapcsolatot a rendszergazdáddal!", "%s password reset" : "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}", "New password" : "Az új jelszó", @@ -259,6 +255,7 @@ "Please try again or contact your administrator." : "Kérem próbálja újra, vagy vegye fel a kapcsolatot a rendszergazdával.", "Log in" : "Bejelentkezés", "Wrong password. Reset it?" : "Hibás jelszó. Visszaállítja?", + "Wrong password." : "Rossz jelszó.", "Stay logged in" : "Maradjon bejelentkezve", "Alternative Logins" : "Alternatív bejelentkezés", "This ownCloud instance is currently in single user mode." : "Ez az ownCloud szolgáltatás jelenleg egyfelhasználós üzemmódban működik.", diff --git a/core/l10n/id.js b/core/l10n/id.js index fb0fb7f4330..b0efff2b1ef 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Terbaru \"%s\" sampai %s", "Repair warning: " : "Peringatan perbaikan:", "Repair error: " : "Kesalahan perbaikan:", - "Set log level to debug - current level: \"%s\"" : "Atur level log untuk debug - level saat ini: \"%s\"", - "Reset log level to \"%s\"" : "Atur ulang level log menjadi \"%s\"", "%s (3rdparty)" : "%s (pihak ke-3)", "%s (incompatible)" : "%s (tidak kompatibel)", "Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Server web Anda belum diatur dengan benar untuk mengizinkan sinkronisasi berkas karena antarmuka WebDAV nampaknya rusak.", "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." : "Server ini tidak tersambung ke internet. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.", "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." : "Direktori data dan berkas Anda kemungkinan dapat diakses dari Internet. Berkas .htaccess tidak bekerja. Kami sangat menyarankan Anda untuk mengkonfigurasi server web agar direktori data tidak lagi dapat diakses atau pindahkan direktori data Anda di luar root dokumen server web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Tembolok memori tidak dikonfigurasi. Untuk meningkatkan kinerja, mohon konfigurasi memcache jika tersedia. Informasi lebih lanjut dapat ditemukan di <a href=\"{docLink}\">dokumentasi</a> kami.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom tidak terbaca oleh PHP sangat disarankan untuk alasan keamanan. Informasi lebih lanjut dapat ditemukan di <a href=\"{docLink}\">dokumentasi</a> kami.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versi PHP Anda ({version}) tidak lagi <a href=\"{phpLink}\">didukung oleh PHP</a>. Kami menyarankan Anda untuk meningkatkan versi PHP Anda agar mendapatkan keuntungan pembaruan kinerja dan keamanan yang disediakan oleh PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasi header reverse proxy tidak benar atau Anda mengakses ownCloud dari proxy yang tidak terpercaya. Jika Anda tidak mengakses ownCloud dari proxy yang terpercaya, ini merupakan masalah keamanan dan memungkinkan peretas dapat memalsukan alamat IP mereka yang terlihat pada ownCloud. Informasi lebih lanjut dapat ditemukan pada <a href=\"{docLink}\">dokumentasi</a> kami.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached diatur sebagai cache terdistribusi, namun modul PHP \"memcache\" yang dipasang salah. \\OC\\Memcache\\Memcached hanya mendukung \"memcached\" bukan \"memcache\". Lihat <a href=\"{wikiLink}\">wiki memcached tentang kedua modul</a>.", "Error occurred while checking server setup" : "Kesalahan tidak terduga saat memeriksa setelan server", "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 \"{header}\" tidak dikonfigurasi sama dengan \"{expected}\". Hal ini berpotensi pada resiko keamanan dan privasi. Kami sarankan untuk menyesuaikan pengaturan ini.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" tidak diatur kurang dari \"{seconds}\" detik. Untuk peningkatan keamanan, kami menyarankan untuk mengaktifkan HSTS seperti yang dijelaskan di <a href=\"{docUrl}\">tips keamanan</a>.", diff --git a/core/l10n/id.json b/core/l10n/id.json index 2edd1f8b362..0ee6a256d42 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Terbaru \"%s\" sampai %s", "Repair warning: " : "Peringatan perbaikan:", "Repair error: " : "Kesalahan perbaikan:", - "Set log level to debug - current level: \"%s\"" : "Atur level log untuk debug - level saat ini: \"%s\"", - "Reset log level to \"%s\"" : "Atur ulang level log menjadi \"%s\"", "%s (3rdparty)" : "%s (pihak ke-3)", "%s (incompatible)" : "%s (tidak kompatibel)", "Following apps have been disabled: %s" : "Aplikasi berikut telah dinonaktifkan: %s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Server web Anda belum diatur dengan benar untuk mengizinkan sinkronisasi berkas karena antarmuka WebDAV nampaknya rusak.", "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." : "Server ini tidak tersambung ke internet. Ini berarti beberapa fitur seperti me-mount penyimpanan eksternal, notifikasi pembaruan atau instalasi aplikasi pihak ketiga tidak akan bekerja. Mengakses berkas secara remote dan mengirim notifikasi email juga tidak bekerja. Kami menyarankan untuk mengaktifkan koneksi internet untuk server ini jika Anda ingin memiliki fitur ini.", "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." : "Direktori data dan berkas Anda kemungkinan dapat diakses dari Internet. Berkas .htaccess tidak bekerja. Kami sangat menyarankan Anda untuk mengkonfigurasi server web agar direktori data tidak lagi dapat diakses atau pindahkan direktori data Anda di luar root dokumen server web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Tembolok memori tidak dikonfigurasi. Untuk meningkatkan kinerja, mohon konfigurasi memcache jika tersedia. Informasi lebih lanjut dapat ditemukan di <a href=\"{docLink}\">dokumentasi</a> kami.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom tidak terbaca oleh PHP sangat disarankan untuk alasan keamanan. Informasi lebih lanjut dapat ditemukan di <a href=\"{docLink}\">dokumentasi</a> kami.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versi PHP Anda ({version}) tidak lagi <a href=\"{phpLink}\">didukung oleh PHP</a>. Kami menyarankan Anda untuk meningkatkan versi PHP Anda agar mendapatkan keuntungan pembaruan kinerja dan keamanan yang disediakan oleh PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasi header reverse proxy tidak benar atau Anda mengakses ownCloud dari proxy yang tidak terpercaya. Jika Anda tidak mengakses ownCloud dari proxy yang terpercaya, ini merupakan masalah keamanan dan memungkinkan peretas dapat memalsukan alamat IP mereka yang terlihat pada ownCloud. Informasi lebih lanjut dapat ditemukan pada <a href=\"{docLink}\">dokumentasi</a> kami.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached diatur sebagai cache terdistribusi, namun modul PHP \"memcache\" yang dipasang salah. \\OC\\Memcache\\Memcached hanya mendukung \"memcached\" bukan \"memcache\". Lihat <a href=\"{wikiLink}\">wiki memcached tentang kedua modul</a>.", "Error occurred while checking server setup" : "Kesalahan tidak terduga saat memeriksa setelan server", "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 \"{header}\" tidak dikonfigurasi sama dengan \"{expected}\". Hal ini berpotensi pada resiko keamanan dan privasi. Kami sarankan untuk menyesuaikan pengaturan ini.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" tidak diatur kurang dari \"{seconds}\" detik. Untuk peningkatan keamanan, kami menyarankan untuk mengaktifkan HSTS seperti yang dijelaskan di <a href=\"{docUrl}\">tips keamanan</a>.", diff --git a/core/l10n/is.js b/core/l10n/is.js index 47f52e49d02..f965ef064a9 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -102,10 +102,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Vefþjónninn er ekki enn sett upp á réttan hátt til að leyfa skráar samstillingu því WebDAV viðmótið virðist vera brotinn.", "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." : "Þessi miðlari hefur ekki virka nettengingu. Þetta þýðir að sumir eginleikar eins og virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á foritum þriðja aðila mun ekki virka. Fjar aðgangur af skrám og senda tilkynningar í tölvupósti vika líklega ekki heldur. Við leggjum til að virkja internet tengingu fyrir þennan vefþjóni ef þú vilt hafa alla eiginleika.", "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." : "Gagnamappa og skrá eru líklega aðgengilegar af internetinu vegna þess að .htaccess skrá er ekki virk. Við mælum eindregið með að þú stillir vefþjón þinn á þann hátt að gagnamappa er ekki lengur aðgengileg eða þú færir gagnamöppu út fyrir rót vefþjóns.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ekkert skyndiminni hefur verið stillt. Til að auka afköst skaltu stilla skyndiminni ef í boði. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom er ekki læsileg af PHP, Sterklega er mælt með því að leyfa PHP að lesa /dev/urandom af öryggisástæðum. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP útgáfan þín ({version}) er ekki lengur <a href=\\\"{phpLink}\\\">supported by PHP</a>. Við hvetjum þig til að uppfæra PHP útgáfuna til að nýta afkasta og öryggis nýjungar hjá PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Gagnstæður proxy haus stilling er röng, eða þú ert að tengjast ownCloud frá traustum proxy. Ef þú ert ekki að tengjast ownCloud frá traustum proxy, þetta er öryggismál og getur leyft árásir að skopstæling IP tölu þeirra sem sýnilega ownCloud. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", "Error occurred while checking server setup" : "Villa kom upp við athugun á uppsetingu miðlara", "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 haus er ekki stilltur til jafns við \\\"{expected}\\\". Þetta er mögulegur öryggis eða næðis áhætta, við mælum með því að aðlaga þessa stillingu.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\\\"Strangt-Transport-Security\\\" HTTP haus er ekki stilltur á minst \\\"{seconds}\\\" sekúndur. Fyrir aukið öryggi mælum við með því að virkja HSTS eins og lýst er í <a href=\\\"{docUrl}\\\">security tips</a>.", diff --git a/core/l10n/is.json b/core/l10n/is.json index 04f1af7ab63..4e80bb75204 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -100,10 +100,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Vefþjónninn er ekki enn sett upp á réttan hátt til að leyfa skráar samstillingu því WebDAV viðmótið virðist vera brotinn.", "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." : "Þessi miðlari hefur ekki virka nettengingu. Þetta þýðir að sumir eginleikar eins og virkja ytri gagnageymslu, tilkynningar um uppfærslur eða uppsetningu á foritum þriðja aðila mun ekki virka. Fjar aðgangur af skrám og senda tilkynningar í tölvupósti vika líklega ekki heldur. Við leggjum til að virkja internet tengingu fyrir þennan vefþjóni ef þú vilt hafa alla eiginleika.", "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." : "Gagnamappa og skrá eru líklega aðgengilegar af internetinu vegna þess að .htaccess skrá er ekki virk. Við mælum eindregið með að þú stillir vefþjón þinn á þann hátt að gagnamappa er ekki lengur aðgengileg eða þú færir gagnamöppu út fyrir rót vefþjóns.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ekkert skyndiminni hefur verið stillt. Til að auka afköst skaltu stilla skyndiminni ef í boði. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom er ekki læsileg af PHP, Sterklega er mælt með því að leyfa PHP að lesa /dev/urandom af öryggisástæðum. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP útgáfan þín ({version}) er ekki lengur <a href=\\\"{phpLink}\\\">supported by PHP</a>. Við hvetjum þig til að uppfæra PHP útgáfuna til að nýta afkasta og öryggis nýjungar hjá PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Gagnstæður proxy haus stilling er röng, eða þú ert að tengjast ownCloud frá traustum proxy. Ef þú ert ekki að tengjast ownCloud frá traustum proxy, þetta er öryggismál og getur leyft árásir að skopstæling IP tölu þeirra sem sýnilega ownCloud. Nánari upplýsingar má finna á <a href=\\\"{docLink}\\\">documentation</a>.", "Error occurred while checking server setup" : "Villa kom upp við athugun á uppsetingu miðlara", "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 haus er ekki stilltur til jafns við \\\"{expected}\\\". Þetta er mögulegur öryggis eða næðis áhætta, við mælum með því að aðlaga þessa stillingu.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\\\"Strangt-Transport-Security\\\" HTTP haus er ekki stilltur á minst \\\"{seconds}\\\" sekúndur. Fyrir aukið öryggi mælum við með því að virkja HSTS eins og lýst er í <a href=\\\"{docUrl}\\\">security tips</a>.", diff --git a/core/l10n/it.js b/core/l10n/it.js index dd472ea6418..77d49e09d37 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Aggiornato \"%s\" a %s", "Repair warning: " : "Avviso di riparazione", "Repair error: " : "Errore di riparazione:", - "Set log level to debug - current level: \"%s\"" : "Imposta il livello del log a debug - livello attuale: \"%s\"", - "Reset log level to \"%s\"" : "Ripristina il livello del log a \"%s\"", + "Set log level to debug" : "Imposta il livello del log a debug", + "Reset log level" : "Ripristina il livello del log", "Starting code integrity check" : "Avvio del controllo di integrità del codice", "Finished code integrity check" : "Controllo di integrità del codice terminato", "%s (3rdparty)" : "%s (Terze parti)", @@ -114,12 +114,12 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata.", "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." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet.\nIl file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a href=\"{phpLink}\">supportata da PHP</a>. Ti esortiamo ad aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a target=\"_blank\" href=\"{phpLink}\">supportata da PHP</a>. Ti consigliamo di aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", "Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza dei dati e noi consigliamo di modificare questa impostazione.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore almeno di \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei nostri <a href=\"{docUrl}\">consigli sulla sicurezza</a>.", diff --git a/core/l10n/it.json b/core/l10n/it.json index 37d17409e91..62347952936 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "Aggiornato \"%s\" a %s", "Repair warning: " : "Avviso di riparazione", "Repair error: " : "Errore di riparazione:", - "Set log level to debug - current level: \"%s\"" : "Imposta il livello del log a debug - livello attuale: \"%s\"", - "Reset log level to \"%s\"" : "Ripristina il livello del log a \"%s\"", + "Set log level to debug" : "Imposta il livello del log a debug", + "Reset log level" : "Ripristina il livello del log", "Starting code integrity check" : "Avvio del controllo di integrità del codice", "Finished code integrity check" : "Controllo di integrità del codice terminato", "%s (3rdparty)" : "%s (Terze parti)", @@ -112,12 +112,12 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Il tuo server web non è configurato correttamente per consentire la sincronizzazione dei file poiché l'interfaccia WebDAV sembra essere danneggiata.", "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." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "La cartella dei dati e i tuoi file sono probabilmente accessibili da Internet.\nIl file .htaccess non funziona. Ti consigliamo vivamente di configurare il server web in modo che la cartella dei dati non sia più accessibile o di spostare la cartella fuori dalla radice del server web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a href=\"{phpLink}\">supportata da PHP</a>. Ti esortiamo ad aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a href=\"{docLink}\">documentazione</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La tua versione ({version}) di PHP non è più <a target=\"_blank\" href=\"{phpLink}\">supportata da PHP</a>. Ti consigliamo di aggiornare la versione di PHP per trarre vantaggio dagli aggiornamenti in termini di prestazioni e sicurezza forniti da PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", "Error occurred while checking server setup" : "Si è verificato un errore durante il controllo della configurazione del server", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'intestazione HTTP \"{header}\" non è configurata come \"{expected}\". \nQuesto è un potenziale rischio di sicurezza o di riservatezza dei dati e noi consigliamo di modificare questa impostazione.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'intestazione HTTP \"Strict-Transport-Security\" non è configurata con un valore almeno di \"{seconds}\" secondi. Per migliorare la sicurezza, consigliamo di abilitare HSTS come descritto nei nostri <a href=\"{docUrl}\">consigli sulla sicurezza</a>.", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index 9d700b71d25..ca722e9d22c 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "\"%s\" を %s にアップデートしました。", "Repair warning: " : "修復警告:", "Repair error: " : "修復エラー:", - "Set log level to debug - current level: \"%s\"" : "ログレベルをデバッグにセットします - 現在のレベル: \"%s\"", - "Reset log level to \"%s\"" : "ログレベルを \"%s\" にリセットします。", + "Starting code integrity check" : "コード整合性の確認を開始", + "Finished code integrity check" : "コード整合性の確認が終了", "%s (3rdparty)" : "%s (サードパーティー)", "%s (incompatible)" : "%s (非互換)", "Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s", @@ -77,6 +77,7 @@ OC.L10N.register( "Oct." : "10月", "Nov." : "11月", "Dec." : "12月", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">コード整合性の確認で問題が発生しました。詳しくはこちら…</a>", "Settings" : "設定", "Saving..." : "保存中...", "seconds ago" : "数秒前", @@ -111,11 +112,10 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "WebDAVインターフェースが動作していないようです。Webサーバーは、ファイルの同期を許可するよう適切に設定されていません。", "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." : "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティ製のアプリ、といった一部の機能が利用できません。また、リモート接続でのファイルアクセス、通知メールの送信のような機能も利用できないことがあります。すべての機能を利用するには、このサーバーのインターネット接続を有効にすることをお勧めします。", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "データディレクトリとファイルがインターネットからアクセス可能になっている可能性があります。.htaccessファイルが機能していません。データディレクトリがアクセスされないようにWebサーバーを設定するか、Webサーバーのドキュメントルートからデータディレクトリを移動するように強くお勧めします。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a href=\"{docLink}\">documentation</a> を参照してください。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a href=\"{docLink}\">documentation</a> を参照ください。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a href=\"{phpLink}\">PHPでサポート</a> されていません。 我々は、PHPから提供されている新しいバージョンにアップグレードし、それによるセキュリティの確保とパフォーマンスのメリットを受けられることを強くお勧めします。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、<a href=\"{docLink}\">ドキュメント</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached は分散キャッシュとして設定されていますが、間違った\"memcache\"のPHPモジュールがインストールされています。 \\OC\\Memcache\\Memcached は、\"memcached\" のみをサポートしていますが、\"memcache\" ではありません。<a href=\"{wikiLink}\">memcached wiki で両方のモジュール</a> を見てください。", + "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\" href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照ください。", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a target=\"_blank\" href=\"{phpLink}\">PHPでサポート</a> されていません。セキュリティ確保とパフォーマンス向上のために、PHPから提供されている新しいバージョンにアップグレードすることを強くお勧めします。", + "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\" href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、 <a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>を確認してください。", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP ヘッダが最小値の \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、<a href=\"{docUrl}\">security tips</a>を参照して、HSTS を有効にすることをおすすめします。", @@ -187,6 +187,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "トークンが無効なため、パスワードをリセットできませんでした", "Couldn't reset password because the token is expired" : "トークンが期限切れのため、パスワードをリセットできませんでした", "Couldn't send reset email. Please make sure your username is correct." : "リセットメールを送信できませんでした。ユーザー名が正しいことを確認してください。", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "このユーザー名に紐付けられたメールアドレスがないため、リセットメールを送信できませんでした。管理者に問い合わせてください。", "%s password reset" : "%s パスワードリセット", "Use the following link to reset your password: {link}" : "パスワードをリセットするには次のリンクをクリックしてください: {link}", "New password" : "新しいパスワードを入力", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 68930ad01c3..8d621d4cfe2 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "\"%s\" を %s にアップデートしました。", "Repair warning: " : "修復警告:", "Repair error: " : "修復エラー:", - "Set log level to debug - current level: \"%s\"" : "ログレベルをデバッグにセットします - 現在のレベル: \"%s\"", - "Reset log level to \"%s\"" : "ログレベルを \"%s\" にリセットします。", + "Starting code integrity check" : "コード整合性の確認を開始", + "Finished code integrity check" : "コード整合性の確認が終了", "%s (3rdparty)" : "%s (サードパーティー)", "%s (incompatible)" : "%s (非互換)", "Following apps have been disabled: %s" : "以下のアプリが無効にされています: %s", @@ -75,6 +75,7 @@ "Oct." : "10月", "Nov." : "11月", "Dec." : "12月", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">コード整合性の確認で問題が発生しました。詳しくはこちら…</a>", "Settings" : "設定", "Saving..." : "保存中...", "seconds ago" : "数秒前", @@ -109,11 +110,10 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "WebDAVインターフェースが動作していないようです。Webサーバーは、ファイルの同期を許可するよう適切に設定されていません。", "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." : "このサーバーはインターネットに接続していません。この場合、外部ストレージのマウント、更新の通知やサードパーティ製のアプリ、といった一部の機能が利用できません。また、リモート接続でのファイルアクセス、通知メールの送信のような機能も利用できないことがあります。すべての機能を利用するには、このサーバーのインターネット接続を有効にすることをお勧めします。", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "データディレクトリとファイルがインターネットからアクセス可能になっている可能性があります。.htaccessファイルが機能していません。データディレクトリがアクセスされないようにWebサーバーを設定するか、Webサーバーのドキュメントルートからデータディレクトリを移動するように強くお勧めします。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a href=\"{docLink}\">documentation</a> を参照してください。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a href=\"{docLink}\">documentation</a> を参照ください。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a href=\"{phpLink}\">PHPでサポート</a> されていません。 我々は、PHPから提供されている新しいバージョンにアップグレードし、それによるセキュリティの確保とパフォーマンスのメリットを受けられることを強くお勧めします。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、<a href=\"{docLink}\">ドキュメント</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached は分散キャッシュとして設定されていますが、間違った\"memcache\"のPHPモジュールがインストールされています。 \\OC\\Memcache\\Memcached は、\"memcached\" のみをサポートしていますが、\"memcache\" ではありません。<a href=\"{wikiLink}\">memcached wiki で両方のモジュール</a> を見てください。", + "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\" href=\"{docLink}\">documentation</a>." : "メモリキャッシュが設定されていません。パフォーマンスを向上するために、可能であれば memcache を設定してください。 より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom は PHP から読み取ることができず、この状態はセキュリティの観点からおすすめできません。より詳しい情報については、<a target=\"_blank\" href=\"{docLink}\">ドキュメント</a> を参照ください。", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "ご利用のPHPのバージョン ({version}) は、<a target=\"_blank\" href=\"{phpLink}\">PHPでサポート</a> されていません。セキュリティ確保とパフォーマンス向上のために、PHPから提供されている新しいバージョンにアップグレードすることを強くお勧めします。", + "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\" href=\"{docLink}\">documentation</a>." : "リバースプロキシのヘッダー設定が間違っているか、または信頼されたプロキシからownCloudにアクセスしていません。もし、信頼されたプロキシからアクセスしているのでないなら、セキュリティに問題があり、ownCloudを詐称したIPアドレスから攻撃者に対して見えるよう許可していることになります。詳細な情報は、 <a target=\"_blank\" href=\"{docLink}\">ドキュメント</a>を確認してください。", "Error occurred while checking server setup" : "サーバー設定のチェック中にエラーが発生しました", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP ヘッダは \"{expected}\" に設定されていません。これは潜在的なセキュリティリスクもしくはプライバシーリスクとなる可能性があるため、この設定を見直すことをおすすめします。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP ヘッダが最小値の \"{seconds}\" 秒に設定されていません。 セキュリティを強化するため、<a href=\"{docUrl}\">security tips</a>を参照して、HSTS を有効にすることをおすすめします。", @@ -185,6 +185,7 @@ "Couldn't reset password because the token is invalid" : "トークンが無効なため、パスワードをリセットできませんでした", "Couldn't reset password because the token is expired" : "トークンが期限切れのため、パスワードをリセットできませんでした", "Couldn't send reset email. Please make sure your username is correct." : "リセットメールを送信できませんでした。ユーザー名が正しいことを確認してください。", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "このユーザー名に紐付けられたメールアドレスがないため、リセットメールを送信できませんでした。管理者に問い合わせてください。", "%s password reset" : "%s パスワードリセット", "Use the following link to reset your password: {link}" : "パスワードをリセットするには次のリンクをクリックしてください: {link}", "New password" : "新しいパスワードを入力", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index f8d131fca29..09864201ef5 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "\"%s\"을(를) %s(으)로 업데이트함", "Repair warning: " : "수리 경고:", "Repair error: " : "수리 오류:", - "Set log level to debug - current level: \"%s\"" : "로그 단계를 디버그로 설정함 - 현재 단계: \"%s\"", - "Reset log level to \"%s\"" : "로그 단계를 \"%s\"(으)로 초기화", "%s (3rdparty)" : "%s(제 3사)", "%s (incompatible)" : "%s(호환 불가)", "Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "WebDAV 서비스가 올바르게 작동하지 않아서 웹 서버에서 파일 동기화를 사용할 수 없습니다.", "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." : "서버에서 인터넷 연결을 사용할 수 없습니다. 외부 저장소 마운트, 업데이트 알림, 제 3자 앱 설치 등 기능을 사용할 수 없습니다. 원격에서 파일에 접근하거나, 알림 이메일을 보내지 못할 수도 있습니다. 모든 기능을 사용하려면 인터넷에 연결하는 것을 추천합니다.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "인터넷에서 데이터 디렉터리와 파일에 접근할 수 있습니다. .htaccess 파일이 작동하지 않습니다. 웹 서버 설정을 변경하여 데이터 디렉터리에 직접 접근할 수 없도록 하거나, 데이터 디렉터리를 웹 서버 문서 경로 바깥에 두십시오.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "메모리 캐시가 설정되지 않았습니다. 성능을 향상시키려면 사용 가능한 경우 메모리 캐시를 설정하십시오. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</a>를 참고하십시오.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP에서 /dev/urandom을 읽을 수 없으며, 보안상의 이유로 권장되지 않습니다. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</a>를 참고하십시오.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "사용하고 있는 PHP 버전({version})은 더 이상 <a href=\"{phpLink}\">PHP에서 지원하지 않습니다.</a> PHP를 업그레이드하여 성능 및 보안 개선을 누리십시오.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "역방향 프록시 헤더 설정이 잘못되었거나, 신뢰할 수 있는 프록시에서 ownCloud에 접근하고 있습니다. 신뢰할 수 있는 프록시에서 ownCloud에 접근하는 것이 아니라면, 이 상황은 보안 문제이며 공격자가 ownCloud에 접근하는 IP 주소를 속일 수 있습니다. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "분산 캐시로 Memcached가 설정되었으나, 잘못된 PHP 모듈 \"memcache\"가 설치되어 있습니다. \\OC\\Memcache\\Memcached는 \"memcached\"를 지원하며, \"memcache\"를 지원하지 않습니다. <a href=\"{wikiLink}\">memcached 위키의 두 모듈에 관한 정보</a>를 참조하십시오.", "Error occurred while checking server setup" : "서버 설정을 확인하는 중 오류 발생", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 헤더가 \"{expected}\"와(과) 같이 설정되지 않았습니다. 잠재적인 보안 위협이 될 수 있으므로 설정을 변경하는 것을 추천합니다.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 헤더 \"Strict-Transport-Security\"가 최소한 \"{seconds}\"초 이상으로 설정되어야 합니다. 강화된 보안을 위해서 <a href=\"{docUrl}\">보안 팁</a>에 나타난 것처럼 HSTS를 활성화하는 것을 추천합니다.", diff --git a/core/l10n/ko.json b/core/l10n/ko.json index 64aec1d9d97..ca246da388f 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "\"%s\"을(를) %s(으)로 업데이트함", "Repair warning: " : "수리 경고:", "Repair error: " : "수리 오류:", - "Set log level to debug - current level: \"%s\"" : "로그 단계를 디버그로 설정함 - 현재 단계: \"%s\"", - "Reset log level to \"%s\"" : "로그 단계를 \"%s\"(으)로 초기화", "%s (3rdparty)" : "%s(제 3사)", "%s (incompatible)" : "%s(호환 불가)", "Following apps have been disabled: %s" : "다음 앱이 비활성화되었습니다: %s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "WebDAV 서비스가 올바르게 작동하지 않아서 웹 서버에서 파일 동기화를 사용할 수 없습니다.", "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." : "서버에서 인터넷 연결을 사용할 수 없습니다. 외부 저장소 마운트, 업데이트 알림, 제 3자 앱 설치 등 기능을 사용할 수 없습니다. 원격에서 파일에 접근하거나, 알림 이메일을 보내지 못할 수도 있습니다. 모든 기능을 사용하려면 인터넷에 연결하는 것을 추천합니다.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "인터넷에서 데이터 디렉터리와 파일에 접근할 수 있습니다. .htaccess 파일이 작동하지 않습니다. 웹 서버 설정을 변경하여 데이터 디렉터리에 직접 접근할 수 없도록 하거나, 데이터 디렉터리를 웹 서버 문서 경로 바깥에 두십시오.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "메모리 캐시가 설정되지 않았습니다. 성능을 향상시키려면 사용 가능한 경우 메모리 캐시를 설정하십시오. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</a>를 참고하십시오.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP에서 /dev/urandom을 읽을 수 없으며, 보안상의 이유로 권장되지 않습니다. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</a>를 참고하십시오.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "사용하고 있는 PHP 버전({version})은 더 이상 <a href=\"{phpLink}\">PHP에서 지원하지 않습니다.</a> PHP를 업그레이드하여 성능 및 보안 개선을 누리십시오.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "역방향 프록시 헤더 설정이 잘못되었거나, 신뢰할 수 있는 프록시에서 ownCloud에 접근하고 있습니다. 신뢰할 수 있는 프록시에서 ownCloud에 접근하는 것이 아니라면, 이 상황은 보안 문제이며 공격자가 ownCloud에 접근하는 IP 주소를 속일 수 있습니다. 더 많은 정보를 보려면 <a href=\"{docLink}\">문서</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "분산 캐시로 Memcached가 설정되었으나, 잘못된 PHP 모듈 \"memcache\"가 설치되어 있습니다. \\OC\\Memcache\\Memcached는 \"memcached\"를 지원하며, \"memcache\"를 지원하지 않습니다. <a href=\"{wikiLink}\">memcached 위키의 두 모듈에 관한 정보</a>를 참조하십시오.", "Error occurred while checking server setup" : "서버 설정을 확인하는 중 오류 발생", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 헤더가 \"{expected}\"와(과) 같이 설정되지 않았습니다. 잠재적인 보안 위협이 될 수 있으므로 설정을 변경하는 것을 추천합니다.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 헤더 \"Strict-Transport-Security\"가 최소한 \"{seconds}\"초 이상으로 설정되어야 합니다. 강화된 보안을 위해서 <a href=\"{docUrl}\">보안 팁</a>에 나타난 것처럼 HSTS를 활성화하는 것을 추천합니다.", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index 829e6f9e957..1a0d8816e84 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -13,8 +13,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s", "Repair warning: " : "Taisymo perspėjimas:", "Repair error: " : "Taisymo klaida:", - "Set log level to debug - current level: \"%s\"" : "Nustatykite žurnalų lygį į derinimas - dabar \"%s\"", - "Reset log level to \"%s\"" : "Atkurkite žurnalų lygį į \"%s\"", "Following apps have been disabled: %s" : "Išjungti įskiepiai: %s", "Already up to date" : "Jau naujausia", "File is too big" : "Per didelis failas", diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index f67b9d6cc00..908ace76c55 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -11,8 +11,6 @@ "Updated \"%s\" to %s" : "Atnaujinta \"%s\" į %s", "Repair warning: " : "Taisymo perspėjimas:", "Repair error: " : "Taisymo klaida:", - "Set log level to debug - current level: \"%s\"" : "Nustatykite žurnalų lygį į derinimas - dabar \"%s\"", - "Reset log level to \"%s\"" : "Atkurkite žurnalų lygį į \"%s\"", "Following apps have been disabled: %s" : "Išjungti įskiepiai: %s", "Already up to date" : "Jau naujausia", "File is too big" : "Per didelis failas", diff --git a/core/l10n/mk.js b/core/l10n/mk.js index e09dd51f6b8..20985fac584 100644 --- a/core/l10n/mk.js +++ b/core/l10n/mk.js @@ -2,14 +2,21 @@ OC.L10N.register( "core", { "Couldn't send mail to following users: %s " : "Не можев да пратам порака на следниве корисници: %s", + "Preparing update" : "Ја подготвувам надградбата", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", + "Maintenance mode is kept active" : "Модот за одржување е уште активен", + "Updating database schema" : "Ја надградувам шемата на базата на податоци", "Updated database" : "Базата е надградена", "Checked database schema update" : "Проверена е шемата за ажурурање на базата на податоци", "Checked database schema update for apps" : "Проверена е шемата за ажурурање на базата на податоци за апликации", "Updated \"%s\" to %s" : "Ажурирано е \"%s\" во %s", "Repair warning: " : "Предупредувања при поправка:", "Repair error: " : "Грешка при поправка:", + "%s (3rdparty)" : "%s (3-та страна)", + "%s (incompatible)" : "%s (некомпатибилен)", + "Already up to date" : "Веќе ажурирано", + "File is too big" : "Датотеката е пре голема", "Invalid file provided" : "Дадена е невалидна датотека", "No image or file provided" : "Не е доставена фотографија или датотека", "Unknown filetype" : "Непознат тип на датотека", @@ -32,6 +39,13 @@ OC.L10N.register( "Thu." : "Чет.", "Fri." : "Пет.", "Sat." : "Саб.", + "Su" : "Не", + "Mo" : "По", + "Tu" : "Вт", + "We" : "Ср", + "Th" : "Че", + "Fr" : "Пе", + "Sa" : "Са", "January" : "Јануари", "February" : "Февруари", "March" : "Март", @@ -89,7 +103,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Вашиот веб опслужувач сеуште не е точно подесен да овозможува синхронизација на датотеки бидејќи интерфејсот за WebDAV изгледа дека е расипан. ", "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." : "Овој опслужувач нема работна Интернет врска. Ова значи дека некои опции како што е монтирање на надворешни складишта, известувања за ажурирање или инсталации на апликации од 3-ти лица нема да работат. Пристапот на датотеки од далечина и праќање на пораки за известувања може исто така да не работат. Ви советуваме да овозможите Интернет врска за овој опслужувач ако сакате да ги имате сите опции. ", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Вашата папка за податоци и вашите датотеки се најверојатно достапни од интернет. Датотеката .htaccess не работи. Строго ви препорачуваме да го подесите вашиот веб опслужувач на начин на кој вашата папка за податоци не е веќе достапна од интернет или да ја преместите папката за податоци надвор од коренот на веб опслужувачот.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Не еконфигуриран кеш за меморијата. За да ги подобрите перформансите ве молам конфигурирајте memcache ако е достапно. Дополнителни информации можат да се најдат во нашата <a href=\"{docLink}\">документација</a>.", "Error occurred while checking server setup" : "Се случи грешка при проверката на подесувањата на опслужувачот", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP заглавието \"{header}\" не е конфигурирано да биде еднакво на \"{expected}\". Ова е потенцијално сигурносен ризик и препорачуваме да прилагодат подесувањата.", "Shared" : "Споделен", @@ -102,25 +115,31 @@ OC.L10N.register( "Set expiration date" : "Постави рок на траење", "Expiration" : "Истекување", "Expiration date" : "Рок на траење", + "Choose a password for the public link" : "Одбери лозинка за јавниот линк", "Sending ..." : "Праќање...", "Email sent" : "Е-порака пратена", "Resharing is not allowed" : "Повторно споделување не е дозволено", "Share link" : "Сподели ја врската", + "Link" : "Линк", "Password protect" : "Заштити со лозинка", "Password" : "Лозинка", + "Allow editing" : "Овозможи уредување", "Email link to person" : "Прати врска по е-пошта на личност", "Send" : "Прати", "Shared with you and the group {group} by {owner}" : "Споделено со Вас и групата {group} од {owner}", "Shared with you by {owner}" : "Споделено со Вас од {owner}", "Shared in {item} with {user}" : "Споделено во {item} со {user}", "group" : "група", + "remote" : "далечински", "notify by email" : "извести преку електронска пошта", "Unshare" : "Не споделувај", "can share" : "може да споделува", "can edit" : "може да се измени", "create" : "креирај", + "change" : "промени", "delete" : "избриши", "access control" : "контрола на пристап", + "An error occured. Please try again" : "Се случи грешка. Обиди се повторно", "Share" : "Сподели", "Share with users or groups …" : "Сподели со корисници или групи ...", "Share with users, groups or remote users …" : "Споделено со корисници, групи или оддалечени корисници ...", @@ -131,10 +150,16 @@ OC.L10N.register( "Add" : "Додади", "Edit tags" : "Уреди ги таговите", "No tags selected for deletion." : "Не се селектирани тагови за бришење.", + "unknown text" : "непознат текст", + "Hello world!" : "Здраво свету!", + "sunny" : "сончево", + "Hello {name}" : "Здраво {name}", + "An error occurred." : "Се случи грешка", "The update was successful. Redirecting you to ownCloud now." : "Надградбата беше успешна. Веднаш ве префрлам на вашиот ownCloud.", "%s password reset" : "%s ресетирање на лозинката", "Use the following link to reset your password: {link}" : "Користете ја следната врска да ја ресетирате Вашата лозинка: {link}", "New password" : "Нова лозинка", + "New Password" : "Нова лозинка", "Reset password" : "Ресетирај лозинка", "Personal" : "Лично", "Users" : "Корисници", @@ -148,8 +173,11 @@ OC.L10N.register( "Error untagging" : "Грешка при отстранување на таговите", "Error favoriting" : "Грешка при ", "Access forbidden" : "Забранет пристап", + "File not found" : "Датотеката не е пронајдена", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Здраво,\n\nСамо да ве известам дека %s shared %s with you.\nView it: %s\n\n", "Cheers!" : "Поздрав!", + "Internal Server Error" : "Интерна серверска грешка", + "Technical details" : "Технички детали", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Вашиот директориум со податоци и датотеки се веројатно достапни преку интенернт поради што .htaccess датотеката не функционира.", "Create an <strong>admin account</strong>" : "Направете <strong>администраторска сметка</strong>", "Username" : "Корисничко име", @@ -160,15 +188,24 @@ OC.L10N.register( "Database name" : "Име на база", "Database tablespace" : "Табела во базата на податоци", "Database host" : "Сервер со база", + "Performance warning" : "Предупредување за перформансите", + "SQLite will be used as database." : "SQLite ќе се користи како база на податоци.", "Finish setup" : "Заврши го подесувањето", "Finishing …" : "Завршувам ...", + "Need help?" : "Ви треба помош?", + "See the documentation" : "Види ја документацијата", "Log out" : "Одјава", "Search" : "Барај", "Server side authentication failed!" : "Автентификацијата на серверската страна е неуспешна!", "Please contact your administrator." : "Ве молиме контактирајте го вашиот администратор.", + "An internal error occured." : "Се случи интерна грешка", "Log in" : "Најава", + "Wrong password. Reset it?" : "Погрешна лозинка. Да ја ресетирам?", + "Wrong password." : "Погрешна лозинка.", + "Stay logged in" : "Остани најаваен", "Alternative Logins" : "Алтернативни најавувања", "Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.", - "Thank you for your patience." : "Благодариме на вашето трпение." + "Thank you for your patience." : "Благодариме на вашето трпение.", + "These apps will be updated:" : "Следните апликации чќе бидат надградени:" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/core/l10n/mk.json b/core/l10n/mk.json index d5002b8ffe9..cf5eaf9a9cc 100644 --- a/core/l10n/mk.json +++ b/core/l10n/mk.json @@ -1,13 +1,20 @@ { "translations": { "Couldn't send mail to following users: %s " : "Не можев да пратам порака на следниве корисници: %s", + "Preparing update" : "Ја подготвувам надградбата", "Turned on maintenance mode" : "Вклучен е модот за одржување", "Turned off maintenance mode" : "Ислкучен е модот за одржување", + "Maintenance mode is kept active" : "Модот за одржување е уште активен", + "Updating database schema" : "Ја надградувам шемата на базата на податоци", "Updated database" : "Базата е надградена", "Checked database schema update" : "Проверена е шемата за ажурурање на базата на податоци", "Checked database schema update for apps" : "Проверена е шемата за ажурурање на базата на податоци за апликации", "Updated \"%s\" to %s" : "Ажурирано е \"%s\" во %s", "Repair warning: " : "Предупредувања при поправка:", "Repair error: " : "Грешка при поправка:", + "%s (3rdparty)" : "%s (3-та страна)", + "%s (incompatible)" : "%s (некомпатибилен)", + "Already up to date" : "Веќе ажурирано", + "File is too big" : "Датотеката е пре голема", "Invalid file provided" : "Дадена е невалидна датотека", "No image or file provided" : "Не е доставена фотографија или датотека", "Unknown filetype" : "Непознат тип на датотека", @@ -30,6 +37,13 @@ "Thu." : "Чет.", "Fri." : "Пет.", "Sat." : "Саб.", + "Su" : "Не", + "Mo" : "По", + "Tu" : "Вт", + "We" : "Ср", + "Th" : "Че", + "Fr" : "Пе", + "Sa" : "Са", "January" : "Јануари", "February" : "Февруари", "March" : "Март", @@ -87,7 +101,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Вашиот веб опслужувач сеуште не е точно подесен да овозможува синхронизација на датотеки бидејќи интерфејсот за WebDAV изгледа дека е расипан. ", "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." : "Овој опслужувач нема работна Интернет врска. Ова значи дека некои опции како што е монтирање на надворешни складишта, известувања за ажурирање или инсталации на апликации од 3-ти лица нема да работат. Пристапот на датотеки од далечина и праќање на пораки за известувања може исто така да не работат. Ви советуваме да овозможите Интернет врска за овој опслужувач ако сакате да ги имате сите опции. ", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Вашата папка за податоци и вашите датотеки се најверојатно достапни од интернет. Датотеката .htaccess не работи. Строго ви препорачуваме да го подесите вашиот веб опслужувач на начин на кој вашата папка за податоци не е веќе достапна од интернет или да ја преместите папката за податоци надвор од коренот на веб опслужувачот.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Не еконфигуриран кеш за меморијата. За да ги подобрите перформансите ве молам конфигурирајте memcache ако е достапно. Дополнителни информации можат да се најдат во нашата <a href=\"{docLink}\">документација</a>.", "Error occurred while checking server setup" : "Се случи грешка при проверката на подесувањата на опслужувачот", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP заглавието \"{header}\" не е конфигурирано да биде еднакво на \"{expected}\". Ова е потенцијално сигурносен ризик и препорачуваме да прилагодат подесувањата.", "Shared" : "Споделен", @@ -100,25 +113,31 @@ "Set expiration date" : "Постави рок на траење", "Expiration" : "Истекување", "Expiration date" : "Рок на траење", + "Choose a password for the public link" : "Одбери лозинка за јавниот линк", "Sending ..." : "Праќање...", "Email sent" : "Е-порака пратена", "Resharing is not allowed" : "Повторно споделување не е дозволено", "Share link" : "Сподели ја врската", + "Link" : "Линк", "Password protect" : "Заштити со лозинка", "Password" : "Лозинка", + "Allow editing" : "Овозможи уредување", "Email link to person" : "Прати врска по е-пошта на личност", "Send" : "Прати", "Shared with you and the group {group} by {owner}" : "Споделено со Вас и групата {group} од {owner}", "Shared with you by {owner}" : "Споделено со Вас од {owner}", "Shared in {item} with {user}" : "Споделено во {item} со {user}", "group" : "група", + "remote" : "далечински", "notify by email" : "извести преку електронска пошта", "Unshare" : "Не споделувај", "can share" : "може да споделува", "can edit" : "може да се измени", "create" : "креирај", + "change" : "промени", "delete" : "избриши", "access control" : "контрола на пристап", + "An error occured. Please try again" : "Се случи грешка. Обиди се повторно", "Share" : "Сподели", "Share with users or groups …" : "Сподели со корисници или групи ...", "Share with users, groups or remote users …" : "Споделено со корисници, групи или оддалечени корисници ...", @@ -129,10 +148,16 @@ "Add" : "Додади", "Edit tags" : "Уреди ги таговите", "No tags selected for deletion." : "Не се селектирани тагови за бришење.", + "unknown text" : "непознат текст", + "Hello world!" : "Здраво свету!", + "sunny" : "сончево", + "Hello {name}" : "Здраво {name}", + "An error occurred." : "Се случи грешка", "The update was successful. Redirecting you to ownCloud now." : "Надградбата беше успешна. Веднаш ве префрлам на вашиот ownCloud.", "%s password reset" : "%s ресетирање на лозинката", "Use the following link to reset your password: {link}" : "Користете ја следната врска да ја ресетирате Вашата лозинка: {link}", "New password" : "Нова лозинка", + "New Password" : "Нова лозинка", "Reset password" : "Ресетирај лозинка", "Personal" : "Лично", "Users" : "Корисници", @@ -146,8 +171,11 @@ "Error untagging" : "Грешка при отстранување на таговите", "Error favoriting" : "Грешка при ", "Access forbidden" : "Забранет пристап", + "File not found" : "Датотеката не е пронајдена", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Здраво,\n\nСамо да ве известам дека %s shared %s with you.\nView it: %s\n\n", "Cheers!" : "Поздрав!", + "Internal Server Error" : "Интерна серверска грешка", + "Technical details" : "Технички детали", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Вашиот директориум со податоци и датотеки се веројатно достапни преку интенернт поради што .htaccess датотеката не функционира.", "Create an <strong>admin account</strong>" : "Направете <strong>администраторска сметка</strong>", "Username" : "Корисничко име", @@ -158,15 +186,24 @@ "Database name" : "Име на база", "Database tablespace" : "Табела во базата на податоци", "Database host" : "Сервер со база", + "Performance warning" : "Предупредување за перформансите", + "SQLite will be used as database." : "SQLite ќе се користи како база на податоци.", "Finish setup" : "Заврши го подесувањето", "Finishing …" : "Завршувам ...", + "Need help?" : "Ви треба помош?", + "See the documentation" : "Види ја документацијата", "Log out" : "Одјава", "Search" : "Барај", "Server side authentication failed!" : "Автентификацијата на серверската страна е неуспешна!", "Please contact your administrator." : "Ве молиме контактирајте го вашиот администратор.", + "An internal error occured." : "Се случи интерна грешка", "Log in" : "Најава", + "Wrong password. Reset it?" : "Погрешна лозинка. Да ја ресетирам?", + "Wrong password." : "Погрешна лозинка.", + "Stay logged in" : "Остани најаваен", "Alternative Logins" : "Алтернативни најавувања", "Contact your system administrator if this message persists or appeared unexpectedly." : "Контактирајте го вашиот систем администратор до колку оваа порака продолжи да се појавува или пак се појавува ненадејно.", - "Thank you for your patience." : "Благодариме на вашето трпение." + "Thank you for your patience." : "Благодариме на вашето трпение.", + "These apps will be updated:" : "Следните апликации чќе бидат надградени:" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js index d6a613ab48e..4694f01e1f9 100644 --- a/core/l10n/nb_NO.js +++ b/core/l10n/nb_NO.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Oppdaterte \"%s\" til %s", "Repair warning: " : "Advarsel fra reparering: ", "Repair error: " : "Feil ved reparering: ", - "Set log level to debug - current level: \"%s\"" : "Sett loggnivå til feilsøking - nåværende nivå: \"%s\"", - "Reset log level to \"%s\"" : "Tilbakestilt logg-nivå til \"%s\"", + "Starting code integrity check" : "Starter sjekk av kode-integritet", + "Finished code integrity check" : "Ferdig med sjekk av kode-integritet", "%s (3rdparty)" : "%s (3dje-part)", "%s (incompatible)" : "%s (ikke kompatibel)", "Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s", @@ -77,6 +77,7 @@ OC.L10N.register( "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Des.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Det var problemer med sjekk av kode-integritet. Mer informasjon…</a>", "Settings" : "Innstillinger", "Saving..." : "Lagrer...", "seconds ago" : "for få sekunder siden", @@ -111,11 +112,12 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web-serveren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.", "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." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.", "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." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a href=\"{docLink}\">dokumentasjonen</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a href=\"{wikiLink}\">memcached wiki om begge modulene</a>.", + "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\" href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a target=\"_blank\" href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki om begge modulene</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer feilet integritets-sjekken. Informasjon for å løse situasjonen finnes i <a target=\"_blank\" href=\"{docLink}\">documentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste med ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på nytt…</a>)", "Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-header \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" er ikke konfigurert til minst \"{seconds}\" sekunder. For beste sikkerhet anbefaler vi at HSTS aktiveres som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.", @@ -187,6 +189,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Klarte ikke å tilbakestille passordet fordi token er ugyldig.", "Couldn't reset password because the token is expired" : "Klarte ikke å tilbakestille passordet fordi token er utløpt.", "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke å sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Use the following link to reset your password: {link}" : "Bruk følgende lenke for å tilbakestille passordet ditt: {link}", "New password" : "Nytt passord", @@ -261,6 +264,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.", "Log in" : "Logg inn", "Wrong password. Reset it?" : "Feil passord. Nullstille det?", + "Wrong password." : "Feil passord.", "Stay logged in" : "Forbli innlogget", "Alternative Logins" : "Alternative innlogginger", "This ownCloud instance is currently in single user mode." : "Denne ownCloud-instansen er for øyeblikket i enbrukermodus.", @@ -268,6 +272,7 @@ OC.L10N.register( "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.", "Thank you for your patience." : "Takk for din tålmodighet.", "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke tiltrodd domene.", + "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." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domains\" i config/config.php. Et eksempel på konfigurasjon er gitt i config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.", "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene", "App update required" : "App-oppdatering kreves", diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json index 58cad24f1a2..e58aed66b3d 100644 --- a/core/l10n/nb_NO.json +++ b/core/l10n/nb_NO.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "Oppdaterte \"%s\" til %s", "Repair warning: " : "Advarsel fra reparering: ", "Repair error: " : "Feil ved reparering: ", - "Set log level to debug - current level: \"%s\"" : "Sett loggnivå til feilsøking - nåværende nivå: \"%s\"", - "Reset log level to \"%s\"" : "Tilbakestilt logg-nivå til \"%s\"", + "Starting code integrity check" : "Starter sjekk av kode-integritet", + "Finished code integrity check" : "Ferdig med sjekk av kode-integritet", "%s (3rdparty)" : "%s (3dje-part)", "%s (incompatible)" : "%s (ikke kompatibel)", "Following apps have been disabled: %s" : "Følgende apper har blitt deaktivert: %s", @@ -75,6 +75,7 @@ "Oct." : "Okt.", "Nov." : "Nov.", "Dec." : "Des.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Det var problemer med sjekk av kode-integritet. Mer informasjon…</a>", "Settings" : "Innstillinger", "Saving..." : "Lagrer...", "seconds ago" : "for få sekunder siden", @@ -109,11 +110,12 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web-serveren din er ikke satt opp til å tillate synkronisering av filer ennå, fordi WebDAV-grensesnittet ikke ser ut til å virke.", "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." : "Denne serveren har ingen fungerende internett-forbindelse. Dette betyr at noen funksjoner, som tilknytning av eksterne lagre, varslinger om oppdateringer eller installering av tredjeparts apper ikke vil virke. Fjerntilgang til filer og utsending av varsler på e-post vil kanskje ikke virke heller. Vi anbefaler å aktivere en internett-forbindelse for denne serveren hvis du vil ha full funksjonalitet.", "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." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Vi anbefaler sterkt at du konfigurerer web-serveren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av web-serverens dokumentrot.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a href=\"{docLink}\">dokumentasjonen</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a href=\"{docLink}\">dokumentasjonen</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a href=\"{wikiLink}\">memcached wiki om begge modulene</a>.", + "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\" href=\"{docLink}\">documentation</a>." : "Intet minne-cache er konfigurert. For å forbedre ytelsen, installer et minne-cache hvis tilgjengelig. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom kan ikke leses av PHP, noe som er sterkt frarådet av sikkerhetshensyn. Mer informasjon finnes i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Din PHP-versjon ({version}) er ikke <a target=\"_blank\" href=\"{phpLink}\">støttet av PHP</a> lenger. Vi oppfordrer deg til å oppgradere din PHP-versjon for å nyte fordel av ytelses- og sikkerhetsoppdateringer som tilbys av PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "Konfigurasjon av reverse proxy-headers er ikke korrekt, eller du aksesserer ownCloud fra en \"trusted proxy\". Hvis du ikke aksesserer ownCloud fra en \"trusted proxy\", er dette en sikkerhetsrisiko som kan la en angriper forfalske IP-addressen sin slik den oppfattes av ownCloud. Mer informasjon i <a target=\"_blank\" href=\"{docLink}\">dokumentasjonen</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached er konfigurert som distribuert cache, men feil PHP-module \"memcache\" er installert. \\OC\\Memcache\\Memcached støtter bare \"memcached\" og ikke \"memcache\". Se <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki om begge modulene</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer feilet integritets-sjekken. Informasjon for å løse situasjonen finnes i <a target=\"_blank\" href=\"{docLink}\">documentasjonen</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste med ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på nytt…</a>)", "Error occurred while checking server setup" : "Feil oppstod ved sjekking av server-oppsett", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP-header \"{header}\" er ikke konfigurert lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP header \"Strict-Transport-Security\" er ikke konfigurert til minst \"{seconds}\" sekunder. For beste sikkerhet anbefaler vi at HSTS aktiveres som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.", @@ -185,6 +187,7 @@ "Couldn't reset password because the token is invalid" : "Klarte ikke å tilbakestille passordet fordi token er ugyldig.", "Couldn't reset password because the token is expired" : "Klarte ikke å tilbakestille passordet fordi token er utløpt.", "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke å sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Use the following link to reset your password: {link}" : "Bruk følgende lenke for å tilbakestille passordet ditt: {link}", "New password" : "Nytt passord", @@ -259,6 +262,7 @@ "Please try again or contact your administrator." : "Prøv igjen eller kontakt en administrator.", "Log in" : "Logg inn", "Wrong password. Reset it?" : "Feil passord. Nullstille det?", + "Wrong password." : "Feil passord.", "Stay logged in" : "Forbli innlogget", "Alternative Logins" : "Alternative innlogginger", "This ownCloud instance is currently in single user mode." : "Denne ownCloud-instansen er for øyeblikket i enbrukermodus.", @@ -266,6 +270,7 @@ "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontakt systemadministratoren hvis denne meldingen var uventet eller ikke forsvinner.", "Thank you for your patience." : "Takk for din tålmodighet.", "You are accessing the server from an untrusted domain." : "Du aksesserer serveren fra et ikke tiltrodd domene.", + "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." : "Vennligst kontakt administratoren. Hvis du er administrator for denne instansen, konfigurer innstillingen \"trusted_domains\" i config/config.php. Et eksempel på konfigurasjon er gitt i config/config.sample.php.", "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Avhengig av konfigurasjonen kan du, som administrator, kanskje også bruke kanppen nedenfor til å stole på dette domenet.", "Add \"%s\" as trusted domain" : "Legg til \"%s\" som et tiltrodd domene", "App update required" : "App-oppdatering kreves", diff --git a/core/l10n/nds.js b/core/l10n/nds.js index 2051b30361a..5e91fe3e687 100644 --- a/core/l10n/nds.js +++ b/core/l10n/nds.js @@ -12,8 +12,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "\"%s\" auf %s aktualisiert", "Repair warning: " : "Reparaturwarnung", "Repair error: " : "Reparaturfehler", - "Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"", - "Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt", "Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", diff --git a/core/l10n/nds.json b/core/l10n/nds.json index cb2f908da76..914dd26b977 100644 --- a/core/l10n/nds.json +++ b/core/l10n/nds.json @@ -10,8 +10,6 @@ "Updated \"%s\" to %s" : "\"%s\" auf %s aktualisiert", "Repair warning: " : "Reparaturwarnung", "Repair error: " : "Reparaturfehler", - "Set log level to debug - current level: \"%s\"" : "Protokollierungsstufe auf Debug gesetzt - Aktuelle Stufe: \"%s\"", - "Reset log level to \"%s\"" : "Protokollierungsstufe auf \"%s\" zurückgesetzt", "Following apps have been disabled: %s" : "Folgende Apps wurden deaktiviert: %s", "Already up to date" : "Bereits aktuell", "File is too big" : "Datei ist zu groß", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index 563a10ff409..6548a0326fd 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Bijgewerkt \"%s\" naar %s", "Repair warning: " : "Reparatiewaarschuwing:", "Repair error: " : "Reparatiefout:", - "Set log level to debug - current level: \"%s\"" : "Instellen logniveau op debug - huidige niveau: \"%s\"", - "Reset log level to \"%s\"" : "Terugzetten logniveau op \"#%s\"", "Starting code integrity check" : "Starten code betrouwbaarheidscontrole", "Finished code integrity check" : "Gereed met code betrouwbaarheidscontrole", "%s (3rdparty)" : "%s (3rdparty)", @@ -114,12 +112,12 @@ OC.L10N.register( "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.", "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.", "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.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{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 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a href=\"{docLink}\">documentatie</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "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 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 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 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 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 href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", + "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\" 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\" 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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a target=\"_blank\" href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.", + "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\" 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\" 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\" 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\" 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\" 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\" 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", "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 least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "De \"Strict-Transport-Security\" HTTP header is niet geconfigureerd als minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in onze <a href=\"{docUrl}\">security tips</a>.", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index 012fd33ba90..6c240045b35 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Bijgewerkt \"%s\" naar %s", "Repair warning: " : "Reparatiewaarschuwing:", "Repair error: " : "Reparatiefout:", - "Set log level to debug - current level: \"%s\"" : "Instellen logniveau op debug - huidige niveau: \"%s\"", - "Reset log level to \"%s\"" : "Terugzetten logniveau op \"#%s\"", "Starting code integrity check" : "Starten code betrouwbaarheidscontrole", "Finished code integrity check" : "Gereed met code betrouwbaarheidscontrole", "%s (3rdparty)" : "%s (3rdparty)", @@ -112,12 +110,12 @@ "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.", "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.", "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.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{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 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 href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a href=\"{docLink}\">documentatie</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "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 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 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 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 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 href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", + "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\" 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\" 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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "UwPHP versie ({version}) wordt niet langer <a target=\"_blank\" href=\"{phpLink}\">ondersteund door PHP</a>. We adviseren u om uw PHP versie te upgraden voor betere prestaties en security updates geleverd door PHP.", + "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\" 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\" 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\" 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\" 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\" 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\" 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", "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 least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "De \"Strict-Transport-Security\" HTTP header is niet geconfigureerd als minimaal \"{seconds}\" seconden. Voor verbeterde beveiliging adviseren we HSTS in te schakelen zoals beschreven in onze <a href=\"{docUrl}\">security tips</a>.", diff --git a/core/l10n/oc.js b/core/l10n/oc.js index f9fdb8bea11..1f8330501fb 100644 --- a/core/l10n/oc.js +++ b/core/l10n/oc.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Mesa a jorn de « %s » cap a %s", "Repair warning: " : "Avertiment de reparacion :", "Repair error: " : "Error de reparacion :", - "Set log level to debug - current level: \"%s\"" : "Reglatge del nivèl de log de \"desbug\" - nivèl actual : \"%s\"", - "Reset log level to \"%s\"" : "Reglatge del nivèl de log de \"desbug\" - nivèl actual : \"%s\"", "%s (3rdparty)" : "%s (origina tèrça)", "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Las aplicacions seguentas son estadas desactivadas : %s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Vòstre servidor web es pas corrèctament configurat per la sincronizacion de fichièrs : sembla que l'interfàcia WebDAV fonciona pas.", "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." : "Aqueste servidor se pòt pas connectar a internet. Aquò significa que certanas foncionalitats, talas coma lo montatge de supòrts d'emmagazinatge distants, las notificacions de mesas a jorn o l'installacion d'aplicacions tèrças foncionaràn pas. L'accès als fichièrs a distància, e tanben las notificacions per mail pòdon tanben èsser indisponiblas. Es recomandat d'activar la connexion internet per aqueste servidor se volètz dispausar de l'ensemble de las foncionalitats ofèrtas.", "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." : "Vòstre dorsièr de donadas e vòstres fichièrs son probablament accessibles dempuèi internet. Lo fichièr .htaccess fonciona pas. Vos recomandam bravament de configurar vòstre servidor web de manièra qu'aqueste dorsièr de donadas siá pas mai accessible, o de lo desplaçar en defòra de la raiç del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Cap d'escondedor de la memòria es pas configurat. Se possible, configuratz un \"memcache\" per aumentar las performàncias. Per mai d'information consultatz la <a href=\"{docLink}\">documentacion</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom es pas legible per PHP, aquò es bravament desconselhat per de rasons de seguretat. Mai d'informacions pòdon èsser trobadas dins nòstra <a href=\"{docLink}\">documentacion</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilizada ({version}) <a href=\"{phpLink}\">es pas mai presa en carga pels creators de PHP</a>. Vos recomandam de metre a nivèl vòstra installacion de PHP per beneficiar de performàncias melhoras e de las mesas a jorn de seguretat provesidas per PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuracion dels headers del reverse proxy es incorrècta, o accedissètz a ownCloud dempuèi un proxy fisable. Se sètz pas a accedir a ownCloud dempuèi un proxy fisable, aquò es un problèma de seguretat que pòt permetre a un atacant d'amagar sa vertadièra adreça IP. <a href=\"{docLink}\">Mai d'info dins la documentacion.</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" es configurat coma escondedor distribuit, mas lo modul installat es \"memcache\". \\OC\\Memcache\\Memcached pren pas en carga que \"memcached\" e non pas \"memcache\". <a href=\"{wikiLink}\">Consultar lo wiki memcached que parla d'aquestes dos moduls.</a>", "Error occurred while checking server setup" : "Una error s'es produsida al moment de la verificacion de la configuracion del servidor", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'entèsta HTTP \"{header}\" es pas configurada per èsser egala a \"{expected}\" en creant potencialament un risc religat a la seguretat e a la vida privada. Es doncas recomandat d'ajustar aqueste paramètre.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'entèsta HTTP \"Strict-Transport-Security\" es pas configurada a \"{seconds}\" segondas. Per renforçar la seguretat, recomandam d'activar HSTS coma descrich dins nòstre <a href=\"{docUrl}\">Guida pel renfortiment e la seguretat</a>.", diff --git a/core/l10n/oc.json b/core/l10n/oc.json index bd34013f9e7..c6f8536aa06 100644 --- a/core/l10n/oc.json +++ b/core/l10n/oc.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Mesa a jorn de « %s » cap a %s", "Repair warning: " : "Avertiment de reparacion :", "Repair error: " : "Error de reparacion :", - "Set log level to debug - current level: \"%s\"" : "Reglatge del nivèl de log de \"desbug\" - nivèl actual : \"%s\"", - "Reset log level to \"%s\"" : "Reglatge del nivèl de log de \"desbug\" - nivèl actual : \"%s\"", "%s (3rdparty)" : "%s (origina tèrça)", "%s (incompatible)" : "%s (incompatible)", "Following apps have been disabled: %s" : "Las aplicacions seguentas son estadas desactivadas : %s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Vòstre servidor web es pas corrèctament configurat per la sincronizacion de fichièrs : sembla que l'interfàcia WebDAV fonciona pas.", "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." : "Aqueste servidor se pòt pas connectar a internet. Aquò significa que certanas foncionalitats, talas coma lo montatge de supòrts d'emmagazinatge distants, las notificacions de mesas a jorn o l'installacion d'aplicacions tèrças foncionaràn pas. L'accès als fichièrs a distància, e tanben las notificacions per mail pòdon tanben èsser indisponiblas. Es recomandat d'activar la connexion internet per aqueste servidor se volètz dispausar de l'ensemble de las foncionalitats ofèrtas.", "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." : "Vòstre dorsièr de donadas e vòstres fichièrs son probablament accessibles dempuèi internet. Lo fichièr .htaccess fonciona pas. Vos recomandam bravament de configurar vòstre servidor web de manièra qu'aqueste dorsièr de donadas siá pas mai accessible, o de lo desplaçar en defòra de la raiç del servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Cap d'escondedor de la memòria es pas configurat. Se possible, configuratz un \"memcache\" per aumentar las performàncias. Per mai d'information consultatz la <a href=\"{docLink}\">documentacion</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom es pas legible per PHP, aquò es bravament desconselhat per de rasons de seguretat. Mai d'informacions pòdon èsser trobadas dins nòstra <a href=\"{docLink}\">documentacion</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilizada ({version}) <a href=\"{phpLink}\">es pas mai presa en carga pels creators de PHP</a>. Vos recomandam de metre a nivèl vòstra installacion de PHP per beneficiar de performàncias melhoras e de las mesas a jorn de seguretat provesidas per PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuracion dels headers del reverse proxy es incorrècta, o accedissètz a ownCloud dempuèi un proxy fisable. Se sètz pas a accedir a ownCloud dempuèi un proxy fisable, aquò es un problèma de seguretat que pòt permetre a un atacant d'amagar sa vertadièra adreça IP. <a href=\"{docLink}\">Mai d'info dins la documentacion.</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "\"memcached\" es configurat coma escondedor distribuit, mas lo modul installat es \"memcache\". \\OC\\Memcache\\Memcached pren pas en carga que \"memcached\" e non pas \"memcache\". <a href=\"{wikiLink}\">Consultar lo wiki memcached que parla d'aquestes dos moduls.</a>", "Error occurred while checking server setup" : "Una error s'es produsida al moment de la verificacion de la configuracion del servidor", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'entèsta HTTP \"{header}\" es pas configurada per èsser egala a \"{expected}\" en creant potencialament un risc religat a la seguretat e a la vida privada. Es doncas recomandat d'ajustar aqueste paramètre.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'entèsta HTTP \"Strict-Transport-Security\" es pas configurada a \"{seconds}\" segondas. Per renforçar la seguretat, recomandam d'activar HSTS coma descrich dins nòstre <a href=\"{docUrl}\">Guida pel renfortiment e la seguretat</a>.", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index a1f0e287b7d..f896d164102 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Repair warning: " : "Aviso de reparação:", "Repair error: " : "Reparação de erro:", - "Set log level to debug - current level: \"%s\"" : "Configure o nível de log para debug - nível corrente: \"%s\"", - "Reset log level to \"%s\"" : "Reconfigurar o nível de log para \"%s\"", + "Set log level to debug" : "Definir o nível de log para debug", + "Reset log level" : "Redefinição do nível do log", "Starting code integrity check" : "Inicializando verificação da integridade do código", "Finished code integrity check" : "Finalizada a verificação de integridade do código", "%s (3rdparty)" : "%s (3ºterceiros)", @@ -114,17 +114,17 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, pois a interface WebDAV parece ser desconfigurada.", "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." : "Este servidor não tem nenhuma conexão com a Internet. Isto significa que algumas das características como a montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", "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." : "O seu diretório de dados e os arquivos estão, provavelmente, acessíveis a partir da Internet. O arquivo .htaccess não está funcionando. Nós sugerimos que você configure o servidor web de uma forma que o diretório de dados não seja acessível ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configurar um cache de memória, se disponível. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\"> documentação </a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido por PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é <a href=\"{phpLink}\">suportada pela PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidos pela PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentação</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached somente suporta \"memcached\" e não \"memcache\". Veja o <a href=\"{wikiLink}\">memcached wiki sobre esse módulo</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure um cache de memória, se disponível. Mais informação podem ser encontradas em nossa <a target=\"_blank\" href=\"{docLink}\">documentação</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é mais <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidas pelo PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP \"memcache\" errado está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" href=\"{wikiLink}\">o wiki sobre memcached sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "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." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "O cabeçalho \"Transporte-de-Segurança-Restrita\"HTTP não está configurada para menos de \"{seconds}\" segundos. Para uma maior segurança recomendamos a ativação HSTS conforme descrito em nossas <a href=\"{docUrl}\">dicas de segurança</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>." : "Você está acessando este site via HTTP. Nós fortemente sugerimos que você ao invéz, configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", - "Shared" : "Compartilhados", + "Shared" : "Compartilhado", "Shared with {recipients}" : "Compartilhado com {recipients}", "Error" : "Erro", "Error while sharing" : "Erro ao compartilhar", @@ -218,7 +218,7 @@ OC.L10N.register( "You can click here to return to %s." : "Você pode clicar aqui para retornar para %s.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\ngostaria que você soubesse que %s compartilhou %s com você.\nVeja isto: %s\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Internal Server Error" : "Erro Interno do Servidor", "The server encountered an internal error and was unable to complete your request." : "O servidor encontrou um erro interno e não conseguiu concluir o seu pedido.", "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Entre em contato com o administrador do servidor se este erro reaparece várias vezes, por favor, inclua os detalhes técnicos abaixo em seu relatório.", @@ -256,7 +256,7 @@ OC.L10N.register( "Finishing …" : "Finalizando ...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", - "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>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Verificar!</a><br><br> ", + "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>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br> ", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite JavaScript{linkend} e recerregue a página.", "Log out" : "Sair", "Search" : "Perquisar", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index fd3c4f6ac2d..9bec04076ae 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Repair warning: " : "Aviso de reparação:", "Repair error: " : "Reparação de erro:", - "Set log level to debug - current level: \"%s\"" : "Configure o nível de log para debug - nível corrente: \"%s\"", - "Reset log level to \"%s\"" : "Reconfigurar o nível de log para \"%s\"", + "Set log level to debug" : "Definir o nível de log para debug", + "Reset log level" : "Redefinição do nível do log", "Starting code integrity check" : "Inicializando verificação da integridade do código", "Finished code integrity check" : "Finalizada a verificação de integridade do código", "%s (3rdparty)" : "%s (3ºterceiros)", @@ -112,17 +112,17 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, pois a interface WebDAV parece ser desconfigurada.", "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." : "Este servidor não tem nenhuma conexão com a Internet. Isto significa que algumas das características como a montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acessar arquivos remotamente e envio de e-mails de notificação pode não funcionar, também. Sugerimos permitir conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", "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." : "O seu diretório de dados e os arquivos estão, provavelmente, acessíveis a partir da Internet. O arquivo .htaccess não está funcionando. Nós sugerimos que você configure o servidor web de uma forma que o diretório de dados não seja acessível ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configurar um cache de memória, se disponível. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\"> documentação </a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido por PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentation</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é <a href=\"{phpLink}\">suportada pela PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidos pela PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informações podem ser encontradas em nossa <a href=\"{docLink}\">documentação</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached somente suporta \"memcached\" e não \"memcache\". Veja o <a href=\"{wikiLink}\">memcached wiki sobre esse módulo</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure um cache de memória, se disponível. Mais informação podem ser encontradas em nossa <a target=\"_blank\" href=\"{docLink}\">documentação</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\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP o que é altamente desencorajado por razões de segurança. Mais informações podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão do PHP ({version}) não é mais <a target=\"_blank\" href=\"{phpLink}\">suportada pelo PHP</a>. Nós o incentivamos a atualizar sua versão do PHP para tirar proveito de atualizações de desempenho e de segurança fornecidas pelo PHP.", + "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\" href=\"{docLink}\">documentation</a>." : "A configuração de cabeçalhos do proxy reverso está incorreta, ou você está acessando ownCloud de um proxy confiável. Se você não está acessando ownCloud de um proxy confiável, esta é uma questão de segurança e pode permitir a um invasor falsificar seu endereço IP como visível para ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuído, mas o módulo PHP \"memcache\" errado está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" href=\"{wikiLink}\">o wiki sobre memcached sobre ambos os módulos</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema podem ser encontradas na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Reexaminar…</a>)", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", "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." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "O cabeçalho \"Transporte-de-Segurança-Restrita\"HTTP não está configurada para menos de \"{seconds}\" segundos. Para uma maior segurança recomendamos a ativação HSTS conforme descrito em nossas <a href=\"{docUrl}\">dicas de segurança</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>." : "Você está acessando este site via HTTP. Nós fortemente sugerimos que você ao invéz, configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", - "Shared" : "Compartilhados", + "Shared" : "Compartilhado", "Shared with {recipients}" : "Compartilhado com {recipients}", "Error" : "Erro", "Error while sharing" : "Erro ao compartilhar", @@ -216,7 +216,7 @@ "You can click here to return to %s." : "Você pode clicar aqui para retornar para %s.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\ngostaria que você soubesse que %s compartilhou %s com você.\nVeja isto: %s\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Internal Server Error" : "Erro Interno do Servidor", "The server encountered an internal error and was unable to complete your request." : "O servidor encontrou um erro interno e não conseguiu concluir o seu pedido.", "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Entre em contato com o administrador do servidor se este erro reaparece várias vezes, por favor, inclua os detalhes técnicos abaixo em seu relatório.", @@ -254,7 +254,7 @@ "Finishing …" : "Finalizando ...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", - "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>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Verificar!</a><br><br> ", + "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>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br> ", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite JavaScript{linkend} e recerregue a página.", "Log out" : "Sair", "Search" : "Perquisar", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index 0d28361a2c7..aa369a1cc50 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -13,7 +13,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Repair warning: " : "Aviso de reparação:", "Repair error: " : "Corrija o erro:", - "Reset log level to \"%s\"" : "Reiniciar o nível de registo para \"%s\"", "%s (3rdparty)" : "%s (terceiros)", "%s (incompatible)" : "%s (incompatível)", "Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s", @@ -107,9 +106,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "O seu servidor da Web não está configurado corretamente para permitir a sincronização de ficheiro, porque a interface WebDAV parece estar com problemas.", "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." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.", "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." : "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. O seu ficheiro .htaccess não está a funcionar corretamente. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nenhuma memória de cache foi configurada. Se possível configure-a de forma a optimizar o desempenho. Mais informações podem ser encontradas na <a href=\"{docLink}\">documentação</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a href=\"{docLink}\">documentação</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão ({version}) do PHP já não é <a href=\"{phpLink}\">suportada pelo PHP</a>. Nós encorajamos-lo a atualizar a sua versão do PHP para aproveitar o desempenho e as atualizações de segurança fornecidas pelo PHP.´«", "Error occurred while checking server setup" : "Ocorreu um erro durante a verificação da configuração do servidor", "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." : "O cabeçalho HTTP \"{header}\" não está configurado para igualar \"{expected}\". Isto é um potencial risco de segurança ou privacidade e recomendamos que o corrija.", "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>." : "Está a aceder a este site via HTTP. Nós recomendamos vivamente que configure o seu servidor para requerer a utilização de HTTPS, em vez do que está descrito nas nossas <a href=\"{docUrl}\">dicas de segurança</a>.", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index e9cf78ce9a1..0299dd05f06 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -11,7 +11,6 @@ "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Repair warning: " : "Aviso de reparação:", "Repair error: " : "Corrija o erro:", - "Reset log level to \"%s\"" : "Reiniciar o nível de registo para \"%s\"", "%s (3rdparty)" : "%s (terceiros)", "%s (incompatible)" : "%s (incompatível)", "Following apps have been disabled: %s" : "As seguintes apps foram desativadas: %s", @@ -105,9 +104,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "O seu servidor da Web não está configurado corretamente para permitir a sincronização de ficheiro, porque a interface WebDAV parece estar com problemas.", "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." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.", "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." : "A sua pasta com os dados e os seus ficheiros estão provavelmente acessíveis a partir das internet. O seu ficheiro .htaccess não está a funcionar corretamente. Sugerimos veementemente que configure o seu servidor web de maneira a que a pasta com os dados deixe de ficar acessível, ou mova a pasta com os dados para fora da raiz de documentos do servidor web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Nenhuma memória de cache foi configurada. Se possível configure-a de forma a optimizar o desempenho. Mais informações podem ser encontradas na <a href=\"{docLink}\">documentação</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a href=\"{docLink}\">documentação</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "A sua versão ({version}) do PHP já não é <a href=\"{phpLink}\">suportada pelo PHP</a>. Nós encorajamos-lo a atualizar a sua versão do PHP para aproveitar o desempenho e as atualizações de segurança fornecidas pelo PHP.´«", "Error occurred while checking server setup" : "Ocorreu um erro durante a verificação da configuração do servidor", "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." : "O cabeçalho HTTP \"{header}\" não está configurado para igualar \"{expected}\". Isto é um potencial risco de segurança ou privacidade e recomendamos que o corrija.", "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>." : "Está a aceder a este site via HTTP. Nós recomendamos vivamente que configure o seu servidor para requerer a utilização de HTTPS, em vez do que está descrito nas nossas <a href=\"{docUrl}\">dicas de segurança</a>.", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 90a07917555..ae0e816d4f9 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -16,8 +16,10 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Обновлено \"%s\" до %s", "Repair warning: " : "Предупреждение восстановления:", "Repair error: " : "Ошибка восстановления:", - "Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"", - "Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"", + "Set log level to debug" : "Установить уровень журнала отладки", + "Reset log level" : "Сбросить уровень журнала", + "Starting code integrity check" : "Начинается проверка целостности кода", + "Finished code integrity check" : "Проверка целостности кода завершина", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (несовместим)", "Following apps have been disabled: %s" : "Были отключены следующие приложения: %s", @@ -77,6 +79,7 @@ OC.L10N.register( "Oct." : "Окт.", "Nov." : "Ноя.", "Dec." : "Дек.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\"> Были обнаружены проблемы с проверкой целостности кода. Подробнее ...", "Settings" : "Настройки", "Saving..." : "Сохранение...", "seconds ago" : "несколько секунд назад", @@ -111,11 +114,9 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер еще не настроен должным образом, чтобы позволить синхронизацию файлов, потому что интерфейс WebDAV, кажется, испорчен.", "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." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установки сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Мы предлагаем включить подключение к Интернету для этого сервера, если вы хотите, чтобы все функции работали.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш каталог данных и ваши файлы возможно доступны из интернете. .htaccess файл не работает. Мы настоятельно рекомендуем вам настроить ваш веб сервер таким образом, что-бы каталог данных не был больше доступен или переместите каталог данных за пределы корня веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробную информацию, вы можете посмотреть в нашей <a href=\"{docLink}\">документации</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не может быть прочитан PHP, что крайне нежелательно по причинам безопасности. Дополнительную информацию можно найти в a href=\"{docLink}\">документации</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) более не <a href=\"{phpLink}\">поддерживается PHP</a>. Мы советуем Вам обновить Вашу версию PHP для получения обновлений производительности и безопасности, предоставляемых PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси сервера некорректна, либо Вы заходите в ownCloud через доверенный прокси. Если Вы не заходите в ownCloud через доверенный прокси, это может быть небезопасно, так как злоумышленник может подменить видимые Owncloud IP-адреса. Более подробную информацию можно найти в нашей <a href=\"{docLink}\">документации</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\"! Информацию о модулях читайте на странице <a href=\"{wikiLink}\">memcached</a>.", + "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\" href=\"{docLink}\">documentation</a>." : "Кэш-памяти не настроено. Для повышения производительности, пожалуйста, настройте кэш-памяти (memcache) если есть такая возможность. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </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\" href=\"{docLink}\">documentation</a>." : "/DEV/urandom не доступно для PHP, это крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) больше не <a target=\"_blank\" href=\"{phpLink}\"> поддерживается PHP разработчиками</a>. Мы рекомендуем Вам обновить версию PHP, чтобы воспользоваться производительностью и безопасностью, предусмотренных в обновленной версии PHP.", "Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Заголовок HTTP \"{header}\" не настроен на ожидаемый \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.", @@ -187,6 +188,7 @@ OC.L10N.register( "Couldn't reset password because the token is invalid" : "Невозможно сбросить пароль из-за неверного токена", "Couldn't reset password because the token is expired" : "Не удается сбросить пароль, так как токен истек.", "Couldn't send reset email. Please make sure your username is correct." : "Не удалось отправить письмо для сброса пароля. Убедитесь, что имя пользователя указано верно.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Не удалось отправить письмо сброса из-за отсутствия адреса электронной почты для этого пользователя. Пожалуйста, обратитесь к администратору.", "%s password reset" : "Сброс пароля %s", "Use the following link to reset your password: {link}" : "Используйте следующую ссылку чтобы сбросить пароль: {link}", "New password" : "Новый пароль", @@ -261,6 +263,7 @@ OC.L10N.register( "Please try again or contact your administrator." : "Пожалуйста попробуйте ещё раз или свяжитесь с вашим администратором", "Log in" : "Войти", "Wrong password. Reset it?" : "Неправильный пароль. Сбросить его?", + "Wrong password." : "Неправильный пароль.", "Stay logged in" : "Оставаться в системе", "Alternative Logins" : "Альтернативные имена пользователя", "This ownCloud instance is currently in single user mode." : "Сервер ownCloud в настоящее время работает в однопользовательском режиме.", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 93b8ce53dab..28fbcd1a491 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -14,8 +14,10 @@ "Updated \"%s\" to %s" : "Обновлено \"%s\" до %s", "Repair warning: " : "Предупреждение восстановления:", "Repair error: " : "Ошибка восстановления:", - "Set log level to debug - current level: \"%s\"" : "Установить отладочное журналирование - текущий уровень: \"%s\"", - "Reset log level to \"%s\"" : "Сбросить уровень журналирования в \"%s\"", + "Set log level to debug" : "Установить уровень журнала отладки", + "Reset log level" : "Сбросить уровень журнала", + "Starting code integrity check" : "Начинается проверка целостности кода", + "Finished code integrity check" : "Проверка целостности кода завершина", "%s (3rdparty)" : "%s (3rdparty)", "%s (incompatible)" : "%s (несовместим)", "Following apps have been disabled: %s" : "Были отключены следующие приложения: %s", @@ -75,6 +77,7 @@ "Oct." : "Окт.", "Nov." : "Ноя.", "Dec." : "Дек.", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\"> Были обнаружены проблемы с проверкой целостности кода. Подробнее ...", "Settings" : "Настройки", "Saving..." : "Сохранение...", "seconds ago" : "несколько секунд назад", @@ -109,11 +112,9 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер еще не настроен должным образом, чтобы позволить синхронизацию файлов, потому что интерфейс WebDAV, кажется, испорчен.", "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." : "Этот сервер не имеет подключения к Интернету. Это означает, что некоторые из функций, таких как внешнее хранилище, уведомления об обновлениях и установки сторонних приложений не будут работать. Доступ к файлам удаленно и отправки уведомлений по почте могут не работать. Мы предлагаем включить подключение к Интернету для этого сервера, если вы хотите, чтобы все функции работали.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш каталог данных и ваши файлы возможно доступны из интернете. .htaccess файл не работает. Мы настоятельно рекомендуем вам настроить ваш веб сервер таким образом, что-бы каталог данных не был больше доступен или переместите каталог данных за пределы корня веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробную информацию, вы можете посмотреть в нашей <a href=\"{docLink}\">документации</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не может быть прочитан PHP, что крайне нежелательно по причинам безопасности. Дополнительную информацию можно найти в a href=\"{docLink}\">документации</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) более не <a href=\"{phpLink}\">поддерживается PHP</a>. Мы советуем Вам обновить Вашу версию PHP для получения обновлений производительности и безопасности, предоставляемых PHP.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Конфигурация заголовков обратного прокси сервера некорректна, либо Вы заходите в ownCloud через доверенный прокси. Если Вы не заходите в ownCloud через доверенный прокси, это может быть небезопасно, так как злоумышленник может подменить видимые Owncloud IP-адреса. Более подробную информацию можно найти в нашей <a href=\"{docLink}\">документации</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached настроен на распределенный кеш, но установлен не поддерживаемый модуль PHP \"memcache\". \\OC\\Memcache\\Memcached поддерживает только модуль \"memcached\"! Информацию о модулях читайте на странице <a href=\"{wikiLink}\">memcached</a>.", + "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\" href=\"{docLink}\">documentation</a>." : "Кэш-памяти не настроено. Для повышения производительности, пожалуйста, настройте кэш-памяти (memcache) если есть такая возможность. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </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\" href=\"{docLink}\">documentation</a>." : "/DEV/urandom не доступно для PHP, это крайне нежелательно по соображениям безопасности. Дополнительную информацию можно найти в нашей <a target=\"_blank\" href=\"{docLink}\"> документации </a>.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версия PHP ({version}) больше не <a target=\"_blank\" href=\"{phpLink}\"> поддерживается PHP разработчиками</a>. Мы рекомендуем Вам обновить версию PHP, чтобы воспользоваться производительностью и безопасностью, предусмотренных в обновленной версии PHP.", "Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Заголовок HTTP \"{header}\" не настроен на ожидаемый \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен хотя бы на \"{seconds}\" секунд. Для улучшения безопасности мы рекомендуем включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.", @@ -185,6 +186,7 @@ "Couldn't reset password because the token is invalid" : "Невозможно сбросить пароль из-за неверного токена", "Couldn't reset password because the token is expired" : "Не удается сбросить пароль, так как токен истек.", "Couldn't send reset email. Please make sure your username is correct." : "Не удалось отправить письмо для сброса пароля. Убедитесь, что имя пользователя указано верно.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Не удалось отправить письмо сброса из-за отсутствия адреса электронной почты для этого пользователя. Пожалуйста, обратитесь к администратору.", "%s password reset" : "Сброс пароля %s", "Use the following link to reset your password: {link}" : "Используйте следующую ссылку чтобы сбросить пароль: {link}", "New password" : "Новый пароль", @@ -259,6 +261,7 @@ "Please try again or contact your administrator." : "Пожалуйста попробуйте ещё раз или свяжитесь с вашим администратором", "Log in" : "Войти", "Wrong password. Reset it?" : "Неправильный пароль. Сбросить его?", + "Wrong password." : "Неправильный пароль.", "Stay logged in" : "Оставаться в системе", "Alternative Logins" : "Альтернативные имена пользователя", "This ownCloud instance is currently in single user mode." : "Сервер ownCloud в настоящее время работает в однопользовательском режиме.", diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js index af5e6ce415a..c8256bf1869 100644 --- a/core/l10n/sk_SK.js +++ b/core/l10n/sk_SK.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Aktualizované \"%s\" na %s", "Repair warning: " : "Oznámenie opravy:", "Repair error: " : "Chyba opravy:", - "Set log level to debug - current level: \"%s\"" : "Nastaviť úroveň záznamu na debug - aktuálna úroveň: \"%s\"", - "Reset log level to \"%s\"" : "Vrátiť úroveň záznamu na „%s“", "%s (3rdparty)" : "%s (od tretej strany)", "%s (incompatible)" : "%s (nekompatibilná)", "Following apps have been disabled: %s" : "Nasledovné aplikácie boli zakázané: %s", @@ -111,7 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Váš webový server nie je zatiaľ správne nastavený, aby umožnil synchronizáciu súborov, pretože rozhranie WebDAV sa zdá byť nefunkčné.", "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." : "Server nemá funkčné pripojenie k internetu. Niektoré moduly ako napr. externé úložisko, oznámenie o dostupných aktualizáciách alebo inštalácia aplikácií tretích strán nebudú fungovať. Vzdialený prístup k súborom a odosielanie oznamovacích emailov tiež nemusí fungovať. Ak chcete využívať všetky funkcie, odporúčame povoliť tomuto serveru pripojenie k internetu.", "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." : "Váš priečinok s dátami aj vaše súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby priečinok s dátami nebol naďalej prístupný alebo presunúť priečinok s dátami mimo priestoru, ktorý webový server sprístupňuje.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP nedokáže čítať z /dev/urandom, čo sa z bezpečnostných dôvodov dôrazne neodporúča. Ďalšie informácie nájdete v našej <a href=\"{docLink}\">dokumentácii</a>.", "Error occurred while checking server setup" : "Počas kontroly nastavenia serveru sa stala chyba", "Shared" : "Zdieľané", "Shared with {recipients}" : "Zdieľa s {recipients}", diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json index 77b7ea8b89b..3379984db23 100644 --- a/core/l10n/sk_SK.json +++ b/core/l10n/sk_SK.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Aktualizované \"%s\" na %s", "Repair warning: " : "Oznámenie opravy:", "Repair error: " : "Chyba opravy:", - "Set log level to debug - current level: \"%s\"" : "Nastaviť úroveň záznamu na debug - aktuálna úroveň: \"%s\"", - "Reset log level to \"%s\"" : "Vrátiť úroveň záznamu na „%s“", "%s (3rdparty)" : "%s (od tretej strany)", "%s (incompatible)" : "%s (nekompatibilná)", "Following apps have been disabled: %s" : "Nasledovné aplikácie boli zakázané: %s", @@ -109,7 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Váš webový server nie je zatiaľ správne nastavený, aby umožnil synchronizáciu súborov, pretože rozhranie WebDAV sa zdá byť nefunkčné.", "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." : "Server nemá funkčné pripojenie k internetu. Niektoré moduly ako napr. externé úložisko, oznámenie o dostupných aktualizáciách alebo inštalácia aplikácií tretích strán nebudú fungovať. Vzdialený prístup k súborom a odosielanie oznamovacích emailov tiež nemusí fungovať. Ak chcete využívať všetky funkcie, odporúčame povoliť tomuto serveru pripojenie k internetu.", "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." : "Váš priečinok s dátami aj vaše súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby priečinok s dátami nebol naďalej prístupný alebo presunúť priečinok s dátami mimo priestoru, ktorý webový server sprístupňuje.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP nedokáže čítať z /dev/urandom, čo sa z bezpečnostných dôvodov dôrazne neodporúča. Ďalšie informácie nájdete v našej <a href=\"{docLink}\">dokumentácii</a>.", "Error occurred while checking server setup" : "Počas kontroly nastavenia serveru sa stala chyba", "Shared" : "Zdieľané", "Shared with {recipients}" : "Zdieľa s {recipients}", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index 46580d8c4ed..c22f5a9a414 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s", "Repair warning: " : "Opozorilo popravila:", "Repair error: " : "Napaka popravila:", - "Set log level to debug - current level: \"%s\"" : "Stopnja dnevnika nastavljena na razhroščevanje - trenutna stopnja: \"%s\"", - "Reset log level to \"%s\"" : "Stopnja dnevnika ponastavljena na \"%s\"", "%s (3rdparty)" : "%s (zunanje)", "%s (incompatible)" : "%s (neskladno)", "Following apps have been disabled: %s" : "Sledeče aplikacije so blie izključene: %s", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index ae52da630ae..a5b1633783e 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s", "Repair warning: " : "Opozorilo popravila:", "Repair error: " : "Napaka popravila:", - "Set log level to debug - current level: \"%s\"" : "Stopnja dnevnika nastavljena na razhroščevanje - trenutna stopnja: \"%s\"", - "Reset log level to \"%s\"" : "Stopnja dnevnika ponastavljena na \"%s\"", "%s (3rdparty)" : "%s (zunanje)", "%s (incompatible)" : "%s (neskladno)", "Following apps have been disabled: %s" : "Sledeče aplikacije so blie izključene: %s", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 7a0175d6baf..6baa6019ad3 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -16,8 +16,8 @@ OC.L10N.register( "Updated \"%s\" to %s" : "U përditësua \"%s\" në %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", "Repair error: " : "Gabim ndreqjeje: ", - "Set log level to debug - current level: \"%s\"" : "Caktoni debug si nivel regjistri - niveli i tanishëm: \"%s\"", - "Reset log level to \"%s\"" : "Riktheni nivel regjistri në \"%s\"", + "Set log level to debug" : "Caktoni shkallë regjistrimi për diagnostikimin", + "Reset log level" : "Rikthe te parazgjedhja shkallën e regjistrimit", "Starting code integrity check" : "Po fillohet kontroll integriteti për kodin", "Finished code integrity check" : "Përfundoi kontrolli i integritetit për kodin", "%s (3rdparty)" : "%s (prej palësh të treta)", @@ -114,12 +114,12 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Shërbyesi juaj web ende s’është rregulluar për të lejuar njëkohësim kartelash, ngaqë ndërfaqja WebDAV duket se është e dëmtuar.", "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." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.", "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." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "S’ka të formësuar fshehtinë kujtese. Që të shtoni suksesshmërinë e shërbyesit tuaj, ju lutemi, formësoni një memcache, në mundet. Të dhëna të mëtejshme mund të gjenden te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP -së ({version}) nuk <a href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni PHP-në me një version të ri që të përfitoni nga përditësimi i punimit dhe sigurisë të ofruara nga PHP-ja.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a href=\"{wikiLink}\">memcached wiki për të dy modulet</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP-së ({version}) nuk <a target=\"_blank\" href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni versionin tuaj të PHP-së që të përfitoni nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP-ja.", + "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\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", "Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Kryet HTTP \"Strict-Transport-Security\" s’është formësuar të paktën \"{seconds}\". Për siguri të thelluar këshillojmë aktivizimin e HSTS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.", @@ -249,7 +249,7 @@ OC.L10N.register( "Database tablespace" : "Tablespace-i i database-it", "Database host" : "Strehë baze të dhënash", "Performance warning" : "Sinjalizim funksionimi", - "SQLite will be used as database." : "Si bazë të dhënash do të përdoret SQL-ja.", + "SQLite will be used as database." : "Si bazë të dhënash do të përdoret SQLite.", "For larger installations we recommend to choose a different database backend." : "Për instalime më të mëdha këshillojmë të zgjidhni një tjetër program shërbyesi baze të dhënash.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it shkëshillohet veçanërisht, kur për njëkohësim kartelash përdoret klienti desktop.", "Finish setup" : "Përfundoje rregullimin", diff --git a/core/l10n/sq.json b/core/l10n/sq.json index ebe75040d54..d8232ffeb74 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -14,8 +14,8 @@ "Updated \"%s\" to %s" : "U përditësua \"%s\" në %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", "Repair error: " : "Gabim ndreqjeje: ", - "Set log level to debug - current level: \"%s\"" : "Caktoni debug si nivel regjistri - niveli i tanishëm: \"%s\"", - "Reset log level to \"%s\"" : "Riktheni nivel regjistri në \"%s\"", + "Set log level to debug" : "Caktoni shkallë regjistrimi për diagnostikimin", + "Reset log level" : "Rikthe te parazgjedhja shkallën e regjistrimit", "Starting code integrity check" : "Po fillohet kontroll integriteti për kodin", "Finished code integrity check" : "Përfundoi kontrolli i integritetit për kodin", "%s (3rdparty)" : "%s (prej palësh të treta)", @@ -112,12 +112,12 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Shërbyesi juaj web ende s’është rregulluar për të lejuar njëkohësim kartelash, ngaqë ndërfaqja WebDAV duket se është e dëmtuar.", "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." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.", "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." : "Drejtoria juaj e të dhënave dhe kartelat tuaja ka shumë mundësi të jenë të arritshme që nga interneti. Kartela .htaccess s’funksionon. Këshillojmë me forcë që ta formësoni shërbyesin tuaj web në një mënyrë që drejtoria e të dhënave të mos lejojë më hyrje, ose ta zhvendosni drejtorinë e të dhënave jashtë rrënjës së dokumenteve të shërbyesit web.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "S’ka të formësuar fshehtinë kujtese. Që të shtoni suksesshmërinë e shërbyesit tuaj, ju lutemi, formësoni një memcache, në mundet. Të dhëna të mëtejshme mund të gjenden te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP -së ({version}) nuk <a href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni PHP-në me një version të ri që të përfitoni nga përditësimi i punimit dhe sigurisë të ofruara nga PHP-ja.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a href=\"{docLink}\">dokumentimi</a> ynë.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a href=\"{wikiLink}\">memcached wiki për të dy modulet</a>.", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", + "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\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "Your PHP version ({version}) is no longer <a target=\"_blank\" href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Versioni juaj i PHP-së ({version}) nuk <a target=\"_blank\" href=\"{phpLink}\">mbulohet më nga PHP-ja</a>. Ju nxisim ta përmirësoni versionin tuaj të PHP-së që të përfitoni nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP-ja.", + "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\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "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\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</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\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", "Error occurred while checking server setup" : "Ndodhi një gabim gjatë kontrollit të rregullimit të shërbyesit", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "Kryet HTTP \"{header}\" s’është formësuar të jetë i njëjtë me \"{expected}\". Ky është një rrezik potencial sigurie dhe privatësie dhe këshillojmë të ndreqet ky rregullim.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "Kryet HTTP \"Strict-Transport-Security\" s’është formësuar të paktën \"{seconds}\". Për siguri të thelluar këshillojmë aktivizimin e HSTS-së, siç përshkruhet te <a href=\"{docUrl}\">këshillat tona mbi sigurinë</a>.", @@ -247,7 +247,7 @@ "Database tablespace" : "Tablespace-i i database-it", "Database host" : "Strehë baze të dhënash", "Performance warning" : "Sinjalizim funksionimi", - "SQLite will be used as database." : "Si bazë të dhënash do të përdoret SQL-ja.", + "SQLite will be used as database." : "Si bazë të dhënash do të përdoret SQLite.", "For larger installations we recommend to choose a different database backend." : "Për instalime më të mëdha këshillojmë të zgjidhni një tjetër program shërbyesi baze të dhënash.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it shkëshillohet veçanërisht, kur për njëkohësim kartelash përdoret klienti desktop.", "Finish setup" : "Përfundoje rregullimin", diff --git a/core/l10n/sr.js b/core/l10n/sr.js index 6a918528512..d3e4830e27b 100644 --- a/core/l10n/sr.js +++ b/core/l10n/sr.js @@ -101,8 +101,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш сервер није правилно подешен да омогући синхронизацију фајлова. Изгледа да је ВебДАВ сучеље покварено.", "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." : "Овај сервер нема везу са интернетом. То значи да неке могућности, попут монтирања спољашњег складишта, обавештења о ажурирању или инсталација апликација треће стране, неће радити. Даљински приступ и слање е-поште, такође неће радити. Предлажемо да омогућите интернет везу за овај сервер ако желите да имате све могућности.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш директоријум са подацима и ваши фајлови су вероватно доступни са интернета. Фајл .htaccess не ради. Предлажемо да подесите ваш веб сервер на начин да директоријум са подацима не буде доступан или га изместите изван кореног директоријума веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Није подешен меморијски кеш. Да бисте побољшали перформансе подесите „memcache“ ако је доступан. Више информација можете наћи у <a href=\"{docLink}\">документацији</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ПХП не може да чита што није добро из безбедносних разлога. Информације о томе можете наћи у нашој <a href=\"{docLink}\">дукументацији</a>.", "Error occurred while checking server setup" : "Дошло је до грешке при провери поставки сервера", "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}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручујемо да подесите ову поставку.", "Shared" : "Дељено", diff --git a/core/l10n/sr.json b/core/l10n/sr.json index 6e66b1f770e..a25a96de7c1 100644 --- a/core/l10n/sr.json +++ b/core/l10n/sr.json @@ -99,8 +99,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш сервер није правилно подешен да омогући синхронизацију фајлова. Изгледа да је ВебДАВ сучеље покварено.", "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." : "Овај сервер нема везу са интернетом. То значи да неке могућности, попут монтирања спољашњег складишта, обавештења о ажурирању или инсталација апликација треће стране, неће радити. Даљински приступ и слање е-поште, такође неће радити. Предлажемо да омогућите интернет везу за овај сервер ако желите да имате све могућности.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш директоријум са подацима и ваши фајлови су вероватно доступни са интернета. Фајл .htaccess не ради. Предлажемо да подесите ваш веб сервер на начин да директоријум са подацима не буде доступан или га изместите изван кореног директоријума веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Није подешен меморијски кеш. Да бисте побољшали перформансе подесите „memcache“ ако је доступан. Више информација можете наћи у <a href=\"{docLink}\">документацији</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ПХП не може да чита што није добро из безбедносних разлога. Информације о томе можете наћи у нашој <a href=\"{docLink}\">дукументацији</a>.", "Error occurred while checking server setup" : "Дошло је до грешке при провери поставки сервера", "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}“ није подешено као „{expected}“. Ово потенцијално угрожава безбедност и приватност и препоручујемо да подесите ову поставку.", "Shared" : "Дељено", diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js index cdf411f24d5..c08a74cd8d5 100644 --- a/core/l10n/th_TH.js +++ b/core/l10n/th_TH.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "อัพเดท \"%s\" ไปยัง %s", "Repair warning: " : "เตือนการซ่อมแซม:", "Repair error: " : "เกิดข้อผิดพลาดในการซ่อมแซม:", - "Set log level to debug - current level: \"%s\"" : "การตั้งค่าระดับของการบันทึกเพื่อแก้ปัญหา - ระดับปัจจุบันคือ: \"%s\"", - "Reset log level to \"%s\"" : "รีเซ็ทระดับการบันทึกเป็น \"%s\"", "Starting code integrity check" : "กำลังเริ่มต้นรหัสตรวจสอบความสมบูรณ์", "Finished code integrity check" : "ตรวจสอบความสมบูรณ์ของรหัสเสร็จสิ้น", "%s (3rdparty)" : "%s (บุคคลที่ 3)", @@ -114,12 +112,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "เว็บเซิร์ฟเวอร์ของคุณยังไม่ถูกติดตั้งอย่างถูกต้องเพื่ออนุญาตให้ประสานข้อมูลให้ตรงกัน เนื่องจากอินเตอร์เฟซ WebDAV อาจเสียหาย", "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." : "เซิร์ฟเวอร์นี้ไม่มีการเชื่อมต่ออินเทอร์เน็ตซึ่งหมายความว่าบางส่วนของคุณสมบัติ เช่น การจัดเก็บข้อมูลภายนอก การแจ้งเตือนเกี่ยวกับการปรับปรุงหรือการติดตั้งแอพพลิเคชันของบุคคลที่สามจะไม่ทำงาน การเข้าถึงไฟล์จากระยะไกลและการส่งอีเมล์แจ้งเตือนอาจจะไม่ทำงาน เราขอแนะนำให้เปิดใช้งานการเชื่อมต่ออินเทอร์เน็ตสำหรับเซิร์ฟเวอร์นี้ถ้าคุณต้องการใช้งานคุณสมบัติทั้งหมด", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "ข้อมูลไดเรกทอรีและไฟล์ของคุณอาจจะสามารถเข้าถึงได้จากอินเทอร์เน็ต ขณะที่ htaccess ไฟล์ไม่ทำงาน เราขอแนะนำให้คุณกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณในทางที่ข้อมูลไดเรกทอรีไม่สามารถเข้าถึงได้หรือคุณย้ายข้อมูลไดเรกทอรีไปยังนอกเว็บเซิร์ฟเวอร์หรือเอกสาร", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "ไม่ได้ตั้งค่าหน่วยความจำแคช เพื่อเพิ่มประสิทธิภาพกรุณาตั้งค่า Memcache ของคุณ สามารถดูข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</a>", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ไม่สามารถอ่านโดย PHP ซึ่งมีผลด้านความปลอดภัยเป็นอย่างมาก สามารถดูข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</a>", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP รุ่น ({version}) ของคุณ จะไม่ได้รับ <a href=\"{phpLink}\">การสนับสนุนโดย PHP</a> เราขอแนะนำให้คุณอัพเกรดรุ่นของ PHP เพื่อความปลอดภัย", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "การกำหนดค่าพร็อกซี่ไม่ถูกต้องหรือคุณกำลังเข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ ถ้าคุณไม่ได้เข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ นี้เป็นปัญหาด้านความปลอดภัย คุณอาจถูกโจมดีจากผู้ไม่หวังดี อ่านข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached เป็นการกำหนดค่าแคช แต่มีโมดูล PHP ของ \"memcache\" ที่ผิดพลาดได้ถูกติดตั้ง \\OC\\Memcache\\Memcached สนับสนุนเฉพาะ \"memcached\" ไม่ใช่ \"memcache\" ดูได้ที่ <a href=\"{wikiLink}\">วิกิพีเดียเกี่ยวกับโมดูล Memcached</a>", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "บางไฟล์ยังไม่ได้ผ่านการตรวจสอบความสมบูรณ์ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไขปัญหานี้สามารถดูได้จาก <a href=\"{docLink}\">เอกสาร</a> (<a href=\"{codeIntegrityDownloadEndpoint}\">รายชื่อของไฟล์ที่ไม่ถูกต้อง...</a> / <a href=\"{rescanEndpoint}\">แสกนอีกครั้ง…</a>)", "Error occurred while checking server setup" : "เกิดข้อผิดพลาดขณะที่ทำการตรวจสอบการติดตั้งเซิร์ฟเวอร์", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" ไม่ได้กำหนดค่าส่วนหัว Http ให้เท่ากับ \"{expected}\" นี่คือระบบการรักษาความปลอดภัยที่มีศักยภาพหรือลดความเสี่ยงที่จะเกิดขึ้นเราขอแนะนำให้ปรับการตั้งค่านี้", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" ส่วนหัว HTTP ไม่ได้กำหนดค่าให้น้อยกว่า \"{seconds}\" วินาที เพื่อความปลอดภัยที่เพิ่มขึ้นเราขอแนะนำให้เปิดใช้งาน HSTS ที่อธิบายไว้ใน <a href=\"{docUrl}\">เคล็ดลับการรักษาความปลอดภัย</a> ของเรา", diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json index 2564a58ff8c..fd2205fac5c 100644 --- a/core/l10n/th_TH.json +++ b/core/l10n/th_TH.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "อัพเดท \"%s\" ไปยัง %s", "Repair warning: " : "เตือนการซ่อมแซม:", "Repair error: " : "เกิดข้อผิดพลาดในการซ่อมแซม:", - "Set log level to debug - current level: \"%s\"" : "การตั้งค่าระดับของการบันทึกเพื่อแก้ปัญหา - ระดับปัจจุบันคือ: \"%s\"", - "Reset log level to \"%s\"" : "รีเซ็ทระดับการบันทึกเป็น \"%s\"", "Starting code integrity check" : "กำลังเริ่มต้นรหัสตรวจสอบความสมบูรณ์", "Finished code integrity check" : "ตรวจสอบความสมบูรณ์ของรหัสเสร็จสิ้น", "%s (3rdparty)" : "%s (บุคคลที่ 3)", @@ -112,12 +110,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "เว็บเซิร์ฟเวอร์ของคุณยังไม่ถูกติดตั้งอย่างถูกต้องเพื่ออนุญาตให้ประสานข้อมูลให้ตรงกัน เนื่องจากอินเตอร์เฟซ WebDAV อาจเสียหาย", "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." : "เซิร์ฟเวอร์นี้ไม่มีการเชื่อมต่ออินเทอร์เน็ตซึ่งหมายความว่าบางส่วนของคุณสมบัติ เช่น การจัดเก็บข้อมูลภายนอก การแจ้งเตือนเกี่ยวกับการปรับปรุงหรือการติดตั้งแอพพลิเคชันของบุคคลที่สามจะไม่ทำงาน การเข้าถึงไฟล์จากระยะไกลและการส่งอีเมล์แจ้งเตือนอาจจะไม่ทำงาน เราขอแนะนำให้เปิดใช้งานการเชื่อมต่ออินเทอร์เน็ตสำหรับเซิร์ฟเวอร์นี้ถ้าคุณต้องการใช้งานคุณสมบัติทั้งหมด", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "ข้อมูลไดเรกทอรีและไฟล์ของคุณอาจจะสามารถเข้าถึงได้จากอินเทอร์เน็ต ขณะที่ htaccess ไฟล์ไม่ทำงาน เราขอแนะนำให้คุณกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณในทางที่ข้อมูลไดเรกทอรีไม่สามารถเข้าถึงได้หรือคุณย้ายข้อมูลไดเรกทอรีไปยังนอกเว็บเซิร์ฟเวอร์หรือเอกสาร", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "ไม่ได้ตั้งค่าหน่วยความจำแคช เพื่อเพิ่มประสิทธิภาพกรุณาตั้งค่า Memcache ของคุณ สามารถดูข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</a>", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom ไม่สามารถอ่านโดย PHP ซึ่งมีผลด้านความปลอดภัยเป็นอย่างมาก สามารถดูข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</a>", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "PHP รุ่น ({version}) ของคุณ จะไม่ได้รับ <a href=\"{phpLink}\">การสนับสนุนโดย PHP</a> เราขอแนะนำให้คุณอัพเกรดรุ่นของ PHP เพื่อความปลอดภัย", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "การกำหนดค่าพร็อกซี่ไม่ถูกต้องหรือคุณกำลังเข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ ถ้าคุณไม่ได้เข้าถึง ownCloud จากพร็อกซี่ที่เชื่อถือได้ นี้เป็นปัญหาด้านความปลอดภัย คุณอาจถูกโจมดีจากผู้ไม่หวังดี อ่านข้อมูลเพิ่มเติมได้ที่ <a href=\"{docLink}\">เอกสาร</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached เป็นการกำหนดค่าแคช แต่มีโมดูล PHP ของ \"memcache\" ที่ผิดพลาดได้ถูกติดตั้ง \\OC\\Memcache\\Memcached สนับสนุนเฉพาะ \"memcached\" ไม่ใช่ \"memcache\" ดูได้ที่ <a href=\"{wikiLink}\">วิกิพีเดียเกี่ยวกับโมดูล Memcached</a>", - "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "บางไฟล์ยังไม่ได้ผ่านการตรวจสอบความสมบูรณ์ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไขปัญหานี้สามารถดูได้จาก <a href=\"{docLink}\">เอกสาร</a> (<a href=\"{codeIntegrityDownloadEndpoint}\">รายชื่อของไฟล์ที่ไม่ถูกต้อง...</a> / <a href=\"{rescanEndpoint}\">แสกนอีกครั้ง…</a>)", "Error occurred while checking server setup" : "เกิดข้อผิดพลาดขณะที่ทำการตรวจสอบการติดตั้งเซิร์ฟเวอร์", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" ไม่ได้กำหนดค่าส่วนหัว Http ให้เท่ากับ \"{expected}\" นี่คือระบบการรักษาความปลอดภัยที่มีศักยภาพหรือลดความเสี่ยงที่จะเกิดขึ้นเราขอแนะนำให้ปรับการตั้งค่านี้", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" ส่วนหัว HTTP ไม่ได้กำหนดค่าให้น้อยกว่า \"{seconds}\" วินาที เพื่อความปลอดภัยที่เพิ่มขึ้นเราขอแนะนำให้เปิดใช้งาน HSTS ที่อธิบายไว้ใน <a href=\"{docUrl}\">เคล็ดลับการรักษาความปลอดภัย</a> ของเรา", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 5cef8c0a89f..52729dd19a8 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", "Repair warning: " : "Onarım uyarısı:", "Repair error: " : "Onarım hatası:", - "Set log level to debug - current level: \"%s\"" : "Günlük seviyesini hata ayıklamaya ayarla - geçerli seviye: \"%s\"", - "Reset log level to \"%s\"" : "Günlük seviyesini \"%s\" olarak sıfırla", "%s (3rdparty)" : "%s (3.parti)", "%s (incompatible)" : "%s (uyumsuz)", "Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", "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." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", "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." : "data dizininiz ve dosyalarınız büyük ihtimalle İnternet üzerinden erişilebilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu belge dizini dışına almanızı şiddetle tavsiye ederiz.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği ayarlanmamış. Performansın artması için mümkünse lütfen bir memcache ayarlayın. Detaylı bilgiye <a href=\"{docLink}\">belgelendirmemizden</a> ulaşabilirsiniz.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en az \"{seconds}\" saniye olarak ayarlanmış. İyileştirilmiş güvenlik için <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> belirtilen HSTS etkinleştirmesini öneririz.", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 0be5d60d6d6..6b4b26c6a5d 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", "Repair warning: " : "Onarım uyarısı:", "Repair error: " : "Onarım hatası:", - "Set log level to debug - current level: \"%s\"" : "Günlük seviyesini hata ayıklamaya ayarla - geçerli seviye: \"%s\"", - "Reset log level to \"%s\"" : "Günlük seviyesini \"%s\" olarak sıfırla", "%s (3rdparty)" : "%s (3.parti)", "%s (incompatible)" : "%s (uyumsuz)", "Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", "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." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", "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." : "data dizininiz ve dosyalarınız büyük ihtimalle İnternet üzerinden erişilebilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak data dizinine erişimi kapatmanızı veya data dizinini web sunucu belge dizini dışına almanızı şiddetle tavsiye ederiz.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Hafıza önbelleği ayarlanmamış. Performansın artması için mümkünse lütfen bir memcache ayarlayın. Detaylı bilgiye <a href=\"{docLink}\">belgelendirmemizden</a> ulaşabilirsiniz.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Güvenlik sebepleri ile şiddetle kaçınılması gereken /dev/urandom PHP tarafından okunamıyor. Daha fazla bilgi <a href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Kullandığınız PHP sürümü ({version}) artık <a href=\"{phpLink}\">PHP tarafından desteklenmiyor</a>. PHP tarafından sağlanan performans ve güvenlik güncellemelerinden faydalanmak için PHP sürümünüzü güncellemenizi öneririz.", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Ters vekil sunucu başlık yapılandırması hatalı veya ownCloud'a güvenilen bir vekil sunucusundan erişiyorsunuz. ownCloud'a güvenilen bir vekil sunucusundan erişmiyorsanız bu bir güvenlik problemidir ve bir saldırganın IP adresinizi taklit etmesine izin verebilir. Ayrıntılı bilgiyi <a href=\"{docLink}\">belgelendirmemizde</a> bulabilirsiniz.", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ayrılmış önbellek olarak yapılandırıldı, ancak yanlış PHP modülü \"memcache\" olarak yüklendi. \\OC\\Memcache\\Memcached sadece \"memcached\" olarak desteklenir, \"memcache\" olarak kullanamazsınız. <a href=\"{wikiLink}\">memcached wiki about both modules</a> linkine bakınız.", "Error occurred while checking server setup" : "Sunucu yapılandırması denetlenirken hata oluştu", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP başlığı \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu muhtemel bir güvenlik veya gizlilik riski olduğundan bu ayarı düzeltmenizi öneririz.", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"Strict-Transport-Security\" HTTP başlığı en az \"{seconds}\" saniye olarak ayarlanmış. İyileştirilmiş güvenlik için <a href=\"{docUrl}\">güvenlik ipuçlarımızda</a> belirtilen HSTS etkinleştirmesini öneririz.", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index 1b2d0e93f7b..8d8d09e37ea 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -102,9 +102,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер ще не налаштований належним чином, щоб дозволити синхронізацію файлів, тому що інтерфейс WebDAV, здається, зіпсований.", "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." : "Цей сервер не має підключення до Інтернету. Це означає, що деякі з функцій, таких як зовнішнє сховище, повідомлення про оновлення та встановлення сторонніх додатків не будуть працювати. Доступ до файлів віддалено і надсилання повідомлень поштою можуть не працювати. Ми пропонуємо включити підключення до Інтернету для цього сервера, якщо ви хочете, щоб всі функції працювали.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш каталог даних і ваші файли можливо доступні з інтернету. .htaccess файл не працює. Ми наполегливо рекомендуємо вам налаштувати ваш веб сервер таким чином, щоб каталог даних більше не був доступний або перемістіть каталог даних за межі кореня веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Кеш пам'яті не налаштований. Задля покращення продуктивності, будь ласка, налаштуйте memcache, якщо є можливість. Додаткову інформацію шукайте у нашій <a href=\"{docLink}\">документації</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не доступний для читання PHP, що вкрай небажано з міркувань безпеки. Додаткову інформацію шукайте у нашій <a href=\"{docLink}\">документації</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версія PHP ({version}) більше <a href=\"{phpLink}\">не підтримується</a>. Ми рекомендуємо вам оновити версію PHP щоб отримати кращу продуктивність та оновлення безпеки.", "Error occurred while checking server setup" : "При перевірці налаштувань серверу сталася помилка", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP заголовок \"{header}\" не налаштований як \"{expected}\". Це потенційний ризик для безпеки чи приватності і ми радимо виправити це налаштування.", "Shared" : "Опубліковано", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 8fc606244e2..e329ae9b175 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -100,9 +100,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Ваш веб-сервер ще не налаштований належним чином, щоб дозволити синхронізацію файлів, тому що інтерфейс WebDAV, здається, зіпсований.", "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." : "Цей сервер не має підключення до Інтернету. Це означає, що деякі з функцій, таких як зовнішнє сховище, повідомлення про оновлення та встановлення сторонніх додатків не будуть працювати. Доступ до файлів віддалено і надсилання повідомлень поштою можуть не працювати. Ми пропонуємо включити підключення до Інтернету для цього сервера, якщо ви хочете, щоб всі функції працювали.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Ваш каталог даних і ваші файли можливо доступні з інтернету. .htaccess файл не працює. Ми наполегливо рекомендуємо вам налаштувати ваш веб сервер таким чином, щоб каталог даних більше не був доступний або перемістіть каталог даних за межі кореня веб сервера.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Кеш пам'яті не налаштований. Задля покращення продуктивності, будь ласка, налаштуйте memcache, якщо є можливість. Додаткову інформацію шукайте у нашій <a href=\"{docLink}\">документації</a>.", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom не доступний для читання PHP, що вкрай небажано з міркувань безпеки. Додаткову інформацію шукайте у нашій <a href=\"{docLink}\">документації</a>.", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "Ваша версія PHP ({version}) більше <a href=\"{phpLink}\">не підтримується</a>. Ми рекомендуємо вам оновити версію PHP щоб отримати кращу продуктивність та оновлення безпеки.", "Error occurred while checking server setup" : "При перевірці налаштувань серверу сталася помилка", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "HTTP заголовок \"{header}\" не налаштований як \"{expected}\". Це потенційний ризик для безпеки чи приватності і ми радимо виправити це налаштування.", "Shared" : "Опубліковано", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 9c2b8beb0f6..255628f351e 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "更新 \"%s\" 为 %s", "Repair warning: " : "修复警告:", "Repair error: " : "修复错误:", - "Set log level to debug - current level: \"%s\"" : "设置日志级别为 调试 - 目前级别:%s", - "Reset log level to \"%s\"" : "重设日志级别为 \"%s\"", "%s (3rdparty)" : "%s (第三方)", "%s (incompatible)" : "%s (不兼容)", "Following apps have been disabled: %s" : "下列应用已经被禁用:%s", @@ -111,11 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。", "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." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a href=\"{docLink}\">文档</a> 。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,处于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</a>.", "Error occurred while checking server setup" : "当检查服务器启动时出错", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index aff40a4dc2d..bf9f6b2ad60 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "更新 \"%s\" 为 %s", "Repair warning: " : "修复警告:", "Repair error: " : "修复错误:", - "Set log level to debug - current level: \"%s\"" : "设置日志级别为 调试 - 目前级别:%s", - "Reset log level to \"%s\"" : "重设日志级别为 \"%s\"", "%s (3rdparty)" : "%s (第三方)", "%s (incompatible)" : "%s (不兼容)", "Following apps have been disabled: %s" : "下列应用已经被禁用:%s", @@ -109,11 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。", "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." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a href=\"{docLink}\">文档</a> 。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,处于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</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 href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</a>.", "Error occurred while checking server setup" : "当检查服务器启动时出错", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 9aecca34103..6f7bfb8a0fd 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -16,8 +16,6 @@ OC.L10N.register( "Updated \"%s\" to %s" : "已更新 %s 到 %s", "Repair warning: " : "修復警告:", "Repair error: " : "修復錯誤", - "Set log level to debug - current level: \"%s\"" : "設定除錯記錄層級 - 目前層級: \"%s\"", - "Reset log level to \"%s\"" : "重設記錄層級為 \"%s\"", "%s (3rdparty)" : "%s (第3方)", "%s (incompatible)" : "%s (不相容的)", "Following apps have been disabled: %s" : "以下應用程式已經被停用:%s", @@ -111,10 +109,6 @@ OC.L10N.register( "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面有問題", "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." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "您的資料目錄和您的檔案可能從網路網路被存取,使.htaccess 檔案無法發揮效果,我們強烈建議您配置您的網頁伺服器讓資料目錄不再被訪問存取或者將您的資料目錄移出網頁伺服器根目錄。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "記憶體快取目前尚未配置,如果可以,請配置memcache提升效能,更多訊息查看 <a href=\"{docLink}\">文件</a>。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP目前無法讀取/dev/urandom,基於安全因素,強烈建議您改善,更多訊息查看 <a href=\"{docLink}\">文件</a>。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "您的PHP版本 ({version}) 不再被<a href=\"{phpLink}\">PHP</a>支援,我們建議您升級您的PHP版本來提升效能以及安全性。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "反向代理伺服器標頭配置不正確或者您正從一個受信任的代理伺服器訪問ownCloud,如果您不是從受信任的代理伺服器訪問ownCloud,表示這是一個安全性問題,攻擊者可利用IP詐騙存取ownCloud,更多訊息查看 <a href=\"{docLink}\">文件</a>。", "Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 標頭配置與 \"{expected}\"不一樣,這是一個潛在安全性或者隱私上的風險,因此我們建議您調整此設定。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"強制安全傳輸\" HTTP標頭尚未配置至少 \"{seconds}\" 秒會重新定義成HTTPS,如我們的<a href=\"{docUrl}\">安全性提示</a>所述,為了加強安全性,我們建議啟動 HTTP強制安全傳輸。", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 024aa29a4d5..f4c495a6d11 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -14,8 +14,6 @@ "Updated \"%s\" to %s" : "已更新 %s 到 %s", "Repair warning: " : "修復警告:", "Repair error: " : "修復錯誤", - "Set log level to debug - current level: \"%s\"" : "設定除錯記錄層級 - 目前層級: \"%s\"", - "Reset log level to \"%s\"" : "重設記錄層級為 \"%s\"", "%s (3rdparty)" : "%s (第3方)", "%s (incompatible)" : "%s (不相容的)", "Following apps have been disabled: %s" : "以下應用程式已經被停用:%s", @@ -109,10 +107,6 @@ "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "您的網頁伺服器無法提供檔案同步功能,因為 WebDAV 界面有問題", "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." : "伺服器沒有網際網路連線,有些功能,像是外部儲存、更新版通知將無法運作。從遠端存取資料或是寄送 email 通知可能也無法運作。建議您設定好網際網路連線以使用所有功能。", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "您的資料目錄和您的檔案可能從網路網路被存取,使.htaccess 檔案無法發揮效果,我們強烈建議您配置您的網頁伺服器讓資料目錄不再被訪問存取或者將您的資料目錄移出網頁伺服器根目錄。", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "記憶體快取目前尚未配置,如果可以,請配置memcache提升效能,更多訊息查看 <a href=\"{docLink}\">文件</a>。", - "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "PHP目前無法讀取/dev/urandom,基於安全因素,強烈建議您改善,更多訊息查看 <a href=\"{docLink}\">文件</a>。", - "Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "您的PHP版本 ({version}) 不再被<a href=\"{phpLink}\">PHP</a>支援,我們建議您升級您的PHP版本來提升效能以及安全性。", - "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "反向代理伺服器標頭配置不正確或者您正從一個受信任的代理伺服器訪問ownCloud,如果您不是從受信任的代理伺服器訪問ownCloud,表示這是一個安全性問題,攻擊者可利用IP詐騙存取ownCloud,更多訊息查看 <a href=\"{docLink}\">文件</a>。", "Error occurred while checking server setup" : "檢查伺服器設定時發生錯誤", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 標頭配置與 \"{expected}\"不一樣,這是一個潛在安全性或者隱私上的風險,因此我們建議您調整此設定。", "The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "\"強制安全傳輸\" HTTP標頭尚未配置至少 \"{seconds}\" 秒會重新定義成HTTPS,如我們的<a href=\"{docUrl}\">安全性提示</a>所述,為了加強安全性,我們建議啟動 HTTP強制安全傳輸。", diff --git a/core/templates/404.php b/core/templates/404.php index c8d16e3e8f7..2b12b12cff7 100644 --- a/core/templates/404.php +++ b/core/templates/404.php @@ -16,7 +16,7 @@ if(!isset($_)) {//also provide standalone error page <li class="error"> <?php p($l->t('File not found')); ?><br> <p class="hint"><?php p($l->t('The specified document has not been found on the server.')); ?></p> - <p class="hint"><a href="<?php p(OC_Helper::linkTo('', 'index.php')) ?>"><?php p($l->t('You can click here to return to %s.', array($theme->getName()))); ?></a></p> + <p class="hint"><a href="<?php p(\OC::$server->getURLGenerator()->linkTo('', 'index.php')) ?>"><?php p($l->t('You can click here to return to %s.', array($theme->getName()))); ?></a></p> </li> </ul> <?php endif; ?> diff --git a/core/templates/internalmail.php b/core/templates/internalmail.php index 0e73a601857..c2d84184d38 100644 --- a/core/templates/internalmail.php +++ b/core/templates/internalmail.php @@ -4,7 +4,7 @@ <tr> <td bgcolor="<?php p($theme->getMailHeaderColor());?>" width="20px"> </td> <td bgcolor="<?php p($theme->getMailHeaderColor());?>"> -<img src="<?php p(OC_Helper::makeURLAbsolute(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> +<img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> </td> </tr> <tr><td colspan="2"> </td></tr> diff --git a/core/templates/mail.php b/core/templates/mail.php index 0e73a601857..c2d84184d38 100644 --- a/core/templates/mail.php +++ b/core/templates/mail.php @@ -4,7 +4,7 @@ <tr> <td bgcolor="<?php p($theme->getMailHeaderColor());?>" width="20px"> </td> <td bgcolor="<?php p($theme->getMailHeaderColor());?>"> -<img src="<?php p(OC_Helper::makeURLAbsolute(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> +<img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> </td> </tr> <tr><td colspan="2"> </td></tr> diff --git a/core/templates/untrustedDomain.php b/core/templates/untrustedDomain.php index 361495636cd..46bad216822 100644 --- a/core/templates/untrustedDomain.php +++ b/core/templates/untrustedDomain.php @@ -10,7 +10,7 @@ <?php p($l->t('Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain.')); ?> <br><br> <p style="text-align:center;"> - <a href="<?php print_unescaped(OC_Helper::makeURLAbsolute(\OCP\Util::linkToRoute('settings_admin'))); ?>?trustDomain=<?php p($_['domain']); ?>" class="button"> + <a href="<?php print_unescaped(\OC::$server->getURLGenerator()->getAbsoluteURL(\OCP\Util::linkToRoute('settings_admin'))); ?>?trustDomain=<?php p($_['domain']); ?>" class="button"> <?php p($l->t('Add "%s" as trusted domain', array($_['domain']))); ?> </a> </p> diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore index 09b6a47c72d..3560e8c8668 100644 --- a/core/vendor/.gitignore +++ b/core/vendor/.gitignore @@ -133,3 +133,5 @@ es6-promise/** !es6-promise/LICENSE !es6-promise/dist/es6-promise.js +# base64 +base64/*min.js diff --git a/core/vendor/base64/.bower.json b/core/vendor/base64/.bower.json new file mode 100644 index 00000000000..43a7299706b --- /dev/null +++ b/core/vendor/base64/.bower.json @@ -0,0 +1,29 @@ +{ + "name": "base64", + "version": "0.3.0", + "description": "Base64 encoding and decoding", + "main": "./base64.js", + "license": "WTFPL", + "repository": { + "type": "git", + "url": "git://github.com/davidchambers/Base64.js.git" + }, + "ignore": [ + "**/.*", + "Makefile", + "coverage/", + "scripts/", + "test/" + ], + "homepage": "https://github.com/davidchambers/Base64.js", + "_release": "0.3.0", + "_resolution": { + "type": "version", + "tag": "0.3.0", + "commit": "772df096a5ffe983f40202684ad45eed1e0e2d59" + }, + "_source": "git://github.com/davidchambers/Base64.js.git", + "_target": "~0.3.0", + "_originalSource": "base64", + "_direct": true +}
\ No newline at end of file diff --git a/core/vendor/base64/LICENSE b/core/vendor/base64/LICENSE new file mode 100644 index 00000000000..483276716db --- /dev/null +++ b/core/vendor/base64/LICENSE @@ -0,0 +1,14 @@ + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (c) 2011..2012 David Chambers <dc@hashify.me> + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/core/vendor/base64/base64.js b/core/vendor/base64/base64.js new file mode 100644 index 00000000000..b82dded62c2 --- /dev/null +++ b/core/vendor/base64/base64.js @@ -0,0 +1,61 @@ +;(function () { + + var object = typeof exports != 'undefined' ? exports : this; // #8: web workers + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + + function InvalidCharacterError(message) { + this.message = message; + } + InvalidCharacterError.prototype = new Error; + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; + + // encoder + // [https://gist.github.com/999166] by [https://github.com/nignag] + object.btoa || ( + object.btoa = function (input) { + var str = String(input); + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars, output = ''; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3/4); + if (charCode > 0xFF) { + throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); + } + block = block << 8 | charCode; + } + return output; + }); + + // decoder + // [https://gist.github.com/1020396] by [https://github.com/atk] + object.atob || ( + object.atob = function (input) { + var str = String(input).replace(/=+$/, ''); + if (str.length % 4 == 1) { + throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); + } + for ( + // initialize result and counters + var bc = 0, bs, buffer, idx = 0, output = ''; + // get next character + buffer = str.charAt(idx++); + // character found in table? initialize bit storage and add its ascii value; + ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, + // and if not first of each 4 characters, + // convert the first 8 bits to one ascii character + bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 + ) { + // try to find character in table (0-63, not found => -1) + buffer = chars.indexOf(buffer); + } + return output; + }); + +}()); diff --git a/db_structure.xml b/db_structure.xml index be7208aa22e..e4bd8d998ee 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -684,7 +684,8 @@ </field> <!-- Foreign Key users::uid --> - <!-- This is the initiator of the share --> + <!-- This is the owner of the share + which does not have to be the initiator of the share --> <field> <name>uid_owner</name> <type>text</type> @@ -694,18 +695,17 @@ </field> <!-- Foreign Key users::uid --> - <!-- This is the owner of the file, this can be - different from the initiator of the share. - The naming is subobtimal but prevents huge - migration steps --> + <!-- This is the initiator of the share --> <field> - <name>uid_fileowner</name> + <name>uid_initiator</name> <type>text</type> <default></default> <notnull>false</notnull> <length>64</length> </field> + + <!-- Foreign Key share::id or NULL --> <field> <name>parent</name> diff --git a/lib/autoloader.php b/lib/autoloader.php index f0fbd9e9f27..10cd5a8016a 100644 --- a/lib/autoloader.php +++ b/lib/autoloader.php @@ -112,9 +112,6 @@ class Autoloader { $paths[] = \OC::$SERVERROOT . '/core/' . strtolower(str_replace('\\', '/', $split[2])) . '.php'; } else if ($split[1] === 'settings') { $paths[] = \OC::$SERVERROOT . '/settings/' . strtolower(str_replace('\\', '/', $split[2])) . '.php'; - } else if ($split[1] === 'repair') { - $paths[] = \OC::$SERVERROOT . '/lib/repair/' . strtolower(str_replace('\\', '/', $split[2])) . '.php'; - } else { $paths[] = \OC::$SERVERROOT . '/lib/private/' . $split[1] . '/' . strtolower(str_replace('\\', '/', $split[2])) . '.php'; } diff --git a/lib/base.php b/lib/base.php index 038c259ecf6..2cace2a0a06 100644 --- a/lib/base.php +++ b/lib/base.php @@ -113,6 +113,11 @@ class OC { public static $server = null; /** + * @var \OC\Config + */ + private static $config = null; + + /** * @throws \RuntimeException when the 3rdparty directory is missing or * the app path list is empty or contains an invalid path */ @@ -124,7 +129,7 @@ class OC { } else { self::$configDir = OC::$SERVERROOT . '/config/'; } - OC_Config::$object = new \OC\Config(self::$configDir); + self::$config = new \OC\Config(self::$configDir); OC::$SUBURI = str_replace("\\", "/", substr(realpath($_SERVER["SCRIPT_FILENAME"]), strlen(OC::$SERVERROOT))); /** @@ -137,7 +142,7 @@ class OC { 'SCRIPT_FILENAME' => $_SERVER['SCRIPT_FILENAME'], ], ]; - $fakeRequest = new \OC\AppFramework\Http\Request($params, null, new \OC\AllConfig(new \OC\SystemConfig())); + $fakeRequest = new \OC\AppFramework\Http\Request($params, null, new \OC\AllConfig(new \OC\SystemConfig(self::$config))); $scriptName = $fakeRequest->getScriptName(); if (substr($scriptName, -1) == '/') { $scriptName .= 'index.php'; @@ -152,7 +157,7 @@ class OC { if (OC::$CLI) { - OC::$WEBROOT = OC_Config::getValue('overwritewebroot', ''); + OC::$WEBROOT = self::$config->getValue('overwritewebroot', ''); } else { if (substr($scriptName, 0 - strlen(OC::$SUBURI)) === OC::$SUBURI) { OC::$WEBROOT = substr($scriptName, 0, 0 - strlen(OC::$SUBURI)); @@ -165,7 +170,7 @@ class OC { // This most likely means that we are calling from CLI. // However some cron jobs still need to generate // a web URL, so we use overwritewebroot as a fallback. - OC::$WEBROOT = OC_Config::getValue('overwritewebroot', ''); + OC::$WEBROOT = self::$config->getValue('overwritewebroot', ''); } // Resolve /owncloud to /owncloud/ to ensure to always have a trailing @@ -178,8 +183,8 @@ class OC { } // search the 3rdparty folder - OC::$THIRDPARTYROOT = OC_Config::getValue('3rdpartyroot', null); - OC::$THIRDPARTYWEBROOT = OC_Config::getValue('3rdpartyurl', null); + OC::$THIRDPARTYROOT = self::$config->getValue('3rdpartyroot', null); + OC::$THIRDPARTYWEBROOT = self::$config->getValue('3rdpartyurl', null); if (empty(OC::$THIRDPARTYROOT) && empty(OC::$THIRDPARTYWEBROOT)) { if (file_exists(OC::$SERVERROOT . '/3rdparty')) { @@ -197,7 +202,7 @@ class OC { } // search the apps folder - $config_paths = OC_Config::getValue('apps_paths', array()); + $config_paths = self::$config->getValue('apps_paths', array()); if (!empty($config_paths)) { foreach ($config_paths as $paths) { if (isset($paths['url']) && isset($paths['path'])) { @@ -372,7 +377,7 @@ class OC { // check whether this is a core update or apps update $installedVersion = $systemConfig->getValue('version', '0.0.0'); - $currentVersion = implode('.', OC_Util::getVersion()); + $currentVersion = implode('.', \OCP\Util::getVersion()); $appManager = \OC::$server->getAppManager(); @@ -387,7 +392,7 @@ class OC { } // get third party apps - $ocVersion = OC_Util::getVersion(); + $ocVersion = \OCP\Util::getVersion(); $tmpl->assign('appsToUpgrade', $appManager->getAppsNeedingUpgrade($ocVersion)); $tmpl->assign('incompatibleAppsList', $appManager->getIncompatibleApps($ocVersion)); $tmpl->assign('productName', 'ownCloud'); // for now @@ -437,7 +442,7 @@ class OC { if (!$session->exists('SID_CREATED')) { $session->set('SID_CREATED', time()); } else if (time() - $session->get('SID_CREATED') > $sessionLifeTime / 2) { - session_regenerate_id(true); + $session->regenerateId(); $session->set('SID_CREATED', time()); } @@ -517,7 +522,7 @@ class OC { } // setup the basic server - self::$server = new \OC\Server(\OC::$WEBROOT); + self::$server = new \OC\Server(\OC::$WEBROOT, self::$config); \OC::$server->getEventLogger()->log('autoloader', 'Autoloader', $loaderStart, $loaderEnd); \OC::$server->getEventLogger()->start('boot', 'Initialize'); @@ -875,7 +880,7 @@ class OC { // Handle redirect URL for logged in users if (isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) { - $location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url'])); + $location = \OC::$server->getURLGenerator()->getAbsoluteURL(urldecode($_REQUEST['redirect_url'])); // Deny the redirect if the URL contains a @ // This prevents unvalidated redirects like ?redirect_url=:user@domain.com @@ -1055,7 +1060,7 @@ class OC { return false; } - if(!OC_Util::isCallRegistered()) { + if(!(\OC::$server->getRequest()->passesCSRFCheck())) { return false; } OC_App::loadApps(); diff --git a/lib/l10n/es.js b/lib/l10n/es.js index 8f554001cfd..b37631114a0 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -147,6 +147,8 @@ OC.L10N.register( "Data directory (%s) is invalid" : "El directorio de datos (%s) no es válido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Verifique que el directorio de datos contiene un archivo \".ocdata\" en su directorio raíz.", "Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".", + "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", + "Storage incomplete configuration. %s" : "Configuración de almacenamiento incompleta. %s", "Storage not available" : "Almacenamiento no disponible" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/es.json b/lib/l10n/es.json index 94ff1d3db2c..9be893bbb60 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -145,6 +145,8 @@ "Data directory (%s) is invalid" : "El directorio de datos (%s) no es válido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Verifique que el directorio de datos contiene un archivo \".ocdata\" en su directorio raíz.", "Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".", + "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", + "Storage incomplete configuration. %s" : "Configuración de almacenamiento incompleta. %s", "Storage not available" : "Almacenamiento no disponible" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js index eaf98861f23..ab56f6f920a 100644 --- a/lib/l10n/et_EE.js +++ b/lib/l10n/et_EE.js @@ -33,6 +33,7 @@ OC.L10N.register( "web services under your control" : "veebitenused sinu kontrolli all", "Empty filename is not allowed" : "Tühi failinimi pole lubatud", "Dot files are not allowed" : "Punktiga failid pole lubatud", + "File name is a reserved word" : "Failinimi sisaldab keelatud sõna", "File name contains at least one invalid character" : "Faili nimesonvähemalt üks keelatud märk", "File name is too long" : "Faili nimi on liiga pikk", "Can't read file" : "Faili lugemine ebaõnnestus", diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json index 7d28a75c59e..c67c0578626 100644 --- a/lib/l10n/et_EE.json +++ b/lib/l10n/et_EE.json @@ -31,6 +31,7 @@ "web services under your control" : "veebitenused sinu kontrolli all", "Empty filename is not allowed" : "Tühi failinimi pole lubatud", "Dot files are not allowed" : "Punktiga failid pole lubatud", + "File name is a reserved word" : "Failinimi sisaldab keelatud sõna", "File name contains at least one invalid character" : "Faili nimesonvähemalt üks keelatud märk", "File name is too long" : "Faili nimi on liiga pikk", "Can't read file" : "Faili lugemine ebaõnnestus", diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js index d4035633f08..16eacd0366a 100644 --- a/lib/l10n/fi_FI.js +++ b/lib/l10n/fi_FI.js @@ -87,6 +87,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen", "You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja", "Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu", + "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kohteen %s jakaminen epäonnistui, kohdetta %s ei löytynyt. Kenties palvelin ei ole juuri nyt tavoitettavissa.", "Setting permissions for %s failed, because the item was not found" : "Kohteen %s oikeuksien asettaminen epäonnistui, koska kohdetta ei löytynyt", "Cannot set expiration date. Expiration date is in the past" : "Vanhentumispäivää ei voi asettaa. Vanhentumispäivä on jo mennyt", diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json index b961e6b862d..738ef893d72 100644 --- a/lib/l10n/fi_FI.json +++ b/lib/l10n/fi_FI.json @@ -85,6 +85,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Kohteen %s jakaminen epäonnistui, koska käyttäjä %s ei ole ryhmän %s jäsen", "You need to provide a password to create a public link, only protected links are allowed" : "Anna salasana luodaksesi julkisen linkin. Vain suojatut linkit ovat sallittuja", "Sharing %s failed, because sharing with links is not allowed" : "Kohteen %s jakaminen epäonnistui, koska jakaminen linkkejä käyttäen ei ole sallittu", + "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Kohteen %s jakaminen epäonnistui, kohdetta %s ei löytynyt. Kenties palvelin ei ole juuri nyt tavoitettavissa.", "Setting permissions for %s failed, because the item was not found" : "Kohteen %s oikeuksien asettaminen epäonnistui, koska kohdetta ei löytynyt", "Cannot set expiration date. Expiration date is in the past" : "Vanhentumispäivää ei voi asettaa. Vanhentumispäivä on jo mennyt", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 014b6c24e59..7009b81be26 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -95,6 +95,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s", "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.", "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis", + "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.", "Share type %s is not valid for %s" : "Le type de partage %s n'est pas valide pour %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Le réglage des permissions pour %s a échoué car les permissions dépassent celles accordées à %s", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index feaae43bf41..00d006c6047 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -93,6 +93,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Le partage de %s a échoué car %s n'est pas membre du groupe %s", "You need to provide a password to create a public link, only protected links are allowed" : "Vous devez fournir un mot de passe pour créer un lien public, seuls les liens protégés sont autorisées.", "Sharing %s failed, because sharing with links is not allowed" : "Le partage de %s a échoué car le partage par lien n'est pas permis", + "Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.", "Share type %s is not valid for %s" : "Le type de partage %s n'est pas valide pour %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Le réglage des permissions pour %s a échoué car les permissions dépassent celles accordées à %s", diff --git a/lib/l10n/he.js b/lib/l10n/he.js index 66acae5b804..9a021abe2ec 100644 --- a/lib/l10n/he.js +++ b/lib/l10n/he.js @@ -5,6 +5,8 @@ OC.L10N.register( "Personal" : "אישי", "Users" : "משתמשים", "Admin" : "מנהל", + "Unknown filetype" : "סוג קובץ לא מוכר", + "Invalid image" : "תמונה לא חוקית", "today" : "היום", "yesterday" : "אתמול", "last month" : "חודש שעבר", diff --git a/lib/l10n/he.json b/lib/l10n/he.json index 55df638cb11..91c42907008 100644 --- a/lib/l10n/he.json +++ b/lib/l10n/he.json @@ -3,6 +3,8 @@ "Personal" : "אישי", "Users" : "משתמשים", "Admin" : "מנהל", + "Unknown filetype" : "סוג קובץ לא מוכר", + "Invalid image" : "תמונה לא חוקית", "today" : "היום", "yesterday" : "אתמול", "last month" : "חודש שעבר", diff --git a/lib/l10n/it.js b/lib/l10n/it.js index ed9f01c8a39..5c611b750f4 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s", "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti", "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti", + "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La condivisione di %s non è riuscita, impossibile trovare %s, è probabile che il server non sia al momento raggiungibile.", "Share type %s is not valid for %s" : "Il tipo di condivisione %s non è valido per %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Impostazione permessi per %s non riuscita, poiché i permessi superano i permessi accordati a %s", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index 4a6735185d6..93d4c6a5c72 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Condivisione di %s non riuscita, poiché %s non appartiene al gruppo %s", "You need to provide a password to create a public link, only protected links are allowed" : "Devi fornire una password per creare un collegamento pubblico, sono consentiti solo i collegamenti protetti", "Sharing %s failed, because sharing with links is not allowed" : "Condivisione di %s non riuscita, poiché i collegamenti non sono consentiti", + "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La condivisione di %s non è riuscita, impossibile trovare %s, è probabile che il server non sia al momento raggiungibile.", "Share type %s is not valid for %s" : "Il tipo di condivisione %s non è valido per %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Impostazione permessi per %s non riuscita, poiché i permessi superano i permessi accordati a %s", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 21375b53925..a0619055f3a 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "%s を共有できませんでした。%s は、グループ %s のメンバーではありません。", "You need to provide a password to create a public link, only protected links are allowed" : "公開用リンクの作成にはパスワードの設定が必要です", "Sharing %s failed, because sharing with links is not allowed" : "%s を共有できませんでした。リンクでの共有は許可されていません。", + "Not allowed to create a federated share with the same user" : "同じユーザーでフェデレーション共有を作成することは出来ません", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s を共有できませんでした。%s が見つかりませんでした。現在サーバーに接続できないようです。", "Share type %s is not valid for %s" : "%s の共有方法は、%s には適用できません。", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%s を共有できませんでした。%s に許可されている権限を越えています。", @@ -147,6 +148,10 @@ OC.L10N.register( "Data directory (%s) is invalid" : "データディレクトリ (%s) は無効です", "Please check that the data directory contains a file \".ocdata\" in its root." : "データディレクトリに \".ocdata\" ファイルが含まれていることを確認してください。", "Could not obtain lock type %d on \"%s\"." : "\"%s\" で %d タイプのロックを取得できませんでした。", - "Storage not available" : "ストレージが利用できません" + "Storage unauthorized. %s" : "権限のないストレージです。 %s", + "Storage incomplete configuration. %s" : "設定が未完了のストレージです。 %s", + "Storage connection error. %s" : "ストレージへの接続エラー。 %s", + "Storage not available" : "ストレージが利用できません", + "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s" }, "nplurals=1; plural=0;"); diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index 204eb63787b..681b479ff23 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "%s を共有できませんでした。%s は、グループ %s のメンバーではありません。", "You need to provide a password to create a public link, only protected links are allowed" : "公開用リンクの作成にはパスワードの設定が必要です", "Sharing %s failed, because sharing with links is not allowed" : "%s を共有できませんでした。リンクでの共有は許可されていません。", + "Not allowed to create a federated share with the same user" : "同じユーザーでフェデレーション共有を作成することは出来ません", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s を共有できませんでした。%s が見つかりませんでした。現在サーバーに接続できないようです。", "Share type %s is not valid for %s" : "%s の共有方法は、%s には適用できません。", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "%s を共有できませんでした。%s に許可されている権限を越えています。", @@ -145,6 +146,10 @@ "Data directory (%s) is invalid" : "データディレクトリ (%s) は無効です", "Please check that the data directory contains a file \".ocdata\" in its root." : "データディレクトリに \".ocdata\" ファイルが含まれていることを確認してください。", "Could not obtain lock type %d on \"%s\"." : "\"%s\" で %d タイプのロックを取得できませんでした。", - "Storage not available" : "ストレージが利用できません" + "Storage unauthorized. %s" : "権限のないストレージです。 %s", + "Storage incomplete configuration. %s" : "設定が未完了のストレージです。 %s", + "Storage connection error. %s" : "ストレージへの接続エラー。 %s", + "Storage not available" : "ストレージが利用できません", + "Storage connection timeout. %s" : "ストレージへの接続がタイムアウト。 %s" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/lib/l10n/mk.js b/lib/l10n/mk.js index 881388b4eac..0129d33517f 100644 --- a/lib/l10n/mk.js +++ b/lib/l10n/mk.js @@ -32,6 +32,7 @@ OC.L10N.register( "Apps" : "Аппликации", "A valid username must be provided" : "Мора да се обезбеди валидно корисничко име ", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", - "The username is already being used" : "Корисничкото име е веќе во употреба" + "The username is already being used" : "Корисничкото име е веќе во употреба", + "Storage not available" : "Сториџот не е достапен" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/lib/l10n/mk.json b/lib/l10n/mk.json index 7dbfab7f01f..3a05e15b74b 100644 --- a/lib/l10n/mk.json +++ b/lib/l10n/mk.json @@ -30,6 +30,7 @@ "Apps" : "Аппликации", "A valid username must be provided" : "Мора да се обезбеди валидно корисничко име ", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", - "The username is already being used" : "Корисничкото име е веќе во употреба" + "The username is already being used" : "Корисничкото име е веќе во употреба", + "Storage not available" : "Сториџот не е достапен" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js index a8ea9cca6ab..b7fa5a63510 100644 --- a/lib/l10n/nb_NO.js +++ b/lib/l10n/nb_NO.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s feilet, fordi %s ikke er medlem av gruppen %s", "You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt", "Sharing %s failed, because sharing with links is not allowed" : "Deling av %s feilet, fordi deling med lenker ikke er tillatt", + "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme brukeren", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s feilet, fant ikke %s, kanskje servern er utilgjengelig for øyeblikket.", "Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Setting av tillatelser for %s feilet, fordi tillatelsene gikk ut over tillatelsene som er gitt til %s", @@ -147,6 +148,10 @@ OC.L10N.register( "Data directory (%s) is invalid" : "Data-mappe (%s) er ugyldig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sjekk at det ligger en fil \".ocdata\" i roten av data-mappen.", "Could not obtain lock type %d on \"%s\"." : "Klarte ikke å låse med type %d på \"%s\".", - "Storage not available" : "Lagringsplass ikke tilgjengelig" + "Storage unauthorized. %s" : "Lager uautorisert: %s", + "Storage incomplete configuration. %s" : "Ikke komplett oppsett for lager. %s", + "Storage connection error. %s" : "Tilkoblingsfeil for lager. %s", + "Storage not available" : "Lagringsplass ikke tilgjengelig", + "Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json index 22a3154f8f3..a2a2a9c1b7f 100644 --- a/lib/l10n/nb_NO.json +++ b/lib/l10n/nb_NO.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Deling av %s feilet, fordi %s ikke er medlem av gruppen %s", "You need to provide a password to create a public link, only protected links are allowed" : "Du må oppgi et passord for å lage en offentlig lenke. Bare beskyttede lenker er tillatt", "Sharing %s failed, because sharing with links is not allowed" : "Deling av %s feilet, fordi deling med lenker ikke er tillatt", + "Not allowed to create a federated share with the same user" : "Ikke tillatt å opprette en Sammenknyttet sky-deling med den samme brukeren", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Deling %s feilet, fant ikke %s, kanskje servern er utilgjengelig for øyeblikket.", "Share type %s is not valid for %s" : "Delingstype %s er ikke gyldig for %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Setting av tillatelser for %s feilet, fordi tillatelsene gikk ut over tillatelsene som er gitt til %s", @@ -145,6 +146,10 @@ "Data directory (%s) is invalid" : "Data-mappe (%s) er ugyldig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sjekk at det ligger en fil \".ocdata\" i roten av data-mappen.", "Could not obtain lock type %d on \"%s\"." : "Klarte ikke å låse med type %d på \"%s\".", - "Storage not available" : "Lagringsplass ikke tilgjengelig" + "Storage unauthorized. %s" : "Lager uautorisert: %s", + "Storage incomplete configuration. %s" : "Ikke komplett oppsett for lager. %s", + "Storage connection error. %s" : "Tilkoblingsfeil for lager. %s", + "Storage not available" : "Lagringsplass ikke tilgjengelig", + "Storage connection timeout. %s" : "Tidsavbrudd ved tilkobling av lager: %s" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index f4201778f7e..bb3bd551841 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s", "You need to provide a password to create a public link, only protected links are allowed" : "U moet een wachtwoord verstrekken om een openbare koppeling te maken, alleen beschermde links zijn toegestaan", "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen met links niet is toegestaan", + "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar.", "Share type %s is not valid for %s" : "Delen van type %s is niet geldig voor %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Instellen van de permissies voor %s is mislukt, omdat de permissies hoger zijn dan de aan %s toegekende permissies", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index c8981f8fd4c..8388c0a502e 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Delen van %s is mislukt, omdat %s geen lid is van groep %s", "You need to provide a password to create a public link, only protected links are allowed" : "U moet een wachtwoord verstrekken om een openbare koppeling te maken, alleen beschermde links zijn toegestaan", "Sharing %s failed, because sharing with links is not allowed" : "Delen van %s is mislukt, omdat het delen met links niet is toegestaan", + "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar.", "Share type %s is not valid for %s" : "Delen van type %s is niet geldig voor %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Instellen van de permissies voor %s is mislukt, omdat de permissies hoger zijn dan de aan %s toegekende permissies", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index 2595d5dfd38..f4e52410ba1 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Compartilhamento %s falhou, porque %s não é membro do grupo %s", "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos", "Sharing %s failed, because sharing with links is not allowed" : "Compartilhamento %s falhou, porque compartilhamento com links não é permitido", + "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possível encontrar %s, talvez o servidor esteja inacessível.", "Share type %s is not valid for %s" : "Tipo de compartilhamento %s não é válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index 0da54181b3f..80fad95147c 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Compartilhamento %s falhou, porque %s não é membro do grupo %s", "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos", "Sharing %s failed, because sharing with links is not allowed" : "Compartilhamento %s falhou, porque compartilhamento com links não é permitido", + "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possível encontrar %s, talvez o servidor esteja inacessível.", "Share type %s is not valid for %s" : "Tipo de compartilhamento %s não é válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 6b5932c0b55..3a33d471e50 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s", "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки", "Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено", + "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем-же пользователем", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.", "Share type %s is not valid for %s" : "Тип общего доступа %s недопустим для %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не удалось настроить права доступа для %s, указанные права доступа превышают предоставленные для %s", @@ -147,6 +148,10 @@ OC.L10N.register( "Data directory (%s) is invalid" : "Каталог данных (%s) не верен", "Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.", "Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для \"%s\"", - "Storage not available" : "Хранилище недоступно" + "Storage unauthorized. %s" : "Хранилище неавторизовано. %s", + "Storage incomplete configuration. %s" : "Неполная конфигурация хранилища. %s", + "Storage connection error. %s" : "Ошибка подключения к хранилищу. %s", + "Storage not available" : "Хранилище недоступно", + "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 62567fd749a..8851ea0ac0a 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Не удалось поделиться %s, пользователь %s не является членом группы %s", "You need to provide a password to create a public link, only protected links are allowed" : "Вам нужно задать пароль для создания публичной ссылки. Разрешены только защищённые ссылки", "Sharing %s failed, because sharing with links is not allowed" : "Не удалось поделиться %s, открытие доступа по ссылке запрещено", + "Not allowed to create a federated share with the same user" : "Не допускается создание федеративного общего ресурса с тем-же пользователем", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Не удалось поделиться %s, не удалось найти %s, возможно, сервер не доступен.", "Share type %s is not valid for %s" : "Тип общего доступа %s недопустим для %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Не удалось настроить права доступа для %s, указанные права доступа превышают предоставленные для %s", @@ -145,6 +146,10 @@ "Data directory (%s) is invalid" : "Каталог данных (%s) не верен", "Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.", "Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для \"%s\"", - "Storage not available" : "Хранилище недоступно" + "Storage unauthorized. %s" : "Хранилище неавторизовано. %s", + "Storage incomplete configuration. %s" : "Неполная конфигурация хранилища. %s", + "Storage connection error. %s" : "Ошибка подключения к хранилищу. %s", + "Storage not available" : "Хранилище недоступно", + "Storage connection timeout. %s" : "Истекло время ожидания подключения к хранилищу. %s" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 386cd1adeff..3318d18ad38 100644 --- a/lib/l10n/sq.js +++ b/lib/l10n/sq.js @@ -96,6 +96,7 @@ OC.L10N.register( "Sharing %s failed, because %s is not a member of the group %s" : "Ndarja e %s me të tjerët dështoi, ngaqë %s s’është anëtar i grupit %s", "You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura", "Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje", + "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Ndarja për %s dështoi, s’u gjet dot %s, ndoshta shërbyesi është hëpërhë jashtë pune.", "Share type %s is not valid for %s" : "Lloji i ndarjes %s s’është i vlefshëm për %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Caktimi i lejeve për %s dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index 3cf25314937..d902d07ee1b 100644 --- a/lib/l10n/sq.json +++ b/lib/l10n/sq.json @@ -94,6 +94,7 @@ "Sharing %s failed, because %s is not a member of the group %s" : "Ndarja e %s me të tjerët dështoi, ngaqë %s s’është anëtar i grupit %s", "You need to provide a password to create a public link, only protected links are allowed" : "Lypset të jepni një fjalëkalim që të krijoni një lidhje publike, lejohen vetëm lidhje të mbrojtura", "Sharing %s failed, because sharing with links is not allowed" : "Ndarja e %s me të tjerët dështoi, ngaqë nuk lejohet ndarja me lidhje", + "Not allowed to create a federated share with the same user" : "S’i lejohet të krijojë një ndarje të federuar me të njëjtin përdorues", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Ndarja për %s dështoi, s’u gjet dot %s, ndoshta shërbyesi është hëpërhë jashtë pune.", "Share type %s is not valid for %s" : "Lloji i ndarjes %s s’është i vlefshëm për %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Caktimi i lejeve për %s dështoi, ngaqë lejet tejkalojnë lejet e akorduara për %s", diff --git a/lib/private/app.php b/lib/private/app.php index abf12264c58..500a60060e6 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -96,7 +96,7 @@ class OC_App { * if $types is set, only apps of those types will be loaded */ public static function loadApps($types = null) { - if (OC_Config::getValue('maintenance', false)) { + if (\OC::$server->getSystemConfig()->getValue('maintenance', false)) { return false; } // Load the enabled apps here @@ -239,7 +239,7 @@ class OC_App { * @return string[] */ public static function getEnabledApps($forceRefresh = false, $all = false) { - if (!OC_Config::getValue('installed', false)) { + if (!\OC::$server->getSystemConfig()->getValue('installed', false)) { return array(); } // in incognito mode or when logged out, $user will be false, @@ -318,8 +318,8 @@ class OC_App { \OC::$server->getConfig(), \OC::$server->getLogger() ); - $appData = $ocsClient->getApplication($app, \OC_Util::getVersion()); - $download= $ocsClient->getApplicationDownload($app, \OC_Util::getVersion()); + $appData = $ocsClient->getApplication($app, \OCP\Util::getVersion()); + $download= $ocsClient->getApplicationDownload($app, \OCP\Util::getVersion()); if(isset($download['downloadlink']) and $download['downloadlink']!='') { // Replace spaces in download link without encoding entire URL $download['downloadlink'] = str_replace(' ', '%20', $download['downloadlink']); @@ -374,13 +374,13 @@ class OC_App { $settings = array(); // by default, settings only contain the help menu if (OC_Util::getEditionString() === '' && - OC_Config::getValue('knowledgebaseenabled', true) == true + \OC::$server->getSystemConfig()->getValue('knowledgebaseenabled', true) == true ) { $settings = array( array( "id" => "help", "order" => 1000, - "href" => OC_Helper::linkToRoute("settings_help"), + "href" => \OC::$server->getURLGenerator()->linkToRoute('settings_help'), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath("settings", "help.svg") ) @@ -393,7 +393,7 @@ class OC_App { $settings[] = array( "id" => "personal", "order" => 1, - "href" => OC_Helper::linkToRoute("settings_personal"), + "href" => \OC::$server->getURLGenerator()->linkToRoute('settings_personal'), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath("settings", "personal.svg") ); @@ -409,7 +409,7 @@ class OC_App { $settings[] = array( "id" => "core_users", "order" => 2, - "href" => OC_Helper::linkToRoute("settings_users"), + "href" => \OC::$server->getURLGenerator()->linkToRoute('settings_users'), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath("settings", "users.svg") ); @@ -421,7 +421,7 @@ class OC_App { $settings[] = array( "id" => "admin", "order" => 1000, - "href" => OC_Helper::linkToRoute("settings_admin"), + "href" => \OC::$server->getURLGenerator()->linkToRoute('settings_admin'), "name" => $l->t("Admin"), "icon" => OC_Helper::imagePath("settings", "admin.svg") ); @@ -455,7 +455,7 @@ class OC_App { * @return string|false */ public static function getInstallPath() { - if (OC_Config::getValue('appstoreenabled', true) == false) { + if (\OC::$server->getSystemConfig()->getValue('appstoreenabled', true) == false) { return false; } @@ -760,9 +760,12 @@ class OC_App { * @param bool $onlyLocal * @param bool $includeUpdateInfo Should we check whether there is an update * in the app store? + * @param OCSClient $ocsClient * @return array */ - public static function listAllApps($onlyLocal = false, $includeUpdateInfo = true) { + public static function listAllApps($onlyLocal = false, + $includeUpdateInfo = true, + OCSClient $ocsClient) { $installedApps = OC_App::getAllApps(); //TODO which apps do we want to blacklist and how do we integrate @@ -825,7 +828,7 @@ class OC_App { if ($onlyLocal) { $remoteApps = []; } else { - $remoteApps = OC_App::getAppstoreApps(); + $remoteApps = OC_App::getAppstoreApps('approved', null, $ocsClient); } if ($remoteApps) { // Remove duplicates @@ -865,22 +868,18 @@ class OC_App { /** * Get a list of all apps on the appstore * @param string $filter - * @param string $category + * @param string|null $category + * @param OCSClient $ocsClient * @return array|bool multi-dimensional array of apps. * Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description */ - public static function getAppstoreApps($filter = 'approved', $category = null) { + public static function getAppstoreApps($filter = 'approved', + $category = null, + OCSClient $ocsClient) { $categories = [$category]; - $ocsClient = new OCSClient( - \OC::$server->getHTTPClientService(), - \OC::$server->getConfig(), - \OC::$server->getLogger() - ); - - if (is_null($category)) { - $categoryNames = $ocsClient->getCategories(\OC_Util::getVersion()); + $categoryNames = $ocsClient->getCategories(\OCP\Util::getVersion()); if (is_array($categoryNames)) { // Check that categories of apps were retrieved correctly if (!$categories = array_keys($categoryNames)) { @@ -892,7 +891,7 @@ class OC_App { } $page = 0; - $remoteApps = $ocsClient->getApplications($categories, $page, $filter, \OC_Util::getVersion()); + $remoteApps = $ocsClient->getApplications($categories, $page, $filter, \OCP\Util::getVersion()); $apps = []; $i = 0; $l = \OC::$server->getL10N('core'); @@ -1050,7 +1049,7 @@ class OC_App { $config, \OC::$server->getLogger() ); - $appData = $ocsClient->getApplication($app, \OC_Util::getVersion()); + $appData = $ocsClient->getApplication($app, \OCP\Util::getVersion()); // check if app is a shipped app or not. OCS apps have an integer as id, shipped apps use a string if (!is_numeric($app)) { @@ -1080,7 +1079,7 @@ class OC_App { if ($app !== false) { // check if the app is compatible with this version of ownCloud $info = self::getAppInfo($app); - $version = OC_Util::getVersion(); + $version = \OCP\Util::getVersion(); if (!self::isAppCompatible($version, $info)) { throw new \Exception( $l->t('App "%s" cannot be installed because it is not compatible with this version of ownCloud.', diff --git a/lib/private/app/codechecker/infochecker.php b/lib/private/app/codechecker/infochecker.php index 24835d8148f..2589277118b 100644 --- a/lib/private/app/codechecker/infochecker.php +++ b/lib/private/app/codechecker/infochecker.php @@ -83,13 +83,18 @@ class InfoChecker extends BasicEmitter { 'type' => 'duplicateRequirement', 'field' => 'min', ]; + } else if (!isset($info['dependencies']['owncloud']['@attributes']['min-version'])) { + $this->emit('InfoChecker', 'missingRequirement', ['min']); } + if (isset($info['dependencies']['owncloud']['@attributes']['max-version']) && $info['requiremax']) { $this->emit('InfoChecker', 'duplicateRequirement', ['max']); $errors[] = [ 'type' => 'duplicateRequirement', 'field' => 'max', ]; + } else if (!isset($info['dependencies']['owncloud']['@attributes']['max-version'])) { + $this->emit('InfoChecker', 'missingRequirement', ['max']); } foreach ($info as $key => $value) { diff --git a/lib/private/app/infoparser.php b/lib/private/app/infoparser.php index 22f705884bc..a84163612e8 100644 --- a/lib/private/app/infoparser.php +++ b/lib/private/app/infoparser.php @@ -59,6 +59,7 @@ class InfoParser { $xml = simplexml_load_file($file); libxml_disable_entity_loader($loadEntities); if ($xml == false) { + libxml_clear_errors(); return null; } $array = $this->xmlToArray($xml); diff --git a/lib/private/app/platform.php b/lib/private/app/platform.php index f433ecd9f9e..c16f050e13c 100644 --- a/lib/private/app/platform.php +++ b/lib/private/app/platform.php @@ -52,7 +52,7 @@ class Platform { * @return string */ public function getOcVersion() { - $v = OC_Util::getVersion(); + $v = \OCP\Util::getVersion(); return join('.', $v); } diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php index ce6523cc8a8..69476d84c9b 100644 --- a/lib/private/appframework/dependencyinjection/dicontainer.php +++ b/lib/private/appframework/dependencyinjection/dicontainer.php @@ -62,6 +62,10 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this['AppName'] = $appName; $this['urlParams'] = $urlParams; + /** @var \OC\ServerContainer $server */ + $server = $this->getServer(); + $server->registerAppContainer($appName, $this); + // aliases $this->registerAlias('appName', 'AppName'); $this->registerAlias('webRoot', 'WebRoot'); @@ -161,6 +165,10 @@ class DIContainer extends SimpleContainer implements IAppContainer { $this->registerAlias('OCP\\AppFramework\\Utility\\IControllerMethodReflector', 'OC\AppFramework\Utility\ControllerMethodReflector'); $this->registerAlias('ControllerMethodReflector', 'OCP\\AppFramework\\Utility\\IControllerMethodReflector'); + $this->registerService('OCP\\Files\\IMimeTypeDetector', function($c) { + return $this->getServer()->getMimeTypeDetector(); + }); + $this->registerService('OCP\\INavigationManager', function($c) { return $this->getServer()->getNavigationManager(); }); diff --git a/lib/private/appframework/utility/controllermethodreflector.php b/lib/private/appframework/utility/controllermethodreflector.php index 63cf5ac24f0..1118332f930 100644 --- a/lib/private/appframework/utility/controllermethodreflector.php +++ b/lib/private/appframework/utility/controllermethodreflector.php @@ -60,16 +60,18 @@ class ControllerMethodReflector implements IControllerMethodReflector{ // extract type parameter information preg_match_all('/@param\h+(?P<type>\w+)\h+\$(?P<var>\w+)/', $docs, $matches); - // this is just a fix for PHP 5.3 (array_combine raises warning if called with - // two empty arrays - if($matches['var'] === array() && $matches['type'] === array()) { - $this->types = array(); - } else { - $this->types = array_combine($matches['var'], $matches['type']); - } + $this->types = array_combine($matches['var'], $matches['type']); - // get method parameters foreach ($reflection->getParameters() as $param) { + // extract type information from PHP 7 scalar types and prefer them + // over phpdoc annotations + if (method_exists($param, 'getType')) { + $type = $param->getType(); + if ($type !== null) { + $this->types[$param->getName()] = (string) $type; + } + } + if($param->isOptional()) { $default = $param->getDefaultValue(); } else { @@ -82,9 +84,9 @@ class ControllerMethodReflector implements IControllerMethodReflector{ /** * Inspects the PHPDoc parameters for types - * @param string $parameter the parameter whose type comments should be + * @param string $parameter the parameter whose type comments should be * parsed - * @return string|null type in the type parameters (@param int $something) + * @return string|null type in the type parameters (@param int $something) * would return int or null if not existing */ public function getType($parameter) { diff --git a/lib/private/archive/tar.php b/lib/private/archive/tar.php index 4448e56850d..4066e1d86c1 100644 --- a/lib/private/archive/tar.php +++ b/lib/private/archive/tar.php @@ -86,7 +86,7 @@ class OC_Archive_TAR extends OC_Archive { * @return bool */ function addFolder($path) { - $tmpBase = OC_Helper::tmpFolder(); + $tmpBase = \OC::$server->getTempManager()->getTemporaryFolder(); if (substr($path, -1, 1) != '/') { $path .= '/'; } diff --git a/lib/private/avatar.php b/lib/private/avatar.php index 37a813f3ff8..c87facd25da 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -31,6 +31,7 @@ namespace OC; use OCP\Files\Folder; use OCP\Files\File; +use OCP\Files\NotFoundException; use OCP\IL10N; use OC_Image; @@ -62,28 +63,14 @@ class Avatar implements \OCP\IAvatar { * @return boolean|\OCP\IImage containing the avatar or false if there's no image */ public function get ($size = 64) { - if ($this->folder->nodeExists('avatar.jpg')) { - $ext = 'jpg'; - } elseif ($this->folder->nodeExists('avatar.png')) { - $ext = 'png'; - } else { + try { + $file = $this->getFile($size); + } catch (NotFoundException $e) { return false; } $avatar = new OC_Image(); - if ($this->folder->nodeExists('avatar.' . $size . '.' . $ext)) { - /** @var File $node */ - $node = $this->folder->get('avatar.' . $size . '.' . $ext); - $avatar->loadFromData($node->getContent()); - } else { - /** @var File $node */ - $node = $this->folder->get('avatar.' . $ext); - $avatar->loadFromData($node->getContent()); - if ($size > 0) { - $avatar->resize($size); - } - $this->folder->newFile('avatar.' . $size . '.' . $ext)->putContent($avatar->data()); - } + $avatar->loadFromData($file->getContent()); return $avatar; } @@ -144,4 +131,50 @@ class Avatar implements \OCP\IAvatar { $this->folder->get('avatar.png')->delete(); } catch (\OCP\Files\NotFoundException $e) {} } + + /** + * Get the File of an avatar of size $size. + * + * @param int $size + * @return File + * @throws NotFoundException + */ + public function getFile($size) { + $ext = $this->getExtention(); + + $path = 'avatar.' . $size . '.' . $ext; + + try { + $file = $this->folder->get($path); + } catch (NotFoundException $e) { + if ($size <= 0) { + throw new NotFoundException; + } + + $avatar = new OC_Image(); + /** @var File $file */ + $file = $this->folder->get('avatar.' . $ext); + $avatar->loadFromData($file->getContent()); + $avatar->resize($size); + $file = $this->folder->newFile($path); + $file->putContent($avatar->data()); + } + + return $file; + } + + /** + * Get the extention of the avatar. If there is no avatar throw Exception + * + * @return string + * @throws NotFoundException + */ + private function getExtention() { + if ($this->folder->nodeExists('avatar.jpg')) { + return 'jpg'; + } elseif ($this->folder->nodeExists('avatar.png')) { + return 'png'; + } + throw new NotFoundException; + } } diff --git a/lib/private/backgroundjob/job.php b/lib/private/backgroundjob/job.php index 88682cd09bb..40a27491fe6 100644 --- a/lib/private/backgroundjob/job.php +++ b/lib/private/backgroundjob/job.php @@ -54,7 +54,6 @@ abstract class Job implements IJob { if ($logger) { $logger->error('Error while running background job: ' . $e->getMessage()); } - $jobList->remove($this, $this->argument); } } diff --git a/lib/private/backgroundjob/joblist.php b/lib/private/backgroundjob/joblist.php index 03c9180ddb0..446de2fa1a4 100644 --- a/lib/private/backgroundjob/joblist.php +++ b/lib/private/backgroundjob/joblist.php @@ -24,134 +24,180 @@ namespace OC\BackgroundJob; +use OCP\AppFramework\QueryException; +use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\IJobList; use OCP\AutoloadNotAllowedException; class JobList implements IJobList { - /** - * @var \OCP\IDBConnection - */ - private $conn; + /** @var \OCP\IDBConnection */ + protected $connection; /** * @var \OCP\IConfig $config */ - private $config; + protected $config; /** - * @param \OCP\IDBConnection $conn + * @param \OCP\IDBConnection $connection * @param \OCP\IConfig $config */ - public function __construct($conn, $config) { - $this->conn = $conn; + public function __construct($connection, $config) { + $this->connection = $connection; $this->config = $config; } /** - * @param Job|string $job + * @param IJob|string $job * @param mixed $argument */ public function add($job, $argument = null) { if (!$this->has($job, $argument)) { - if ($job instanceof Job) { + if ($job instanceof IJob) { $class = get_class($job); } else { $class = $job; } + $argument = json_encode($argument); if (strlen($argument) > 4000) { throw new \InvalidArgumentException('Background job arguments can\'t exceed 4000 characters (json encoded)'); } - $query = $this->conn->prepare('INSERT INTO `*PREFIX*jobs`(`class`, `argument`, `last_run`) VALUES(?, ?, 0)'); - $query->execute(array($class, $argument)); + + $query = $this->connection->getQueryBuilder(); + $query->insert('jobs') + ->values([ + 'class' => $query->createNamedParameter($class), + 'argument' => $query->createNamedParameter($argument), + 'last_run' => $query->createNamedParameter(0, \PDO::PARAM_INT), + ]); + $query->execute(); } } /** - * @param Job|string $job + * @param IJob|string $job * @param mixed $argument */ public function remove($job, $argument = null) { - if ($job instanceof Job) { + if ($job instanceof IJob) { $class = get_class($job); } else { $class = $job; } + + $query = $this->connection->getQueryBuilder(); + $query->delete('jobs') + ->where($query->expr()->eq('class', $query->createNamedParameter($class))); if (!is_null($argument)) { $argument = json_encode($argument); - $query = $this->conn->prepare('DELETE FROM `*PREFIX*jobs` WHERE `class` = ? AND `argument` = ?'); - $query->execute(array($class, $argument)); - } else { - $query = $this->conn->prepare('DELETE FROM `*PREFIX*jobs` WHERE `class` = ?'); - $query->execute(array($class)); + $query->andWhere($query->expr()->eq('argument', $query->createNamedParameter($argument))); } + $query->execute(); } + /** + * @param int $id + */ protected function removeById($id) { - $query = $this->conn->prepare('DELETE FROM `*PREFIX*jobs` WHERE `id` = ?'); - $query->execute([$id]); + $query = $this->connection->getQueryBuilder(); + $query->delete('jobs') + ->where($query->expr()->eq('id', $query->createNamedParameter($id, \PDO::PARAM_INT))); + $query->execute(); } /** * check if a job is in the list * - * @param Job|string $job + * @param IJob|string $job * @param mixed $argument * @return bool */ public function has($job, $argument) { - if ($job instanceof Job) { + if ($job instanceof IJob) { $class = get_class($job); } else { $class = $job; } $argument = json_encode($argument); - $query = $this->conn->prepare('SELECT `id` FROM `*PREFIX*jobs` WHERE `class` = ? AND `argument` = ?'); - $query->execute(array($class, $argument)); - return (bool)$query->fetch(); + + $query = $this->connection->getQueryBuilder(); + $query->select('id') + ->from('jobs') + ->where($query->expr()->eq('class', $query->createNamedParameter($class))) + ->andWhere($query->expr()->eq('argument', $query->createNamedParameter($argument))) + ->setMaxResults(1); + + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + return (bool) $row; } /** * get all jobs in the list * - * @return Job[] + * @return IJob[] */ public function getAll() { - $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs`'); - $query->execute(); - $jobs = array(); - while ($row = $query->fetch()) { + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('jobs'); + $result = $query->execute(); + + $jobs = []; + while ($row = $result->fetch()) { $job = $this->buildJob($row); if ($job) { $jobs[] = $job; } } + $result->closeCursor(); + return $jobs; } /** * get the next job in the list * - * @return Job + * @return IJob|null */ public function getNext() { $lastId = $this->getLastJob(); - $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` WHERE `id` > ? ORDER BY `id` ASC', 1); - $query->execute(array($lastId)); - if ($row = $query->fetch()) { + + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('jobs') + ->where($query->expr()->gt('id', $query->createNamedParameter($lastId, \PDO::PARAM_INT))) + ->orderBy('id', 'ASC') + ->setMaxResults(1); + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + if ($row) { $jobId = $row['id']; $job = $this->buildJob($row); } else { //begin at the start of the queue - $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` ORDER BY `id` ASC', 1); - $query->execute(); - if ($row = $query->fetch()) { + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('jobs') + ->orderBy('id', 'ASC') + ->setMaxResults(1); + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + if ($row) { $jobId = $row['id']; $job = $this->buildJob($row); } else { return null; //empty job list } } + if (is_null($job)) { $this->removeById($jobId); return $this->getNext(); @@ -162,12 +208,18 @@ class JobList implements IJobList { /** * @param int $id - * @return Job|null + * @return IJob|null */ public function getById($id) { - $query = $this->conn->prepare('SELECT `id`, `class`, `last_run`, `argument` FROM `*PREFIX*jobs` WHERE `id` = ?'); - $query->execute(array($id)); - if ($row = $query->fetch()) { + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('jobs') + ->where($query->expr()->eq('id', $query->createNamedParameter($id, \PDO::PARAM_INT))); + $result = $query->execute(); + $row = $result->fetch(); + $result->closeCursor(); + + if ($row) { return $this->buildJob($row); } else { return null; @@ -178,33 +230,38 @@ class JobList implements IJobList { * get the job object from a row in the db * * @param array $row - * @return Job + * @return IJob|null */ private function buildJob($row) { - $class = $row['class']; - /** - * @var Job $job - */ try { - if (!class_exists($class)) { - // job from disabled app or old version of an app, no need to do anything - return null; + try { + // Try to load the job as a service + /** @var IJob $job */ + $job = \OC::$server->query($row['class']); + } catch (QueryException $e) { + if (class_exists($row['class'])) { + $class = $row['class']; + $job = new $class(); + } else { + // job from disabled app or old version of an app, no need to do anything + return null; + } } - $job = new $class(); + $job->setId($row['id']); $job->setLastRun($row['last_run']); $job->setArgument(json_decode($row['argument'], true)); return $job; } catch (AutoloadNotAllowedException $e) { // job is from a disabled app, ignore + return null; } - return null; } /** * set the job that was last ran * - * @param Job $job + * @param IJob $job */ public function setLastJob($job) { $this->config->setAppValue('backgroundjob', 'lastjob', $job->getId()); @@ -213,19 +270,22 @@ class JobList implements IJobList { /** * get the id of the last ran job * - * @return string + * @return int */ public function getLastJob() { - return $this->config->getAppValue('backgroundjob', 'lastjob', 0); + return (int) $this->config->getAppValue('backgroundjob', 'lastjob', 0); } /** * set the lastRun of $job to now * - * @param Job $job + * @param IJob $job */ public function setLastRun($job) { - $query = $this->conn->prepare('UPDATE `*PREFIX*jobs` SET `last_run` = ? WHERE `id` = ?'); - $query->execute(array(time(), $job->getId())); + $query = $this->connection->getQueryBuilder(); + $query->update('jobs') + ->set('last_run', $query->createNamedParameter(time(), \PDO::PARAM_INT)) + ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), \PDO::PARAM_INT))); + $query->execute(); } } diff --git a/lib/private/defaults.php b/lib/private/defaults.php index 16f45943f54..23f0baad96e 100644 --- a/lib/private/defaults.php +++ b/lib/private/defaults.php @@ -49,7 +49,7 @@ class OC_Defaults { function __construct() { $this->l = \OC::$server->getL10N('lib'); - $version = OC_Util::getVersion(); + $version = \OCP\Util::getVersion(); $this->defaultEntity = 'ownCloud'; /* e.g. company name, used for footers and copyright notices */ $this->defaultName = 'ownCloud'; /* short name, used when referring to the software */ diff --git a/lib/private/eventsource.php b/lib/private/eventsource.php index c076b87ddd9..0e98bdc2628 100644 --- a/lib/private/eventsource.php +++ b/lib/private/eventsource.php @@ -76,7 +76,7 @@ class OC_EventSource implements \OCP\IEventSource { } else { header("Content-Type: text/event-stream"); } - if (!OC_Util::isCallRegistered()) { + if (!(\OC::$server->getRequest()->passesCSRFCheck())) { $this->send('error', 'Possible CSRF attack. Connection will be closed.'); $this->close(); exit(); diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php index 5ec05a3529e..b34a6bdfb84 100644 --- a/lib/private/files/objectstore/objectstorestorage.php +++ b/lib/private/files/objectstore/objectstorestorage.php @@ -274,7 +274,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { } else { $ext = ''; } - $tmpFile = \OC_Helper::tmpFile($ext); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext); \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $source = $this->fopen($path, 'r'); @@ -329,7 +329,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { $stat['mtime'] = $mtime; $this->getCache()->update($stat['fileid'], $stat); } else { - $mimeType = \OC_Helper::getFileNameMimeType($path); + $mimeType = \OC::$server->getMimeTypeDetector()->detectPath($path); // create new file $stat = array( 'etag' => $this->getETag($path), diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index b06543d0a6a..1e30d48f613 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -225,7 +225,7 @@ abstract class Common implements Storage { if ($this->is_dir($path)) { return 'httpd/unix-directory'; } elseif ($this->file_exists($path)) { - return \OC_Helper::getFileNameMimeType($path); + return \OC::$server->getMimeTypeDetector()->detectPath($path); } else { return false; } @@ -248,7 +248,7 @@ abstract class Common implements Storage { } public function getLocalFolder($path) { - $baseDir = \OC_Helper::tmpFolder(); + $baseDir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->addLocalFolder($path, $baseDir); return $baseDir; } diff --git a/lib/private/files/storage/localtempfiletrait.php b/lib/private/files/storage/localtempfiletrait.php index 84331f49b19..8875c2c4493 100644 --- a/lib/private/files/storage/localtempfiletrait.php +++ b/lib/private/files/storage/localtempfiletrait.php @@ -70,7 +70,7 @@ trait LocalTempFileTrait { } else { $extension = ''; } - $tmpFile = \OC_Helper::tmpFile($extension); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($extension); $target = fopen($tmpFile, 'w'); \OC_Helper::streamCopy($source, $target); fclose($target); diff --git a/lib/private/files/storage/temporary.php b/lib/private/files/storage/temporary.php index c8b99a55637..8abc19929b0 100644 --- a/lib/private/files/storage/temporary.php +++ b/lib/private/files/storage/temporary.php @@ -29,7 +29,7 @@ namespace OC\Files\Storage; */ class Temporary extends Local{ public function __construct($arguments = null) { - parent::__construct(array('datadir' => \OC_Helper::tmpFolder())); + parent::__construct(array('datadir' => \OC::$server->getTempManager()->getTemporaryFolder())); } public function cleanUp() { diff --git a/lib/private/files/type/detection.php b/lib/private/files/type/detection.php index c102e739e04..0e2bab39e5b 100644 --- a/lib/private/files/type/detection.php +++ b/lib/private/files/type/detection.php @@ -238,7 +238,7 @@ class Detection implements IMimeTypeDetector { $finfo = finfo_open(FILEINFO_MIME); return finfo_buffer($finfo, $data); } else { - $tmpFile = \OC_Helper::tmpFile(); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); $fh = fopen($tmpFile, 'wb'); fwrite($fh, $data, 8024); fclose($fh); diff --git a/lib/private/files/view.php b/lib/private/files/view.php index b8b1b8a50d6..357f854e5e2 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -86,6 +86,8 @@ class View { private $updaterEnabled = true; + private $userManager; + /** * @param string $root * @throws \Exception If $root contains an invalid path @@ -101,6 +103,7 @@ class View { $this->fakeRoot = $root; $this->lockingProvider = \OC::$server->getLockingProvider(); $this->lockingEnabled = !($this->lockingProvider instanceof \OC\Lock\NoopLockingProvider); + $this->userManager = \OC::$server->getUserManager(); } public function getAbsolutePath($path = '/') { @@ -912,7 +915,7 @@ class View { $source = $this->fopen($path, 'r'); if ($source) { $extension = pathinfo($path, PATHINFO_EXTENSION); - $tmpFile = \OC_Helper::tmpFile($extension); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($extension); file_put_contents($tmpFile, $source); return $tmpFile; } else { @@ -1196,7 +1199,7 @@ class View { * @return \OC\User\User */ private function getUserObjectForOwner($ownerId) { - $owner = \OC::$server->getUserManager()->get($ownerId); + $owner = $this->userManager->get($ownerId); if ($owner instanceof IUser) { return $owner; } else { @@ -1339,11 +1342,12 @@ class View { $folderId = $data['fileid']; $contents = $cache->getFolderContentsById($folderId); //TODO: mimetype_filter + $sharingDisabled = \OCP\Util::isSharingDisabledForUser(); /** * @var \OC\Files\FileInfo[] $files */ - $files = array_map(function (array $content) use ($path, $storage, $mount) { - if (\OCP\Util::isSharingDisabledForUser()) { + $files = array_map(function (array $content) use ($path, $storage, $mount, $sharingDisabled) { + if ($sharingDisabled) { $content['permissions'] = $content['permissions'] & ~\OCP\Constants::PERMISSION_SHARE; } $owner = $this->getUserObjectForOwner($storage->getOwner($content['path'])); diff --git a/lib/private/helper.php b/lib/private/helper.php index 78a567638ef..64952903712 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -54,88 +54,6 @@ class OC_Helper { private static $templateManager; /** - * Creates an url using a defined route - * @param string $route - * @param array $parameters with param=>value, will be appended to the returned url - * @return string the url - * @deprecated Use \OC::$server->getURLGenerator()->linkToRoute($route, $parameters) - * - * Returns a url to the given app and file. - */ - public static function linkToRoute($route, $parameters = array()) { - return OC::$server->getURLGenerator()->linkToRoute($route, $parameters); - } - - /** - * Creates an url - * @param string $app app - * @param string $file file - * @param array $args array with param=>value, will be appended to the returned url - * The value of $args will be urlencoded - * @return string the url - * @deprecated Use \OC::$server->getURLGenerator()->linkTo($app, $file, $args) - * - * Returns a url to the given app and file. - */ - public static function linkTo( $app, $file, $args = array() ) { - return OC::$server->getURLGenerator()->linkTo($app, $file, $args); - } - - /** - * Creates an absolute url - * @param string $app app - * @param string $file file - * @param array $args array with param=>value, will be appended to the returned url - * The value of $args will be urlencoded - * @return string the url - * - * Returns a absolute url to the given app and file. - */ - public static function linkToAbsolute($app, $file, $args = array()) { - return OC::$server->getURLGenerator()->getAbsoluteURL( - self::linkTo($app, $file, $args) - ); - } - - /** - * Makes an $url absolute - * @param string $url the url - * @return string the absolute url - * @deprecated Use \OC::$server->getURLGenerator()->getAbsoluteURL($url) - * - * Returns a absolute url to the given app and file. - */ - public static function makeURLAbsolute($url) { - return OC::$server->getURLGenerator()->getAbsoluteURL($url); - } - - /** - * Creates an url for remote use - * @param string $service id - * @return string the url - * - * Returns a url to the given service. - */ - public static function linkToRemoteBase($service) { - return self::linkTo('', 'remote.php') . '/' . $service; - } - - /** - * Creates an absolute url for remote use - * @param string $service id - * @param bool $add_slash - * @return string the url - * - * Returns a absolute url to the given service. - */ - public static function linkToRemote($service, $add_slash = true) { - return OC::$server->getURLGenerator()->getAbsoluteURL( - self::linkToRemoteBase($service) - . (($add_slash && $service[strlen($service) - 1] != '/') ? '/' : '') - ); - } - - /** * Creates an absolute url for public use * @param string $service id * @param bool $add_slash @@ -147,7 +65,7 @@ class OC_Helper { if ($service === 'files') { $url = OC::$server->getURLGenerator()->getAbsoluteURL('/s'); } else { - $url = OC::$server->getURLGenerator()->getAbsoluteURL(self::linkTo('', 'public.php').'?service='.$service); + $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php').'?service='.$service); } return $url . (($add_slash && $service[strlen($service) - 1] != '/') ? '/' : ''); } @@ -166,18 +84,6 @@ class OC_Helper { } /** - * get path to icon of file type - * @param string $mimetype mimetype - * @return string the url - * - * Returns the path to the image of this file type. - * @deprecated 8.2.0 Use \OC::$server->getMimeTypeDetector()->mimeTypeIcon($mimetype) - */ - public static function mimetypeIcon($mimetype) { - return \OC::$server->getMimeTypeDetector()->mimeTypeIcon($mimetype); - } - - /** * get path to preview of file * @param string $path path * @return string the url @@ -185,21 +91,11 @@ class OC_Helper { * Returns the path to the preview of the file. */ public static function previewIcon($path) { - return self::linkToRoute( 'core_ajax_preview', array('x' => 32, 'y' => 32, 'file' => $path )); + return \OC::$server->getURLGenerator()->linkToRoute('core_ajax_preview', ['x' => 32, 'y' => 32, 'file' => $path]); } public static function publicPreviewIcon( $path, $token ) { - return self::linkToRoute( 'core_ajax_public_preview', array('x' => 32, 'y' => 32, 'file' => $path, 't' => $token)); - } - - /** - * shows whether the user has an avatar - * @param string $user username - * @return bool avatar set or not - * @deprecated 9.0.0 Use \OC::$server->getAvatarManager()->getAvatar($user)->exists(); - **/ - public static function userAvatarSet($user) { - return \OC::$server->getAvatarManager()->getAvatar($user)->exists(); + return \OC::$server->getURLGenerator()->linkToRoute('core_ajax_public_preview', ['x' => 32, 'y' => 32, 'file' => $path, 't' => $token]); } /** @@ -364,14 +260,6 @@ class OC_Helper { } /** - * @return \OC\Files\Type\Detection - * @deprecated 8.2.0 use \OC::$server->getMimeTypeDetector() - */ - static public function getMimetypeDetector() { - return \OC::$server->getMimeTypeDetector(); - } - - /** * @return \OC\Files\Type\TemplateManager */ static public function getFileTemplateManager() { @@ -382,39 +270,6 @@ class OC_Helper { } /** - * Try to guess the mimetype based on filename - * - * @param string $path - * @return string - * @deprecated 8.2.0 Use \OC::$server->getMimeTypeDetector()->detectPath($path) - */ - static public function getFileNameMimeType($path) { - return \OC::$server->getMimeTypeDetector()->detectPath($path); - } - - /** - * Get a secure mimetype that won't expose potential XSS. - * - * @param string $mimeType - * @return string - * @deprecated 8.2.0 Use \OC::$server->getMimeTypeDetector()->getSecureMimeType($mimeType) - */ - static function getSecureMimeType($mimeType) { - return \OC::$server->getMimeTypeDetector()->getSecureMimeType($mimeType); - } - - /** - * get the mimetype form a data string - * - * @param string $data - * @return string - * @deprecated 8.2.0 Use \OC::$server->getMimeTypeDetector()->detectString($data) - */ - static function getStringMimeType($data) { - return \OC::$server->getMimeTypeDetector()->detectString($data); - } - - /** * detect if a given program is found in the search PATH * * @param string $name @@ -493,31 +348,6 @@ class OC_Helper { } /** - * create a temporary file with an unique filename - * - * @param string $postfix - * @return string - * @deprecated Use the TempManager instead - * - * temporary files are automatically cleaned up after the script is finished - */ - public static function tmpFile($postfix = '') { - return \OC::$server->getTempManager()->getTemporaryFile($postfix); - } - - /** - * create a temporary folder with an unique filename - * - * @return string - * @deprecated Use the TempManager instead - * - * temporary files are automatically cleaned up after the script is finished - */ - public static function tmpFolder() { - return \OC::$server->getTempManager()->getTemporaryFolder(); - } - - /** * Adds a suffix to the name in case the file exists * * @param string $path @@ -782,7 +612,7 @@ class OC_Helper { */ public static function getStorageInfo($path, $rootInfo = null) { // return storage info without adding mount points - $includeExtStorage = \OC_Config::getValue('quota_include_external_storage', false); + $includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false); if (!$rootInfo) { $rootInfo = \OC\Files\Filesystem::getFileInfo($path, false); diff --git a/lib/private/image.php b/lib/private/image.php index 4ca9b811100..a5de7e86b94 100644 --- a/lib/private/image.php +++ b/lib/private/image.php @@ -39,17 +39,19 @@ * Class for basic image manipulation */ class OC_Image implements \OCP\IImage { + /** @var false|resource */ protected $resource = false; // tmp resource. + /** @var int */ protected $imageType = IMAGETYPE_PNG; // Default to png if file type isn't evident. - protected $mimeType = "image/png"; // Default to png + /** @var string */ + protected $mimeType = 'image/png'; // Default to png + /** @var int */ protected $bitDepth = 24; + /** @var null|string */ protected $filePath = null; - + /** @var finfo */ private $fileInfo; - - /** - * @var \OCP\ILogger - */ + /** @var \OCP\ILogger */ private $logger; /** diff --git a/lib/private/installer.php b/lib/private/installer.php index fa9fc6704df..bbd976cda91 100644 --- a/lib/private/installer.php +++ b/lib/private/installer.php @@ -232,8 +232,8 @@ class OC_Installer{ \OC::$server->getConfig(), \OC::$server->getLogger() ); - $appData = $ocsClient->getApplication($ocsId, \OC_Util::getVersion()); - $download = $ocsClient->getApplicationDownload($ocsId, \OC_Util::getVersion()); + $appData = $ocsClient->getApplication($ocsId, \OCP\Util::getVersion()); + $download = $ocsClient->getApplicationDownload($ocsId, \OCP\Util::getVersion()); if (isset($download['downloadlink']) && trim($download['downloadlink']) !== '') { $download['downloadlink'] = str_replace(' ', '%20', $download['downloadlink']); @@ -264,7 +264,7 @@ class OC_Installer{ //download the file if necessary if($data['source']=='http') { $pathInfo = pathinfo($data['href']); - $path=OC_Helper::tmpFile('.' . $pathInfo['extension']); + $path = \OC::$server->getTempManager()->getTemporaryFile('.' . $pathInfo['extension']); if(!isset($data['href'])) { throw new \Exception($l->t("No href specified when installing app from http")); } @@ -284,7 +284,7 @@ class OC_Installer{ } //extract the archive in a temporary folder - $extractDir=OC_Helper::tmpFolder(); + $extractDir = \OC::$server->getTempManager()->getTemporaryFolder(); OC_Helper::rmdirr($extractDir); mkdir($extractDir); if($archive=OC_Archive::open($path)) { @@ -342,7 +342,7 @@ class OC_Installer{ } // check if the app is compatible with this version of ownCloud - if(!OC_App::isAppCompatible(OC_Util::getVersion(), $info)) { + if(!OC_App::isAppCompatible(\OCP\Util::getVersion(), $info)) { OC_Helper::rmdirr($extractDir); throw new \Exception($l->t("App can't be installed because it is not compatible with this version of ownCloud")); } @@ -400,7 +400,7 @@ class OC_Installer{ \OC::$server->getConfig(), \OC::$server->getLogger() ); - $ocsdata = $ocsClient->getApplication($ocsid, \OC_Util::getVersion()); + $ocsdata = $ocsClient->getApplication($ocsid, \OCP\Util::getVersion()); $ocsversion= (string) $ocsdata['version']; $currentversion=OC_App::getAppVersion($app); if (version_compare($ocsversion, $currentversion, '>')) { diff --git a/lib/private/json.php b/lib/private/json.php index eba374f4da2..0bf4e8bcd01 100644 --- a/lib/private/json.php +++ b/lib/private/json.php @@ -76,7 +76,7 @@ class OC_JSON{ * @deprecated Use annotation based CSRF checks from the AppFramework instead */ public static function callCheck() { - if( !OC_Util::isCallRegistered()) { + if( !(\OC::$server->getRequest()->passesCSRFCheck())) { $l = \OC::$server->getL10N('lib'); self::error(array( 'data' => array( 'message' => $l->t('Token expired. Please reload page.'), 'error' => 'token_expired' ))); exit(); diff --git a/lib/private/legacy/config.php b/lib/private/legacy/config.php deleted file mode 100644 index 1835d4a4b1c..00000000000 --- a/lib/private/legacy/config.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/** - * @author Bart Visscher <bartv@thisnet.nl> - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <rmccorkell@karoshi.org.uk> - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -/** - * This class is responsible for reading and writing config.php, the very basic - * configuration file of ownCloud. - * - * @deprecated use \OC::$server->getConfig() to get an \OCP\Config instance - */ -class OC_Config { - - /** @var \OC\Config */ - public static $object; - - /** - * Lists all available config keys - * @return array an array of key names - * - * This function returns all keys saved in config.php. Please note that it - * does not return the values. - */ - public static function getKeys() { - return self::$object->getKeys(); - } - - /** - * Gets a value from config.php - * @param string $key key - * @param mixed $default = null default value - * @return mixed the value or $default - * - * This function gets the value from config.php. If it does not exist, - * $default will be returned. - */ - public static function getValue($key, $default = null) { - return self::$object->getValue($key, $default); - } - - /** - * Sets a value - * @param string $key key - * @param mixed $value value - * - * This function sets the value and writes the config.php. - * - */ - public static function setValue($key, $value) { - self::$object->setValue($key, $value); - } - - /** - * Sets and deletes values and writes the config.php - * - * @param array $configs Associative array with `key => value` pairs - * If value is null, the config key will be deleted - */ - public static function setValues(array $configs) { - self::$object->setValues($configs); - } - - /** - * Removes a key from the config - * @param string $key key - * - * This function removes a key from the config.php. - */ - public static function deleteKey($key) { - self::$object->deleteKey($key); - } -} diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php index f8a5f7534c5..e455824a8dd 100644 --- a/lib/private/log/owncloud.php +++ b/lib/private/log/owncloud.php @@ -73,7 +73,7 @@ class OC_Log_Owncloud { } catch (Exception $e) { $timezone = new DateTimeZone('UTC'); } - $time = DateTime::createFromFormat("U.u", microtime(true), $timezone); + $time = DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", ""), $timezone); if ($time === false) { $time = new DateTime(null, $timezone); } @@ -101,6 +101,9 @@ class OC_Log_Owncloud { // Fall back to error_log error_log($entry); } + if (php_sapi_name() === 'cli-server') { + error_log($message, 4); + } } /** diff --git a/lib/private/memcache/apcu.php b/lib/private/memcache/apcu.php index 84147233ef0..778e27d4567 100644 --- a/lib/private/memcache/apcu.php +++ b/lib/private/memcache/apcu.php @@ -24,7 +24,101 @@ namespace OC\Memcache; -class APCu extends APC { +use OCP\IMemcache; + +class APCu extends Cache implements IMemcache { + use CASTrait { + cas as casEmulated; + } + + use CADTrait; + + public function get($key) { + $result = apcu_fetch($this->getPrefix() . $key, $success); + if (!$success) { + return null; + } + return $result; + } + + public function set($key, $value, $ttl = 0) { + return apcu_store($this->getPrefix() . $key, $value, $ttl); + } + + public function hasKey($key) { + return apcu_exists($this->getPrefix() . $key); + } + + public function remove($key) { + return apcu_delete($this->getPrefix() . $key); + } + + public function clear($prefix = '') { + $ns = $this->getPrefix() . $prefix; + $ns = preg_quote($ns, '/'); + if(class_exists('\APCIterator')) { + $iter = new \APCIterator('user', '/^' . $ns . '/', APC_ITER_KEY); + } else { + $iter = new \APCUIterator('user', '/^' . $ns . '/', APC_ITER_KEY); + } + return apcu_delete($iter); + } + + /** + * Set a value in the cache if it's not already stored + * + * @param string $key + * @param mixed $value + * @param int $ttl Time To Live in seconds. Defaults to 60*60*24 + * @return bool + */ + public function add($key, $value, $ttl = 0) { + return apcu_add($this->getPrefix() . $key, $value, $ttl); + } + + /** + * Increase a stored number + * + * @param string $key + * @param int $step + * @return int | bool + */ + public function inc($key, $step = 1) { + $this->add($key, 0); + return apcu_inc($this->getPrefix() . $key, $step); + } + + /** + * Decrease a stored number + * + * @param string $key + * @param int $step + * @return int | bool + */ + public function dec($key, $step = 1) { + return apcu_dec($this->getPrefix() . $key, $step); + } + + /** + * Compare and set + * + * @param string $key + * @param mixed $old + * @param mixed $new + * @return bool + */ + public function cas($key, $old, $new) { + // apc only does cas for ints + if (is_int($old) and is_int($new)) { + return apcu_cas($this->getPrefix() . $key, $old, $new); + } else { + return $this->casEmulated($key, $old, $new); + } + } + + /** + * @return bool + */ static public function isAvailable() { if (!extension_loaded('apcu')) { return false; @@ -32,7 +126,10 @@ class APCu extends APC { return false; } elseif (!\OC::$server->getIniWrapper()->getBool('apc.enable_cli') && \OC::$CLI) { return false; - } elseif (version_compare(phpversion('apc'), '4.0.6') === -1) { + } elseif ( + version_compare(phpversion('apc'), '4.0.6') === -1 && + version_compare(phpversion('apcu'), '5.1.0') === -1 + ) { return false; } else { return true; diff --git a/lib/private/ocs/cloud.php b/lib/private/ocs/cloud.php index 2cf40c449ff..1b04f43d477 100644 --- a/lib/private/ocs/cloud.php +++ b/lib/private/ocs/cloud.php @@ -26,7 +26,7 @@ class OC_OCS_Cloud { public static function getCapabilities() { $result = array(); - list($major, $minor, $micro) = OC_Util::getVersion(); + list($major, $minor, $micro) = \OCP\Util::getVersion(); $result['version'] = array( 'major' => $major, 'minor' => $minor, diff --git a/lib/private/ocsclient.php b/lib/private/ocsclient.php index e2973f82605..81c9abee058 100644 --- a/lib/private/ocsclient.php +++ b/lib/private/ocsclient.php @@ -97,6 +97,7 @@ class OCSClient { libxml_disable_entity_loader($loadEntities); if($data === false) { + libxml_clear_errors(); $this->logger->error( sprintf('Could not get %s, content was no valid XML', $action), [ diff --git a/lib/private/preview.php b/lib/private/preview.php index 38c043030fc..44d38b354a9 100644 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -1168,7 +1168,7 @@ class Preview { */ private function getMimeIcon() { $image = new \OC_Image(); - $mimeIconWebPath = \OC_Helper::mimetypeIcon($this->mimeType); + $mimeIconWebPath = \OC::$server->getMimeTypeDetector()->mimeTypeIcon($this->mimeType); if (empty(\OC::$WEBROOT)) { $mimeIconServerPath = \OC::$SERVERROOT . $mimeIconWebPath; } else { diff --git a/lib/private/preview/movie.php b/lib/private/preview/movie.php index f71eaaf3eb2..2c2e6d09399 100644 --- a/lib/private/preview/movie.php +++ b/lib/private/preview/movie.php @@ -46,7 +46,7 @@ class Movie extends Provider { if ($useFileDirectly) { $absPath = $fileview->getLocalFile($path); } else { - $absPath = \OC_Helper::tmpFile(); + $absPath = \OC::$server->getTempManager()->getTemporaryFile(); $handle = $fileview->fopen($path, 'rb'); @@ -79,7 +79,7 @@ class Movie extends Provider { * @return bool|\OCP\IImage */ private function generateThumbNail($maxX, $maxY, $absPath, $second) { - $tmpPath = \OC_Helper::tmpFile(); + $tmpPath = \OC::$server->getTempManager()->getTemporaryFile(); if (self::$avconvBinary) { $cmd = self::$avconvBinary . ' -an -y -ss ' . escapeshellarg($second) . diff --git a/lib/repair/assetcache.php b/lib/private/repair/assetcache.php index c46aa63a3e4..c46aa63a3e4 100644 --- a/lib/repair/assetcache.php +++ b/lib/private/repair/assetcache.php diff --git a/lib/repair/cleantags.php b/lib/private/repair/cleantags.php index d16a49fbca7..d16a49fbca7 100644 --- a/lib/repair/cleantags.php +++ b/lib/private/repair/cleantags.php diff --git a/lib/repair/collation.php b/lib/private/repair/collation.php index 7eb14f0ded2..7eb14f0ded2 100644 --- a/lib/repair/collation.php +++ b/lib/private/repair/collation.php diff --git a/lib/repair/dropoldjobs.php b/lib/private/repair/dropoldjobs.php index 89d7f96a144..89d7f96a144 100644 --- a/lib/repair/dropoldjobs.php +++ b/lib/private/repair/dropoldjobs.php diff --git a/lib/repair/dropoldtables.php b/lib/private/repair/dropoldtables.php index e8b0eba61d4..2d7fc8376b3 100644 --- a/lib/repair/dropoldtables.php +++ b/lib/private/repair/dropoldtables.php @@ -77,6 +77,7 @@ class DropOldTables extends BasicEmitter implements RepairStep { 'file_map', 'foldersize', 'fscache', + 'gallery_sharing', 'locks', 'log', 'media_albums', diff --git a/lib/repair/filletags.php b/lib/private/repair/filletags.php index 8cfc4a7c258..8cfc4a7c258 100644 --- a/lib/repair/filletags.php +++ b/lib/private/repair/filletags.php diff --git a/lib/repair/innodb.php b/lib/private/repair/innodb.php index ab94c79468d..ab94c79468d 100644 --- a/lib/repair/innodb.php +++ b/lib/private/repair/innodb.php diff --git a/lib/repair/oldgroupmembershipshares.php b/lib/private/repair/oldgroupmembershipshares.php index 2d701ac9fb7..2d701ac9fb7 100644 --- a/lib/repair/oldgroupmembershipshares.php +++ b/lib/private/repair/oldgroupmembershipshares.php diff --git a/lib/repair/preview.php b/lib/private/repair/preview.php index 2284da93734..2284da93734 100644 --- a/lib/repair/preview.php +++ b/lib/private/repair/preview.php diff --git a/lib/repair/removegetetagentries.php b/lib/private/repair/removegetetagentries.php index 40040763654..40040763654 100644 --- a/lib/repair/removegetetagentries.php +++ b/lib/private/repair/removegetetagentries.php diff --git a/lib/repair/repairinvalidshares.php b/lib/private/repair/repairinvalidshares.php index 5a4cb445ce9..5a4cb445ce9 100644 --- a/lib/repair/repairinvalidshares.php +++ b/lib/private/repair/repairinvalidshares.php diff --git a/lib/repair/repairlegacystorages.php b/lib/private/repair/repairlegacystorages.php index 5ba452cbbc6..5ba452cbbc6 100644 --- a/lib/repair/repairlegacystorages.php +++ b/lib/private/repair/repairlegacystorages.php diff --git a/lib/repair/repairmimetypes.php b/lib/private/repair/repairmimetypes.php index e687dbde688..e687dbde688 100644 --- a/lib/repair/repairmimetypes.php +++ b/lib/private/repair/repairmimetypes.php diff --git a/lib/repair/searchlucenetables.php b/lib/private/repair/searchlucenetables.php index 5ae8a300246..5ae8a300246 100644 --- a/lib/repair/searchlucenetables.php +++ b/lib/private/repair/searchlucenetables.php diff --git a/lib/repair/sqliteautoincrement.php b/lib/private/repair/sqliteautoincrement.php index 70d0adae5d7..70d0adae5d7 100644 --- a/lib/repair/sqliteautoincrement.php +++ b/lib/private/repair/sqliteautoincrement.php diff --git a/lib/repair/updatecertificatestore.php b/lib/private/repair/updatecertificatestore.php index 5fad309a959..5fad309a959 100644 --- a/lib/repair/updatecertificatestore.php +++ b/lib/private/repair/updatecertificatestore.php diff --git a/lib/repair/updateoutdatedocsids.php b/lib/private/repair/updateoutdatedocsids.php index 5f6ee029536..5f6ee029536 100644 --- a/lib/repair/updateoutdatedocsids.php +++ b/lib/private/repair/updateoutdatedocsids.php diff --git a/lib/private/route/router.php b/lib/private/route/router.php index 4ca5e16ddf2..8d31d448855 100644 --- a/lib/private/route/router.php +++ b/lib/private/route/router.php @@ -92,7 +92,7 @@ class Router implements IRouter { $this->logger = $logger; $baseUrl = \OC::$WEBROOT; if(!(getenv('front_controller_active') === 'true')) { - $baseUrl = \OC_Helper::linkTo('', 'index.php'); + $baseUrl = \OC::$server->getURLGenerator()->linkTo('', 'index.php'); } if (!\OC::$CLI) { $method = $_SERVER['REQUEST_METHOD']; @@ -328,7 +328,11 @@ class Router implements IRouter { public function generate($name, $parameters = array(), $absolute = false) { $this->loadRoutes(); try { - return $this->getGenerator()->generate($name, $parameters, $absolute); + $referenceType = UrlGenerator::ABSOLUTE_URL; + if ($absolute === false) { + $referenceType = UrlGenerator::ABSOLUTE_PATH; + } + return $this->getGenerator()->generate($name, $parameters, $referenceType); } catch (RouteNotFoundException $e) { $this->logger->logException($e); return ''; diff --git a/lib/private/server.php b/lib/private/server.php index 8439500706d..7efe78b7c37 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -78,14 +78,15 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface; * * TODO: hookup all manager classes */ -class Server extends SimpleContainer implements IServerContainer { +class Server extends ServerContainer implements IServerContainer { /** @var string */ private $webRoot; /** * @param string $webRoot + * @param \OC\Config $config */ - public function __construct($webRoot) { + public function __construct($webRoot, \OC\Config $config) { parent::__construct(); $this->webRoot = $webRoot; @@ -238,8 +239,8 @@ class Server extends SimpleContainer implements IServerContainer { $c->getSystemConfig() ); }); - $this->registerService('SystemConfig', function ($c) { - return new \OC\SystemConfig(); + $this->registerService('SystemConfig', function ($c) use ($config) { + return new \OC\SystemConfig($config); }); $this->registerService('AppConfig', function ($c) { return new \OC\AppConfig(\OC_DB::getConnection()); diff --git a/lib/private/servercontainer.php b/lib/private/servercontainer.php new file mode 100644 index 00000000000..385700957a1 --- /dev/null +++ b/lib/private/servercontainer.php @@ -0,0 +1,89 @@ +<?php +/** + * @author Joas Schilling <nickvergessen@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC; + + +use OC\AppFramework\DependencyInjection\DIContainer; +use OC\AppFramework\Utility\SimpleContainer; +use OCP\AppFramework\QueryException; + +/** + * Class ServerContainer + * + * @package OC + */ +class ServerContainer extends SimpleContainer { + /** @var DIContainer[] */ + protected $appContainers; + + /** + * ServerContainer constructor. + */ + public function __construct() { + parent::__construct(); + $this->appContainers = []; + } + + /** + * @param string $appName + * @param DIContainer $container + */ + public function registerAppContainer($appName, DIContainer $container) { + $this->appContainers[$appName] = $container; + } + + /** + * @param string $appName + * @return DIContainer + */ + public function getAppContainer($appName) { + if (isset($this->appContainers[$appName])) { + return $this->appContainers[$appName]; + } + + return new DIContainer($appName); + } + + /** + * @param string $name name of the service to query for + * @return mixed registered service for the given $name + * @throws QueryException if the query could not be resolved + */ + public function query($name) { + $name = $this->sanitizeName($name); + + // In case the service starts with OCA\ we try to find the service in + // the apps container first. + if (strpos($name, 'OCA\\') === 0 && substr_count($name, '\\') >= 2) { + $segments = explode('\\', $name); + $appContainer = $this->getAppContainer(strtolower($segments[1])); + try { + return $appContainer->query($name); + } catch (QueryException $e) { + // Didn't find the service in the respective app container, + // ignore it and fall back to the core container. + } + } + + return parent::query($name); + } +} diff --git a/lib/private/session/cryptosessiondata.php b/lib/private/session/cryptosessiondata.php index dcae1648fe1..b600874412b 100644 --- a/lib/private/session/cryptosessiondata.php +++ b/lib/private/session/cryptosessiondata.php @@ -132,6 +132,16 @@ class CryptoSessionData implements \ArrayAccess, ISession { } /** + * Wrapper around session_regenerate_id + * + * @param bool $deleteOldSession Whether to delete the old associated session file or not. + * @return void + */ + public function regenerateId($deleteOldSession = true) { + $this->session->regenerateId($deleteOldSession); + } + + /** * Close the session and release the lock, also writes all changed data in batch */ public function close() { diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php index 0b6152acf12..8be3356c6db 100644 --- a/lib/private/session/internal.php +++ b/lib/private/session/internal.php @@ -89,10 +89,9 @@ class Internal extends Session { } } - public function clear() { session_unset(); - @session_regenerate_id(true); + $this->regenerateId(); @session_start(); $_SESSION = array(); } @@ -102,14 +101,35 @@ class Internal extends Session { parent::close(); } - public function reopen() { - throw new \Exception('The session cannot be reopened - reopen() is ony to be used in unit testing.'); - } + /** + * Wrapper around session_regenerate_id + * + * @param bool $deleteOldSession Whether to delete the old associated session file or not. + * @return void + */ + public function regenerateId($deleteOldSession = true) { + @session_regenerate_id($deleteOldSession); + } + + /** + * @throws \Exception + */ + public function reopen() { + throw new \Exception('The session cannot be reopened - reopen() is ony to be used in unit testing.'); + } + /** + * @param int $errorNumber + * @param string $errorString + * @throws \ErrorException + */ public function trapError($errorNumber, $errorString) { throw new \ErrorException($errorString); } + /** + * @throws \Exception + */ private function validateSession() { if ($this->sessionClosed) { throw new \Exception('Session has been closed - no further changes to the session are allowed'); diff --git a/lib/private/session/memory.php b/lib/private/session/memory.php index ff95efc5345..c6090087457 100644 --- a/lib/private/session/memory.php +++ b/lib/private/session/memory.php @@ -81,6 +81,13 @@ class Memory extends Session { } /** + * Stub since the session ID does not need to get regenerated for the cache + * + * @param bool $deleteOldSession + */ + public function regenerateId($deleteOldSession = true) {} + + /** * Helper function for PHPUnit execution - don't use in non-test code */ public function reopen() { diff --git a/lib/private/setup.php b/lib/private/setup.php index 4d11cb44a83..770f5cdab52 100644 --- a/lib/private/setup.php +++ b/lib/private/setup.php @@ -322,7 +322,7 @@ class Setup { 'datadirectory' => $dataDir, 'overwrite.cli.url' => $request->getServerProtocol() . '://' . $request->getInsecureServerHost() . \OC::$WEBROOT, 'dbtype' => $dbType, - 'version' => implode('.', \OC_Util::getVersion()), + 'version' => implode('.', \OCP\Util::getVersion()), ]); try { diff --git a/lib/private/share/helper.php b/lib/private/share/helper.php index 26bbca81317..0441647df83 100644 --- a/lib/private/share/helper.php +++ b/lib/private/share/helper.php @@ -289,4 +289,38 @@ class Helper extends \OC\Share\Constants { $hint = $l->t('Invalid Federated Cloud ID'); throw new HintException('Invalid Fededrated Cloud ID', $hint); } + + /** + * check if two federated cloud IDs refer to the same user + * + * @param string $user1 + * @param string $server1 + * @param string $user2 + * @param string $server2 + * @return bool true if both users and servers are the same + */ + public static function isSameUserOnSameServer($user1, $server1, $user2, $server2) { + $normalizedServer1 = strtolower(\OC\Share\Share::removeProtocolFromUrl($server1)); + $normalizedServer2 = strtolower(\OC\Share\Share::removeProtocolFromUrl($server2)); + + if (rtrim($normalizedServer1, '/') === rtrim($normalizedServer2, '/')) { + // FIXME this should be a method in the user management instead + \OCP\Util::emitHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + array('uid' => &$user1) + ); + \OCP\Util::emitHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + array('uid' => &$user2) + ); + + if ($user1 === $user2) { + return true; + } + } + + return false; + } } diff --git a/lib/private/share/share.php b/lib/private/share/share.php index 3edffba8a3f..fff437b3ff7 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -849,11 +849,20 @@ class Share extends Constants { throw new \Exception($message_t); } + // don't allow federated shares if source and target server are the same + list($user, $remote) = Helper::splitUserRemote($shareWith); + $currentServer = self::removeProtocolFromUrl(\OC::$server->getURLGenerator()->getAbsoluteURL('/')); + $currentUser = \OC::$server->getUserSession()->getUser()->getUID(); + if (Helper::isSameUserOnSameServer($user, $remote, $currentUser, $currentServer)) { + $message = 'Not allowed to create a federated share with the same user.'; + $message_t = $l->t('Not allowed to create a federated share with the same user'); + \OCP\Util::writeLog('OCP\Share', $message, \OCP\Util::DEBUG); + throw new \Exception($message_t); + } $token = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(self::TOKEN_LENGTH, \OCP\Security\ISecureRandom::CHAR_LOWER . \OCP\Security\ISecureRandom::CHAR_UPPER . \OCP\Security\ISecureRandom::CHAR_DIGITS); - list($user, $remote) = Helper::splitUserRemote($shareWith); $shareWith = $user . '@' . $remote; $shareId = self::put($itemType, $itemSource, $shareType, $shareWith, $uidOwner, $permissions, null, $token, $itemSourceName); @@ -2510,7 +2519,7 @@ class Share extends Constants { * @param string $url * @return string */ - private static function removeProtocolFromUrl($url) { + public static function removeProtocolFromUrl($url) { if (strpos($url, 'https://') === 0) { return substr($url, strlen('https://')); } else if (strpos($url, 'http://') === 0) { diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index bc3bc0ce9ed..a7155644920 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -64,11 +64,90 @@ class DefaultShareProvider implements IShareProvider { /** * Share a path - * + * * @param IShare $share * @return IShare The share object + * @throws ShareNotFound + * @throws \Exception */ public function create(IShare $share) { + $qb = $this->dbConn->getQueryBuilder(); + + $qb->insert('share'); + $qb->setValue('share_type', $qb->createNamedParameter($share->getShareType())); + + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + //Set the UID of the user we share with + $qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()->getUID())); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + //Set the GID of the group we share with + $qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()->getGID())); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + //Set the token of the share + $qb->setValue('token', $qb->createNamedParameter($share->getToken())); + + //If a password is set store it + if ($share->getPassword() !== null) { + $qb->setValue('share_with', $qb->createNamedParameter($share->getPassword())); + } + + //If an expiration date is set store it + if ($share->getExpirationDate() !== null) { + $qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime')); + } + } else { + throw new \Exception('invalid share type!'); + } + + // Set what is shares + $qb->setValue('item_type', $qb->createParameter('itemType')); + if ($share->getPath() instanceof \OCP\Files\File) { + $qb->setParameter('itemType', 'file'); + } else { + $qb->setParameter('itemType', 'folder'); + } + + // Set the file id + $qb->setValue('item_source', $qb->createNamedParameter($share->getPath()->getId())); + $qb->setValue('file_source', $qb->createNamedParameter($share->getPath()->getId())); + + // set the permissions + $qb->setValue('permissions', $qb->createNamedParameter($share->getPermissions())); + + // Set who created this share + $qb->setValue('uid_initiator', $qb->createNamedParameter($share->getSharedBy()->getUID())); + + // Set who is the owner of this file/folder (and this the owner of the share) + $qb->setValue('uid_owner', $qb->createNamedParameter($share->getShareOwner()->getUID())); + + // Set the file target + $qb->setValue('file_target', $qb->createNamedParameter($share->getTarget())); + + // Set the time this share was created + $qb->setValue('stime', $qb->createNamedParameter(time())); + + // insert the data and fetch the id of the share + $this->dbConn->beginTransaction(); + $qb->execute(); + $id = $this->dbConn->lastInsertId('*PREFIX*share'); + $this->dbConn->commit(); + + // Now fetch the inserted share and create a complete share object + $qb = $this->dbConn->getQueryBuilder(); + $qb->select('*') + ->from('*PREFIX*share') + ->where($qb->expr()->eq('id', $qb->createNamedParameter($id))); + + $cursor = $qb->execute(); + $data = $cursor->fetch(); + $cursor->closeCursor(); + + if ($data === false) { + throw new ShareNotFound(); + } + + $share = $this->createShare($data); + return $share; } /** @@ -170,11 +249,29 @@ class DefaultShareProvider implements IShareProvider { /** * Get shares for a given path * - * @param \OCP\IUser $user * @param \OCP\Files\Node $path * @return IShare[] */ - public function getSharesByPath(IUser $user, Node $path) { + public function getSharesByPath(Node $path) { + $qb = $this->dbConn->getQueryBuilder(); + + $cursor = $qb->select('*') + ->from('share') + ->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId()))) + ->andWhere( + $qb->expr()->orX( + $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_USER)), + $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)) + ) + )->execute(); + + $shares = []; + while($data = $cursor->fetch()) { + $shares[] = $this->createShare($data); + } + $cursor->closeCursor(); + + return $shares; } /** @@ -223,16 +320,21 @@ class DefaultShareProvider implements IShareProvider { $share->setSharedWith($data['share_with']); } - $share->setSharedBy($this->userManager->get($data['uid_owner'])); - - // TODO: getById can return an array. How to handle this properly?? - $folder = $this->rootFolder->getUserFolder($share->getSharedBy()->getUID()); - $path = $folder->getById((int)$data['file_source'])[0]; + if ($data['uid_initiator'] === null) { + //OLD SHARE + $share->setSharedBy($this->userManager->get($data['uid_owner'])); + $folder = $this->rootFolder->getUserFolder($share->getSharedBy()->getUID()); + $path = $folder->getById((int)$data['file_source'])[0]; - $owner = $path->getOwner(); - $share->setShareOwner($owner); + $owner = $path->getOwner(); + $share->setShareOwner($owner); + } else { + //New share! + $share->setSharedBy($this->userManager->get($data['uid_initiator'])); + $share->setShareOwner($this->userManager->get($data['uid_owner'])); + } - $path = $this->rootFolder->getUserFolder($owner->getUID())->getById((int)$data['file_source'])[0]; + $path = $this->rootFolder->getUserFolder($share->getShareOwner()->getUID())->getById((int)$data['file_source'])[0]; $share->setPath($path); if ($data['expiration'] !== null) { diff --git a/lib/private/share20/ishare.php b/lib/private/share20/ishare.php index 2e54da7a029..a149c578fb2 100644 --- a/lib/private/share20/ishare.php +++ b/lib/private/share20/ishare.php @@ -101,7 +101,7 @@ interface IShare { * @param \DateTime $expireDate * @return Share The modified object */ - public function setExpirationDate(\DateTime $expireDate); + public function setExpirationDate($expireDate); /** * Get the share expiration date @@ -111,6 +111,14 @@ interface IShare { public function getExpirationDate(); /** + * Set the sharer of the path + * + * @param IUser|string $sharedBy + * @return Share The modified object + */ + public function setSharedBy($sharedBy); + + /** * Get share sharer * * @return IUser|string @@ -118,6 +126,15 @@ interface IShare { public function getSharedBy(); /** + * Set the original share owner (who owns the path) + * + * @param IUser|string + * + * @return Share The modified object + */ + public function setShareOwner($shareOwner); + + /** * Get the original share owner (who owns the path) * * @return IUser|string @@ -141,6 +158,14 @@ interface IShare { public function getPassword(); /** + * Set the token + * + * @param string $token + * @return Share The modified object + */ + public function setToken($token); + + /** * Get the token * * @return string @@ -155,6 +180,14 @@ interface IShare { public function getParent(); /** + * Set the target of this share + * + * @param string $target + * @return Share The modified object + */ + public function setTarget($target); + + /** * Get the target of this share * * @return string diff --git a/lib/private/share20/ishareprovider.php b/lib/private/share20/ishareprovider.php index 56a550acf71..97a2b728d5f 100644 --- a/lib/private/share20/ishareprovider.php +++ b/lib/private/share20/ishareprovider.php @@ -81,11 +81,10 @@ interface IShareProvider { /** * Get shares for a given path * - * @param \OCP\IUser $user * @param \OCP\Files\Node $path * @return IShare[] */ - public function getSharesByPath(\OCP\IUser $user, \OCP\Files\Node $path); + public function getSharesByPath(\OCP\Files\Node $path); /** * Get shared with the given user diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 882b281c490..8d753061c0c 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -21,53 +21,458 @@ namespace OC\Share20; -use OCP\IAppConfig; +use OCP\IConfig; +use OCP\IL10N; use OCP\ILogger; +use OCP\Security\ISecureRandom; +use OCP\Security\IHasher; +use OCP\Files\Mount\IMountManager; +use OCP\IGroupManager; +use OCP\Files\File; +use OCP\Files\Folder; +use OCP\IUser; use OC\Share20\Exception\ShareNotFound; +use OC\HintException; /** * This class is the communication hub for all sharing related operations. */ class Manager { - /** - * @var IShareProvider[] - */ + /** @var IShareProvider[] */ private $defaultProvider; /** @var ILogger */ private $logger; - /** @var IAppConfig */ - private $appConfig; + /** @var IConfig */ + private $config; + + /** @var ISecureRandom */ + private $secureRandom; + + /** @var IHasher */ + private $hasher; + + /** @var IMountManager */ + private $mountManager; + + /** @var IGroupManager */ + private $groupManager; + + /** @var IL10N */ + private $l; /** * Manager constructor. * * @param ILogger $logger - * @param IAppConfig $appConfig + * @param IConfig $config * @param IShareProvider $defaultProvider + * @param ISecureRandom $secureRandom + * @param IHasher $hasher + * @param IMountManager $mountManager + * @param IGroupManager $groupManager + * @param IL10N $l */ public function __construct( ILogger $logger, - IAppConfig $appConfig, - IShareProvider $defaultProvider + IConfig $config, + IShareProvider $defaultProvider, + ISecureRandom $secureRandom, + IHasher $hasher, + IMountManager $mountManager, + IGroupManager $groupManager, + IL10N $l ) { $this->logger = $logger; - $this->appConfig = $appConfig; + $this->config = $config; + $this->secureRandom = $secureRandom; + $this->hasher = $hasher; + $this->mountManager = $mountManager; + $this->groupManager = $groupManager; + $this->l = $l; // TEMP SOLUTION JUST TO GET STARTED $this->defaultProvider = $defaultProvider; } /** + * Verify if a password meets all requirements + * + * @param string $password + * @throws \Exception + */ + protected function verifyPassword($password) { + if ($password === null) { + // No password is set, check if this is allowed. + if ($this->shareApiLinkEnforcePassword()) { + throw new \InvalidArgumentException('Passwords are enforced for link shares'); + } + + return; + } + + // Let others verify the password + $accepted = true; + $message = ''; + \OCP\Util::emitHook('\OC\Share', 'verifyPassword', [ + 'password' => $password, + 'accepted' => &$accepted, + 'message' => &$message + ]); + + if (!$accepted) { + throw new \Exception($message); + } + } + + /** + * Check for generic requirements before creating a share + * + * @param IShare $share + * @throws \Exception + */ + protected function generalCreateChecks(IShare $share) { + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + // We expect a valid user as sharedWith for user shares + if (!($share->getSharedWith() instanceof \OCP\IUser)) { + throw new \InvalidArgumentException('SharedWith should be an IUser'); + } + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + // We expect a valid group as sharedWith for group shares + if (!($share->getSharedWith() instanceof \OCP\IGroup)) { + throw new \InvalidArgumentException('SharedWith should be an IGroup'); + } + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + if ($share->getSharedWith() !== null) { + throw new \InvalidArgumentException('SharedWith should be empty'); + } + } else { + // We can't handle other types yet + throw new \InvalidArgumentException('unkown share type'); + } + + // Verify the initiator of the share is et + if ($share->getSharedBy() === null) { + throw new \InvalidArgumentException('SharedBy should be set'); + } + + // Cannot share with yourself + if ($share->getSharedWith() === $share->getSharedBy()) { + throw new \InvalidArgumentException('Can\'t share with yourself'); + } + + // The path should be set + if ($share->getPath() === null) { + throw new \InvalidArgumentException('Path should be set'); + } + // And it should be a file or a folder + if (!($share->getPath() instanceof \OCP\Files\File) && + !($share->getPath() instanceof \OCP\Files\Folder)) { + throw new \InvalidArgumentException('Path should be either a file or a folder'); + } + + // Check if we actually have share permissions + if (!$share->getPath()->isShareable()) { + $message_t = $this->l->t('You are not allowed to share %s', [$share->getPath()->getPath()]); + throw new HintException($message_t, $message_t, 404); + } + + // Permissions should be set + if ($share->getPermissions() === null) { + throw new \InvalidArgumentException('A share requires permissions'); + } + + // Check that we do not share with more permissions than we have + if ($share->getPermissions() & ~$share->getPath()->getPermissions()) { + $message_t = $this->l->t('Cannot increase permissions of %s', [$share->getPath()->getPath()]); + throw new HintException($message_t, $message_t, 404); + } + + // Check that read permissions are always set + if (($share->getPermissions() & \OCP\Constants::PERMISSION_READ) === 0) { + throw new \InvalidArgumentException('Shares need at least read permissions'); + } + } + + /** + * Validate if the expiration date fits the system settings + * + * @param \DateTime $expireDate The current expiration date (can be null) + * @return \DateTime|null The expiration date or null if $expireDate was null and it is not required + * @throws \OC\HintException + */ + protected function validateExpiredate($expireDate) { + + if ($expireDate !== null) { + //Make sure the expiration date is a date + $expireDate->setTime(0, 0, 0); + + $date = new \DateTime(); + $date->setTime(0, 0, 0); + if ($date >= $expireDate) { + $message = $this->l->t('Expiration date is in the past'); + throw new \OC\HintException($message, $message, 404); + } + } + + // If we enforce the expiration date check that is does not exceed + if ($this->shareApiLinkDefaultExpireDateEnforced()) { + if ($expireDate === null) { + throw new \InvalidArgumentException('Expiration date is enforced'); + } + + $date = new \DateTime(); + $date->setTime(0, 0, 0); + $date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D')); + if ($date < $expireDate) { + $message = $this->l->t('Cannot set expiration date more than %s days in the future', [$this->shareApiLinkDefaultExpireDays()]); + throw new \OC\HintException($message, $message, 404); + } + + return $expireDate; + } + + // If expiredate is empty set a default one if there is a default + if ($expireDate === null && $this->shareApiLinkDefaultExpireDate()) { + $date = new \DateTime(); + $date->setTime(0,0,0); + $date->add(new \DateInterval('P'.$this->shareApiLinkDefaultExpireDays().'D')); + return $date; + } + + return $expireDate; + } + + + /** + * Check for pre share requirements for use shares + * + * @param IShare $share + * @throws \Exception + */ + protected function userCreateChecks(IShare $share) { + // Check if we can share with group members only + if ($this->shareWithGroupMembersOnly()) { + // Verify we can share with this user + $groups = array_intersect( + $this->groupManager->getUserGroupIds($share->getSharedBy()), + $this->groupManager->getUserGroupIds($share->getSharedWith()) + ); + if (empty($groups)) { + throw new \Exception('Only sharing with group members is allowed'); + } + } + + /* + * TODO: Could be costly, fix + * + * Also this is not what we want in the future.. then we want to squash identical shares. + */ + $existingShares = $this->defaultProvider->getSharesByPath($share->getPath()); + foreach($existingShares as $existingShare) { + // Identical share already existst + if ($existingShare->getSharedWith() === $share->getSharedWith()) { + throw new \Exception('Path already shared with this user'); + } + + // The share is already shared with this user via a group share + if ($existingShare->getShareType() === \OCP\Share::SHARE_TYPE_GROUP && + $existingShare->getSharedWith()->inGroup($share->getSharedWith()) && + $existingShare->getShareOwner() !== $share->getShareOwner()) { + throw new \Exception('Path already shared with this user'); + } + } + } + + /** + * Check for pre share requirements for group shares + * + * @param IShare $share + * @throws \Exception + */ + protected function groupCreateChecks(IShare $share) { + // Verify if the user can share with this group + if ($this->shareWithGroupMembersOnly()) { + if (!$share->getSharedWith()->inGroup($share->getSharedBy())) { + throw new \Exception('Only sharing within your own groups is allowed'); + } + } + + /* + * TODO: Could be costly, fix + * + * Also this is not what we want in the future.. then we want to squash identical shares. + */ + $existingShares = $this->defaultProvider->getSharesByPath($share->getPath()); + foreach($existingShares as $existingShare) { + if ($existingShare->getSharedWith() === $share->getSharedWith()) { + throw new \Exception('Path already shared with this group'); + } + } + } + + /** + * Check for pre share requirements for link shares + * + * @param IShare $share + * @throws \Exception + */ + protected function linkCreateChecks(IShare $share) { + // Are link shares allowed? + if (!$this->shareApiAllowLinks()) { + throw new \Exception('Link sharing not allowed'); + } + + // Link shares by definition can't have share permissions + if ($share->getPermissions() & \OCP\Constants::PERMISSION_SHARE) { + throw new \InvalidArgumentException('Link shares can\'t have reshare permissions'); + } + + // We don't allow deletion on link shares + if ($share->getPermissions() & \OCP\Constants::PERMISSION_DELETE) { + throw new \InvalidArgumentException('Link shares can\'t have delete permissions'); + } + + // Check if public upload is allowed + if (!$this->shareApiLinkAllowPublicUpload() && + ($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE))) { + throw new \InvalidArgumentException('Public upload not allowed'); + } + } + + /** + * @param File|Folder $path + */ + protected function pathCreateChecks($path) { + // Make sure that we do not share a path that contains a shared mountpoint + if ($path instanceof \OCP\Files\Folder) { + $mounts = $this->mountManager->findIn($path->getPath()); + foreach($mounts as $mount) { + if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) { + throw new \InvalidArgumentException('Path contains files shared with you'); + } + } + } + } + + /** + * Check if the user that is sharing can actually share + * + * @param IShare $share + * @return bool + */ + protected function canShare(IShare $share) { + if (!$this->shareApiEnabled()) { + return false; + } + + if ($this->isSharingDisabledForUser($share->getSharedBy())) { + return false; + } + + return true; + } + + /** * Share a path * - * @param Share $share + * @param IShare $share * @return Share The share object + * @throws \Exception + * + * TODO: handle link share permissions or check them */ - public function createShare(Share $share) { + public function createShare(IShare $share) { + if (!$this->canShare($share)) { + throw new \Exception('The Share API is disabled'); + } + + $this->generalCreateChecks($share); + + //Verify share type + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + $this->userCreateChecks($share); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + $this->groupCreateChecks($share); + } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + $this->linkCreateChecks($share); + + /* + * For now ignore a set token. + */ + $share->setToken( + $this->secureRandom->generate( + \OC\Share\Constants::TOKEN_LENGTH, + \OCP\Security\ISecureRandom::CHAR_LOWER. + \OCP\Security\ISecureRandom::CHAR_UPPER. + \OCP\Security\ISecureRandom::CHAR_DIGITS + ) + ); + + //Verify the expiration date + $share->setExpirationDate($this->validateExpiredate($share->getExpirationDate())); + + //Verify the password + $this->verifyPassword($share->getPassword()); + + // If a password is set. Hash it! + if ($share->getPassword() !== null) { + $share->setPassword($this->hasher->hash($share->getPassword())); + } + } + + // Verify if there are any issues with the path + $this->pathCreateChecks($share->getPath()); + + // On creation of a share the owner is always the owner of the path + $share->setShareOwner($share->getPath()->getOwner()); + + // Generate the target + $target = $this->config->getSystemValue('share_folder', '/') .'/'. $share->getPath()->getName(); + $target = \OC\Files\Filesystem::normalizePath($target); + $share->setTarget($target); + + // Pre share hook + $run = true; + $error = ''; + $preHookData = [ + 'itemType' => $share->getPath() instanceof \OCP\Files\File ? 'file' : 'folder', + 'itemSource' => $share->getPath()->getId(), + 'shareType' => $share->getShareType(), + 'uidOwner' => $share->getSharedBy()->getUID(), + 'permissions' => $share->getPermissions(), + 'fileSource' => $share->getPath()->getId(), + 'expiration' => $share->getExpirationDate(), + 'token' => $share->getToken(), + 'run' => &$run, + 'error' => &$error + ]; + \OC_Hook::emit('OCP\Share', 'pre_shared', $preHookData); + + if ($run === false) { + throw new \Exception($error); + } + + $share = $this->defaultProvider->create($share); + + // Post share hook + $postHookData = [ + 'itemType' => $share->getPath() instanceof \OCP\Files\File ? 'file' : 'folder', + 'itemSource' => $share->getPath()->getId(), + 'shareType' => $share->getShareType(), + 'uidOwner' => $share->getSharedBy()->getUID(), + 'permissions' => $share->getPermissions(), + 'fileSource' => $share->getPath()->getId(), + 'expiration' => $share->getExpirationDate(), + 'token' => $share->getToken(), + 'id' => $share->getId(), + ]; + \OC_Hook::emit('OCP\Share', 'post_shared', $postHookData); + + return $share; } /** @@ -251,4 +656,115 @@ class Manager { */ public function getAccessList(\OCP\Files\Node $path) { } + + /** + * Create a new share + * @return IShare; + */ + public function newShare() { + return new \OC\Share20\Share(); + } + + /** + * Is the share API enabled + * + * @return bool + */ + public function shareApiEnabled() { + return $this->config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes'; + } + + /** + * Is public link sharing enabled + * + * @return bool + */ + public function shareApiAllowLinks() { + return $this->config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes'; + } + + /** + * Is password on public link requires + * + * @return bool + */ + public function shareApiLinkEnforcePassword() { + return $this->config->getAppValue('core', 'shareapi_enforce_links_password', 'no') === 'yes'; + } + + /** + * Is default expire date enabled + * + * @return bool + */ + public function shareApiLinkDefaultExpireDate() { + return $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes'; + } + + /** + * Is default expire date enforced + *` + * @return bool + */ + public function shareApiLinkDefaultExpireDateEnforced() { + return $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes'; + } + + /** + * Number of default expire days + *shareApiLinkAllowPublicUpload + * @return int + */ + public function shareApiLinkDefaultExpireDays() { + return (int)$this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7'); + } + + /** + * Allow public upload on link shares + * + * @return bool + */ + public function shareApiLinkAllowPublicUpload() { + return $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes'; + } + + /** + * check if user can only share with group members + * @return bool + */ + public function shareWithGroupMembersOnly() { + return $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes'; + } + + + /** + * Copied from \OC_Util::isSharingDisabledForUser + * + * TODO: Deprecate fuction from OC_Util + * + * @param IUser $user + * @return bool + */ + public function isSharingDisabledForUser($user) { + if ($this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes') { + $groupsList = $this->config->getAppValue('core', 'shareapi_exclude_groups_list', ''); + $excludedGroups = json_decode($groupsList); + if (is_null($excludedGroups)) { + $excludedGroups = explode(',', $groupsList); + $newValue = json_encode($excludedGroups); + $this->config->setAppValue('core', 'shareapi_exclude_groups_list', $newValue); + } + $usersGroups = $this->groupManager->getUserGroupIds($user); + if (!empty($usersGroups)) { + $remainingGroups = array_diff($usersGroups, $excludedGroups); + // if the user is only in groups which are disabled for sharing then + // sharing is also disabled for the user + if (empty($remainingGroups)) { + return true; + } + } + } + return false; + } + } diff --git a/lib/private/share20/share.php b/lib/private/share20/share.php index b7ce38ac61d..4827000eefa 100644 --- a/lib/private/share20/share.php +++ b/lib/private/share20/share.php @@ -163,7 +163,7 @@ class Share implements IShare { * @param \DateTime $expireDate * @return Share The modified object */ - public function setExpirationDate(\DateTime $expireDate) { + public function setExpirationDate($expireDate) { //TODO checks $this->expireDate = $expireDate; diff --git a/lib/private/systemconfig.php b/lib/private/systemconfig.php index 94b815aebd7..fb8c18123d7 100644 --- a/lib/private/systemconfig.php +++ b/lib/private/systemconfig.php @@ -44,12 +44,19 @@ class SystemConfig { 'objectstore' => ['arguments' => ['password' => true]], ]; + /** @var Config */ + private $config; + + public function __construct(Config $config) { + $this->config = $config; + } + /** * Lists all available config keys * @return array an array of key names */ public function getKeys() { - return \OC_Config::getKeys(); + return $this->config->getKeys(); } /** @@ -59,7 +66,7 @@ class SystemConfig { * @param mixed $value the value that should be stored */ public function setValue($key, $value) { - \OC_Config::setValue($key, $value); + $this->config->setValue($key, $value); } /** @@ -69,7 +76,7 @@ class SystemConfig { * If value is null, the config key will be deleted */ public function setValues(array $configs) { - \OC_Config::setValues($configs); + $this->config->setValues($configs); } /** @@ -80,7 +87,7 @@ class SystemConfig { * @return mixed the value or $default */ public function getValue($key, $default = '') { - return \OC_Config::getValue($key, $default); + return $this->config->getValue($key, $default); } /** @@ -106,7 +113,7 @@ class SystemConfig { * @param string $key the key of the value, under which it was saved */ public function deleteValue($key) { - \OC_Config::deleteKey($key); + $this->config->deleteKey($key); } /** diff --git a/lib/private/template.php b/lib/private/template.php index d794dacac23..c2528c26851 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -119,7 +119,6 @@ class OC_Template extends \OC\Template\Base { // avatars if (\OC::$server->getSystemConfig()->getValue('enable_avatars', true) === true) { - \OC_Util::addScript('avatar', null, true); \OC_Util::addScript('jquery.avatar', null, true); \OC_Util::addScript('placeholder', null, true); } @@ -162,6 +161,8 @@ class OC_Template extends \OC\Template\Base { } if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) { + // polyfill for btoa/atob for IE friends + OC_Util::addVendorScript('base64/base64'); // shim for the davclient.js library \OCP\Util::addScript('files/iedavclient'); } diff --git a/lib/private/template/functions.php b/lib/private/template/functions.php index d156d26f9ce..982ecde5850 100644 --- a/lib/private/template/functions.php +++ b/lib/private/template/functions.php @@ -146,7 +146,7 @@ function component($app, $file) { * For further information have a look at OC_Helper::linkTo */ function link_to( $app, $file, $args = array() ) { - return OC_Helper::linkTo( $app, $file, $args ); + return \OC::$server->getURLGenerator()->linkTo($app, $file, $args); } /** @@ -173,11 +173,9 @@ function image_path( $app, $image ) { * make OC_Helper::mimetypeIcon available as a simple function * @param string $mimetype mimetype * @return string link to the image - * - * For further information have a look at OC_Helper::mimetypeIcon */ function mimetype_icon( $mimetype ) { - return OC_Helper::mimetypeIcon( $mimetype ); + return \OC::$server->getMimeTypeDetector()->mimeTypeIcon( $mimetype ); } /** diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index 1a6a07ddc9f..bf25b2d31a9 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -136,7 +136,13 @@ class OC_TemplateLayout extends OC_Template { $this->assign('user_uid', OC_User::getUser()); $this->assign('appsmanagement_active', $appsMgmtActive); $this->assign('enableAvatars', $this->config->getSystemValue('enable_avatars', true)); - $this->assign('userAvatarSet', \OC_Helper::userAvatarSet(OC_User::getUser())); + + if (OC_User::getUser() === false) { + $this->assign('userAvatarSet', false); + } else { + $this->assign('userAvatarSet', \OC::$server->getAvatarManager()->getAvatar(OC_User::getUser())->exists()); + } + } else if ($renderAs == 'error') { parent::__construct('core', 'layout.guest', '', false); $this->assign('bodyid', 'body-login'); @@ -153,20 +159,20 @@ class OC_TemplateLayout extends OC_Template { if(empty(self::$versionHash)) { $v = OC_App::getAppVersions(); - $v['core'] = implode('.', \OC_Util::getVersion()); + $v['core'] = implode('.', \OCP\Util::getVersion()); self::$versionHash = md5(implode(',', $v)); } $useAssetPipeline = self::isAssetPipelineEnabled(); if ($useAssetPipeline) { - $this->append( 'jsfiles', OC_Helper::linkToRoute('js_config', array('v' => self::$versionHash))); + $this->append( 'jsfiles', \OC::$server->getURLGenerator()->linkToRoute('js_config', ['v' => self::$versionHash])); $this->generateAssets(); } else { // Add the js files $jsFiles = self::findJavascriptFiles(OC_Util::$scripts); $this->assign('jsfiles', array()); if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') { - $this->append( 'jsfiles', OC_Helper::linkToRoute('js_config', array('v' => self::$versionHash))); + $this->append( 'jsfiles', \OC::$server->getURLGenerator()->linkToRoute('js_config', ['v' => self::$versionHash])); } foreach($jsFiles as $info) { $web = $info[1]; @@ -275,8 +281,8 @@ class OC_TemplateLayout extends OC_Template { $writer->writeAsset($cssCollection); } - $this->append('jsfiles', OC_Helper::linkTo('assets', "$jsHash.js")); - $this->append('cssfiles', OC_Helper::linkTo('assets', "$cssHash.css")); + $this->append('jsfiles', \OC::$server->getURLGenerator()->linkTo('assets', "$jsHash.js")); + $this->append('cssfiles', \OC::$server->getURLGenerator()->linkTo('assets', "$cssHash.css")); } /** diff --git a/lib/private/updater.php b/lib/private/updater.php index 366ad2555a8..9ec72bab2f9 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -155,7 +155,7 @@ class Updater extends BasicEmitter { $this->config->setAppValue('core', 'installedat', microtime(true)); } - $version = \OC_Util::getVersion(); + $version = \OCP\Util::getVersion(); $version['installed'] = $this->config->getAppValue('core', 'installedat'); $version['updated'] = $this->config->getAppValue('core', 'lastupdatedat'); $version['updatechannel'] = \OC_Util::getChannel(); @@ -177,6 +177,8 @@ class Updater extends BasicEmitter { $tmp['versionstring'] = (string)$data->versionstring; $tmp['url'] = (string)$data->url; $tmp['web'] = (string)$data->web; + } else { + libxml_clear_errors(); } } else { $data = []; @@ -206,7 +208,7 @@ class Updater extends BasicEmitter { } $installedVersion = $this->config->getSystemValue('version', '0.0.0'); - $currentVersion = implode('.', \OC_Util::getVersion()); + $currentVersion = implode('.', \OCP\Util::getVersion()); $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core')); $success = true; @@ -254,7 +256,7 @@ class Updater extends BasicEmitter { */ public function isUpgradePossible($oldVersion, $newVersion, $allowedPreviousVersion) { return (version_compare($allowedPreviousVersion, $oldVersion, '<=') - && version_compare($oldVersion, $newVersion, '<=')); + && (version_compare($oldVersion, $newVersion, '<=') || $this->config->getSystemValue('debug', false))); } /** @@ -351,7 +353,7 @@ class Updater extends BasicEmitter { } // only set the final version if everything went well - $this->config->setSystemValue('version', implode('.', \OC_Util::getVersion())); + $this->config->setSystemValue('version', implode('.', \OCP\Util::getVersion())); } } @@ -470,7 +472,7 @@ class Updater extends BasicEmitter { private function checkAppsRequirements() { $isCoreUpgrade = $this->isCodeUpgrade(); $apps = OC_App::getEnabledApps(); - $version = OC_Util::getVersion(); + $version = \OCP\Util::getVersion(); $disabledApps = []; foreach ($apps as $app) { // check if the app is compatible with this version of ownCloud @@ -507,7 +509,7 @@ class Updater extends BasicEmitter { */ private function isCodeUpgrade() { $installedVersion = $this->config->getSystemValue('version', '0.0.0'); - $currentVersion = implode('.', OC_Util::getVersion()); + $currentVersion = implode('.', \OCP\Util::getVersion()); if (version_compare($currentVersion, $installedVersion, '>')) { return true; } diff --git a/lib/private/user.php b/lib/private/user.php index 74441d9175a..fa1cea9072f 100644 --- a/lib/private/user.php +++ b/lib/private/user.php @@ -66,14 +66,6 @@ class OC_User { return OC::$server->getUserSession(); } - /** - * @return \OC\User\Manager - * @deprecated Use \OC::$server->getUserManager() - */ - public static function getManager() { - return OC::$server->getUserManager(); - } - private static $_backends = array(); private static $_usedBackends = array(); @@ -84,44 +76,6 @@ class OC_User { private static $incognitoMode = false; /** - * registers backend - * - * @param string $backend name of the backend - * @deprecated Add classes by calling OC_User::useBackend() with a class instance instead - * @return bool - * - * Makes a list of backends that can be used by other modules - */ - public static function registerBackend($backend) { - self::$_backends[] = $backend; - return true; - } - - /** - * gets available backends - * - * @deprecated - * @return array an array of backends - * - * Returns the names of all backends. - */ - public static function getBackends() { - return self::$_backends; - } - - /** - * gets used backends - * - * @deprecated - * @return array an array of backends - * - * Returns the names of all used backends. - */ - public static function getUsedBackends() { - return array_keys(self::$_usedBackends); - } - - /** * Adds the backend to the list of used backends * * @param string|OC_User_Interface $backend default: database The backend to use for user management @@ -132,7 +86,7 @@ class OC_User { public static function useBackend($backend = 'database') { if ($backend instanceof OC_User_Interface) { self::$_usedBackends[get_class($backend)] = $backend; - self::getManager()->registerBackend($backend); + \OC::$server->getUserManager()->registerBackend($backend); } else { // You'll never know what happens if (null === $backend OR !is_string($backend)) { @@ -146,17 +100,17 @@ class OC_User { case 'sqlite': \OCP\Util::writeLog('core', 'Adding user backend ' . $backend . '.', \OCP\Util::DEBUG); self::$_usedBackends[$backend] = new OC_User_Database(); - self::getManager()->registerBackend(self::$_usedBackends[$backend]); + \OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]); break; case 'dummy': self::$_usedBackends[$backend] = new \Test\Util\User\Dummy(); - self::getManager()->registerBackend(self::$_usedBackends[$backend]); + \OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]); break; default: \OCP\Util::writeLog('core', 'Adding default user backend ' . $backend . '.', \OCP\Util::DEBUG); $className = 'OC_USER_' . strToUpper($backend); self::$_usedBackends[$backend] = new $className(); - self::getManager()->registerBackend(self::$_usedBackends[$backend]); + \OC::$server->getUserManager()->registerBackend(self::$_usedBackends[$backend]); break; } } @@ -168,7 +122,7 @@ class OC_User { */ public static function clearBackends() { self::$_usedBackends = array(); - self::getManager()->clearBackends(); + \OC::$server->getUserManager()->clearBackends(); } /** @@ -176,7 +130,7 @@ class OC_User { */ public static function setupBackends() { OC_App::loadApps(array('prelogin')); - $backends = OC_Config::getValue('user_backends', array()); + $backends = \OC::$server->getSystemConfig()->getValue('user_backends', array()); foreach ($backends as $i => $config) { $class = $config['class']; $arguments = $config['arguments']; @@ -199,42 +153,6 @@ class OC_User { } /** - * Create a new user - * - * @param string $uid The username of the user to create - * @param string $password The password of the new user - * @throws Exception - * @return bool true/false - * - * Creates a new user. Basic checking of username is done in OC_User - * itself, not in its subclasses. - * - * Allowed characters in the username are: "a-z", "A-Z", "0-9" and "_.@-" - * @deprecated Use \OC::$server->getUserManager()->createUser($uid, $password) - */ - public static function createUser($uid, $password) { - return self::getManager()->createUser($uid, $password); - } - - /** - * delete a user - * - * @param string $uid The username of the user to delete - * @return bool - * - * Deletes a user - * @deprecated Use \OC::$server->getUserManager()->get() and then run delete() on the return - */ - public static function deleteUser($uid) { - $user = self::getManager()->get($uid); - if ($user) { - return $user->delete(); - } else { - return false; - } - } - - /** * Try to login a user * * @param string $loginname The login name of the user to log in @@ -244,7 +162,6 @@ class OC_User { * Log in a user and regenerate a new session - if the password is ok */ public static function login($loginname, $password) { - session_regenerate_id(true); $result = self::getUserSession()->login($loginname, $password); if ($result) { //we need to pass the user name, which may differ from login name @@ -343,7 +260,7 @@ class OC_User { if (is_null($displayName)) { $displayName = $uid; } - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->setDisplayName($displayName); } else { @@ -452,7 +369,7 @@ class OC_User { */ public static function getDisplayName($uid = null) { if ($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->getDisplayName(); } else { @@ -490,7 +407,7 @@ class OC_User { * Change the password of a user */ public static function setPassword($uid, $password, $recoveryPassword = null) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->setPassword($password, $recoveryPassword); } else { @@ -507,7 +424,7 @@ class OC_User { * Check whether a specified user can change his avatar */ public static function canUserChangeAvatar($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->canChangeAvatar(); } else { @@ -524,7 +441,7 @@ class OC_User { * Check whether a specified user can change his password */ public static function canUserChangePassword($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->canChangePassword(); } else { @@ -541,7 +458,7 @@ class OC_User { * Check whether a specified user can change his display name */ public static function canUserChangeDisplayName($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->canChangeDisplayName(); } else { @@ -560,7 +477,7 @@ class OC_User { * returns the user id or false */ public static function checkPassword($uid, $password) { - $manager = self::getManager(); + $manager = \OC::$server->getUserManager(); $username = $manager->checkPassword($uid, $password); if ($username !== false) { return $username->getUID(); @@ -576,11 +493,11 @@ class OC_User { * @deprecated Use \OC::$server->getUserManager->getHome() */ public static function getHome($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->getHome(); } else { - return OC_Config::getValue('datadirectory', OC::$SERVERROOT . '/data') . '/' . $uid; + return \OC::$server->getSystemConfig()->getValue('datadirectory', OC::$SERVERROOT . '/data') . '/' . $uid; } } @@ -595,7 +512,7 @@ class OC_User { * @param integer $offset */ public static function getUsers($search = '', $limit = null, $offset = null) { - $users = self::getManager()->search($search, $limit, $offset); + $users = \OC::$server->getUserManager()->search($search, $limit, $offset); $uids = array(); foreach ($users as $user) { $uids[] = $user->getUID(); @@ -616,7 +533,7 @@ class OC_User { */ public static function getDisplayNames($search = '', $limit = null, $offset = null) { $displayNames = array(); - $users = self::getManager()->searchDisplayName($search, $limit, $offset); + $users = \OC::$server->getUserManager()->searchDisplayName($search, $limit, $offset); foreach ($users as $user) { $displayNames[$user->getUID()] = $user->getDisplayName(); } @@ -630,7 +547,7 @@ class OC_User { * @return boolean */ public static function userExists($uid) { - return self::getManager()->userExists($uid); + return \OC::$server->getUserManager()->userExists($uid); } /** @@ -639,7 +556,7 @@ class OC_User { * @param string $uid the user to disable */ public static function disableUser($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { $user->setEnabled(false); } @@ -651,7 +568,7 @@ class OC_User { * @param string $uid */ public static function enableUser($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { $user->setEnabled(true); } @@ -664,7 +581,7 @@ class OC_User { * @return bool */ public static function isEnabled($uid) { - $user = self::getManager()->get($uid); + $user = \OC::$server->getUserManager()->get($uid); if ($user) { return $user->isEnabled(); } else { diff --git a/lib/private/user/session.php b/lib/private/user/session.php index ba702c9f365..be38b1b1d8e 100644 --- a/lib/private/user/session.php +++ b/lib/private/user/session.php @@ -213,6 +213,7 @@ class Session implements IUserSession, Emitter { * @throws LoginException */ public function login($uid, $password) { + $this->session->regenerateId(); $this->manager->emit('\OC\User', 'preLogin', array($uid, $password)); $user = $this->manager->checkPassword($uid, $password); if ($user !== false) { @@ -243,6 +244,7 @@ class Session implements IUserSession, Emitter { * @return bool */ public function loginWithCookie($uid, $currentToken) { + $this->session->regenerateId(); $this->manager->emit('\OC\User', 'preRememberedLogin', array($uid)); $user = $this->manager->get($uid); if (is_null($user)) { diff --git a/lib/private/util.php b/lib/private/util.php index 9016dc59751..6a9980fc129 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -72,7 +72,7 @@ class OC_Util { private static function initLocalStorageRootFS() { // mount local file backend as root - $configDataDirectory = OC_Config::getValue("datadirectory", OC::$SERVERROOT . "/data"); + $configDataDirectory = \OC::$server->getSystemConfig()->getValue("datadirectory", OC::$SERVERROOT . "/data"); //first set up the local "root" storage \OC\Files\Filesystem::initMountManager(); if (!self::$rootMounted) { @@ -184,7 +184,7 @@ class OC_Util { OC_Hook::emit('OC_Filesystem', 'preSetup', array('user' => $user)); //check if we are using an object storage - $objectStore = OC_Config::getValue('objectstore'); + $objectStore = \OC::$server->getSystemConfig()->getValue('objectstore', null); if (isset($objectStore)) { self::initObjectStoreRootFS($objectStore); } else { @@ -848,7 +848,7 @@ class OC_Util { public static function checkDatabaseVersion() { $l = \OC::$server->getL10N('lib'); $errors = array(); - $dbType = \OC_Config::getValue('dbtype', 'sqlite'); + $dbType = \OC::$server->getSystemConfig()->getValue('dbtype', 'sqlite'); if ($dbType === 'pgsql') { // check PostgreSQL version try { @@ -951,9 +951,11 @@ class OC_Util { $parameters['canResetPassword'] = true; if (!\OC::$server->getSystemConfig()->getValue('lost_password_link')) { - $user = \OC::$server->getUserManager()->get($_REQUEST['user']); - if ($user instanceof IUser) { - $parameters['canResetPassword'] = $user->canChangePassword(); + if (isset($_REQUEST['user'])) { + $user = \OC::$server->getUserManager()->get($_REQUEST['user']); + if ($user instanceof IUser) { + $parameters['canResetPassword'] = $user->canChangePassword(); + } } } @@ -972,7 +974,7 @@ class OC_Util { */ public static function checkAppEnabled($app) { if (!OC_App::isEnabled($app)) { - header('Location: ' . OC_Helper::linkToAbsolute('', 'index.php')); + header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php')); exit(); } } @@ -986,7 +988,7 @@ class OC_Util { public static function checkLoggedIn() { // Check if we are a user if (!OC_User::isLoggedIn()) { - header('Location: ' . OC_Helper::linkToAbsolute('', 'index.php', + header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php', [ 'redirect_url' => \OC::$server->getRequest()->getRequestUri() ] @@ -1004,7 +1006,7 @@ class OC_Util { public static function checkAdminUser() { OC_Util::checkLoggedIn(); if (!OC_User::isAdminUser(OC_User::getUser())) { - header('Location: ' . OC_Helper::linkToAbsolute('', 'index.php')); + header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php')); exit(); } } @@ -1044,7 +1046,7 @@ class OC_Util { } if (!$isSubAdmin) { - header('Location: ' . OC_Helper::linkToAbsolute('', 'index.php')); + header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php')); exit(); } return true; @@ -1106,11 +1108,11 @@ class OC_Util { * @return string */ public static function getInstanceId() { - $id = OC_Config::getValue('instanceid', null); + $id = \OC::$server->getSystemConfig()->getValue('instanceid', null); if (is_null($id)) { // We need to guarantee at least one letter in instanceid so it can be used as the session_name $id = 'oc' . \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate(10, \OCP\Security\ISecureRandom::CHAR_LOWER.\OCP\Security\ISecureRandom::CHAR_DIGITS); - OC_Config::$object->setValue('instanceid', $id); + \OC::$server->getSystemConfig()->setValue('instanceid', $id); } return $id; } @@ -1125,7 +1127,6 @@ class OC_Util { * Creates a 'request token' (random) and stores it inside the session. * Ever subsequent (ajax) request must use such a valid token to succeed, * otherwise the request will be denied as a protection against CSRF. - * @see OC_Util::isCallRegistered() */ public static function callRegister() { // Use existing token if function has already been called @@ -1153,27 +1154,6 @@ class OC_Util { } /** - * Check an ajax get/post call if the request token is valid. - * - * @return boolean False if request token is not set or is invalid. - * @see OC_Util::callRegister() - */ - public static function isCallRegistered() { - return \OC::$server->getRequest()->passesCSRFCheck(); - } - - /** - * Check an ajax get/post call if the request token is valid. Exit if not. - * - * @return void - */ - public static function callCheck() { - if (!OC_Util::isCallRegistered()) { - exit(); - } - } - - /** * Public function to sanitize HTML * * This function is used to sanitize HTML and should be applied on any @@ -1248,7 +1228,7 @@ class OC_Util { fclose($fp); // accessing the file via http - $url = OC_Helper::makeURLAbsolute(OC::$WEBROOT . '/data' . $fileName); + $url = \OC::$server->getURLGenerator()->getAbsoluteURL(OC::$WEBROOT . '/data' . $fileName); try { $content = \OC::$server->getHTTPClientService()->newClient()->get($url)->getBody(); } catch (\Exception $e) { @@ -1362,7 +1342,7 @@ class OC_Util { * @return string the theme */ public static function getTheme() { - $theme = OC_Config::getValue("theme", ''); + $theme = \OC::$server->getSystemConfig()->getValue("theme", ''); if ($theme === '') { if (is_dir(OC::$SERVERROOT . '/themes/default')) { @@ -1503,14 +1483,28 @@ class OC_Util { * * @param \OCP\IConfig $config * @return bool whether the core or any app needs an upgrade + * @throws \OC\HintException When the upgrade from the given version is not allowed */ public static function needUpgrade(\OCP\IConfig $config) { if ($config->getSystemValue('installed', false)) { $installedVersion = $config->getSystemValue('version', '0.0.0'); - $currentVersion = implode('.', OC_Util::getVersion()); + $currentVersion = implode('.', \OCP\Util::getVersion()); $versionDiff = version_compare($currentVersion, $installedVersion); if ($versionDiff > 0) { return true; + } else if ($config->getSystemValue('debug', false) && $versionDiff < 0) { + // downgrade with debug + $installedMajor = explode('.', $installedVersion); + $installedMajor = $installedMajor[0] . '.' . $installedMajor[1]; + $currentMajor = explode('.', $currentVersion); + $currentMajor = $currentMajor[0] . '.' . $currentMajor[1]; + if ($installedMajor === $currentMajor) { + // Same major, allow downgrade for developers + return true; + } else { + // downgrade attempt, throw exception + throw new \OC\HintException('Downgrading is not supported and is likely to cause unpredictable issues (from ' . $installedVersion . ' to ' . $currentVersion . ')'); + } } else if ($versionDiff < 0) { // downgrade attempt, throw exception throw new \OC\HintException('Downgrading is not supported and is likely to cause unpredictable issues (from ' . $installedVersion . ' to ' . $currentVersion . ')'); diff --git a/lib/public/backgroundjob/ijob.php b/lib/public/backgroundjob/ijob.php index a24a5434521..8d970dbe781 100644 --- a/lib/public/backgroundjob/ijob.php +++ b/lib/public/backgroundjob/ijob.php @@ -36,12 +36,29 @@ interface IJob { * * @param \OCP\BackgroundJob\IJobList $jobList The job list that manages the state of this job * @param ILogger $logger - * @return void * @since 7.0.0 */ public function execute($jobList, ILogger $logger = null); /** + * @param int $id + * @since 7.0.0 + */ + public function setId($id); + + /** + * @param int $lastRun + * @since 7.0.0 + */ + public function setLastRun($lastRun); + + /** + * @param mixed $argument + * @since 7.0.0 + */ + public function setArgument($argument); + + /** * Get the id of the background job * This id is determined by the job list when a job is added to the list * diff --git a/lib/public/backgroundjob/ijoblist.php b/lib/public/backgroundjob/ijoblist.php index 384f8b3d801..51431c42a67 100644 --- a/lib/public/backgroundjob/ijoblist.php +++ b/lib/public/backgroundjob/ijoblist.php @@ -36,7 +36,6 @@ interface IJobList { * * @param \OCP\BackgroundJob\IJob|string $job * @param mixed $argument The argument to be passed to $job->run() when the job is exectured - * @return void * @since 7.0.0 */ public function add($job, $argument = null); @@ -46,7 +45,6 @@ interface IJobList { * * @param \OCP\BackgroundJob\IJob|string $job * @param mixed $argument - * @return void * @since 7.0.0 */ public function remove($job, $argument = null); @@ -72,14 +70,14 @@ interface IJobList { /** * get the next job in the list * - * @return \OCP\BackgroundJob\IJob + * @return \OCP\BackgroundJob\IJob|null * @since 7.0.0 */ public function getNext(); /** * @param int $id - * @return \OCP\BackgroundJob\IJob + * @return \OCP\BackgroundJob\IJob|null * @since 7.0.0 */ public function getById($id); @@ -88,7 +86,6 @@ interface IJobList { * set the job that was last ran to the current time * * @param \OCP\BackgroundJob\IJob $job - * @return void * @since 7.0.0 */ public function setLastJob($job); @@ -105,7 +102,6 @@ interface IJobList { * set the lastRun of $job to now * * @param \OCP\BackgroundJob\IJob $job - * @return void * @since 7.0.0 */ public function setLastRun($job); diff --git a/lib/public/iavatar.php b/lib/public/iavatar.php index fc29212a599..3d92d00b83d 100644 --- a/lib/public/iavatar.php +++ b/lib/public/iavatar.php @@ -24,6 +24,8 @@ */ namespace OCP; +use OCP\Files\File; +use OCP\Files\NotFoundException; /** * This class provides avatar functionality @@ -64,4 +66,13 @@ interface IAvatar { * @since 6.0.0 */ public function remove(); + + /** + * Get the file of the avatar + * @param int $size + * @return File + * @throws NotFoundException + * @since 9.0.0 + */ + public function getFile($size); } diff --git a/lib/public/isession.php b/lib/public/isession.php index aee635d7a9d..89a181ad0fd 100644 --- a/lib/public/isession.php +++ b/lib/public/isession.php @@ -86,4 +86,12 @@ interface ISession { */ public function close(); + /** + * Wrapper around session_regenerate_id + * + * @param bool $deleteOldSession Whether to delete the old associated session file or not. + * @return void + * @since 9.0.0 + */ + public function regenerateId($deleteOldSession = true); } diff --git a/lib/public/util.php b/lib/public/util.php index 4e783b764ed..493aa0000a5 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -269,7 +269,10 @@ class Util { * @since 4.0.0 - parameter $args was added in 4.5.0 */ public static function linkToAbsolute( $app, $file, $args = array() ) { - return(\OC_Helper::linkToAbsolute( $app, $file, $args )); + $urlGenerator = \OC::$server->getURLGenerator(); + return $urlGenerator->getAbsoluteURL( + $urlGenerator->linkTo($app, $file, $args) + ); } /** @@ -279,7 +282,11 @@ class Util { * @since 4.0.0 */ public static function linkToRemote( $service ) { - return(\OC_Helper::linkToRemote( $service )); + $urlGenerator = \OC::$server->getURLGenerator(); + $remoteBase = $urlGenerator->linkTo('', 'remote.php') . '/' . $service; + return $urlGenerator->getAbsoluteURL( + $remoteBase . (($service[strlen($service) - 1] != '/') ? '/' : '') + ); } /** @@ -302,7 +309,7 @@ class Util { * @since 5.0.0 */ public static function linkToRoute( $route, $parameters = array() ) { - return \OC_Helper::linkToRoute($route, $parameters); + return \OC::$server->getURLGenerator()->linkToRoute($route, $parameters); } /** @@ -316,7 +323,7 @@ class Util { * @since 4.0.0 - parameter $args was added in 4.5.0 */ public static function linkTo( $app, $file, $args = array() ) { - return(\OC_Helper::linkTo( $app, $file, $args )); + return \OC::$server->getURLGenerator()->linkTo($app, $file, $args); } /** @@ -487,7 +494,9 @@ class Util { * @since 4.5.0 */ public static function callCheck() { - \OC_Util::callCheck(); + if (!(\OC::$server->getRequest()->passesCSRFCheck())) { + exit(); + } } /** diff --git a/settings/changepassword/controller.php b/settings/changepassword/controller.php index 695914683db..f5b9bd58b59 100644 --- a/settings/changepassword/controller.php +++ b/settings/changepassword/controller.php @@ -55,10 +55,10 @@ class Controller { \OC_JSON::callCheck(); \OC_JSON::checkLoggedIn(); + $l = new \OC_L10n('settings'); if (isset($_POST['username'])) { $username = $_POST['username']; } else { - $l = new \OC_L10n('settings'); \OC_JSON::error(array('data' => array('message' => $l->t('No user supplied')) )); exit(); } @@ -78,7 +78,6 @@ class Controller { } elseif ($isUserAccessible) { $userstatus = 'subadmin'; } else { - $l = new \OC_L10n('settings'); \OC_JSON::error(array('data' => array('message' => $l->t('Authentication error')) )); exit(); } @@ -122,7 +121,6 @@ class Controller { $validRecoveryPassword = $keyManager->checkRecoveryPassword($recoveryPassword); $recoveryEnabledForUser = $recovery->isRecoveryEnabledForUser($username); } - $l = new \OC_L10n('settings'); if ($recoveryEnabledForUser && $recoveryPassword === '') { \OC_JSON::error(array('data' => array( diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php index d0e465bfa9c..79b7589027b 100644 --- a/settings/controller/appsettingscontroller.php +++ b/settings/controller/appsettingscontroller.php @@ -159,7 +159,7 @@ class AppSettingsController extends Controller { if($this->ocsClient->isAppStoreEnabled()) { // apps from external repo via OCS - $ocs = $this->ocsClient->getCategories(\OC_Util::getVersion()); + $ocs = $this->ocsClient->getCategories(\OCP\Util::getVersion()); if ($ocs) { foreach($ocs as $k => $v) { $name = str_replace('ownCloud ', '', $v); @@ -205,9 +205,10 @@ class AppSettingsController extends Controller { } return ($a < $b) ? -1 : 1; }); + $version = \OCP\Util::getVersion(); foreach($apps as $key => $app) { if(!array_key_exists('level', $app) && array_key_exists('ocsid', $app)) { - $remoteAppEntry = $this->ocsClient->getApplication($app['ocsid'], \OC_Util::getVersion()); + $remoteAppEntry = $this->ocsClient->getApplication($app['ocsid'], $version); if(is_array($remoteAppEntry) && array_key_exists('level', $remoteAppEntry)) { $apps[$key]['level'] = $remoteAppEntry['level']; @@ -217,13 +218,14 @@ class AppSettingsController extends Controller { break; // not-installed apps case 1: - $apps = \OC_App::listAllApps(true, $includeUpdateInfo); + $apps = \OC_App::listAllApps(true, $includeUpdateInfo, $this->ocsClient); $apps = array_filter($apps, function ($app) { return !$app['active']; }); + $version = \OCP\Util::getVersion(); foreach($apps as $key => $app) { if(!array_key_exists('level', $app) && array_key_exists('ocsid', $app)) { - $remoteAppEntry = $this->ocsClient->getApplication($app['ocsid'], \OC_Util::getVersion()); + $remoteAppEntry = $this->ocsClient->getApplication($app['ocsid'], $version); if(is_array($remoteAppEntry) && array_key_exists('level', $remoteAppEntry)) { $apps[$key]['level'] = $remoteAppEntry['level']; @@ -242,7 +244,7 @@ class AppSettingsController extends Controller { default: $filter = $this->config->getSystemValue('appstore.experimental.enabled', false) ? 'all' : 'approved'; - $apps = \OC_App::getAppstoreApps($filter, $category); + $apps = \OC_App::getAppstoreApps($filter, $category, $this->ocsClient); if (!$apps) { $apps = array(); } else { @@ -294,6 +296,9 @@ class AppSettingsController extends Controller { $app['canInstall'] = empty($missing); $app['missingDependencies'] = $missing; + $app['missingMinOwnCloudVersion'] = !isset($app['dependencies']['owncloud']['@attributes']['min-version']); + $app['missingMaxOwnCloudVersion'] = !isset($app['dependencies']['owncloud']['@attributes']['max-version']); + return $app; }, $apps); @@ -308,7 +313,7 @@ class AppSettingsController extends Controller { * @return array */ private function getInstalledApps($includeUpdateInfo = true) { - $apps = \OC_App::listAllApps(true, $includeUpdateInfo); + $apps = \OC_App::listAllApps(true, $includeUpdateInfo, $this->ocsClient); $apps = array_filter($apps, function ($app) { return $app['active']; }); diff --git a/settings/css/settings.css b/settings/css/settings.css index 5a1d864734b..8805919c96a 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -6,30 +6,62 @@ select#languageinput, select#timezone { width:15em; } input#openid, input#webdav { width:20em; } /* PERSONAL */ -#sslCertificate tr.expired { - background-color: rgba(255, 0, 0, 0.5); + +#avatar { + display: inline-block; + float: left; + width: 160px; + padding-right: 0; } -#sslCertificate td { - padding: 5px; +#avatar .avatardiv { + margin-bottom: 10px; +} +#avatar .warning { + width: 350px; +} +#uploadavatarbutton, +#selectavatar, +#removeavatar { + width: 33px; + height: 33px; +} +.jcrop-holder { + z-index: 500; +} +#avatar #cropper { + float: left; + background-color: #fff; + z-index: 500; + position: relative; } -/* Sync clients */ -.clientsbox { - padding-top: 30px; - margin-top: -30px; +#displaynameform, +#lostpassword, +#groups { + display: inline-block; + margin-bottom: 0; + padding-bottom: 0; + padding-right: 0; + min-width: 60%; } -.clientsbox h2 { - font-weight: 300; - font-size: 20px; - margin: 35px 0 10px; +#avatar, +#passwordform { + margin-bottom: 0; + padding-bottom: 0; } -.clientsbox .center { - margin-top: 10px; +#groups { + overflow-wrap: break-word; + max-width: 75%; +} + +#sslCertificate tr.expired { + background-color: rgba(255, 0, 0, 0.5); } -.clientsbox a { - font-weight: 600; +#sslCertificate td { + padding: 5px; } + #displaynameerror { display: none; } @@ -44,8 +76,8 @@ input#identity { width: 17em; } -#avatar .warning { - width: 350px; +#showWizard { + display: inline-block; } .msg.success { @@ -139,6 +171,11 @@ td.password>img,td.displayName>img, td.remove>a, td.quota>img { visibility:hidde td.password, td.quota, td.displayName { width:12em; cursor:pointer; } td.password>span, td.quota>span, rd.displayName>span { margin-right: 1.2em; color: #C7C7C7; } span.usersLastLoginTooltip { white-space: nowrap; } + +/* dropdowns will be relative to this element */ +#userlist { + position: relative; +} #userlist .mailAddress, #userlist .storageLocation, #userlist .userBackend, diff --git a/settings/help.php b/settings/help.php index 60719a3df92..848ce06cf49 100644 --- a/settings/help.php +++ b/settings/help.php @@ -34,17 +34,17 @@ OC_Util::addStyle( "settings", "settings" ); if(isset($_GET['mode']) and $_GET['mode'] === 'admin') { - $url=OC_Helper::linkToAbsolute( 'core', 'doc/admin/index.html' ); + $url=\OCP\Util::linkToAbsolute( 'core', 'doc/admin/index.html' ); $style1=''; $style2=' active'; }else{ - $url=OC_Helper::linkToAbsolute( 'core', 'doc/user/index.html' ); + $url=\OCP\Util::linkToAbsolute( 'core', 'doc/user/index.html' ); $style1=' active'; $style2=''; } -$url1=OC_Helper::linkToRoute( "settings_help" ).'?mode=user'; -$url2=OC_Helper::linkToRoute( "settings_help" ).'?mode=admin'; +$url1=\OC::$server->getURLGenerator()->linkToRoute('settings_help').'?mode=user'; +$url2=\OC::$server->getURLGenerator()->linkToRoute('settings_help').'?mode=admin'; $tmpl = new OC_Template( "settings", "help", "user" ); $tmpl->assign( "admin", OC_User::isAdminUser(OC_User::getUser())); diff --git a/settings/js/apps.js b/settings/js/apps.js index 9782fafd2bd..85627e613c6 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -422,6 +422,11 @@ OC.Settings.Apps = OC.Settings.Apps || { return app.name.toLowerCase().indexOf(query) !== -1; }); + // App ID + apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { + return app.id.toLowerCase().indexOf(query) !== -1; + })); + // App Description apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { return app.description.toLowerCase().indexOf(query) !== -1; diff --git a/settings/js/personal.js b/settings/js/personal.js index 8362adac2a6..da74f28d70c 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -98,7 +98,7 @@ function updateAvatar (hidedefault) { $('#header .avatardiv').addClass('avatardiv-shown'); } $displaydiv.css({'background-color': ''}); - $displaydiv.avatar(OC.currentUser, 128, true); + $displaydiv.avatar(OC.currentUser, 145, true); $('#removeavatar').show(); } @@ -405,6 +405,11 @@ $(document).ready(function () { if ($('#sslCertificate > tbody > tr').length === 0) { $('#sslCertificate').hide(); } + + // Load the big avatar + if (oc_config.enable_avatars) { + $('#avatar .avatardiv').avatar(OC.currentUser, 145); + } }); if (!OC.Encryption) { diff --git a/settings/js/users/users.js b/settings/js/users/users.js index 09056144558..aea94053572 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -68,7 +68,7 @@ var UserList = { if (user.isAvatarAvailable === true) { $('div.avatardiv', $tr).avatar(user.name, 32, undefined, undefined, undefined, user.displayname); } else { - $('div.avatardiv', $tr).imageplaceholder(user.displayname); + $('div.avatardiv', $tr).imageplaceholder(user.displayname, undefined, 32); } } @@ -650,7 +650,7 @@ $(document).ready(function () { {username: uid, password: $(this).val(), recoveryPassword: recoveryPasswordVal}, function (result) { if (result.status != 'success') { - OC.Notification.show(t('admin', result.data.message)); + OC.Notification.showTemporary(t('admin', result.data.message)); } } ); diff --git a/settings/l10n/af_ZA.js b/settings/l10n/af_ZA.js index 0a4fa325224..509b7f2de7c 100644 --- a/settings/l10n/af_ZA.js +++ b/settings/l10n/af_ZA.js @@ -2,9 +2,9 @@ OC.L10N.register( "settings", { "So-so password" : "So-so wagwoord", + "Cancel" : "Kanseleer", "Password" : "Wagwoord", "New password" : "Nuwe wagwoord", - "Cancel" : "Kanseleer", "Username" : "Gebruikersnaam" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/af_ZA.json b/settings/l10n/af_ZA.json index f4d95bdfe45..4cc552a2d96 100644 --- a/settings/l10n/af_ZA.json +++ b/settings/l10n/af_ZA.json @@ -1,8 +1,8 @@ { "translations": { "So-so password" : "So-so wagwoord", + "Cancel" : "Kanseleer", "Password" : "Wagwoord", "New password" : "Nuwe wagwoord", - "Cancel" : "Kanseleer", "Username" : "Gebruikersnaam" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/ar.js b/settings/l10n/ar.js index c4b24e2e4ad..365d7071ac0 100644 --- a/settings/l10n/ar.js +++ b/settings/l10n/ar.js @@ -80,25 +80,21 @@ OC.L10N.register( "Documentation:" : "التوثيق", "Uninstall App" : "أزالة تطبيق", "Forum" : "منتدى", - "Get the apps to sync your files" : "احصل على التطبيقات لمزامنة ملفاتك", - "Show First Run Wizard again" : "ابدأ خطوات بداية التشغيل من جديد", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "تم إستهلاك <strong>%s</strong> من المتوفر <strong>%s</strong>", + "Profile picture" : "صورة الملف الشخصي", + "Upload new" : "رفع الان", + "Remove image" : "إزالة الصورة", + "Cancel" : "الغاء", + "Email" : "البريد الإلكترونى", + "Your email address" : "عنوانك البريدي", "Password" : "كلمة المرور", "Unable to change your password" : "لم يتم تعديل كلمة السر بنجاح", "Current password" : "كلمات السر الحالية", "New password" : "كلمات سر جديدة", "Change password" : "عدل كلمة السر", - "Email" : "البريد الإلكترونى", - "Your email address" : "عنوانك البريدي", - "Profile picture" : "صورة الملف الشخصي", - "Upload new" : "رفع الان", - "Select new from Files" : "اختر جديد من الملفات ", - "Remove image" : "إزالة الصورة", - "Your avatar is provided by your original account." : "صورتك الرمزية يتم توفيرها عن طريق حسابك الاصلي.", - "Cancel" : "الغاء", - "Choose as profile image" : "اختر صورة الملف الشخصي", "Language" : "اللغة", "Help translate" : "ساعد في الترجمه", + "Get the apps to sync your files" : "احصل على التطبيقات لمزامنة ملفاتك", + "Show First Run Wizard again" : "ابدأ خطوات بداية التشغيل من جديد", "Valid until" : "صالح حتى", "Username" : "إسم المستخدم", "Create" : "انشئ", diff --git a/settings/l10n/ar.json b/settings/l10n/ar.json index 18e50c1c0e3..4b6cb8de18e 100644 --- a/settings/l10n/ar.json +++ b/settings/l10n/ar.json @@ -78,25 +78,21 @@ "Documentation:" : "التوثيق", "Uninstall App" : "أزالة تطبيق", "Forum" : "منتدى", - "Get the apps to sync your files" : "احصل على التطبيقات لمزامنة ملفاتك", - "Show First Run Wizard again" : "ابدأ خطوات بداية التشغيل من جديد", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "تم إستهلاك <strong>%s</strong> من المتوفر <strong>%s</strong>", + "Profile picture" : "صورة الملف الشخصي", + "Upload new" : "رفع الان", + "Remove image" : "إزالة الصورة", + "Cancel" : "الغاء", + "Email" : "البريد الإلكترونى", + "Your email address" : "عنوانك البريدي", "Password" : "كلمة المرور", "Unable to change your password" : "لم يتم تعديل كلمة السر بنجاح", "Current password" : "كلمات السر الحالية", "New password" : "كلمات سر جديدة", "Change password" : "عدل كلمة السر", - "Email" : "البريد الإلكترونى", - "Your email address" : "عنوانك البريدي", - "Profile picture" : "صورة الملف الشخصي", - "Upload new" : "رفع الان", - "Select new from Files" : "اختر جديد من الملفات ", - "Remove image" : "إزالة الصورة", - "Your avatar is provided by your original account." : "صورتك الرمزية يتم توفيرها عن طريق حسابك الاصلي.", - "Cancel" : "الغاء", - "Choose as profile image" : "اختر صورة الملف الشخصي", "Language" : "اللغة", "Help translate" : "ساعد في الترجمه", + "Get the apps to sync your files" : "احصل على التطبيقات لمزامنة ملفاتك", + "Show First Run Wizard again" : "ابدأ خطوات بداية التشغيل من جديد", "Valid until" : "صالح حتى", "Username" : "إسم المستخدم", "Create" : "انشئ", diff --git a/settings/l10n/ast.js b/settings/l10n/ast.js index 9a5b7a4e882..c6e12686813 100644 --- a/settings/l10n/ast.js +++ b/settings/l10n/ast.js @@ -122,29 +122,24 @@ OC.L10N.register( "Uninstall App" : "Desinstalar aplicación", "Cheers!" : "¡Salú!", "Forum" : "Foru", - "Get the apps to sync your files" : "Obtener les aplicaciones pa sincronizar ficheros", - "Desktop client" : "Cliente d'escritoriu", - "Android app" : "Aplicación d'Android", - "iOS app" : "Aplicación d'iOS", - "Show First Run Wizard again" : "Amosar nuevamente l'Encontu d'execución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usasti <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Semeya de perfil", + "Upload new" : "Xubir otra", + "Remove image" : "Desaniciar imaxe", + "Cancel" : "Encaboxar", + "Email" : "Corréu-e", + "Your email address" : "Direición de corréu-e", "Password" : "Contraseña", "Unable to change your password" : "Nun pudo camudase la contraseña", "Current password" : "Contraseña actual", "New password" : "Contraseña nueva", "Change password" : "Camudar contraseña", - "Email" : "Corréu-e", - "Your email address" : "Direición de corréu-e", - "Fill in an email address to enable password recovery and receive notifications" : "Introducir una direición de corréu-e p'activar la recuperación de contraseñes y recibir notificaciones", - "Profile picture" : "Semeya de perfil", - "Upload new" : "Xubir otra", - "Select new from Files" : "Esbillar otra dende Ficheros", - "Remove image" : "Desaniciar imaxe", - "Your avatar is provided by your original account." : "L'avatar ta proporcionáu pola to cuenta orixinal.", - "Cancel" : "Encaboxar", - "Choose as profile image" : "Esbillar como imaxe de perfil", "Language" : "Llingua", "Help translate" : "Ayúdanos nes traducciones", + "Get the apps to sync your files" : "Obtener les aplicaciones pa sincronizar ficheros", + "Desktop client" : "Cliente d'escritoriu", + "Android app" : "Aplicación d'Android", + "iOS app" : "Aplicación d'iOS", + "Show First Run Wizard again" : "Amosar nuevamente l'Encontu d'execución inicial", "Username" : "Nome d'usuariu", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña d'alministración", diff --git a/settings/l10n/ast.json b/settings/l10n/ast.json index 13dd87a9434..45e4164dc31 100644 --- a/settings/l10n/ast.json +++ b/settings/l10n/ast.json @@ -120,29 +120,24 @@ "Uninstall App" : "Desinstalar aplicación", "Cheers!" : "¡Salú!", "Forum" : "Foru", - "Get the apps to sync your files" : "Obtener les aplicaciones pa sincronizar ficheros", - "Desktop client" : "Cliente d'escritoriu", - "Android app" : "Aplicación d'Android", - "iOS app" : "Aplicación d'iOS", - "Show First Run Wizard again" : "Amosar nuevamente l'Encontu d'execución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usasti <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Semeya de perfil", + "Upload new" : "Xubir otra", + "Remove image" : "Desaniciar imaxe", + "Cancel" : "Encaboxar", + "Email" : "Corréu-e", + "Your email address" : "Direición de corréu-e", "Password" : "Contraseña", "Unable to change your password" : "Nun pudo camudase la contraseña", "Current password" : "Contraseña actual", "New password" : "Contraseña nueva", "Change password" : "Camudar contraseña", - "Email" : "Corréu-e", - "Your email address" : "Direición de corréu-e", - "Fill in an email address to enable password recovery and receive notifications" : "Introducir una direición de corréu-e p'activar la recuperación de contraseñes y recibir notificaciones", - "Profile picture" : "Semeya de perfil", - "Upload new" : "Xubir otra", - "Select new from Files" : "Esbillar otra dende Ficheros", - "Remove image" : "Desaniciar imaxe", - "Your avatar is provided by your original account." : "L'avatar ta proporcionáu pola to cuenta orixinal.", - "Cancel" : "Encaboxar", - "Choose as profile image" : "Esbillar como imaxe de perfil", "Language" : "Llingua", "Help translate" : "Ayúdanos nes traducciones", + "Get the apps to sync your files" : "Obtener les aplicaciones pa sincronizar ficheros", + "Desktop client" : "Cliente d'escritoriu", + "Android app" : "Aplicación d'Android", + "iOS app" : "Aplicación d'iOS", + "Show First Run Wizard again" : "Amosar nuevamente l'Encontu d'execución inicial", "Username" : "Nome d'usuariu", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña d'alministración", diff --git a/settings/l10n/az.js b/settings/l10n/az.js index 6a354b0c9a1..c869ea9d212 100644 --- a/settings/l10n/az.js +++ b/settings/l10n/az.js @@ -85,8 +85,8 @@ OC.L10N.register( "A valid password must be provided" : "Düzgün şifrə daxil edilməlidir", "A valid email must be provided" : "Düzgün email təqdim edilməlidir", "__language_name__" : "__AZ_Azerbaijan__", - "Sync clients" : "Müştəriləri sinxronizasiya et", "Personal info" : "Şəxsi məlumat", + "Sync clients" : "Müştəriləri sinxronizasiya et", "SSL root certificates" : "SSL root sertifikatları", "Everything (fatal issues, errors, warnings, info, debug)" : "Hər şey(ən pis hadisələr, səhvlər, xəbərdarlıqlar, məlmat, araşdırma səhvləri)", "Info, warnings, errors and fatal issues" : "Məlmat, xəbərdarlıqlar, səhvlər və ən pis hadisələr", @@ -167,34 +167,29 @@ OC.L10N.register( "Cheers!" : "Şərəfə!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Ey ora,\n\nancaq deyirik ki, sizin artiq %s hesabınız var.\n\nizin istifadəçi adınız: %s\nYetkilidir: %s\n\n", "Forum" : "Forum", - "Get the apps to sync your files" : "Fayllarınızın sinxronizasiyası üçün proqramları götürün", - "Desktop client" : "Desktop client", - "Android app" : "Android proqramı", - "iOS app" : "iOS proqramı", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Əgər siz proektə dəstək vermək istəyirsinizsə\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">Təkmilləşdirməyə üzv</a>\n\t\tyada\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">söz yaymaq</a>!", - "Show First Run Wizard again" : "İlk işəsalma sehirbazını yenidən göstər", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Siz istifadə etdiniz <strong>%s</strong> mövcud olan <strong>%s</strong>", - "Password" : "Şifrə", - "Unable to change your password" : "Sizin şifrəni dəyişmək mümkün olmadı", - "Current password" : "Hazırkı şifrə", - "New password" : "Yeni şifrə", - "Change password" : "Şifrəni dəyiş", + "Profile picture" : "Profil şəkli", + "Upload new" : "Yenisini yüklə", + "Remove image" : "Şəkili sil", + "Cancel" : "Dayandır", "Full name" : "Tam ad", "No display name set" : "Ekranda adı dəsti yoxdur", "Email" : "Email", "Your email address" : "Sizin email ünvanı", - "Fill in an email address to enable password recovery and receive notifications" : "Email ünvanını doldurun ki, sifrənizin bərpa edilməsini işə salasınız və məktubla xəbərdarlıqları qəbul edəsiniz.", "No email address set" : "Email ünvanı dəsti yoxdur", "You are member of the following groups:" : "Siz göstərilən qrupların üzvüsünüz:", - "Profile picture" : "Profil şəkli", - "Upload new" : "Yenisini yüklə", - "Select new from Files" : "Fayllardan yenisini seç", - "Remove image" : "Şəkili sil", - "Your avatar is provided by your original account." : "Sizin avatar sizin original hesab tərəfindən təqdim edilib.", - "Cancel" : "Dayandır", - "Choose as profile image" : "Profayl şəklini seçin", + "Password" : "Şifrə", + "Unable to change your password" : "Sizin şifrəni dəyişmək mümkün olmadı", + "Current password" : "Hazırkı şifrə", + "New password" : "Yeni şifrə", + "Change password" : "Şifrəni dəyiş", "Language" : "Dil", "Help translate" : "Tərcüməyə kömək", + "Get the apps to sync your files" : "Fayllarınızın sinxronizasiyası üçün proqramları götürün", + "Desktop client" : "Desktop client", + "Android app" : "Android proqramı", + "iOS app" : "iOS proqramı", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Əgər siz proektə dəstək vermək istəyirsinizsə\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">Təkmilləşdirməyə üzv</a>\n\t\tyada\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">söz yaymaq</a>!", + "Show First Run Wizard again" : "İlk işəsalma sehirbazını yenidən göstər", "Common Name" : "Ümumi ad", "Valid until" : "Vaxtadək keçərlidir", "Issued By" : "Tərəfindən yaradılıb", diff --git a/settings/l10n/az.json b/settings/l10n/az.json index 1093ff98cf1..5f59737c1f7 100644 --- a/settings/l10n/az.json +++ b/settings/l10n/az.json @@ -83,8 +83,8 @@ "A valid password must be provided" : "Düzgün şifrə daxil edilməlidir", "A valid email must be provided" : "Düzgün email təqdim edilməlidir", "__language_name__" : "__AZ_Azerbaijan__", - "Sync clients" : "Müştəriləri sinxronizasiya et", "Personal info" : "Şəxsi məlumat", + "Sync clients" : "Müştəriləri sinxronizasiya et", "SSL root certificates" : "SSL root sertifikatları", "Everything (fatal issues, errors, warnings, info, debug)" : "Hər şey(ən pis hadisələr, səhvlər, xəbərdarlıqlar, məlmat, araşdırma səhvləri)", "Info, warnings, errors and fatal issues" : "Məlmat, xəbərdarlıqlar, səhvlər və ən pis hadisələr", @@ -165,34 +165,29 @@ "Cheers!" : "Şərəfə!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Ey ora,\n\nancaq deyirik ki, sizin artiq %s hesabınız var.\n\nizin istifadəçi adınız: %s\nYetkilidir: %s\n\n", "Forum" : "Forum", - "Get the apps to sync your files" : "Fayllarınızın sinxronizasiyası üçün proqramları götürün", - "Desktop client" : "Desktop client", - "Android app" : "Android proqramı", - "iOS app" : "iOS proqramı", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Əgər siz proektə dəstək vermək istəyirsinizsə\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">Təkmilləşdirməyə üzv</a>\n\t\tyada\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">söz yaymaq</a>!", - "Show First Run Wizard again" : "İlk işəsalma sehirbazını yenidən göstər", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Siz istifadə etdiniz <strong>%s</strong> mövcud olan <strong>%s</strong>", - "Password" : "Şifrə", - "Unable to change your password" : "Sizin şifrəni dəyişmək mümkün olmadı", - "Current password" : "Hazırkı şifrə", - "New password" : "Yeni şifrə", - "Change password" : "Şifrəni dəyiş", + "Profile picture" : "Profil şəkli", + "Upload new" : "Yenisini yüklə", + "Remove image" : "Şəkili sil", + "Cancel" : "Dayandır", "Full name" : "Tam ad", "No display name set" : "Ekranda adı dəsti yoxdur", "Email" : "Email", "Your email address" : "Sizin email ünvanı", - "Fill in an email address to enable password recovery and receive notifications" : "Email ünvanını doldurun ki, sifrənizin bərpa edilməsini işə salasınız və məktubla xəbərdarlıqları qəbul edəsiniz.", "No email address set" : "Email ünvanı dəsti yoxdur", "You are member of the following groups:" : "Siz göstərilən qrupların üzvüsünüz:", - "Profile picture" : "Profil şəkli", - "Upload new" : "Yenisini yüklə", - "Select new from Files" : "Fayllardan yenisini seç", - "Remove image" : "Şəkili sil", - "Your avatar is provided by your original account." : "Sizin avatar sizin original hesab tərəfindən təqdim edilib.", - "Cancel" : "Dayandır", - "Choose as profile image" : "Profayl şəklini seçin", + "Password" : "Şifrə", + "Unable to change your password" : "Sizin şifrəni dəyişmək mümkün olmadı", + "Current password" : "Hazırkı şifrə", + "New password" : "Yeni şifrə", + "Change password" : "Şifrəni dəyiş", "Language" : "Dil", "Help translate" : "Tərcüməyə kömək", + "Get the apps to sync your files" : "Fayllarınızın sinxronizasiyası üçün proqramları götürün", + "Desktop client" : "Desktop client", + "Android app" : "Android proqramı", + "iOS app" : "iOS proqramı", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Əgər siz proektə dəstək vermək istəyirsinizsə\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">Təkmilləşdirməyə üzv</a>\n\t\tyada\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">söz yaymaq</a>!", + "Show First Run Wizard again" : "İlk işəsalma sehirbazını yenidən göstər", "Common Name" : "Ümumi ad", "Valid until" : "Vaxtadək keçərlidir", "Issued By" : "Tərəfindən yaradılıb", diff --git a/settings/l10n/bg_BG.js b/settings/l10n/bg_BG.js index c1d50044b3c..3a4a176e8c6 100644 --- a/settings/l10n/bg_BG.js +++ b/settings/l10n/bg_BG.js @@ -84,8 +84,8 @@ OC.L10N.register( "A valid password must be provided" : "Трябва да бъде зададена валидна парола", "A valid email must be provided" : "Трябва да бъде зададена валидна електронна поща", "__language_name__" : "Български", - "Sync clients" : "Синхронизиращи клиенти", "Personal info" : "Лична информация", + "Sync clients" : "Синхронизиращи клиенти", "SSL root certificates" : "SSL root сертификати", "Everything (fatal issues, errors, warnings, info, debug)" : "Всичко (фатални проблеми, грешки, предупреждения, информация, дебъгване)", "Info, warnings, errors and fatal issues" : "информация, предупреждения, грешки и фатални проблеми", @@ -167,34 +167,29 @@ OC.L10N.register( "Cheers!" : "Поздрави!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Здрасти,\n\nСамо да ти кажа, че имаш %s профил.\n\nПотребителя ти е: %s\nДостъпи го: %s\n", "Forum" : "Форум", - "Get the apps to sync your files" : "Изтегли програми за синхронизиране на файловете ти", - "Desktop client" : "Клиент за настолен компютър", - "Android app" : "Андроид приложение", - "iOS app" : "iOS приложение", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако искаш да помогнеш на проекта:\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">присъедини се и пиши код</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разпространи мълвата</a>!", - "Show First Run Wizard again" : "Покажи Настройките за Първоначално Зареждане отново", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Използвал си <strong>%s</strong> от наличните <strong>%s</strong>.", - "Password" : "Парола", - "Unable to change your password" : "Неуспешна промяна на паролата.", - "Current password" : "Текуща парола", - "New password" : "Нова парола", - "Change password" : "Промяна на паролата", + "Profile picture" : "Аватар", + "Upload new" : "Качи нов", + "Remove image" : "Премахни изображението", + "Cancel" : "Отказ", "Full name" : "Пълно име", "No display name set" : "Няма настроено екранно име", "Email" : "Имейл", "Your email address" : "Твоят имейл адрес", - "Fill in an email address to enable password recovery and receive notifications" : "Въведи имейл, за да включиш функцията за възстановяване на паролата и уведомления.", "No email address set" : "Няма настроен адрес на електронна поща", "You are member of the following groups:" : "Ти си член на следните групи:", - "Profile picture" : "Аватар", - "Upload new" : "Качи нов", - "Select new from Files" : "Избери нов от Файловете", - "Remove image" : "Премахни изображението", - "Your avatar is provided by your original account." : "Твоят аватар е взет от оригиналния ти профил.", - "Cancel" : "Отказ", - "Choose as profile image" : "Избери като аватар", + "Password" : "Парола", + "Unable to change your password" : "Неуспешна промяна на паролата.", + "Current password" : "Текуща парола", + "New password" : "Нова парола", + "Change password" : "Промяна на паролата", "Language" : "Език", "Help translate" : "Помогни с превода", + "Get the apps to sync your files" : "Изтегли програми за синхронизиране на файловете ти", + "Desktop client" : "Клиент за настолен компютър", + "Android app" : "Андроид приложение", + "iOS app" : "iOS приложение", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако искаш да помогнеш на проекта:\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">присъедини се и пиши код</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разпространи мълвата</a>!", + "Show First Run Wizard again" : "Покажи Настройките за Първоначално Зареждане отново", "Common Name" : "Познато Име", "Valid until" : "Валиден до", "Issued By" : "Издаден От", diff --git a/settings/l10n/bg_BG.json b/settings/l10n/bg_BG.json index 154d832d781..6bb767b6b50 100644 --- a/settings/l10n/bg_BG.json +++ b/settings/l10n/bg_BG.json @@ -82,8 +82,8 @@ "A valid password must be provided" : "Трябва да бъде зададена валидна парола", "A valid email must be provided" : "Трябва да бъде зададена валидна електронна поща", "__language_name__" : "Български", - "Sync clients" : "Синхронизиращи клиенти", "Personal info" : "Лична информация", + "Sync clients" : "Синхронизиращи клиенти", "SSL root certificates" : "SSL root сертификати", "Everything (fatal issues, errors, warnings, info, debug)" : "Всичко (фатални проблеми, грешки, предупреждения, информация, дебъгване)", "Info, warnings, errors and fatal issues" : "информация, предупреждения, грешки и фатални проблеми", @@ -165,34 +165,29 @@ "Cheers!" : "Поздрави!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Здрасти,\n\nСамо да ти кажа, че имаш %s профил.\n\nПотребителя ти е: %s\nДостъпи го: %s\n", "Forum" : "Форум", - "Get the apps to sync your files" : "Изтегли програми за синхронизиране на файловете ти", - "Desktop client" : "Клиент за настолен компютър", - "Android app" : "Андроид приложение", - "iOS app" : "iOS приложение", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако искаш да помогнеш на проекта:\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">присъедини се и пиши код</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разпространи мълвата</a>!", - "Show First Run Wizard again" : "Покажи Настройките за Първоначално Зареждане отново", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Използвал си <strong>%s</strong> от наличните <strong>%s</strong>.", - "Password" : "Парола", - "Unable to change your password" : "Неуспешна промяна на паролата.", - "Current password" : "Текуща парола", - "New password" : "Нова парола", - "Change password" : "Промяна на паролата", + "Profile picture" : "Аватар", + "Upload new" : "Качи нов", + "Remove image" : "Премахни изображението", + "Cancel" : "Отказ", "Full name" : "Пълно име", "No display name set" : "Няма настроено екранно име", "Email" : "Имейл", "Your email address" : "Твоят имейл адрес", - "Fill in an email address to enable password recovery and receive notifications" : "Въведи имейл, за да включиш функцията за възстановяване на паролата и уведомления.", "No email address set" : "Няма настроен адрес на електронна поща", "You are member of the following groups:" : "Ти си член на следните групи:", - "Profile picture" : "Аватар", - "Upload new" : "Качи нов", - "Select new from Files" : "Избери нов от Файловете", - "Remove image" : "Премахни изображението", - "Your avatar is provided by your original account." : "Твоят аватар е взет от оригиналния ти профил.", - "Cancel" : "Отказ", - "Choose as profile image" : "Избери като аватар", + "Password" : "Парола", + "Unable to change your password" : "Неуспешна промяна на паролата.", + "Current password" : "Текуща парола", + "New password" : "Нова парола", + "Change password" : "Промяна на паролата", "Language" : "Език", "Help translate" : "Помогни с превода", + "Get the apps to sync your files" : "Изтегли програми за синхронизиране на файловете ти", + "Desktop client" : "Клиент за настолен компютър", + "Android app" : "Андроид приложение", + "iOS app" : "iOS приложение", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако искаш да помогнеш на проекта:\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">присъедини се и пиши код</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разпространи мълвата</a>!", + "Show First Run Wizard again" : "Покажи Настройките за Първоначално Зареждане отново", "Common Name" : "Познато Име", "Valid until" : "Валиден до", "Issued By" : "Издаден От", diff --git a/settings/l10n/bn_BD.js b/settings/l10n/bn_BD.js index aecaf471c85..e8db791037e 100644 --- a/settings/l10n/bn_BD.js +++ b/settings/l10n/bn_BD.js @@ -53,19 +53,18 @@ OC.L10N.register( "by" : "কর্তৃক", "Cheers!" : "শুভেচ্ছা!", "Forum" : "ফোরাম", - "Get the apps to sync your files" : "আপনার ফাইলসমূহ সিংক করতে অ্যাপস নিন", - "Show First Run Wizard again" : "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "আপনি ব্যবহার করছেন <strong>%s</strong>, সুলভ <strong>%s</strong> এর মধ্যে।", + "Cancel" : "বাতির", + "Email" : "ইমেইল", + "Your email address" : "আপনার ই-মেইল ঠিকানা", "Password" : "কূটশব্দ", "Unable to change your password" : "আপনার কূটশব্দটি পরিবর্তন করতে সক্ষম নয়", "Current password" : "বর্তমান কূটশব্দ", "New password" : "নতুন কূটশব্দ", "Change password" : "কূটশব্দ পরিবর্তন করুন", - "Email" : "ইমেইল", - "Your email address" : "আপনার ই-মেইল ঠিকানা", - "Cancel" : "বাতির", "Language" : "ভাষা", "Help translate" : "অনুবাদ করতে সহায়তা করুন", + "Get the apps to sync your files" : "আপনার ফাইলসমূহ সিংক করতে অ্যাপস নিন", + "Show First Run Wizard again" : "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর", "Username" : "ব্যবহারকারী", "Create" : "তৈরী কর", "Admin Recovery Password" : "প্রশাসক পূণরূদ্ধার কুটশব্দ", diff --git a/settings/l10n/bn_BD.json b/settings/l10n/bn_BD.json index bb06c3f2fac..bf6b37cf7db 100644 --- a/settings/l10n/bn_BD.json +++ b/settings/l10n/bn_BD.json @@ -51,19 +51,18 @@ "by" : "কর্তৃক", "Cheers!" : "শুভেচ্ছা!", "Forum" : "ফোরাম", - "Get the apps to sync your files" : "আপনার ফাইলসমূহ সিংক করতে অ্যাপস নিন", - "Show First Run Wizard again" : "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "আপনি ব্যবহার করছেন <strong>%s</strong>, সুলভ <strong>%s</strong> এর মধ্যে।", + "Cancel" : "বাতির", + "Email" : "ইমেইল", + "Your email address" : "আপনার ই-মেইল ঠিকানা", "Password" : "কূটশব্দ", "Unable to change your password" : "আপনার কূটশব্দটি পরিবর্তন করতে সক্ষম নয়", "Current password" : "বর্তমান কূটশব্দ", "New password" : "নতুন কূটশব্দ", "Change password" : "কূটশব্দ পরিবর্তন করুন", - "Email" : "ইমেইল", - "Your email address" : "আপনার ই-মেইল ঠিকানা", - "Cancel" : "বাতির", "Language" : "ভাষা", "Help translate" : "অনুবাদ করতে সহায়তা করুন", + "Get the apps to sync your files" : "আপনার ফাইলসমূহ সিংক করতে অ্যাপস নিন", + "Show First Run Wizard again" : "প্রথমবার চালানোর যাদুকর পূনরায় প্রদর্শন কর", "Username" : "ব্যবহারকারী", "Create" : "তৈরী কর", "Admin Recovery Password" : "প্রশাসক পূণরূদ্ধার কুটশব্দ", diff --git a/settings/l10n/bn_IN.js b/settings/l10n/bn_IN.js index 7552436f21f..a3b715dce10 100644 --- a/settings/l10n/bn_IN.js +++ b/settings/l10n/bn_IN.js @@ -4,8 +4,8 @@ OC.L10N.register( "Saved" : "সংরক্ষিত", "Delete" : "মুছে ফেলা", "by" : "দ্বারা", - "Get the apps to sync your files" : "আপনার ফাইল সিঙ্ক করার অ্যাপ পান", "Cancel" : "বাতিল করা", + "Get the apps to sync your files" : "আপনার ফাইল সিঙ্ক করার অ্যাপ পান", "Username" : "ইউজারনেম" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/bn_IN.json b/settings/l10n/bn_IN.json index 7ec4ea67aa4..e9e312f87f3 100644 --- a/settings/l10n/bn_IN.json +++ b/settings/l10n/bn_IN.json @@ -2,8 +2,8 @@ "Saved" : "সংরক্ষিত", "Delete" : "মুছে ফেলা", "by" : "দ্বারা", - "Get the apps to sync your files" : "আপনার ফাইল সিঙ্ক করার অ্যাপ পান", "Cancel" : "বাতিল করা", + "Get the apps to sync your files" : "আপনার ফাইল সিঙ্ক করার অ্যাপ পান", "Username" : "ইউজারনেম" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/bs.js b/settings/l10n/bs.js index 7dad6db6875..92da382f008 100644 --- a/settings/l10n/bs.js +++ b/settings/l10n/bs.js @@ -140,29 +140,24 @@ OC.L10N.register( "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,<br><br>samo da javim da sad imate %s račum.<br><br>Vaše korisničko ime: %s<br>Pristupite mu: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Cheers!", "Forum" : "Forum", - "Get the apps to sync your files" : "Koristite aplikacije za sinhronizaciju svojih datoteka", - "Desktop client" : "Desktop klijent", - "Android app" : "Android aplikacija", - "iOS app" : "iOS aplikacija", - "Show First Run Wizard again" : "Opet pokažite First Run Wizard", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Iskoristili ste <strong>%s</strong> od raspoloživog <strong>%s</strong>", + "Profile picture" : "Slika profila", + "Upload new" : "Učitaj novu", + "Remove image" : "Ukloni sliku", + "Cancel" : "Odustani", + "Email" : "E-pošta", + "Your email address" : "Vaša adresa e-pošte", "Password" : "Lozinka", "Unable to change your password" : "Vašu lozinku nije moguće promijeniti", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Promijeni lozinku", - "Email" : "E-pošta", - "Your email address" : "Vaša adresa e-pošte", - "Fill in an email address to enable password recovery and receive notifications" : "Unesite adresu e-pošte da biste omogućili oporavak lozinke i primili notifikacije", - "Profile picture" : "Slika profila", - "Upload new" : "Učitaj novu", - "Select new from Files" : "Odaberi novu iz datoteka", - "Remove image" : "Ukloni sliku", - "Your avatar is provided by your original account." : "Vaš avatar je isporučen od strane vašeg izvornog računa.", - "Cancel" : "Odustani", - "Choose as profile image" : "Izaberi kao sliku profila", "Language" : "Jezik", "Help translate" : "Pomozi prevesti", + "Get the apps to sync your files" : "Koristite aplikacije za sinhronizaciju svojih datoteka", + "Desktop client" : "Desktop klijent", + "Android app" : "Android aplikacija", + "iOS app" : "iOS aplikacija", + "Show First Run Wizard again" : "Opet pokažite First Run Wizard", "Common Name" : "Opće Ime", "Valid until" : "Validno do", "Issued By" : "Izdano od", diff --git a/settings/l10n/bs.json b/settings/l10n/bs.json index 5cae7661981..d1857a3a6f3 100644 --- a/settings/l10n/bs.json +++ b/settings/l10n/bs.json @@ -138,29 +138,24 @@ "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,<br><br>samo da javim da sad imate %s račum.<br><br>Vaše korisničko ime: %s<br>Pristupite mu: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Cheers!", "Forum" : "Forum", - "Get the apps to sync your files" : "Koristite aplikacije za sinhronizaciju svojih datoteka", - "Desktop client" : "Desktop klijent", - "Android app" : "Android aplikacija", - "iOS app" : "iOS aplikacija", - "Show First Run Wizard again" : "Opet pokažite First Run Wizard", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Iskoristili ste <strong>%s</strong> od raspoloživog <strong>%s</strong>", + "Profile picture" : "Slika profila", + "Upload new" : "Učitaj novu", + "Remove image" : "Ukloni sliku", + "Cancel" : "Odustani", + "Email" : "E-pošta", + "Your email address" : "Vaša adresa e-pošte", "Password" : "Lozinka", "Unable to change your password" : "Vašu lozinku nije moguće promijeniti", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Promijeni lozinku", - "Email" : "E-pošta", - "Your email address" : "Vaša adresa e-pošte", - "Fill in an email address to enable password recovery and receive notifications" : "Unesite adresu e-pošte da biste omogućili oporavak lozinke i primili notifikacije", - "Profile picture" : "Slika profila", - "Upload new" : "Učitaj novu", - "Select new from Files" : "Odaberi novu iz datoteka", - "Remove image" : "Ukloni sliku", - "Your avatar is provided by your original account." : "Vaš avatar je isporučen od strane vašeg izvornog računa.", - "Cancel" : "Odustani", - "Choose as profile image" : "Izaberi kao sliku profila", "Language" : "Jezik", "Help translate" : "Pomozi prevesti", + "Get the apps to sync your files" : "Koristite aplikacije za sinhronizaciju svojih datoteka", + "Desktop client" : "Desktop klijent", + "Android app" : "Android aplikacija", + "iOS app" : "iOS aplikacija", + "Show First Run Wizard again" : "Opet pokažite First Run Wizard", "Common Name" : "Opće Ime", "Valid until" : "Validno do", "Issued By" : "Izdano od", diff --git a/settings/l10n/ca.js b/settings/l10n/ca.js index b3ea1aa7cf2..fb0c133823f 100644 --- a/settings/l10n/ca.js +++ b/settings/l10n/ca.js @@ -97,8 +97,8 @@ OC.L10N.register( "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "A valid email must be provided" : "S'ha de subministrar una adreça de correu electrònic vàlida", "__language_name__" : "Català", - "Sync clients" : "Sincronitzar clients", "Personal info" : "Informació personal", + "Sync clients" : "Sincronitzar clients", "SSL root certificates" : "Certificats SSL root", "Everything (fatal issues, errors, warnings, info, debug)" : "Tot (problemes fatals, errors, avisos, informació, depuració)", "Info, warnings, errors and fatal issues" : "Informació, avisos, errors i problemes fatals", @@ -193,34 +193,29 @@ OC.L10N.register( "Online documentation" : "Documentació en línia", "Forum" : "Fòrum", "Commercial support" : "Suport comercial", - "Get the apps to sync your files" : "Obtingueu les aplicacions per sincronitzar els vostres fitxers", - "Desktop client" : "Client d'escriptori", - "Android app" : "aplicació para Android", - "iOS app" : "aplicació para iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vol recolzar el projecte\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> unir-se al desenvolupament</a>\n⇥⇥o\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> difondre'l !</a>!", - "Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Heu utilitzat <strong>%s</strong> d'un total disponible de <strong>%s</strong>", - "Password" : "Contrasenya", - "Unable to change your password" : "No s'ha pogut canviar la contrasenya", - "Current password" : "Contrasenya actual", - "New password" : "Contrasenya nova", - "Change password" : "Canvia la contrasenya", + "Profile picture" : "Foto de perfil", + "Upload new" : "Puja'n una de nova", + "Remove image" : "Elimina imatge", + "Cancel" : "Cancel·la", "Full name" : "Nom complet", "No display name set" : "No s'ha establert cap nom para mostrar", "Email" : "Correu electrònic", "Your email address" : "Correu electrònic", - "Fill in an email address to enable password recovery and receive notifications" : "Ompliu una adreça de correu per poder recuperar la contrasenya i rebre notificacions", "No email address set" : "No s'ha establert cap adreça de correu", "You are member of the following groups:" : "Vostè és membre dels següents grups:", - "Profile picture" : "Foto de perfil", - "Upload new" : "Puja'n una de nova", - "Select new from Files" : "Selecciona'n una de nova dels fitxers", - "Remove image" : "Elimina imatge", - "Your avatar is provided by your original account." : "El vostre compte original proporciona l'avatar.", - "Cancel" : "Cancel·la", - "Choose as profile image" : "Selecciona com a imatge de perfil", + "Password" : "Contrasenya", + "Unable to change your password" : "No s'ha pogut canviar la contrasenya", + "Current password" : "Contrasenya actual", + "New password" : "Contrasenya nova", + "Change password" : "Canvia la contrasenya", "Language" : "Idioma", "Help translate" : "Ajudeu-nos amb la traducció", + "Get the apps to sync your files" : "Obtingueu les aplicacions per sincronitzar els vostres fitxers", + "Desktop client" : "Client d'escriptori", + "Android app" : "aplicació para Android", + "iOS app" : "aplicació para iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vol recolzar el projecte\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> unir-se al desenvolupament</a>\n⇥⇥o\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> difondre'l !</a>!", + "Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució", "Common Name" : "Nom comú", "Valid until" : "Valid fins", "Issued By" : "Emès Per", diff --git a/settings/l10n/ca.json b/settings/l10n/ca.json index 3cb8c962c30..4fe2dfdcc1b 100644 --- a/settings/l10n/ca.json +++ b/settings/l10n/ca.json @@ -95,8 +95,8 @@ "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "A valid email must be provided" : "S'ha de subministrar una adreça de correu electrònic vàlida", "__language_name__" : "Català", - "Sync clients" : "Sincronitzar clients", "Personal info" : "Informació personal", + "Sync clients" : "Sincronitzar clients", "SSL root certificates" : "Certificats SSL root", "Everything (fatal issues, errors, warnings, info, debug)" : "Tot (problemes fatals, errors, avisos, informació, depuració)", "Info, warnings, errors and fatal issues" : "Informació, avisos, errors i problemes fatals", @@ -191,34 +191,29 @@ "Online documentation" : "Documentació en línia", "Forum" : "Fòrum", "Commercial support" : "Suport comercial", - "Get the apps to sync your files" : "Obtingueu les aplicacions per sincronitzar els vostres fitxers", - "Desktop client" : "Client d'escriptori", - "Android app" : "aplicació para Android", - "iOS app" : "aplicació para iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vol recolzar el projecte\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> unir-se al desenvolupament</a>\n⇥⇥o\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> difondre'l !</a>!", - "Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Heu utilitzat <strong>%s</strong> d'un total disponible de <strong>%s</strong>", - "Password" : "Contrasenya", - "Unable to change your password" : "No s'ha pogut canviar la contrasenya", - "Current password" : "Contrasenya actual", - "New password" : "Contrasenya nova", - "Change password" : "Canvia la contrasenya", + "Profile picture" : "Foto de perfil", + "Upload new" : "Puja'n una de nova", + "Remove image" : "Elimina imatge", + "Cancel" : "Cancel·la", "Full name" : "Nom complet", "No display name set" : "No s'ha establert cap nom para mostrar", "Email" : "Correu electrònic", "Your email address" : "Correu electrònic", - "Fill in an email address to enable password recovery and receive notifications" : "Ompliu una adreça de correu per poder recuperar la contrasenya i rebre notificacions", "No email address set" : "No s'ha establert cap adreça de correu", "You are member of the following groups:" : "Vostè és membre dels següents grups:", - "Profile picture" : "Foto de perfil", - "Upload new" : "Puja'n una de nova", - "Select new from Files" : "Selecciona'n una de nova dels fitxers", - "Remove image" : "Elimina imatge", - "Your avatar is provided by your original account." : "El vostre compte original proporciona l'avatar.", - "Cancel" : "Cancel·la", - "Choose as profile image" : "Selecciona com a imatge de perfil", + "Password" : "Contrasenya", + "Unable to change your password" : "No s'ha pogut canviar la contrasenya", + "Current password" : "Contrasenya actual", + "New password" : "Contrasenya nova", + "Change password" : "Canvia la contrasenya", "Language" : "Idioma", "Help translate" : "Ajudeu-nos amb la traducció", + "Get the apps to sync your files" : "Obtingueu les aplicacions per sincronitzar els vostres fitxers", + "Desktop client" : "Client d'escriptori", + "Android app" : "aplicació para Android", + "iOS app" : "aplicació para iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vol recolzar el projecte\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> unir-se al desenvolupament</a>\n⇥⇥o\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> difondre'l !</a>!", + "Show First Run Wizard again" : "Torna a mostrar l'assistent de primera execució", "Common Name" : "Nom comú", "Valid until" : "Valid fins", "Issued By" : "Emès Per", diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index 84939c5ca5d..3ddfd5422b0 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Musíte zadat platné heslo", "A valid email must be provided" : "Musíte zadat platný email", "__language_name__" : "Česky", - "Sync clients" : "Synchronizační klienti", "Personal info" : "Osobní informace", + "Sync clients" : "Synchronizační klienti", "SSL root certificates" : "Kořenové certifikáty SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Vše (fatální problémy, chyby, varování, informační, ladící)", "Info, warnings, errors and fatal issues" : "Informace, varování, chyby a fatální problémy", @@ -224,35 +224,29 @@ OC.L10N.register( "Forum" : "Fórum", "Issue tracker" : "Seznam chyb", "Commercial support" : "Placená podpora", - "Get the apps to sync your files" : "Získat aplikace pro synchronizaci vašich souborů", - "Desktop client" : "Aplikace pro počítač", - "Android app" : "Aplikace pro Android", - "iOS app" : "iOS aplikace", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Chcete-li podpořit tento projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">přidejte se k jeho vývoji</a>\n\t\tnebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">šiřte osvětu</a>!", - "Show First Run Wizard again" : "Znovu zobrazit průvodce prvním spuštěním", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Používáte <strong>%s</strong> z <strong>%s</strong> dostupných", - "Password" : "Heslo", - "Unable to change your password" : "Změna vašeho hesla se nezdařila", - "Current password" : "Současné heslo", - "New password" : "Nové heslo", - "Change password" : "Změnit heslo", + "Profile picture" : "Profilový obrázek", + "Upload new" : "Nahrát nový", + "Remove image" : "Odebrat obrázek", + "Cancel" : "Zrušit", "Full name" : "Celé jméno", "No display name set" : "Jméno pro zobrazení nenastaveno", "Email" : "Email", "Your email address" : "Vaše emailová adresa", - "Fill in an email address to enable password recovery and receive notifications" : "Zadejte emailovou adresu pro umožnění obnovy zapomenutého hesla a pro přijímání upozornění", "No email address set" : "Emailová adresa není nastavena", "You are member of the following groups:" : "Patříte do následujících skupin:", - "Profile picture" : "Profilový obrázek", - "Upload new" : "Nahrát nový", - "Select new from Files" : "Vyberte nový ze souborů", - "Remove image" : "Odebrat obrázek", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Buď png nebo jpg. Nejlépe čtvercový, ale budete mít možnost jej oříznout. Soubor nesmí být větší než 20 MB.", - "Your avatar is provided by your original account." : "Váš avatar je poskytován Vaším původním účtem.", - "Cancel" : "Zrušit", - "Choose as profile image" : "Vybrat jako profilový obrázek", + "Password" : "Heslo", + "Unable to change your password" : "Změna vašeho hesla se nezdařila", + "Current password" : "Současné heslo", + "New password" : "Nové heslo", + "Change password" : "Změnit heslo", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", + "Get the apps to sync your files" : "Získat aplikace pro synchronizaci vašich souborů", + "Desktop client" : "Aplikace pro počítač", + "Android app" : "Aplikace pro Android", + "iOS app" : "iOS aplikace", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Chcete-li podpořit tento projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">přidejte se k jeho vývoji</a>\n\t\tnebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">šiřte osvětu</a>!", + "Show First Run Wizard again" : "Znovu zobrazit průvodce prvním spuštěním", "Common Name" : "Common Name", "Valid until" : "Platný do", "Issued By" : "Vydal", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index c5c95cfc119..b96e51a06da 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Musíte zadat platné heslo", "A valid email must be provided" : "Musíte zadat platný email", "__language_name__" : "Česky", - "Sync clients" : "Synchronizační klienti", "Personal info" : "Osobní informace", + "Sync clients" : "Synchronizační klienti", "SSL root certificates" : "Kořenové certifikáty SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Vše (fatální problémy, chyby, varování, informační, ladící)", "Info, warnings, errors and fatal issues" : "Informace, varování, chyby a fatální problémy", @@ -222,35 +222,29 @@ "Forum" : "Fórum", "Issue tracker" : "Seznam chyb", "Commercial support" : "Placená podpora", - "Get the apps to sync your files" : "Získat aplikace pro synchronizaci vašich souborů", - "Desktop client" : "Aplikace pro počítač", - "Android app" : "Aplikace pro Android", - "iOS app" : "iOS aplikace", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Chcete-li podpořit tento projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">přidejte se k jeho vývoji</a>\n\t\tnebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">šiřte osvětu</a>!", - "Show First Run Wizard again" : "Znovu zobrazit průvodce prvním spuštěním", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Používáte <strong>%s</strong> z <strong>%s</strong> dostupných", - "Password" : "Heslo", - "Unable to change your password" : "Změna vašeho hesla se nezdařila", - "Current password" : "Současné heslo", - "New password" : "Nové heslo", - "Change password" : "Změnit heslo", + "Profile picture" : "Profilový obrázek", + "Upload new" : "Nahrát nový", + "Remove image" : "Odebrat obrázek", + "Cancel" : "Zrušit", "Full name" : "Celé jméno", "No display name set" : "Jméno pro zobrazení nenastaveno", "Email" : "Email", "Your email address" : "Vaše emailová adresa", - "Fill in an email address to enable password recovery and receive notifications" : "Zadejte emailovou adresu pro umožnění obnovy zapomenutého hesla a pro přijímání upozornění", "No email address set" : "Emailová adresa není nastavena", "You are member of the following groups:" : "Patříte do následujících skupin:", - "Profile picture" : "Profilový obrázek", - "Upload new" : "Nahrát nový", - "Select new from Files" : "Vyberte nový ze souborů", - "Remove image" : "Odebrat obrázek", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Buď png nebo jpg. Nejlépe čtvercový, ale budete mít možnost jej oříznout. Soubor nesmí být větší než 20 MB.", - "Your avatar is provided by your original account." : "Váš avatar je poskytován Vaším původním účtem.", - "Cancel" : "Zrušit", - "Choose as profile image" : "Vybrat jako profilový obrázek", + "Password" : "Heslo", + "Unable to change your password" : "Změna vašeho hesla se nezdařila", + "Current password" : "Současné heslo", + "New password" : "Nové heslo", + "Change password" : "Změnit heslo", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", + "Get the apps to sync your files" : "Získat aplikace pro synchronizaci vašich souborů", + "Desktop client" : "Aplikace pro počítač", + "Android app" : "Aplikace pro Android", + "iOS app" : "iOS aplikace", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Chcete-li podpořit tento projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">přidejte se k jeho vývoji</a>\n\t\tnebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">šiřte osvětu</a>!", + "Show First Run Wizard again" : "Znovu zobrazit průvodce prvním spuštěním", "Common Name" : "Common Name", "Valid until" : "Platný do", "Issued By" : "Vydal", diff --git a/settings/l10n/cy_GB.js b/settings/l10n/cy_GB.js index 74cb40cf890..9d614c4220c 100644 --- a/settings/l10n/cy_GB.js +++ b/settings/l10n/cy_GB.js @@ -12,10 +12,10 @@ OC.L10N.register( "Login" : "Mewngofnodi", "Encryption" : "Amgryptiad", "by" : "gan", + "Cancel" : "Diddymu", + "Email" : "E-bost", "Password" : "Cyfrinair", "New password" : "Cyfrinair newydd", - "Email" : "E-bost", - "Cancel" : "Diddymu", "Username" : "Enw defnyddiwr", "Other" : "Arall" }, diff --git a/settings/l10n/cy_GB.json b/settings/l10n/cy_GB.json index 537395458bd..04a9f058520 100644 --- a/settings/l10n/cy_GB.json +++ b/settings/l10n/cy_GB.json @@ -10,10 +10,10 @@ "Login" : "Mewngofnodi", "Encryption" : "Amgryptiad", "by" : "gan", + "Cancel" : "Diddymu", + "Email" : "E-bost", "Password" : "Cyfrinair", "New password" : "Cyfrinair newydd", - "Email" : "E-bost", - "Cancel" : "Diddymu", "Username" : "Enw defnyddiwr", "Other" : "Arall" },"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" diff --git a/settings/l10n/da.js b/settings/l10n/da.js index 4fef120f1bc..f5d7fd9e2f1 100644 --- a/settings/l10n/da.js +++ b/settings/l10n/da.js @@ -104,8 +104,8 @@ OC.L10N.register( "A valid password must be provided" : "En gyldig adgangskode skal angives", "A valid email must be provided" : "Der skal angives en gyldig e-mail", "__language_name__" : "Dansk", - "Sync clients" : "Synkroniserings klienter", "Personal info" : "Personlige oplysninger", + "Sync clients" : "Synkroniserings klienter", "SSL root certificates" : "SSL-rodcertifikater", "Everything (fatal issues, errors, warnings, info, debug)" : "Alt (alvorlige fejl, fejl, advarsler, info, debug)", "Info, warnings, errors and fatal issues" : "Info, advarsler, fejl og alvorlige fejl", @@ -216,35 +216,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Problem følger", "Commercial support" : "Kommerciel support", - "Get the apps to sync your files" : "Hent applikationerne for at synkronisere dine filer", - "Desktop client" : "Skrivebordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte projektet, så\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">deltag i udviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spred budskabet</a>!", - "Show First Run Wizard again" : "Vis guiden for første kørsel igen.", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brugt <strong>%s</strong> af den tilgængelige <strong>%s</strong>", - "Password" : "Kodeord", - "Unable to change your password" : "Ude af stand til at ændre dit kodeord", - "Current password" : "Nuværende adgangskode", - "New password" : "Nyt kodeord", - "Change password" : "Skift kodeord", + "Profile picture" : "Profilbillede", + "Upload new" : "Upload nyt", + "Remove image" : "Fjern billede", + "Cancel" : "Annuller", "Full name" : "Fulde navn", "No display name set" : "Der er ikke angivet skærmnavn", "Email" : "E-mail", "Your email address" : "Din e-mailadresse", - "Fill in an email address to enable password recovery and receive notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer", "No email address set" : "Der er ikke angivet e-mailadresse", "You are member of the following groups:" : "Der er medlem af følgende grupper:", - "Profile picture" : "Profilbillede", - "Upload new" : "Upload nyt", - "Select new from Files" : "Vælg nyt fra Filer", - "Remove image" : "Fjern billede", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Enten png eller jpg. Ideelt kvadratisk men du har mulighed for at beskære det. Filen må ikke overskride maksimumgrænsen på 20 MB.", - "Your avatar is provided by your original account." : "Din avatar kommer fra din oprindelige konto.", - "Cancel" : "Annuller", - "Choose as profile image" : "Vælg som profilbillede", + "Password" : "Kodeord", + "Unable to change your password" : "Ude af stand til at ændre dit kodeord", + "Current password" : "Nuværende adgangskode", + "New password" : "Nyt kodeord", + "Change password" : "Skift kodeord", "Language" : "Sprog", "Help translate" : "Hjælp med oversættelsen", + "Get the apps to sync your files" : "Hent applikationerne for at synkronisere dine filer", + "Desktop client" : "Skrivebordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte projektet, så\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">deltag i udviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spred budskabet</a>!", + "Show First Run Wizard again" : "Vis guiden for første kørsel igen.", "Common Name" : "Almindeligt navn", "Valid until" : "Gyldig indtil", "Issued By" : "Udstedt af", diff --git a/settings/l10n/da.json b/settings/l10n/da.json index d535bdb38af..8f75704f975 100644 --- a/settings/l10n/da.json +++ b/settings/l10n/da.json @@ -102,8 +102,8 @@ "A valid password must be provided" : "En gyldig adgangskode skal angives", "A valid email must be provided" : "Der skal angives en gyldig e-mail", "__language_name__" : "Dansk", - "Sync clients" : "Synkroniserings klienter", "Personal info" : "Personlige oplysninger", + "Sync clients" : "Synkroniserings klienter", "SSL root certificates" : "SSL-rodcertifikater", "Everything (fatal issues, errors, warnings, info, debug)" : "Alt (alvorlige fejl, fejl, advarsler, info, debug)", "Info, warnings, errors and fatal issues" : "Info, advarsler, fejl og alvorlige fejl", @@ -214,35 +214,29 @@ "Forum" : "Forum", "Issue tracker" : "Problem følger", "Commercial support" : "Kommerciel support", - "Get the apps to sync your files" : "Hent applikationerne for at synkronisere dine filer", - "Desktop client" : "Skrivebordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte projektet, så\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">deltag i udviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spred budskabet</a>!", - "Show First Run Wizard again" : "Vis guiden for første kørsel igen.", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brugt <strong>%s</strong> af den tilgængelige <strong>%s</strong>", - "Password" : "Kodeord", - "Unable to change your password" : "Ude af stand til at ændre dit kodeord", - "Current password" : "Nuværende adgangskode", - "New password" : "Nyt kodeord", - "Change password" : "Skift kodeord", + "Profile picture" : "Profilbillede", + "Upload new" : "Upload nyt", + "Remove image" : "Fjern billede", + "Cancel" : "Annuller", "Full name" : "Fulde navn", "No display name set" : "Der er ikke angivet skærmnavn", "Email" : "E-mail", "Your email address" : "Din e-mailadresse", - "Fill in an email address to enable password recovery and receive notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer", "No email address set" : "Der er ikke angivet e-mailadresse", "You are member of the following groups:" : "Der er medlem af følgende grupper:", - "Profile picture" : "Profilbillede", - "Upload new" : "Upload nyt", - "Select new from Files" : "Vælg nyt fra Filer", - "Remove image" : "Fjern billede", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Enten png eller jpg. Ideelt kvadratisk men du har mulighed for at beskære det. Filen må ikke overskride maksimumgrænsen på 20 MB.", - "Your avatar is provided by your original account." : "Din avatar kommer fra din oprindelige konto.", - "Cancel" : "Annuller", - "Choose as profile image" : "Vælg som profilbillede", + "Password" : "Kodeord", + "Unable to change your password" : "Ude af stand til at ændre dit kodeord", + "Current password" : "Nuværende adgangskode", + "New password" : "Nyt kodeord", + "Change password" : "Skift kodeord", "Language" : "Sprog", "Help translate" : "Hjælp med oversættelsen", + "Get the apps to sync your files" : "Hent applikationerne for at synkronisere dine filer", + "Desktop client" : "Skrivebordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte projektet, så\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">deltag i udviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spred budskabet</a>!", + "Show First Run Wizard again" : "Vis guiden for første kørsel igen.", "Common Name" : "Almindeligt navn", "Valid until" : "Gyldig indtil", "Issued By" : "Udstedt af", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 2034a6650e7..441100bad47 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden", "__language_name__" : "Deutsch (Persönlich)", - "Sync clients" : "Sync-Clients", "Personal info" : "Persönliche Informationen", + "Sync clients" : "Sync-Clients", "SSL root certificates" : "SSL-Root-Zertifikate", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Debug-Meldungen)", "Info, warnings, errors and fatal issues" : "Infos, Warnungen, Fehler und fatale Probleme", @@ -219,35 +219,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Issue Tracker", "Commercial support" : "Kommerzieller Support", - "Get the apps to sync your files" : "Lade die Apps zur Synchronisierung Deiner Daten herunter", - "Desktop client" : "Desktop-Client", - "Android app" : "Android-App", - "iOS app" : "iOS-App", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", - "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s</strong>", - "Password" : "Passwort", - "Unable to change your password" : "Passwort konnte nicht geändert werden", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Remove image" : "Bild entfernen", + "Cancel" : "Abbrechen", "Full name" : "Vollständiger Name", "No display name set" : "Kein Anzeigename angegeben", "Email" : "E-Mail", "Your email address" : "Deine E-Mail-Adresse", - "Fill in an email address to enable password recovery and receive notifications" : "Gib eine E-Mail-Adresse an, um eine Wiederherstellung des Passworts zu ermöglichen und Benachrichtigungen zu empfangen", "No email address set" : "Keine E-Mail-Adresse angegeben", "You are member of the following groups:" : "Du bist Mitglied folgender Gruppen:", - "Profile picture" : "Profilbild", - "Upload new" : "Neues hochladen", - "Select new from Files" : "Neues aus den Dateien wählen", - "Remove image" : "Bild entfernen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Entweder png oder jpg. Im Idealfall quadratisch, aber du kannst das Bild beschneiden. Es ist nicht erlaubt die Maximalgröße von 20 MB zu überschreiten.", - "Your avatar is provided by your original account." : "Dein Avatar wird von Deinem ursprünglichen Konto bereitgestellt.", - "Cancel" : "Abbrechen", - "Choose as profile image" : "Als Profilbild wählen", + "Password" : "Passwort", + "Unable to change your password" : "Passwort konnte nicht geändert werden", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung", + "Get the apps to sync your files" : "Lade die Apps zur Synchronisierung Deiner Daten herunter", + "Desktop client" : "Desktop-Client", + "Android app" : "Android-App", + "iOS app" : "iOS-App", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", + "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "Common Name" : "Common Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 31f677bd66b..5dcd2d731ab 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden", "__language_name__" : "Deutsch (Persönlich)", - "Sync clients" : "Sync-Clients", "Personal info" : "Persönliche Informationen", + "Sync clients" : "Sync-Clients", "SSL root certificates" : "SSL-Root-Zertifikate", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Debug-Meldungen)", "Info, warnings, errors and fatal issues" : "Infos, Warnungen, Fehler und fatale Probleme", @@ -217,35 +217,29 @@ "Forum" : "Forum", "Issue tracker" : "Issue Tracker", "Commercial support" : "Kommerzieller Support", - "Get the apps to sync your files" : "Lade die Apps zur Synchronisierung Deiner Daten herunter", - "Desktop client" : "Desktop-Client", - "Android app" : "Android-App", - "iOS app" : "iOS-App", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", - "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du verwendest <strong>%s</strong> der verfügbaren <strong>%s</strong>", - "Password" : "Passwort", - "Unable to change your password" : "Passwort konnte nicht geändert werden", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Remove image" : "Bild entfernen", + "Cancel" : "Abbrechen", "Full name" : "Vollständiger Name", "No display name set" : "Kein Anzeigename angegeben", "Email" : "E-Mail", "Your email address" : "Deine E-Mail-Adresse", - "Fill in an email address to enable password recovery and receive notifications" : "Gib eine E-Mail-Adresse an, um eine Wiederherstellung des Passworts zu ermöglichen und Benachrichtigungen zu empfangen", "No email address set" : "Keine E-Mail-Adresse angegeben", "You are member of the following groups:" : "Du bist Mitglied folgender Gruppen:", - "Profile picture" : "Profilbild", - "Upload new" : "Neues hochladen", - "Select new from Files" : "Neues aus den Dateien wählen", - "Remove image" : "Bild entfernen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Entweder png oder jpg. Im Idealfall quadratisch, aber du kannst das Bild beschneiden. Es ist nicht erlaubt die Maximalgröße von 20 MB zu überschreiten.", - "Your avatar is provided by your original account." : "Dein Avatar wird von Deinem ursprünglichen Konto bereitgestellt.", - "Cancel" : "Abbrechen", - "Choose as profile image" : "Als Profilbild wählen", + "Password" : "Passwort", + "Unable to change your password" : "Passwort konnte nicht geändert werden", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung", + "Get the apps to sync your files" : "Lade die Apps zur Synchronisierung Deiner Daten herunter", + "Desktop client" : "Desktop-Client", + "Android app" : "Android-App", + "iOS app" : "iOS-App", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Du das Projekt unterstützen möchtest,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteilige Dich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">hilf mit, es bekannter zu machen</a>!", + "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "Common Name" : "Common Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", diff --git a/settings/l10n/de_AT.js b/settings/l10n/de_AT.js index d1584ae9451..aa10fd85eea 100644 --- a/settings/l10n/de_AT.js +++ b/settings/l10n/de_AT.js @@ -8,10 +8,10 @@ OC.L10N.register( "Server address" : "Adresse des Servers", "Port" : "Port", "by" : "von", + "Cancel" : "Abbrechen", + "Email" : "E-Mail", "Password" : "Passwort", "Change password" : "Passwort ändern", - "Email" : "E-Mail", - "Cancel" : "Abbrechen", "Username" : "Benutzername", "Other" : "Anderes" }, diff --git a/settings/l10n/de_AT.json b/settings/l10n/de_AT.json index 98ae6547481..18a98e7e784 100644 --- a/settings/l10n/de_AT.json +++ b/settings/l10n/de_AT.json @@ -6,10 +6,10 @@ "Server address" : "Adresse des Servers", "Port" : "Port", "by" : "von", + "Cancel" : "Abbrechen", + "Email" : "E-Mail", "Password" : "Passwort", "Change password" : "Passwort ändern", - "Email" : "E-Mail", - "Cancel" : "Abbrechen", "Username" : "Benutzername", "Other" : "Anderes" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index bb25af16451..1593e7cb5f3 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -105,8 +105,8 @@ OC.L10N.register( "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden", "__language_name__" : "Deutsch (Förmlich: Sie)", - "Sync clients" : "Sync-Clients", "Personal info" : "Persönliche Informationen", + "Sync clients" : "Sync-Clients", "SSL root certificates" : "SSL-Root-Zertifikate", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Fehlerdiagnose)", "Info, warnings, errors and fatal issues" : "Infos, Warnungen, Fehler und fatale Probleme", @@ -213,34 +213,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Issue Tracker", "Commercial support" : "Kommerzieller Support", - "Get the apps to sync your files" : "Installieren Sie die Anwendungen, um Ihre Dateien zu synchronisieren", - "Desktop client" : "Desktop-Client", - "Android app" : "Android-App", - "iOS app" : "iOS-App", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", - "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>", - "Password" : "Passwort", - "Unable to change your password" : "Das Passwort konnte nicht geändert werden", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Remove image" : "Bild entfernen", + "Cancel" : "Abbrechen", "Full name" : "Vollständiger Name", "No display name set" : "Kein Anzeigename angegeben", "Email" : "E-Mail", "Your email address" : "Ihre E-Mail-Adresse", - "Fill in an email address to enable password recovery and receive notifications" : "Geben Sie eine E-Mail-Adresse an, um eine Wiederherstellung des Passworts zu ermöglichen und Benachrichtigungen zu empfangen", "No email address set" : "Keine E-Mail-Adresse angegeben", "You are member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", - "Profile picture" : "Profilbild", - "Upload new" : "Neues hochladen", - "Select new from Files" : "Neues aus Dateien wählen", - "Remove image" : "Bild entfernen", - "Your avatar is provided by your original account." : "Ihr Avatar wird von Ihrem Ursprungskonto verwendet.", - "Cancel" : "Abbrechen", - "Choose as profile image" : "Als Profilbild wählen", + "Password" : "Passwort", + "Unable to change your password" : "Das Passwort konnte nicht geändert werden", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", + "Get the apps to sync your files" : "Installieren Sie die Anwendungen, um Ihre Dateien zu synchronisieren", + "Desktop client" : "Desktop-Client", + "Android app" : "Android-App", + "iOS app" : "iOS-App", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", + "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "Common Name" : "Common Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 503b76e4839..da00ef81627 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -103,8 +103,8 @@ "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden", "__language_name__" : "Deutsch (Förmlich: Sie)", - "Sync clients" : "Sync-Clients", "Personal info" : "Persönliche Informationen", + "Sync clients" : "Sync-Clients", "SSL root certificates" : "SSL-Root-Zertifikate", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale Probleme, Fehler, Warnungen, Infos, Fehlerdiagnose)", "Info, warnings, errors and fatal issues" : "Infos, Warnungen, Fehler und fatale Probleme", @@ -211,34 +211,29 @@ "Forum" : "Forum", "Issue tracker" : "Issue Tracker", "Commercial support" : "Kommerzieller Support", - "Get the apps to sync your files" : "Installieren Sie die Anwendungen, um Ihre Dateien zu synchronisieren", - "Desktop client" : "Desktop-Client", - "Android app" : "Android-App", - "iOS app" : "iOS-App", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", - "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Sie verwenden <strong>%s</strong> der verfügbaren <strong>%s</strong>", - "Password" : "Passwort", - "Unable to change your password" : "Das Passwort konnte nicht geändert werden", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", + "Profile picture" : "Profilbild", + "Upload new" : "Neues hochladen", + "Remove image" : "Bild entfernen", + "Cancel" : "Abbrechen", "Full name" : "Vollständiger Name", "No display name set" : "Kein Anzeigename angegeben", "Email" : "E-Mail", "Your email address" : "Ihre E-Mail-Adresse", - "Fill in an email address to enable password recovery and receive notifications" : "Geben Sie eine E-Mail-Adresse an, um eine Wiederherstellung des Passworts zu ermöglichen und Benachrichtigungen zu empfangen", "No email address set" : "Keine E-Mail-Adresse angegeben", "You are member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", - "Profile picture" : "Profilbild", - "Upload new" : "Neues hochladen", - "Select new from Files" : "Neues aus Dateien wählen", - "Remove image" : "Bild entfernen", - "Your avatar is provided by your original account." : "Ihr Avatar wird von Ihrem Ursprungskonto verwendet.", - "Cancel" : "Abbrechen", - "Choose as profile image" : "Als Profilbild wählen", + "Password" : "Passwort", + "Unable to change your password" : "Das Passwort konnte nicht geändert werden", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", + "Get the apps to sync your files" : "Installieren Sie die Anwendungen, um Ihre Dateien zu synchronisieren", + "Desktop client" : "Desktop-Client", + "Android app" : "Android-App", + "iOS app" : "iOS-App", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Wenn Sie das Projekt unterstützen möchten,\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\" rel=\"noreferrer\">beteiligen Sie sich an der Entwicklung</a>\noder\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\" rel=\"noreferrer\">helfen Sie mit, es bekannter zu machen</a>!", + "Show First Run Wizard again" : "Den Einrichtungsassistenten erneut anzeigen", "Common Name" : "Common Name", "Valid until" : "Gültig bis", "Issued By" : "Ausgestellt von:", diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 1c7212d2ecd..663fabeba11 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό", "A valid email must be provided" : "Πρέπει να εισαχθεί ένα έγκυρο email", "__language_name__" : "__όνομα_γλώσσας__", - "Sync clients" : "Συγχρονισμός πελατών", "Personal info" : "Προσωπικές Πληροφορίες", + "Sync clients" : "Συγχρονισμός πελατών", "SSL root certificates" : "Πιστοποιητικά SSL root", "Everything (fatal issues, errors, warnings, info, debug)" : "Όλα (καίρια ζητήματα, σφάλματα, προειδοποιήσεις, πληροφορίες, αποσφαλμάτωση)", "Info, warnings, errors and fatal issues" : "Πληροφορίες, προειδοποιήσεις, σφάλματα και καίρια ζητήματα", @@ -223,35 +223,29 @@ OC.L10N.register( "Forum" : "Φόρουμ", "Issue tracker" : "Ιχνηλάτης ζητημάτων", "Commercial support" : "Εμπορική Υποστήριξη", - "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", - "Desktop client" : "Πελάτης σταθερού υπολογιστή", - "Android app" : "Εφαρμογή Android", - "iOS app" : "Εφαρμογή iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Εάν θέλετε να υποστηρίξετε το έργο\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">συμμετέχετε στην ανάπτυξη</a>\n\t\tή\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">διαδόστε το μήνυμα</a>!", - "Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Χρησιμοποιήσατε <strong>%s</strong> από τα <strong>%s</strong> διαθέσιμα", - "Password" : "Συνθηματικό", - "Unable to change your password" : "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης", - "Current password" : "Τρέχων συνθηματικό", - "New password" : "Νέο συνθηματικό", - "Change password" : "Αλλαγή συνθηματικού", + "Profile picture" : "Φωτογραφία προφίλ", + "Upload new" : "Μεταφόρτωση νέου", + "Remove image" : "Αφαίρεση εικόνας", + "Cancel" : "Άκυρο", "Full name" : "Πλήρες όνομα", "No display name set" : "Δεν ορίστηκε όνομα", "Email" : "Ηλεκτρονικό ταχυδρομείο", "Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας", - "Fill in an email address to enable password recovery and receive notifications" : "Συμπληρώστε μια διεύθυνση email για να ενεργοποιήσετε την επαναφορά συνθηματικού και να λαμβάνετε ειδοποιήσεις", "No email address set" : "Δεν ορίστηκε διεύθυνση email", "You are member of the following groups:" : "Είστε μέλος των ακόλουθων ομάδων:", - "Profile picture" : "Φωτογραφία προφίλ", - "Upload new" : "Μεταφόρτωση νέου", - "Select new from Files" : "Επιλογή νέου από τα Αρχεία", - "Remove image" : "Αφαίρεση εικόνας", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Είτε png ή jpg. Ιδανικά τετράγωνη αλλά θα είστε σε θέση να την περικόψετε. Το αρχείο δεν θα πρέπει να υπερβαίνει το μέγιστο μέγεθος των 20 MB.", - "Your avatar is provided by your original account." : "Το άβατάρ σας παρέχεται από τον αρχικό σας λογαριασμό.", - "Cancel" : "Άκυρο", - "Choose as profile image" : "Επιλογή εικόνας προφίλ", + "Password" : "Συνθηματικό", + "Unable to change your password" : "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης", + "Current password" : "Τρέχων συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", + "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", + "Desktop client" : "Πελάτης σταθερού υπολογιστή", + "Android app" : "Εφαρμογή Android", + "iOS app" : "Εφαρμογή iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Εάν θέλετε να υποστηρίξετε το έργο\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">συμμετέχετε στην ανάπτυξη</a>\n\t\tή\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">διαδόστε το μήνυμα</a>!", + "Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά", "Common Name" : "Κοινό Όνομα", "Valid until" : "Έγκυρο έως", "Issued By" : "Έκδόθηκε από", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index e4d0876661a..59c6d96673a 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Πρέπει να δοθεί έγκυρο συνθηματικό", "A valid email must be provided" : "Πρέπει να εισαχθεί ένα έγκυρο email", "__language_name__" : "__όνομα_γλώσσας__", - "Sync clients" : "Συγχρονισμός πελατών", "Personal info" : "Προσωπικές Πληροφορίες", + "Sync clients" : "Συγχρονισμός πελατών", "SSL root certificates" : "Πιστοποιητικά SSL root", "Everything (fatal issues, errors, warnings, info, debug)" : "Όλα (καίρια ζητήματα, σφάλματα, προειδοποιήσεις, πληροφορίες, αποσφαλμάτωση)", "Info, warnings, errors and fatal issues" : "Πληροφορίες, προειδοποιήσεις, σφάλματα και καίρια ζητήματα", @@ -221,35 +221,29 @@ "Forum" : "Φόρουμ", "Issue tracker" : "Ιχνηλάτης ζητημάτων", "Commercial support" : "Εμπορική Υποστήριξη", - "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", - "Desktop client" : "Πελάτης σταθερού υπολογιστή", - "Android app" : "Εφαρμογή Android", - "iOS app" : "Εφαρμογή iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Εάν θέλετε να υποστηρίξετε το έργο\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">συμμετέχετε στην ανάπτυξη</a>\n\t\tή\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">διαδόστε το μήνυμα</a>!", - "Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Χρησιμοποιήσατε <strong>%s</strong> από τα <strong>%s</strong> διαθέσιμα", - "Password" : "Συνθηματικό", - "Unable to change your password" : "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης", - "Current password" : "Τρέχων συνθηματικό", - "New password" : "Νέο συνθηματικό", - "Change password" : "Αλλαγή συνθηματικού", + "Profile picture" : "Φωτογραφία προφίλ", + "Upload new" : "Μεταφόρτωση νέου", + "Remove image" : "Αφαίρεση εικόνας", + "Cancel" : "Άκυρο", "Full name" : "Πλήρες όνομα", "No display name set" : "Δεν ορίστηκε όνομα", "Email" : "Ηλεκτρονικό ταχυδρομείο", "Your email address" : "Η διεύθυνση ηλ. ταχυδρομείου σας", - "Fill in an email address to enable password recovery and receive notifications" : "Συμπληρώστε μια διεύθυνση email για να ενεργοποιήσετε την επαναφορά συνθηματικού και να λαμβάνετε ειδοποιήσεις", "No email address set" : "Δεν ορίστηκε διεύθυνση email", "You are member of the following groups:" : "Είστε μέλος των ακόλουθων ομάδων:", - "Profile picture" : "Φωτογραφία προφίλ", - "Upload new" : "Μεταφόρτωση νέου", - "Select new from Files" : "Επιλογή νέου από τα Αρχεία", - "Remove image" : "Αφαίρεση εικόνας", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Είτε png ή jpg. Ιδανικά τετράγωνη αλλά θα είστε σε θέση να την περικόψετε. Το αρχείο δεν θα πρέπει να υπερβαίνει το μέγιστο μέγεθος των 20 MB.", - "Your avatar is provided by your original account." : "Το άβατάρ σας παρέχεται από τον αρχικό σας λογαριασμό.", - "Cancel" : "Άκυρο", - "Choose as profile image" : "Επιλογή εικόνας προφίλ", + "Password" : "Συνθηματικό", + "Unable to change your password" : "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης", + "Current password" : "Τρέχων συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", + "Get the apps to sync your files" : "Λήψη της εφαρμογής για συγχρονισμό των αρχείων σας", + "Desktop client" : "Πελάτης σταθερού υπολογιστή", + "Android app" : "Εφαρμογή Android", + "iOS app" : "Εφαρμογή iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Εάν θέλετε να υποστηρίξετε το έργο\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">συμμετέχετε στην ανάπτυξη</a>\n\t\tή\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">διαδόστε το μήνυμα</a>!", + "Show First Run Wizard again" : "Προβολή Οδηγού Πρώτης Εκτέλεσης ξανά", "Common Name" : "Κοινό Όνομα", "Valid until" : "Έγκυρο έως", "Issued By" : "Έκδόθηκε από", diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index d79cc98dc07..1554a7398ce 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -98,8 +98,8 @@ OC.L10N.register( "A valid password must be provided" : "A valid password must be provided", "A valid email must be provided" : "A valid email must be provided", "__language_name__" : "English (British English)", - "Sync clients" : "Sync clients", "Personal info" : "Personal info", + "Sync clients" : "Sync clients", "SSL root certificates" : "SSL root certificates", "Everything (fatal issues, errors, warnings, info, debug)" : "Everything (fatal issues, errors, warnings, info, debug)", "Info, warnings, errors and fatal issues" : "Info, warnings, errors and fatal issues", @@ -202,34 +202,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Issue tracker", "Commercial support" : "Commercial support", - "Get the apps to sync your files" : "Get the apps to sync your files", - "Desktop client" : "Desktop client", - "Android app" : "Android app", - "iOS app" : "iOS app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!", - "Show First Run Wizard again" : "Show First Run Wizard again", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "You have used <strong>%s</strong> of the available <strong>%s</strong>", - "Password" : "Password", - "Unable to change your password" : "Unable to change your password", - "Current password" : "Current password", - "New password" : "New password", - "Change password" : "Change password", + "Profile picture" : "Profile picture", + "Upload new" : "Upload new", + "Remove image" : "Remove image", + "Cancel" : "Cancel", "Full name" : "Full name", "No display name set" : "No display name set", "Email" : "Email", "Your email address" : "Your email address", - "Fill in an email address to enable password recovery and receive notifications" : "Fill in an email address to enable password recovery and receive notifications", "No email address set" : "No email address set", "You are member of the following groups:" : "You are member of the following groups:", - "Profile picture" : "Profile picture", - "Upload new" : "Upload new", - "Select new from Files" : "Select new from Files", - "Remove image" : "Remove image", - "Your avatar is provided by your original account." : "Your avatar is provided by your original account.", - "Cancel" : "Cancel", - "Choose as profile image" : "Choose as profile image", + "Password" : "Password", + "Unable to change your password" : "Unable to change your password", + "Current password" : "Current password", + "New password" : "New password", + "Change password" : "Change password", "Language" : "Language", "Help translate" : "Help translate", + "Get the apps to sync your files" : "Get the apps to sync your files", + "Desktop client" : "Desktop client", + "Android app" : "Android app", + "iOS app" : "iOS app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!", + "Show First Run Wizard again" : "Show First Run Wizard again", "Common Name" : "Common Name", "Valid until" : "Valid until", "Issued By" : "Issued By", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index dcfbf01467f..26d181c79a7 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -96,8 +96,8 @@ "A valid password must be provided" : "A valid password must be provided", "A valid email must be provided" : "A valid email must be provided", "__language_name__" : "English (British English)", - "Sync clients" : "Sync clients", "Personal info" : "Personal info", + "Sync clients" : "Sync clients", "SSL root certificates" : "SSL root certificates", "Everything (fatal issues, errors, warnings, info, debug)" : "Everything (fatal issues, errors, warnings, info, debug)", "Info, warnings, errors and fatal issues" : "Info, warnings, errors and fatal issues", @@ -200,34 +200,29 @@ "Forum" : "Forum", "Issue tracker" : "Issue tracker", "Commercial support" : "Commercial support", - "Get the apps to sync your files" : "Get the apps to sync your files", - "Desktop client" : "Desktop client", - "Android app" : "Android app", - "iOS app" : "iOS app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!", - "Show First Run Wizard again" : "Show First Run Wizard again", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "You have used <strong>%s</strong> of the available <strong>%s</strong>", - "Password" : "Password", - "Unable to change your password" : "Unable to change your password", - "Current password" : "Current password", - "New password" : "New password", - "Change password" : "Change password", + "Profile picture" : "Profile picture", + "Upload new" : "Upload new", + "Remove image" : "Remove image", + "Cancel" : "Cancel", "Full name" : "Full name", "No display name set" : "No display name set", "Email" : "Email", "Your email address" : "Your email address", - "Fill in an email address to enable password recovery and receive notifications" : "Fill in an email address to enable password recovery and receive notifications", "No email address set" : "No email address set", "You are member of the following groups:" : "You are member of the following groups:", - "Profile picture" : "Profile picture", - "Upload new" : "Upload new", - "Select new from Files" : "Select new from Files", - "Remove image" : "Remove image", - "Your avatar is provided by your original account." : "Your avatar is provided by your original account.", - "Cancel" : "Cancel", - "Choose as profile image" : "Choose as profile image", + "Password" : "Password", + "Unable to change your password" : "Unable to change your password", + "Current password" : "Current password", + "New password" : "New password", + "Change password" : "Change password", "Language" : "Language", "Help translate" : "Help translate", + "Get the apps to sync your files" : "Get the apps to sync your files", + "Desktop client" : "Desktop client", + "Android app" : "Android app", + "iOS app" : "iOS app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!", + "Show First Run Wizard again" : "Show First Run Wizard again", "Common Name" : "Common Name", "Valid until" : "Valid until", "Issued By" : "Issued By", diff --git a/settings/l10n/eo.js b/settings/l10n/eo.js index 1f937b22aa3..b20acf08595 100644 --- a/settings/l10n/eo.js +++ b/settings/l10n/eo.js @@ -87,23 +87,20 @@ OC.L10N.register( "Enable only for specific groups" : "Kapabligi nur por specifajn grupojn", "Uninstall App" : "Malinstali aplikaĵon", "Forum" : "Forumo", - "Get the apps to sync your files" : "Ekhavu la aplikaĵojn por sinkronigi viajn dosierojn", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Vi uzas <strong>%s</strong> el la disponeblaj <strong>%s</strong>", + "Profile picture" : "Profila bildo", + "Upload new" : "Alŝuti novan", + "Remove image" : "Forigi bildon", + "Cancel" : "Nuligi", + "Email" : "Retpoŝto", + "Your email address" : "Via retpoŝta adreso", "Password" : "Pasvorto", "Unable to change your password" : "Ne eblis ŝanĝi vian pasvorton", "Current password" : "Nuna pasvorto", "New password" : "Nova pasvorto", "Change password" : "Ŝanĝi la pasvorton", - "Email" : "Retpoŝto", - "Your email address" : "Via retpoŝta adreso", - "Profile picture" : "Profila bildo", - "Upload new" : "Alŝuti novan", - "Select new from Files" : "Elekti novan el dosieroj", - "Remove image" : "Forigi bildon", - "Cancel" : "Nuligi", - "Choose as profile image" : "Elekti kiel profilan bildon", "Language" : "Lingvo", "Help translate" : "Helpu traduki", + "Get the apps to sync your files" : "Ekhavu la aplikaĵojn por sinkronigi viajn dosierojn", "Username" : "Uzantonomo", "Create" : "Krei", "Add Group" : "Aldoni grupon", diff --git a/settings/l10n/eo.json b/settings/l10n/eo.json index dad80fad168..b7269be2157 100644 --- a/settings/l10n/eo.json +++ b/settings/l10n/eo.json @@ -85,23 +85,20 @@ "Enable only for specific groups" : "Kapabligi nur por specifajn grupojn", "Uninstall App" : "Malinstali aplikaĵon", "Forum" : "Forumo", - "Get the apps to sync your files" : "Ekhavu la aplikaĵojn por sinkronigi viajn dosierojn", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Vi uzas <strong>%s</strong> el la disponeblaj <strong>%s</strong>", + "Profile picture" : "Profila bildo", + "Upload new" : "Alŝuti novan", + "Remove image" : "Forigi bildon", + "Cancel" : "Nuligi", + "Email" : "Retpoŝto", + "Your email address" : "Via retpoŝta adreso", "Password" : "Pasvorto", "Unable to change your password" : "Ne eblis ŝanĝi vian pasvorton", "Current password" : "Nuna pasvorto", "New password" : "Nova pasvorto", "Change password" : "Ŝanĝi la pasvorton", - "Email" : "Retpoŝto", - "Your email address" : "Via retpoŝta adreso", - "Profile picture" : "Profila bildo", - "Upload new" : "Alŝuti novan", - "Select new from Files" : "Elekti novan el dosieroj", - "Remove image" : "Forigi bildon", - "Cancel" : "Nuligi", - "Choose as profile image" : "Elekti kiel profilan bildon", "Language" : "Lingvo", "Help translate" : "Helpu traduki", + "Get the apps to sync your files" : "Ekhavu la aplikaĵojn por sinkronigi viajn dosierojn", "Username" : "Uzantonomo", "Create" : "Krei", "Add Group" : "Aldoni grupon", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index 27a87685f2e..14b3aae612e 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Se debe proporcionar una contraseña válida", "A valid email must be provided" : "Se debe brindar una dirección de correo electrónico válida ", "__language_name__" : "Castellano", - "Sync clients" : "Sincronizar clientes", "Personal info" : "Información personal", + "Sync clients" : "Sincronizar clientes", "SSL root certificates" : "Certificados raíz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (Información, Avisos, Errores, debug y problemas fatales)", "Info, warnings, errors and fatal issues" : "Información, Avisos, Errores y problemas fatales", @@ -220,35 +220,29 @@ OC.L10N.register( "Forum" : "Foro", "Issue tracker" : "Seguidor de problemas:", "Commercial support" : "Soporte Comercial", - "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", - "Desktop client" : "Cliente de escritorio", - "Android app" : "Aplicación de Android", - "iOS app" : "La aplicación de iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si quiere colaborar con el proyecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">participe en el desarrollo</a>\n\t\to\n\t\t¡<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">difúndalo</a>!", - "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ha usado <strong>%s</strong> de los <strong>%s</strong> disponibles", - "Password" : "Contraseña", - "Unable to change your password" : "No se ha podido cambiar su contraseña", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Remove image" : "Borrar imagen", + "Cancel" : "Cancelar", "Full name" : "Nombre completo", "No display name set" : "No se ha establecido ningún nombre para mostrar", "Email" : "Correo electrónico", "Your email address" : "Su dirección de correo", - "Fill in an email address to enable password recovery and receive notifications" : "Introducir una dirección de correo electrónico para activar la recuperación de contraseñas y recibir notificaciones", "No email address set" : "Ninguna dirección de correo establecida", "You are member of the following groups:" : "Es miembro de los siguientes grupos:", - "Profile picture" : "Foto de perfil", - "Upload new" : "Subir otra", - "Select new from Files" : "Seleccionar otra desde Archivos", - "Remove image" : "Borrar imagen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Sea en png o jpg. Preferiblemente que su forma sea cuadrada, pero tendrá la posibilidad de recortarlo. El archivo no puede exceder los 20 MB.", - "Your avatar is provided by your original account." : "Su avatar es proporcionado por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Seleccionar como imagen de perfil", + "Password" : "Contraseña", + "Unable to change your password" : "No se ha podido cambiar su contraseña", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", + "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación de Android", + "iOS app" : "La aplicación de iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si quiere colaborar con el proyecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">participe en el desarrollo</a>\n\t\to\n\t\t¡<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">difúndalo</a>!", + "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", "Common Name" : "Nombre común", "Valid until" : "Válido hasta", "Issued By" : "Emitido por", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index 1213c099622..28304f4ca2e 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Se debe proporcionar una contraseña válida", "A valid email must be provided" : "Se debe brindar una dirección de correo electrónico válida ", "__language_name__" : "Castellano", - "Sync clients" : "Sincronizar clientes", "Personal info" : "Información personal", + "Sync clients" : "Sincronizar clientes", "SSL root certificates" : "Certificados raíz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (Información, Avisos, Errores, debug y problemas fatales)", "Info, warnings, errors and fatal issues" : "Información, Avisos, Errores y problemas fatales", @@ -218,35 +218,29 @@ "Forum" : "Foro", "Issue tracker" : "Seguidor de problemas:", "Commercial support" : "Soporte Comercial", - "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", - "Desktop client" : "Cliente de escritorio", - "Android app" : "Aplicación de Android", - "iOS app" : "La aplicación de iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si quiere colaborar con el proyecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">participe en el desarrollo</a>\n\t\to\n\t\t¡<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">difúndalo</a>!", - "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ha usado <strong>%s</strong> de los <strong>%s</strong> disponibles", - "Password" : "Contraseña", - "Unable to change your password" : "No se ha podido cambiar su contraseña", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Remove image" : "Borrar imagen", + "Cancel" : "Cancelar", "Full name" : "Nombre completo", "No display name set" : "No se ha establecido ningún nombre para mostrar", "Email" : "Correo electrónico", "Your email address" : "Su dirección de correo", - "Fill in an email address to enable password recovery and receive notifications" : "Introducir una dirección de correo electrónico para activar la recuperación de contraseñas y recibir notificaciones", "No email address set" : "Ninguna dirección de correo establecida", "You are member of the following groups:" : "Es miembro de los siguientes grupos:", - "Profile picture" : "Foto de perfil", - "Upload new" : "Subir otra", - "Select new from Files" : "Seleccionar otra desde Archivos", - "Remove image" : "Borrar imagen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Sea en png o jpg. Preferiblemente que su forma sea cuadrada, pero tendrá la posibilidad de recortarlo. El archivo no puede exceder los 20 MB.", - "Your avatar is provided by your original account." : "Su avatar es proporcionado por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Seleccionar como imagen de perfil", + "Password" : "Contraseña", + "Unable to change your password" : "No se ha podido cambiar su contraseña", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", + "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación de Android", + "iOS app" : "La aplicación de iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si quiere colaborar con el proyecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">participe en el desarrollo</a>\n\t\to\n\t\t¡<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">difúndalo</a>!", + "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", "Common Name" : "Nombre común", "Valid until" : "Válido hasta", "Issued By" : "Emitido por", diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js index ed34e871e83..50a1ce3a088 100644 --- a/settings/l10n/es_AR.js +++ b/settings/l10n/es_AR.js @@ -93,29 +93,24 @@ OC.L10N.register( "Documentation:" : "Documentación:", "Cheers!" : "¡Saludos!", "Forum" : "Foro", - "Get the apps to sync your files" : "Obtené Apps para sincronizar tus archivos", - "Desktop client" : "Cliente de escritorio", - "Android app" : "App para Android", - "iOS app" : "App para iOS", - "Show First Run Wizard again" : "Mostrar de nuevo el asistente de primera ejecución", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usás <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Imágen de perfil", + "Upload new" : "Subir nuevo", + "Remove image" : "Remover imagen", + "Cancel" : "Cancelar", + "Email" : "e-mail", + "Your email address" : "Tu dirección de e-mail", "Password" : "Contraseña", "Unable to change your password" : "No fue posible cambiar tu contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña:", "Change password" : "Cambiar contraseña", - "Email" : "e-mail", - "Your email address" : "Tu dirección de e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Rellene una direccion de correo para habilitar la recuperacion de contraseña y recibir notificaciones. ", - "Profile picture" : "Imágen de perfil", - "Upload new" : "Subir nuevo", - "Select new from Files" : "Seleccionar nuevo desde archivos", - "Remove image" : "Remover imagen", - "Your avatar is provided by your original account." : "Su avatar es proveído por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Elegir como imagen de perfil", "Language" : "Idioma", "Help translate" : "Ayudanos a traducir", + "Get the apps to sync your files" : "Obtené Apps para sincronizar tus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "App para Android", + "iOS app" : "App para iOS", + "Show First Run Wizard again" : "Mostrar de nuevo el asistente de primera ejecución", "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de contraseña de administrador", diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json index f337de3b801..27c645a0a28 100644 --- a/settings/l10n/es_AR.json +++ b/settings/l10n/es_AR.json @@ -91,29 +91,24 @@ "Documentation:" : "Documentación:", "Cheers!" : "¡Saludos!", "Forum" : "Foro", - "Get the apps to sync your files" : "Obtené Apps para sincronizar tus archivos", - "Desktop client" : "Cliente de escritorio", - "Android app" : "App para Android", - "iOS app" : "App para iOS", - "Show First Run Wizard again" : "Mostrar de nuevo el asistente de primera ejecución", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usás <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Imágen de perfil", + "Upload new" : "Subir nuevo", + "Remove image" : "Remover imagen", + "Cancel" : "Cancelar", + "Email" : "e-mail", + "Your email address" : "Tu dirección de e-mail", "Password" : "Contraseña", "Unable to change your password" : "No fue posible cambiar tu contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña:", "Change password" : "Cambiar contraseña", - "Email" : "e-mail", - "Your email address" : "Tu dirección de e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Rellene una direccion de correo para habilitar la recuperacion de contraseña y recibir notificaciones. ", - "Profile picture" : "Imágen de perfil", - "Upload new" : "Subir nuevo", - "Select new from Files" : "Seleccionar nuevo desde archivos", - "Remove image" : "Remover imagen", - "Your avatar is provided by your original account." : "Su avatar es proveído por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Elegir como imagen de perfil", "Language" : "Idioma", "Help translate" : "Ayudanos a traducir", + "Get the apps to sync your files" : "Obtené Apps para sincronizar tus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "App para Android", + "iOS app" : "App para iOS", + "Show First Run Wizard again" : "Mostrar de nuevo el asistente de primera ejecución", "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de contraseña de administrador", diff --git a/settings/l10n/es_CL.js b/settings/l10n/es_CL.js index b51f930e83a..690d3e3dcd3 100644 --- a/settings/l10n/es_CL.js +++ b/settings/l10n/es_CL.js @@ -1,8 +1,8 @@ OC.L10N.register( "settings", { - "Password" : "Clave", "Cancel" : "Cancelar", + "Password" : "Clave", "Username" : "Usuario" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/es_CL.json b/settings/l10n/es_CL.json index 981c7eeb897..79f9fcc3236 100644 --- a/settings/l10n/es_CL.json +++ b/settings/l10n/es_CL.json @@ -1,6 +1,6 @@ { "translations": { - "Password" : "Clave", "Cancel" : "Cancelar", + "Password" : "Clave", "Username" : "Usuario" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js index 1b3a2ffff59..2707bc09449 100644 --- a/settings/l10n/es_MX.js +++ b/settings/l10n/es_MX.js @@ -68,25 +68,21 @@ OC.L10N.register( "by" : "por", "Cheers!" : "¡Saludos!", "Forum" : "Foro", - "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", - "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ha usado <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Remove image" : "Borrar imagen", + "Cancel" : "Cancelar", + "Email" : "Correo electrónico", + "Your email address" : "Su dirección de correo", "Password" : "Contraseña", "Unable to change your password" : "No se ha podido cambiar su contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña", "Change password" : "Cambiar contraseña", - "Email" : "Correo electrónico", - "Your email address" : "Su dirección de correo", - "Profile picture" : "Foto de perfil", - "Upload new" : "Subir otra", - "Select new from Files" : "Seleccionar otra desde Archivos", - "Remove image" : "Borrar imagen", - "Your avatar is provided by your original account." : "Su avatar es proporcionado por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Seleccionar como imagen de perfil", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", + "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json index d7a6527f4f7..a9d2f6bc15d 100644 --- a/settings/l10n/es_MX.json +++ b/settings/l10n/es_MX.json @@ -66,25 +66,21 @@ "by" : "por", "Cheers!" : "¡Saludos!", "Forum" : "Foro", - "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", - "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ha usado <strong>%s</strong> de los <strong>%s</strong> disponibles", + "Profile picture" : "Foto de perfil", + "Upload new" : "Subir otra", + "Remove image" : "Borrar imagen", + "Cancel" : "Cancelar", + "Email" : "Correo electrónico", + "Your email address" : "Su dirección de correo", "Password" : "Contraseña", "Unable to change your password" : "No se ha podido cambiar su contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña", "Change password" : "Cambiar contraseña", - "Email" : "Correo electrónico", - "Your email address" : "Su dirección de correo", - "Profile picture" : "Foto de perfil", - "Upload new" : "Subir otra", - "Select new from Files" : "Seleccionar otra desde Archivos", - "Remove image" : "Borrar imagen", - "Your avatar is provided by your original account." : "Su avatar es proporcionado por su cuenta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Seleccionar como imagen de perfil", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", + "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", diff --git a/settings/l10n/et_EE.js b/settings/l10n/et_EE.js index a9e616b0d82..4f6f938fdf7 100644 --- a/settings/l10n/et_EE.js +++ b/settings/l10n/et_EE.js @@ -48,6 +48,7 @@ OC.L10N.register( "Unable to change full name" : "Täispika nime muutmine ebaõnnestus", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Oled sa kindel, et soovid lisada domeeni \"{domain}\" usaldusväärseks domeeniks?", "Add trusted domain" : "Lis ausaldusväärne domeen", + "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Sending..." : "Saadan...", "Official" : "Ametlik", @@ -67,6 +68,7 @@ OC.L10N.register( "Uninstalling ...." : "Eemaldan...", "Error while uninstalling app" : "Viga rakendi eemaldamisel", "Uninstall" : "Eemalda", + "App update" : "Rakenduse uuendus", "Select a profile picture" : "Vali profiili pilt", "Very weak password" : "Väga nõrk parool", "Weak password" : "Nõrk parool", @@ -90,8 +92,8 @@ OC.L10N.register( "A valid password must be provided" : "Sisesta nõuetele vastav parool", "A valid email must be provided" : "Sisesta kehtiv e-posti aadress", "__language_name__" : "Eesti", - "Sync clients" : "Klientide sünkroniseerimine", "Personal info" : "Isiklik info", + "Sync clients" : "Klientide sünkroniseerimine", "SSL root certificates" : "SSL root sertifikaadid", "Everything (fatal issues, errors, warnings, info, debug)" : "Kõik (tõsised probleemid, veateated, hoiatused, info, veatuvastus)", "Info, warnings, errors and fatal issues" : "Info, hoiatused, veateted ja tõsised probleemid", @@ -153,6 +155,7 @@ OC.L10N.register( "More" : "Rohkem", "Less" : "Vähem", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Logifail on suurem kui 100 MB. Allalaadimine võib veidi aega võtta!", + "What to log" : "Mida logisse sisse kanda", "How to do backups" : "Kuidas teha varukoopiaid", "Advanced monitoring" : "Lisavalikutega jälgimine", "Performance tuning" : "Kiiruse seadistamine", @@ -177,32 +180,28 @@ OC.L10N.register( "Forum" : "Foorum", "Issue tracker" : "Probleemide jälgija", "Commercial support" : "Tasuline kasutajatugi", - "Get the apps to sync your files" : "Hangi rakendusi failide sünkroniseerimiseks", - "Desktop client" : "Töölaua klient", - "Android app" : "Androidi rakendus", - "iOS app" : "iOS-i rakendus", - "Show First Run Wizard again" : "Näita veelkord Esmase Käivituse Juhendajat", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Kasutad <strong>%s</strong> saadavalolevast <strong>%s</strong>", - "Password" : "Parool", - "Unable to change your password" : "Sa ei saa oma parooli muuta", - "Current password" : "Praegune parool", - "New password" : "Uus parool", - "Change password" : "Muuda parooli", + "Profile picture" : "Profiili pilt", + "Upload new" : "Laadi uus üles", + "Remove image" : "Eemalda pilt", + "Cancel" : "Loobu", "Full name" : "Täielik nimi", "No display name set" : "Näidatavat nime pole veel määratud", "Email" : "E-post", "Your email address" : "Sinu e-posti aadress", - "Fill in an email address to enable password recovery and receive notifications" : "Täida e-posti aadress võimaldamaks parooli taastamist ning teadete saamist.", "No email address set" : "E-posti aadressi pole veel määratud", - "Profile picture" : "Profiili pilt", - "Upload new" : "Laadi uus üles", - "Select new from Files" : "Vali failidest uus", - "Remove image" : "Eemalda pilt", - "Your avatar is provided by your original account." : "Sinu avatari pakub sinu algne konto.", - "Cancel" : "Loobu", - "Choose as profile image" : "Vali profiilipildiks", + "You are member of the following groups:" : "Sa oled nende gruppide liige:", + "Password" : "Parool", + "Unable to change your password" : "Sa ei saa oma parooli muuta", + "Current password" : "Praegune parool", + "New password" : "Uus parool", + "Change password" : "Muuda parooli", "Language" : "Keel", "Help translate" : "Aita tõlkida", + "Get the apps to sync your files" : "Hangi rakendusi failide sünkroniseerimiseks", + "Desktop client" : "Töölaua klient", + "Android app" : "Androidi rakendus", + "iOS app" : "iOS-i rakendus", + "Show First Run Wizard again" : "Näita veelkord Esmase Käivituse Juhendajat", "Common Name" : "Üldnimetus", "Valid until" : "Kehtib kuni", "Issued By" : "isas", @@ -229,6 +228,7 @@ OC.L10N.register( "Group Admin for" : "Grupi admin", "Quota" : "Mahupiir", "Storage Location" : "Mahu asukoht", + "User Backend" : "Kasutaja taustarakendus", "Last Login" : "Viimane sisselogimine", "change full name" : "Muuda täispikka nime", "set new password" : "määra uus parool", diff --git a/settings/l10n/et_EE.json b/settings/l10n/et_EE.json index 019fc765586..88e8f6cf58a 100644 --- a/settings/l10n/et_EE.json +++ b/settings/l10n/et_EE.json @@ -46,6 +46,7 @@ "Unable to change full name" : "Täispika nime muutmine ebaõnnestus", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Oled sa kindel, et soovid lisada domeeni \"{domain}\" usaldusväärseks domeeniks?", "Add trusted domain" : "Lis ausaldusväärne domeen", + "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Sending..." : "Saadan...", "Official" : "Ametlik", @@ -65,6 +66,7 @@ "Uninstalling ...." : "Eemaldan...", "Error while uninstalling app" : "Viga rakendi eemaldamisel", "Uninstall" : "Eemalda", + "App update" : "Rakenduse uuendus", "Select a profile picture" : "Vali profiili pilt", "Very weak password" : "Väga nõrk parool", "Weak password" : "Nõrk parool", @@ -88,8 +90,8 @@ "A valid password must be provided" : "Sisesta nõuetele vastav parool", "A valid email must be provided" : "Sisesta kehtiv e-posti aadress", "__language_name__" : "Eesti", - "Sync clients" : "Klientide sünkroniseerimine", "Personal info" : "Isiklik info", + "Sync clients" : "Klientide sünkroniseerimine", "SSL root certificates" : "SSL root sertifikaadid", "Everything (fatal issues, errors, warnings, info, debug)" : "Kõik (tõsised probleemid, veateated, hoiatused, info, veatuvastus)", "Info, warnings, errors and fatal issues" : "Info, hoiatused, veateted ja tõsised probleemid", @@ -151,6 +153,7 @@ "More" : "Rohkem", "Less" : "Vähem", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Logifail on suurem kui 100 MB. Allalaadimine võib veidi aega võtta!", + "What to log" : "Mida logisse sisse kanda", "How to do backups" : "Kuidas teha varukoopiaid", "Advanced monitoring" : "Lisavalikutega jälgimine", "Performance tuning" : "Kiiruse seadistamine", @@ -175,32 +178,28 @@ "Forum" : "Foorum", "Issue tracker" : "Probleemide jälgija", "Commercial support" : "Tasuline kasutajatugi", - "Get the apps to sync your files" : "Hangi rakendusi failide sünkroniseerimiseks", - "Desktop client" : "Töölaua klient", - "Android app" : "Androidi rakendus", - "iOS app" : "iOS-i rakendus", - "Show First Run Wizard again" : "Näita veelkord Esmase Käivituse Juhendajat", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Kasutad <strong>%s</strong> saadavalolevast <strong>%s</strong>", - "Password" : "Parool", - "Unable to change your password" : "Sa ei saa oma parooli muuta", - "Current password" : "Praegune parool", - "New password" : "Uus parool", - "Change password" : "Muuda parooli", + "Profile picture" : "Profiili pilt", + "Upload new" : "Laadi uus üles", + "Remove image" : "Eemalda pilt", + "Cancel" : "Loobu", "Full name" : "Täielik nimi", "No display name set" : "Näidatavat nime pole veel määratud", "Email" : "E-post", "Your email address" : "Sinu e-posti aadress", - "Fill in an email address to enable password recovery and receive notifications" : "Täida e-posti aadress võimaldamaks parooli taastamist ning teadete saamist.", "No email address set" : "E-posti aadressi pole veel määratud", - "Profile picture" : "Profiili pilt", - "Upload new" : "Laadi uus üles", - "Select new from Files" : "Vali failidest uus", - "Remove image" : "Eemalda pilt", - "Your avatar is provided by your original account." : "Sinu avatari pakub sinu algne konto.", - "Cancel" : "Loobu", - "Choose as profile image" : "Vali profiilipildiks", + "You are member of the following groups:" : "Sa oled nende gruppide liige:", + "Password" : "Parool", + "Unable to change your password" : "Sa ei saa oma parooli muuta", + "Current password" : "Praegune parool", + "New password" : "Uus parool", + "Change password" : "Muuda parooli", "Language" : "Keel", "Help translate" : "Aita tõlkida", + "Get the apps to sync your files" : "Hangi rakendusi failide sünkroniseerimiseks", + "Desktop client" : "Töölaua klient", + "Android app" : "Androidi rakendus", + "iOS app" : "iOS-i rakendus", + "Show First Run Wizard again" : "Näita veelkord Esmase Käivituse Juhendajat", "Common Name" : "Üldnimetus", "Valid until" : "Kehtib kuni", "Issued By" : "isas", @@ -227,6 +226,7 @@ "Group Admin for" : "Grupi admin", "Quota" : "Mahupiir", "Storage Location" : "Mahu asukoht", + "User Backend" : "Kasutaja taustarakendus", "Last Login" : "Viimane sisselogimine", "change full name" : "Muuda täispikka nime", "set new password" : "määra uus parool", diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js index f22c7d6e654..4d77ef9a5c4 100644 --- a/settings/l10n/eu.js +++ b/settings/l10n/eu.js @@ -148,31 +148,26 @@ OC.L10N.register( "Cheers!" : "Ongi izan!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\norain %s kontu bat duzula esateko besterik ez.\n\nZure erabiltzailea: %s\nSar zaitez: %s\n\n", "Forum" : "Foroa", - "Get the apps to sync your files" : "Lortu aplikazioak zure fitxategiak sinkronizatzeko", - "Desktop client" : "Mahaigaineko bezeroa", - "Android app" : "Android aplikazioa", - "iOS app" : "iOS aplikazioa", - "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Dagoeneko <strong>%s</strong> erabili duzu eskuragarri duzun <strong>%s</strong>etatik", + "Profile picture" : "Profilaren irudia", + "Upload new" : "Igo berria", + "Remove image" : "Irudia ezabatu", + "Cancel" : "Ezeztatu", + "No display name set" : "Ez da bistaratze izena ezarri", + "Email" : "E-posta", + "Your email address" : "Zure e-posta", + "No email address set" : "Ez da eposta helbidea ezarri", "Password" : "Pasahitza", "Unable to change your password" : "Ezin izan da zure pasahitza aldatu", "Current password" : "Uneko pasahitza", "New password" : "Pasahitz berria", "Change password" : "Aldatu pasahitza", - "No display name set" : "Ez da bistaratze izena ezarri", - "Email" : "E-posta", - "Your email address" : "Zure e-posta", - "Fill in an email address to enable password recovery and receive notifications" : "Bete ezazu eposta helbide bat pasahitza berreskuratzeko eta jakinarazpenak jasotzeko", - "No email address set" : "Ez da eposta helbidea ezarri", - "Profile picture" : "Profilaren irudia", - "Upload new" : "Igo berria", - "Select new from Files" : "Hautatu berria Fitxategietatik", - "Remove image" : "Irudia ezabatu", - "Your avatar is provided by your original account." : "Zure jatorrizko kontuak ezarri du zure avatar.", - "Cancel" : "Ezeztatu", - "Choose as profile image" : "Profil irudi bezala aukeratu", "Language" : "Hizkuntza", "Help translate" : "Lagundu itzultzen", + "Get the apps to sync your files" : "Lortu aplikazioak zure fitxategiak sinkronizatzeko", + "Desktop client" : "Mahaigaineko bezeroa", + "Android app" : "Android aplikazioa", + "iOS app" : "iOS aplikazioa", + "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", "Common Name" : "Izen arrunta", "Valid until" : "Data hau arte baliogarria", "Issued By" : "Honek bidalita", diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json index f3387446a85..9a1048e4734 100644 --- a/settings/l10n/eu.json +++ b/settings/l10n/eu.json @@ -146,31 +146,26 @@ "Cheers!" : "Ongi izan!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\norain %s kontu bat duzula esateko besterik ez.\n\nZure erabiltzailea: %s\nSar zaitez: %s\n\n", "Forum" : "Foroa", - "Get the apps to sync your files" : "Lortu aplikazioak zure fitxategiak sinkronizatzeko", - "Desktop client" : "Mahaigaineko bezeroa", - "Android app" : "Android aplikazioa", - "iOS app" : "iOS aplikazioa", - "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Dagoeneko <strong>%s</strong> erabili duzu eskuragarri duzun <strong>%s</strong>etatik", + "Profile picture" : "Profilaren irudia", + "Upload new" : "Igo berria", + "Remove image" : "Irudia ezabatu", + "Cancel" : "Ezeztatu", + "No display name set" : "Ez da bistaratze izena ezarri", + "Email" : "E-posta", + "Your email address" : "Zure e-posta", + "No email address set" : "Ez da eposta helbidea ezarri", "Password" : "Pasahitza", "Unable to change your password" : "Ezin izan da zure pasahitza aldatu", "Current password" : "Uneko pasahitza", "New password" : "Pasahitz berria", "Change password" : "Aldatu pasahitza", - "No display name set" : "Ez da bistaratze izena ezarri", - "Email" : "E-posta", - "Your email address" : "Zure e-posta", - "Fill in an email address to enable password recovery and receive notifications" : "Bete ezazu eposta helbide bat pasahitza berreskuratzeko eta jakinarazpenak jasotzeko", - "No email address set" : "Ez da eposta helbidea ezarri", - "Profile picture" : "Profilaren irudia", - "Upload new" : "Igo berria", - "Select new from Files" : "Hautatu berria Fitxategietatik", - "Remove image" : "Irudia ezabatu", - "Your avatar is provided by your original account." : "Zure jatorrizko kontuak ezarri du zure avatar.", - "Cancel" : "Ezeztatu", - "Choose as profile image" : "Profil irudi bezala aukeratu", "Language" : "Hizkuntza", "Help translate" : "Lagundu itzultzen", + "Get the apps to sync your files" : "Lortu aplikazioak zure fitxategiak sinkronizatzeko", + "Desktop client" : "Mahaigaineko bezeroa", + "Android app" : "Android aplikazioa", + "iOS app" : "iOS aplikazioa", + "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", "Common Name" : "Izen arrunta", "Valid until" : "Data hau arte baliogarria", "Issued By" : "Honek bidalita", diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js index 4ab82f8551c..afd972bde7f 100644 --- a/settings/l10n/fa.js +++ b/settings/l10n/fa.js @@ -91,8 +91,8 @@ OC.L10N.register( "A valid password must be provided" : "رمز عبور صحیح باید وارد شود", "A valid email must be provided" : "یک ایمیل معتبر باید وارد شود", "__language_name__" : "__language_name__", - "Sync clients" : "همگامسازی مشتریان", "Personal info" : "مشخصات شخصی", + "Sync clients" : "همگامسازی مشتریان", "SSL root certificates" : "گواهی های اصلی SSL ", "Everything (fatal issues, errors, warnings, info, debug)" : "همه موارد (مشکلات مهلک، خطاها، اخطارها، اطلاعات، خطایابی)", "Info, warnings, errors and fatal issues" : "اطلاعات، اخطارها، خطاها، مشکلات اساسی", @@ -170,33 +170,28 @@ OC.L10N.register( "Online documentation" : "مستندات آنلاین", "Forum" : "انجمن", "Commercial support" : "پشتیبانی تجاری", - "Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید", - "Desktop client" : "نرم افزار دسکتاپ", - "Android app" : "اپ اندروید", - "iOS app" : "اپ iOS", - "Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "شما استفاده کردید از <strong>%s</strong> از میزان در دسترس <strong>%s</strong>", - "Password" : "گذرواژه", - "Unable to change your password" : "ناتوان در تغییر گذرواژه", - "Current password" : "گذرواژه کنونی", - "New password" : "گذرواژه جدید", - "Change password" : "تغییر گذر واژه", + "Profile picture" : "تصویر پروفایل", + "Upload new" : "بارگذاری جدید", + "Remove image" : "تصویر پاک شود", + "Cancel" : "منصرف شدن", "Full name" : "نام کامل", "No display name set" : "هیچ نام نمایشی تعیین نشده است", "Email" : "ایمیل", "Your email address" : "پست الکترونیکی شما", - "Fill in an email address to enable password recovery and receive notifications" : "فیلد آدرس ایمیل را به منظور فعالسازی بازیابی رمزعبور در دریافت نوتیفیکیشها پر کنید", "No email address set" : "آدرسایمیلی تنظیم نشده است", "You are member of the following groups:" : "شما عضو این گروهها هستید:", - "Profile picture" : "تصویر پروفایل", - "Upload new" : "بارگذاری جدید", - "Select new from Files" : "انتخاب جدید از میان فایل ها", - "Remove image" : "تصویر پاک شود", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "فایل pnd یا jpg. در حالت ایدهآل بصورت مربع و یا شما میتوانید آنرا برش بزنید. حجم فایل نمیتواند از حداکثر سایز 20MB بیشتر باشد.", - "Cancel" : "منصرف شدن", - "Choose as profile image" : "یک تصویر پروفایل انتخاب کنید", + "Password" : "گذرواژه", + "Unable to change your password" : "ناتوان در تغییر گذرواژه", + "Current password" : "گذرواژه کنونی", + "New password" : "گذرواژه جدید", + "Change password" : "تغییر گذر واژه", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", + "Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید", + "Desktop client" : "نرم افزار دسکتاپ", + "Android app" : "اپ اندروید", + "iOS app" : "اپ iOS", + "Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده", "Common Name" : "نام مشترک", "Valid until" : "متعبر تا", "Issued By" : "صدور توسط", diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json index 208bff21057..a45eed20cd9 100644 --- a/settings/l10n/fa.json +++ b/settings/l10n/fa.json @@ -89,8 +89,8 @@ "A valid password must be provided" : "رمز عبور صحیح باید وارد شود", "A valid email must be provided" : "یک ایمیل معتبر باید وارد شود", "__language_name__" : "__language_name__", - "Sync clients" : "همگامسازی مشتریان", "Personal info" : "مشخصات شخصی", + "Sync clients" : "همگامسازی مشتریان", "SSL root certificates" : "گواهی های اصلی SSL ", "Everything (fatal issues, errors, warnings, info, debug)" : "همه موارد (مشکلات مهلک، خطاها، اخطارها، اطلاعات، خطایابی)", "Info, warnings, errors and fatal issues" : "اطلاعات، اخطارها، خطاها، مشکلات اساسی", @@ -168,33 +168,28 @@ "Online documentation" : "مستندات آنلاین", "Forum" : "انجمن", "Commercial support" : "پشتیبانی تجاری", - "Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید", - "Desktop client" : "نرم افزار دسکتاپ", - "Android app" : "اپ اندروید", - "iOS app" : "اپ iOS", - "Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "شما استفاده کردید از <strong>%s</strong> از میزان در دسترس <strong>%s</strong>", - "Password" : "گذرواژه", - "Unable to change your password" : "ناتوان در تغییر گذرواژه", - "Current password" : "گذرواژه کنونی", - "New password" : "گذرواژه جدید", - "Change password" : "تغییر گذر واژه", + "Profile picture" : "تصویر پروفایل", + "Upload new" : "بارگذاری جدید", + "Remove image" : "تصویر پاک شود", + "Cancel" : "منصرف شدن", "Full name" : "نام کامل", "No display name set" : "هیچ نام نمایشی تعیین نشده است", "Email" : "ایمیل", "Your email address" : "پست الکترونیکی شما", - "Fill in an email address to enable password recovery and receive notifications" : "فیلد آدرس ایمیل را به منظور فعالسازی بازیابی رمزعبور در دریافت نوتیفیکیشها پر کنید", "No email address set" : "آدرسایمیلی تنظیم نشده است", "You are member of the following groups:" : "شما عضو این گروهها هستید:", - "Profile picture" : "تصویر پروفایل", - "Upload new" : "بارگذاری جدید", - "Select new from Files" : "انتخاب جدید از میان فایل ها", - "Remove image" : "تصویر پاک شود", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "فایل pnd یا jpg. در حالت ایدهآل بصورت مربع و یا شما میتوانید آنرا برش بزنید. حجم فایل نمیتواند از حداکثر سایز 20MB بیشتر باشد.", - "Cancel" : "منصرف شدن", - "Choose as profile image" : "یک تصویر پروفایل انتخاب کنید", + "Password" : "گذرواژه", + "Unable to change your password" : "ناتوان در تغییر گذرواژه", + "Current password" : "گذرواژه کنونی", + "New password" : "گذرواژه جدید", + "Change password" : "تغییر گذر واژه", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", + "Get the apps to sync your files" : "برنامه ها را دریافت کنید تا فایل هایتان را همگام سازید", + "Desktop client" : "نرم افزار دسکتاپ", + "Android app" : "اپ اندروید", + "iOS app" : "اپ iOS", + "Show First Run Wizard again" : "راهبری کمکی اجرای اول را دوباره نمایش بده", "Common Name" : "نام مشترک", "Valid until" : "متعبر تا", "Issued By" : "صدور توسط", diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js index 7f4889bb487..8191a6d9ed9 100644 --- a/settings/l10n/fi_FI.js +++ b/settings/l10n/fi_FI.js @@ -106,8 +106,8 @@ OC.L10N.register( "A valid password must be provided" : "Anna kelvollinen salasana", "A valid email must be provided" : "Tarvitaan kelvollinen sähköpostiosoite", "__language_name__" : "_kielen_nimi_", - "Sync clients" : "Synkronointisovellukset", "Personal info" : "Henkilökohtaiset tiedot", + "Sync clients" : "Synkronointisovellukset", "SSL root certificates" : "SSL-juurivarmenteet", "Everything (fatal issues, errors, warnings, info, debug)" : "Kaikki (vakavat ongelmat, virheet, varoitukset, tiedot, vianjäljitys)", "Info, warnings, errors and fatal issues" : "Tiedot, varoitukset, virheet ja vakavat ongelmat", @@ -215,35 +215,30 @@ OC.L10N.register( "Forum" : "Keskustelupalsta", "Issue tracker" : "Ongelmien seuranta", "Commercial support" : "Kaupallinen tuki", - "Get the apps to sync your files" : "Aseta sovellukset synkronoimaan tiedostosi", - "Desktop client" : "Työpöytäsovellus", - "Android app" : "Android-sovellus", - "iOS app" : "iOS-sovellus", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jos haluat tukea projektia, \n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">auta sovelluskehityksessä</a>\n\t\ttai\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">levitä sanaa</a>!", - "Show First Run Wizard again" : "Näytä ensimmäisen käyttökerran avustaja uudelleen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", - "Password" : "Salasana", - "Unable to change your password" : "Salasanaasi ei voitu vaihtaa", - "Current password" : "Nykyinen salasana", - "New password" : "Uusi salasana", - "Change password" : "Vaihda salasana", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", + "Profile picture" : "Profiilikuva", + "Upload new" : "Lähetä uusi", + "Remove image" : "Poista kuva", + "Cancel" : "Peru", "Full name" : "Koko nimi", "No display name set" : "Näyttönimeä ei ole asetettu", "Email" : "Sähköpostiosoite", "Your email address" : "Sähköpostiosoitteesi", - "Fill in an email address to enable password recovery and receive notifications" : "Anna sähköpostiosoitteesi, jotta unohdettu salasana on mahdollista palauttaa ja voit vastaanottaa ilmoituksia", "No email address set" : "Sähköpostiosoitetta ei ole asetettu", "You are member of the following groups:" : "Olet jäsenenä seuraavissa ryhmissä:", - "Profile picture" : "Profiilikuva", - "Upload new" : "Lähetä uusi", - "Select new from Files" : "Valitse uusi tiedostoista", - "Remove image" : "Poista kuva", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Joko png- tai jpg-kuva. Mieluiten neliö, voit kuitenkin rajata kuvaa. Tiedosto voi olla korkeintaan 20 megatavun kokoinen.", - "Your avatar is provided by your original account." : "Avatar-kuvasi pohjautuu alkuperäiseen tiliisi.", - "Cancel" : "Peru", - "Choose as profile image" : "Valitse profiilikuvaksi", + "Password" : "Salasana", + "Unable to change your password" : "Salasanaasi ei voitu vaihtaa", + "Current password" : "Nykyinen salasana", + "New password" : "Uusi salasana", + "Change password" : "Vaihda salasana", "Language" : "Kieli", "Help translate" : "Auta kääntämisessä", + "Get the apps to sync your files" : "Aseta sovellukset synkronoimaan tiedostosi", + "Desktop client" : "Työpöytäsovellus", + "Android app" : "Android-sovellus", + "iOS app" : "iOS-sovellus", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jos haluat tukea projektia, \n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">auta sovelluskehityksessä</a>\n\t\ttai\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">levitä sanaa</a>!", + "Show First Run Wizard again" : "Näytä ensimmäisen käyttökerran avustaja uudelleen", "Common Name" : "Yleinen nimi", "Valid until" : "Kelvollinen", "Issued By" : " Myöntänyt", diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json index e64246df9f8..18b8c3938ce 100644 --- a/settings/l10n/fi_FI.json +++ b/settings/l10n/fi_FI.json @@ -104,8 +104,8 @@ "A valid password must be provided" : "Anna kelvollinen salasana", "A valid email must be provided" : "Tarvitaan kelvollinen sähköpostiosoite", "__language_name__" : "_kielen_nimi_", - "Sync clients" : "Synkronointisovellukset", "Personal info" : "Henkilökohtaiset tiedot", + "Sync clients" : "Synkronointisovellukset", "SSL root certificates" : "SSL-juurivarmenteet", "Everything (fatal issues, errors, warnings, info, debug)" : "Kaikki (vakavat ongelmat, virheet, varoitukset, tiedot, vianjäljitys)", "Info, warnings, errors and fatal issues" : "Tiedot, varoitukset, virheet ja vakavat ongelmat", @@ -213,35 +213,30 @@ "Forum" : "Keskustelupalsta", "Issue tracker" : "Ongelmien seuranta", "Commercial support" : "Kaupallinen tuki", - "Get the apps to sync your files" : "Aseta sovellukset synkronoimaan tiedostosi", - "Desktop client" : "Työpöytäsovellus", - "Android app" : "Android-sovellus", - "iOS app" : "iOS-sovellus", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jos haluat tukea projektia, \n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">auta sovelluskehityksessä</a>\n\t\ttai\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">levitä sanaa</a>!", - "Show First Run Wizard again" : "Näytä ensimmäisen käyttökerran avustaja uudelleen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", - "Password" : "Salasana", - "Unable to change your password" : "Salasanaasi ei voitu vaihtaa", - "Current password" : "Nykyinen salasana", - "New password" : "Uusi salasana", - "Change password" : "Vaihda salasana", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", + "Profile picture" : "Profiilikuva", + "Upload new" : "Lähetä uusi", + "Remove image" : "Poista kuva", + "Cancel" : "Peru", "Full name" : "Koko nimi", "No display name set" : "Näyttönimeä ei ole asetettu", "Email" : "Sähköpostiosoite", "Your email address" : "Sähköpostiosoitteesi", - "Fill in an email address to enable password recovery and receive notifications" : "Anna sähköpostiosoitteesi, jotta unohdettu salasana on mahdollista palauttaa ja voit vastaanottaa ilmoituksia", "No email address set" : "Sähköpostiosoitetta ei ole asetettu", "You are member of the following groups:" : "Olet jäsenenä seuraavissa ryhmissä:", - "Profile picture" : "Profiilikuva", - "Upload new" : "Lähetä uusi", - "Select new from Files" : "Valitse uusi tiedostoista", - "Remove image" : "Poista kuva", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Joko png- tai jpg-kuva. Mieluiten neliö, voit kuitenkin rajata kuvaa. Tiedosto voi olla korkeintaan 20 megatavun kokoinen.", - "Your avatar is provided by your original account." : "Avatar-kuvasi pohjautuu alkuperäiseen tiliisi.", - "Cancel" : "Peru", - "Choose as profile image" : "Valitse profiilikuvaksi", + "Password" : "Salasana", + "Unable to change your password" : "Salasanaasi ei voitu vaihtaa", + "Current password" : "Nykyinen salasana", + "New password" : "Uusi salasana", + "Change password" : "Vaihda salasana", "Language" : "Kieli", "Help translate" : "Auta kääntämisessä", + "Get the apps to sync your files" : "Aseta sovellukset synkronoimaan tiedostosi", + "Desktop client" : "Työpöytäsovellus", + "Android app" : "Android-sovellus", + "iOS app" : "iOS-sovellus", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jos haluat tukea projektia, \n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">auta sovelluskehityksessä</a>\n\t\ttai\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">levitä sanaa</a>!", + "Show First Run Wizard again" : "Näytä ensimmäisen käyttökerran avustaja uudelleen", "Common Name" : "Yleinen nimi", "Valid until" : "Kelvollinen", "Issued By" : " Myöntänyt", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index f3ccc491cd6..720667b8697 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Un mot de passe valide doit être saisi", "A valid email must be provided" : "Vous devez fournir une adresse e-mail valide", "__language_name__" : "Français", - "Sync clients" : "Clients de synchronisation", "Personal info" : "Informations personnelles", + "Sync clients" : "Clients de synchronisation", "SSL root certificates" : "Certificats racine SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tout (erreurs fatales, erreurs, avertissements, informations, debogage)", "Info, warnings, errors and fatal issues" : "Informations, avertissements, erreurs et erreurs fatales", @@ -224,35 +224,30 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Suivi de problèmes", "Commercial support" : "Support commercial", - "Get the apps to sync your files" : "Obtenez les applications de synchronisation de vos fichiers", - "Desktop client" : "Client de bureau", - "Android app" : "Application Android", - "iOS app" : "Application iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous souhaitez apporter votre support au projet\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejoignez le développement</a>\n ou\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">faites passer le mot</a> !", - "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Vous utilisez <strong>%s</strong> des <strong>%s<strong> disponibles", - "Password" : "Mot de passe", - "Unable to change your password" : "Impossible de changer votre mot de passe", - "Current password" : "Mot de passe actuel", - "New password" : "Nouveau mot de passe", - "Change password" : "Changer de mot de passe", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Vous utilisez <strong>%s</strong> des <strong>%s<strong> disponibles", + "Profile picture" : "Photo de profil", + "Upload new" : "Nouvelle depuis votre ordinateur", + "Remove image" : "Supprimer l'image", + "Cancel" : "Annuler", "Full name" : "Nom complet", "No display name set" : "Aucun nom d'affichage configuré", "Email" : "Adresse e-mail", "Your email address" : "Votre adresse e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Saisissez votre adresse e-mail pour permettre la réinitialisation du mot de passe et la réception des notifications", "No email address set" : "Aucune adresse e-mail configurée", "You are member of the following groups:" : "Vous êtes membre des groupes suivants :", - "Profile picture" : "Photo de profil", - "Upload new" : "Nouvelle depuis votre ordinateur", - "Select new from Files" : "Nouvelle depuis les Fichiers", - "Remove image" : "Supprimer l'image", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Format png ou jpg de maximum 20 Mo. Idéalement carrée, mais vous pourrez la recadrer.", - "Your avatar is provided by your original account." : "Votre avatar est fourni par votre compte original.", - "Cancel" : "Annuler", - "Choose as profile image" : "Choisir en tant que photo de profil ", + "Password" : "Mot de passe", + "Unable to change your password" : "Impossible de changer votre mot de passe", + "Current password" : "Mot de passe actuel", + "New password" : "Nouveau mot de passe", + "Change password" : "Changer de mot de passe", "Language" : "Langue", "Help translate" : "Aidez à traduire", + "Get the apps to sync your files" : "Obtenez les applications de synchronisation de vos fichiers", + "Desktop client" : "Client de bureau", + "Android app" : "Application Android", + "iOS app" : "Application iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous souhaitez apporter votre support au projet\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejoignez le développement</a>\n ou\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">faites passer le mot</a> !", + "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", "Common Name" : "Nom d'usage", "Valid until" : "Valide jusqu'à", "Issued By" : "Délivré par", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index fa859c6e438..3127ce4b061 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Un mot de passe valide doit être saisi", "A valid email must be provided" : "Vous devez fournir une adresse e-mail valide", "__language_name__" : "Français", - "Sync clients" : "Clients de synchronisation", "Personal info" : "Informations personnelles", + "Sync clients" : "Clients de synchronisation", "SSL root certificates" : "Certificats racine SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tout (erreurs fatales, erreurs, avertissements, informations, debogage)", "Info, warnings, errors and fatal issues" : "Informations, avertissements, erreurs et erreurs fatales", @@ -222,35 +222,30 @@ "Forum" : "Forum", "Issue tracker" : "Suivi de problèmes", "Commercial support" : "Support commercial", - "Get the apps to sync your files" : "Obtenez les applications de synchronisation de vos fichiers", - "Desktop client" : "Client de bureau", - "Android app" : "Application Android", - "iOS app" : "Application iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous souhaitez apporter votre support au projet\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejoignez le développement</a>\n ou\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">faites passer le mot</a> !", - "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Vous utilisez <strong>%s</strong> des <strong>%s<strong> disponibles", - "Password" : "Mot de passe", - "Unable to change your password" : "Impossible de changer votre mot de passe", - "Current password" : "Mot de passe actuel", - "New password" : "Nouveau mot de passe", - "Change password" : "Changer de mot de passe", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Vous utilisez <strong>%s</strong> des <strong>%s<strong> disponibles", + "Profile picture" : "Photo de profil", + "Upload new" : "Nouvelle depuis votre ordinateur", + "Remove image" : "Supprimer l'image", + "Cancel" : "Annuler", "Full name" : "Nom complet", "No display name set" : "Aucun nom d'affichage configuré", "Email" : "Adresse e-mail", "Your email address" : "Votre adresse e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Saisissez votre adresse e-mail pour permettre la réinitialisation du mot de passe et la réception des notifications", "No email address set" : "Aucune adresse e-mail configurée", "You are member of the following groups:" : "Vous êtes membre des groupes suivants :", - "Profile picture" : "Photo de profil", - "Upload new" : "Nouvelle depuis votre ordinateur", - "Select new from Files" : "Nouvelle depuis les Fichiers", - "Remove image" : "Supprimer l'image", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Format png ou jpg de maximum 20 Mo. Idéalement carrée, mais vous pourrez la recadrer.", - "Your avatar is provided by your original account." : "Votre avatar est fourni par votre compte original.", - "Cancel" : "Annuler", - "Choose as profile image" : "Choisir en tant que photo de profil ", + "Password" : "Mot de passe", + "Unable to change your password" : "Impossible de changer votre mot de passe", + "Current password" : "Mot de passe actuel", + "New password" : "Nouveau mot de passe", + "Change password" : "Changer de mot de passe", "Language" : "Langue", "Help translate" : "Aidez à traduire", + "Get the apps to sync your files" : "Obtenez les applications de synchronisation de vos fichiers", + "Desktop client" : "Client de bureau", + "Android app" : "Application Android", + "iOS app" : "Application iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Si vous souhaitez apporter votre support au projet\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejoignez le développement</a>\n ou\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">faites passer le mot</a> !", + "Show First Run Wizard again" : "Revoir la fenêtre d'accueil affichée lors de votre première connexion", "Common Name" : "Nom d'usage", "Valid until" : "Valide jusqu'à", "Issued By" : "Délivré par", diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js index ecb31a6a7a7..01f6d7cde1f 100644 --- a/settings/l10n/gl.js +++ b/settings/l10n/gl.js @@ -104,8 +104,8 @@ OC.L10N.register( "A valid password must be provided" : "Debe fornecer un contrasinal", "A valid email must be provided" : "Ten que fornecer un correo funcional", "__language_name__" : "Galego", - "Sync clients" : "Clientes de sincronización", "Personal info" : "Información persoal", + "Sync clients" : "Clientes de sincronización", "SSL root certificates" : "Certificados raíz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (incidencias críticas, erros, avisos, información, depuración)", "Info, warnings, errors and fatal issues" : "Información, avisos, erros e incidencias críticas", @@ -210,35 +210,29 @@ OC.L10N.register( "Forum" : "Foro", "Issue tracker" : "Seguimento de incidencias", "Commercial support" : "Asistencia comercial", - "Get the apps to sync your files" : "Obteña as aplicacións para sincronizar os seus ficheiros", - "Desktop client" : "Cliente de escritorio", - "Android app" : "Aplicación Android", - "iOS app" : "Aplicación iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quere axudar ao proxecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">únase ao desenvolvemento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalle a nova</a>!", - "Show First Run Wizard again" : "Amosar o axudante da primeira execución outra vez", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ten en uso <strong>%s</strong> do total dispoñíbel de <strong>%s</strong>", - "Password" : "Contrasinal", - "Unable to change your password" : "Non é posíbel cambiar o seu contrasinal", - "Current password" : "Contrasinal actual", - "New password" : "Novo contrasinal", - "Change password" : "Cambiar o contrasinal", + "Profile picture" : "Imaxe do perfil", + "Upload new" : "Novo envío", + "Remove image" : "Retirar a imaxe", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Sen nome visíbel estabelecido", "Email" : "Correo", "Your email address" : "O seu enderezo de correo", - "Fill in an email address to enable password recovery and receive notifications" : "Escriba un enderezo de correo para permitir a recuperación de contrasinais e recibir notificacións", "No email address set" : "Non hai un enderezo de correo definido", "You are member of the following groups:" : "Vostede é membro dos seguintes grupos:", - "Profile picture" : "Imaxe do perfil", - "Upload new" : "Novo envío", - "Select new from Files" : "Seleccionar outra nova desde Ficheiros", - "Remove image" : "Retirar a imaxe", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Calquera png ou jpg. É preferíbel que sexa cadrada, mais poderá recortala. O ficheiro non pode exceder do tamaño máximo de 20MB.", - "Your avatar is provided by your original account." : "O seu avatar é fornecido pola súa conta orixinal.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolla unha imaxe para o perfil", + "Password" : "Contrasinal", + "Unable to change your password" : "Non é posíbel cambiar o seu contrasinal", + "Current password" : "Contrasinal actual", + "New password" : "Novo contrasinal", + "Change password" : "Cambiar o contrasinal", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Get the apps to sync your files" : "Obteña as aplicacións para sincronizar os seus ficheiros", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación Android", + "iOS app" : "Aplicación iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quere axudar ao proxecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">únase ao desenvolvemento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalle a nova</a>!", + "Show First Run Wizard again" : "Amosar o axudante da primeira execución outra vez", "Common Name" : "Nome común", "Valid until" : "Válido ata", "Issued By" : "Fornecido por", diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json index 06b0277fda7..6e05a8c878d 100644 --- a/settings/l10n/gl.json +++ b/settings/l10n/gl.json @@ -102,8 +102,8 @@ "A valid password must be provided" : "Debe fornecer un contrasinal", "A valid email must be provided" : "Ten que fornecer un correo funcional", "__language_name__" : "Galego", - "Sync clients" : "Clientes de sincronización", "Personal info" : "Información persoal", + "Sync clients" : "Clientes de sincronización", "SSL root certificates" : "Certificados raíz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (incidencias críticas, erros, avisos, información, depuración)", "Info, warnings, errors and fatal issues" : "Información, avisos, erros e incidencias críticas", @@ -208,35 +208,29 @@ "Forum" : "Foro", "Issue tracker" : "Seguimento de incidencias", "Commercial support" : "Asistencia comercial", - "Get the apps to sync your files" : "Obteña as aplicacións para sincronizar os seus ficheiros", - "Desktop client" : "Cliente de escritorio", - "Android app" : "Aplicación Android", - "iOS app" : "Aplicación iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quere axudar ao proxecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">únase ao desenvolvemento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalle a nova</a>!", - "Show First Run Wizard again" : "Amosar o axudante da primeira execución outra vez", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ten en uso <strong>%s</strong> do total dispoñíbel de <strong>%s</strong>", - "Password" : "Contrasinal", - "Unable to change your password" : "Non é posíbel cambiar o seu contrasinal", - "Current password" : "Contrasinal actual", - "New password" : "Novo contrasinal", - "Change password" : "Cambiar o contrasinal", + "Profile picture" : "Imaxe do perfil", + "Upload new" : "Novo envío", + "Remove image" : "Retirar a imaxe", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Sen nome visíbel estabelecido", "Email" : "Correo", "Your email address" : "O seu enderezo de correo", - "Fill in an email address to enable password recovery and receive notifications" : "Escriba un enderezo de correo para permitir a recuperación de contrasinais e recibir notificacións", "No email address set" : "Non hai un enderezo de correo definido", "You are member of the following groups:" : "Vostede é membro dos seguintes grupos:", - "Profile picture" : "Imaxe do perfil", - "Upload new" : "Novo envío", - "Select new from Files" : "Seleccionar outra nova desde Ficheiros", - "Remove image" : "Retirar a imaxe", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Calquera png ou jpg. É preferíbel que sexa cadrada, mais poderá recortala. O ficheiro non pode exceder do tamaño máximo de 20MB.", - "Your avatar is provided by your original account." : "O seu avatar é fornecido pola súa conta orixinal.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolla unha imaxe para o perfil", + "Password" : "Contrasinal", + "Unable to change your password" : "Non é posíbel cambiar o seu contrasinal", + "Current password" : "Contrasinal actual", + "New password" : "Novo contrasinal", + "Change password" : "Cambiar o contrasinal", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Get the apps to sync your files" : "Obteña as aplicacións para sincronizar os seus ficheiros", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación Android", + "iOS app" : "Aplicación iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quere axudar ao proxecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">únase ao desenvolvemento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalle a nova</a>!", + "Show First Run Wizard again" : "Amosar o axudante da primeira execución outra vez", "Common Name" : "Nome común", "Valid until" : "Válido ata", "Issued By" : "Fornecido por", diff --git a/settings/l10n/he.js b/settings/l10n/he.js index 9fd78e6b02d..dbfba859f4f 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -5,6 +5,7 @@ OC.L10N.register( "External Storage" : "אחסון חיצוני", "Cron" : "Cron", "Log" : "יומן", + "Updates" : "עדכונים", "Language changed" : "שפה השתנתה", "Invalid request" : "בקשה לא חוקית", "Authentication error" : "שגיאת הזדהות", @@ -22,6 +23,11 @@ OC.L10N.register( "Updating...." : "מתבצע עדכון…", "Error while updating app" : "אירעה שגיאה בעת עדכון היישום", "Updated" : "מעודכן", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", "Delete" : "מחיקה", "Groups" : "קבוצות", "undo" : "ביטול", @@ -45,21 +51,24 @@ OC.L10N.register( "Less" : "פחות", "Version" : "גרסא", "by" : "על ידי", + "Cheers!" : "לחיים!", "Forum" : "פורום", - "Get the apps to sync your files" : "השג את האפליקציות על מנת לסנכרן את הקבצים שלך", - "Show First Run Wizard again" : "הצגת אשף ההפעלה הראשונית שוב", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך", + "Profile picture" : "תמונת פרופיל", + "Cancel" : "ביטול", + "Email" : "דואר אלקטרוני", + "Your email address" : "כתובת הדוא״ל שלך", "Password" : "סיסמא", "Unable to change your password" : "לא ניתן לשנות את הססמה שלך", "Current password" : "ססמה נוכחית", "New password" : "ססמה חדשה", "Change password" : "שינוי ססמה", - "Email" : "דואר אלקטרוני", - "Your email address" : "כתובת הדוא״ל שלך", - "Profile picture" : "תמונת פרופיל", - "Cancel" : "ביטול", "Language" : "פה", "Help translate" : "עזרה בתרגום", + "Get the apps to sync your files" : "השג את האפליקציות על מנת לסנכרן את הקבצים שלך", + "Desktop client" : "מחשב אישי", + "Android app" : "אפליקציית אנרואיד", + "iOS app" : "אפליקציית אייפון", + "Show First Run Wizard again" : "הצגת אשף ההפעלה הראשונית שוב", "Username" : "שם משתמש", "Create" : "יצירה", "Admin Recovery Password" : "ססמת השחזור של המנהל", diff --git a/settings/l10n/he.json b/settings/l10n/he.json index 03711901376..c862e787a8c 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -3,6 +3,7 @@ "External Storage" : "אחסון חיצוני", "Cron" : "Cron", "Log" : "יומן", + "Updates" : "עדכונים", "Language changed" : "שפה השתנתה", "Invalid request" : "בקשה לא חוקית", "Authentication error" : "שגיאת הזדהות", @@ -20,6 +21,11 @@ "Updating...." : "מתבצע עדכון…", "Error while updating app" : "אירעה שגיאה בעת עדכון היישום", "Updated" : "מעודכן", + "Very weak password" : "סיסמא מאוד חלשה", + "Weak password" : "סיסמא חלשה", + "So-so password" : "סיסמא ככה-ככה", + "Good password" : "סיסמא טובה", + "Strong password" : "סיסמא חזקה", "Delete" : "מחיקה", "Groups" : "קבוצות", "undo" : "ביטול", @@ -43,21 +49,24 @@ "Less" : "פחות", "Version" : "גרסא", "by" : "על ידי", + "Cheers!" : "לחיים!", "Forum" : "פורום", - "Get the apps to sync your files" : "השג את האפליקציות על מנת לסנכרן את הקבצים שלך", - "Show First Run Wizard again" : "הצגת אשף ההפעלה הראשונית שוב", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך", + "Profile picture" : "תמונת פרופיל", + "Cancel" : "ביטול", + "Email" : "דואר אלקטרוני", + "Your email address" : "כתובת הדוא״ל שלך", "Password" : "סיסמא", "Unable to change your password" : "לא ניתן לשנות את הססמה שלך", "Current password" : "ססמה נוכחית", "New password" : "ססמה חדשה", "Change password" : "שינוי ססמה", - "Email" : "דואר אלקטרוני", - "Your email address" : "כתובת הדוא״ל שלך", - "Profile picture" : "תמונת פרופיל", - "Cancel" : "ביטול", "Language" : "פה", "Help translate" : "עזרה בתרגום", + "Get the apps to sync your files" : "השג את האפליקציות על מנת לסנכרן את הקבצים שלך", + "Desktop client" : "מחשב אישי", + "Android app" : "אפליקציית אנרואיד", + "iOS app" : "אפליקציית אייפון", + "Show First Run Wizard again" : "הצגת אשף ההפעלה הראשונית שוב", "Username" : "שם משתמש", "Create" : "יצירה", "Admin Recovery Password" : "ססמת השחזור של המנהל", diff --git a/settings/l10n/hi.js b/settings/l10n/hi.js index 2925a7e0fc0..715292b3dc8 100644 --- a/settings/l10n/hi.js +++ b/settings/l10n/hi.js @@ -3,9 +3,9 @@ OC.L10N.register( { "Email sent" : "ईमेल भेज दिया गया है ", "More" : "और अधिक", + "Cancel" : "रद्द करें ", "Password" : "पासवर्ड", "New password" : "नया पासवर्ड", - "Cancel" : "रद्द करें ", "Username" : "प्रयोक्ता का नाम" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/hi.json b/settings/l10n/hi.json index b607c019c6f..c06462a29d9 100644 --- a/settings/l10n/hi.json +++ b/settings/l10n/hi.json @@ -1,9 +1,9 @@ { "translations": { "Email sent" : "ईमेल भेज दिया गया है ", "More" : "और अधिक", + "Cancel" : "रद्द करें ", "Password" : "पासवर्ड", "New password" : "नया पासवर्ड", - "Cancel" : "रद्द करें ", "Username" : "प्रयोक्ता का नाम" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/hr.js b/settings/l10n/hr.js index 3bfb3ef79a7..6b66988b07d 100644 --- a/settings/l10n/hr.js +++ b/settings/l10n/hr.js @@ -120,26 +120,21 @@ OC.L10N.register( "Uninstall App" : "Deinstalirajte app", "Cheers!" : "Cheers!", "Forum" : "Forum", - "Get the apps to sync your files" : "Koristite aplikacije za sinkronizaciju svojih datoteka", - "Show First Run Wizard again" : "Opet pokažite First Run Wizard", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Iskoristili ste <strong>%s</strong> od raspoloživog <strong>%s</strong>", + "Profile picture" : "Slika profila", + "Upload new" : "Učitajte novu", + "Remove image" : "Uklonite sliku", + "Cancel" : "Odustanite", + "Email" : "E-pošta", + "Your email address" : "Vaša adresa e-pošte", "Password" : "Lozinka", "Unable to change your password" : "Vašu lozinku nije moguće promijeniti", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Promijenite lozinku", - "Email" : "E-pošta", - "Your email address" : "Vaša adresa e-pošte", - "Fill in an email address to enable password recovery and receive notifications" : "Unesite adresu e-pošte da biste omogućili oporavak lozinke i primili notifikacije", - "Profile picture" : "Slika profila", - "Upload new" : "Učitajte novu", - "Select new from Files" : "Odaberite novu iz datoteka", - "Remove image" : "Uklonite sliku", - "Your avatar is provided by your original account." : "Vaš avatar je isporučen od strane vašeg izvornog računa", - "Cancel" : "Odustanite", - "Choose as profile image" : "Odaberite kao sliku profila", "Language" : "Jezik", "Help translate" : "Pomozite prevesti", + "Get the apps to sync your files" : "Koristite aplikacije za sinkronizaciju svojih datoteka", + "Show First Run Wizard again" : "Opet pokažite First Run Wizard", "Common Name" : "Common Name", "Valid until" : "Valid until", "Issued By" : "Issued By", diff --git a/settings/l10n/hr.json b/settings/l10n/hr.json index 8a7f427ad95..b8e8c035fe9 100644 --- a/settings/l10n/hr.json +++ b/settings/l10n/hr.json @@ -118,26 +118,21 @@ "Uninstall App" : "Deinstalirajte app", "Cheers!" : "Cheers!", "Forum" : "Forum", - "Get the apps to sync your files" : "Koristite aplikacije za sinkronizaciju svojih datoteka", - "Show First Run Wizard again" : "Opet pokažite First Run Wizard", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Iskoristili ste <strong>%s</strong> od raspoloživog <strong>%s</strong>", + "Profile picture" : "Slika profila", + "Upload new" : "Učitajte novu", + "Remove image" : "Uklonite sliku", + "Cancel" : "Odustanite", + "Email" : "E-pošta", + "Your email address" : "Vaša adresa e-pošte", "Password" : "Lozinka", "Unable to change your password" : "Vašu lozinku nije moguće promijeniti", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Promijenite lozinku", - "Email" : "E-pošta", - "Your email address" : "Vaša adresa e-pošte", - "Fill in an email address to enable password recovery and receive notifications" : "Unesite adresu e-pošte da biste omogućili oporavak lozinke i primili notifikacije", - "Profile picture" : "Slika profila", - "Upload new" : "Učitajte novu", - "Select new from Files" : "Odaberite novu iz datoteka", - "Remove image" : "Uklonite sliku", - "Your avatar is provided by your original account." : "Vaš avatar je isporučen od strane vašeg izvornog računa", - "Cancel" : "Odustanite", - "Choose as profile image" : "Odaberite kao sliku profila", "Language" : "Jezik", "Help translate" : "Pomozite prevesti", + "Get the apps to sync your files" : "Koristite aplikacije za sinkronizaciju svojih datoteka", + "Show First Run Wizard again" : "Opet pokažite First Run Wizard", "Common Name" : "Common Name", "Valid until" : "Valid until", "Issued By" : "Issued By", diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js index 6f5900ed911..6d1904fe6a6 100644 --- a/settings/l10n/hu_HU.js +++ b/settings/l10n/hu_HU.js @@ -75,6 +75,7 @@ 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: {message}" : "Hiba történt: {message}", "Select a profile picture" : "Válasszon profilképet!", "Very weak password" : "Nagyon gyenge jelszó", @@ -99,8 +100,8 @@ OC.L10N.register( "A valid password must be provided" : "Érvényes jelszót kell megadnia", "A valid email must be provided" : "Érvényes e-mail címet kell megadni", "__language_name__" : "__language_name__", - "Sync clients" : "Szinkronizáló kliensek", "Personal info" : "Személyes információk", + "Sync clients" : "Szinkronizáló kliensek", "SSL root certificates" : "SSL tanúsítványok", "Everything (fatal issues, errors, warnings, info, debug)" : "Minden (végzetes hibák, hibák, figyelmeztetések, információk, hibakeresési üzenetek)", "Info, warnings, errors and fatal issues" : "Információk, figyelmeztetések, hibák és végzetes hibák", @@ -206,35 +207,30 @@ OC.L10N.register( "Forum" : "Fórum", "Issue tracker" : "Hibabejelentések", "Commercial support" : "Kereskedelmi támogatás", - "Get the apps to sync your files" : "Töltse le az állományok szinkronizációjához szükséges programokat!", - "Desktop client" : "Asztali kliens", - "Android app" : "Android applikáció", - "iOS app" : "IOS applikáció", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ha segíteni szeretnéd a projektet\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">csatlakozz a fejlesztéshez</a>\n\t\tvagy\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">hirdesd az igét</a>!", - "Show First Run Wizard again" : "Nézzük meg újra az első bejelentkezéskori segítséget!", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Az Ön tárterület-felhasználása jelenleg: <strong>%s</strong>. Maximálisan ennyi áll rendelkezésére: <strong>%s</strong>", - "Password" : "Jelszó", - "Unable to change your password" : "A jelszó nem változtatható meg", - "Current password" : "A jelenlegi jelszó", - "New password" : "Az új jelszó", - "Change password" : "A jelszó megváltoztatása", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>, maximálisan elérhető: <strong>%s</strong>", + "Profile picture" : "Profilkép", + "Upload new" : "Új feltöltése", + "Remove image" : "A kép eltávolítása", + "Cancel" : "Mégsem", "Full name" : "Teljes név", "No display name set" : "Nincs megjelenítési név beállítva", "Email" : "E-mail", "Your email address" : "Az Ön e-mail címe", - "Fill in an email address to enable password recovery and receive notifications" : "Adja meg az e-mail címét, hogy vissza tudja állítani a jelszavát, illetve, hogy rendszeres jelentéseket kaphasson!", "No email address set" : "Nincs e-mail cím beállítva", "You are member of the following groups:" : "Tagja vagy a következő csoport(ok)nak:", - "Profile picture" : "Profilkép", - "Upload new" : "Új feltöltése", - "Select new from Files" : "Új kiválasztása a Fájlokból", - "Remove image" : "A kép eltávolítása", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Csak png vagy jpg lehet. Ideális esetben négyzet alakú, de lehetőséged lesz vágni. A fájl nem haladhatja meg a 20 MB-os méretet.", - "Your avatar is provided by your original account." : "A kép az eredeti bejelentkezési adatai alapján lett beállítva.", - "Cancel" : "Mégsem", - "Choose as profile image" : "Válasszuk ki profilképnek", + "Password" : "Jelszó", + "Unable to change your password" : "A jelszó nem változtatható meg", + "Current password" : "A jelenlegi jelszó", + "New password" : "Az új jelszó", + "Change password" : "A jelszó megváltoztatása", "Language" : "Nyelv", "Help translate" : "Segítsen a fordításban!", + "Get the apps to sync your files" : "Töltse le az állományok szinkronizációjához szükséges programokat!", + "Desktop client" : "Asztali kliens", + "Android app" : "Android applikáció", + "iOS app" : "IOS applikáció", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ha segíteni szeretnéd a projektet\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">csatlakozz a fejlesztéshez</a>\n\t\tvagy\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">hirdesd az igét</a>!", + "Show First Run Wizard again" : "Nézzük meg újra az első bejelentkezéskori segítséget!", "Common Name" : "Általános Név", "Valid until" : "Érvényes", "Issued By" : "Kiadta", diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json index 7c6a79c3dae..b0ee4ae012b 100644 --- a/settings/l10n/hu_HU.json +++ b/settings/l10n/hu_HU.json @@ -73,6 +73,7 @@ "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: {message}" : "Hiba történt: {message}", "Select a profile picture" : "Válasszon profilképet!", "Very weak password" : "Nagyon gyenge jelszó", @@ -97,8 +98,8 @@ "A valid password must be provided" : "Érvényes jelszót kell megadnia", "A valid email must be provided" : "Érvényes e-mail címet kell megadni", "__language_name__" : "__language_name__", - "Sync clients" : "Szinkronizáló kliensek", "Personal info" : "Személyes információk", + "Sync clients" : "Szinkronizáló kliensek", "SSL root certificates" : "SSL tanúsítványok", "Everything (fatal issues, errors, warnings, info, debug)" : "Minden (végzetes hibák, hibák, figyelmeztetések, információk, hibakeresési üzenetek)", "Info, warnings, errors and fatal issues" : "Információk, figyelmeztetések, hibák és végzetes hibák", @@ -204,35 +205,30 @@ "Forum" : "Fórum", "Issue tracker" : "Hibabejelentések", "Commercial support" : "Kereskedelmi támogatás", - "Get the apps to sync your files" : "Töltse le az állományok szinkronizációjához szükséges programokat!", - "Desktop client" : "Asztali kliens", - "Android app" : "Android applikáció", - "iOS app" : "IOS applikáció", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ha segíteni szeretnéd a projektet\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">csatlakozz a fejlesztéshez</a>\n\t\tvagy\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">hirdesd az igét</a>!", - "Show First Run Wizard again" : "Nézzük meg újra az első bejelentkezéskori segítséget!", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Az Ön tárterület-felhasználása jelenleg: <strong>%s</strong>. Maximálisan ennyi áll rendelkezésére: <strong>%s</strong>", - "Password" : "Jelszó", - "Unable to change your password" : "A jelszó nem változtatható meg", - "Current password" : "A jelenlegi jelszó", - "New password" : "Az új jelszó", - "Change password" : "A jelszó megváltoztatása", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>, maximálisan elérhető: <strong>%s</strong>", + "Profile picture" : "Profilkép", + "Upload new" : "Új feltöltése", + "Remove image" : "A kép eltávolítása", + "Cancel" : "Mégsem", "Full name" : "Teljes név", "No display name set" : "Nincs megjelenítési név beállítva", "Email" : "E-mail", "Your email address" : "Az Ön e-mail címe", - "Fill in an email address to enable password recovery and receive notifications" : "Adja meg az e-mail címét, hogy vissza tudja állítani a jelszavát, illetve, hogy rendszeres jelentéseket kaphasson!", "No email address set" : "Nincs e-mail cím beállítva", "You are member of the following groups:" : "Tagja vagy a következő csoport(ok)nak:", - "Profile picture" : "Profilkép", - "Upload new" : "Új feltöltése", - "Select new from Files" : "Új kiválasztása a Fájlokból", - "Remove image" : "A kép eltávolítása", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Csak png vagy jpg lehet. Ideális esetben négyzet alakú, de lehetőséged lesz vágni. A fájl nem haladhatja meg a 20 MB-os méretet.", - "Your avatar is provided by your original account." : "A kép az eredeti bejelentkezési adatai alapján lett beállítva.", - "Cancel" : "Mégsem", - "Choose as profile image" : "Válasszuk ki profilképnek", + "Password" : "Jelszó", + "Unable to change your password" : "A jelszó nem változtatható meg", + "Current password" : "A jelenlegi jelszó", + "New password" : "Az új jelszó", + "Change password" : "A jelszó megváltoztatása", "Language" : "Nyelv", "Help translate" : "Segítsen a fordításban!", + "Get the apps to sync your files" : "Töltse le az állományok szinkronizációjához szükséges programokat!", + "Desktop client" : "Asztali kliens", + "Android app" : "Android applikáció", + "iOS app" : "IOS applikáció", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ha segíteni szeretnéd a projektet\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">csatlakozz a fejlesztéshez</a>\n\t\tvagy\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">hirdesd az igét</a>!", + "Show First Run Wizard again" : "Nézzük meg újra az első bejelentkezéskori segítséget!", "Common Name" : "Általános Név", "Valid until" : "Érvényes", "Issued By" : "Kiadta", diff --git a/settings/l10n/hy.js b/settings/l10n/hy.js index 01bf86bc863..15df5e696f1 100644 --- a/settings/l10n/hy.js +++ b/settings/l10n/hy.js @@ -11,10 +11,10 @@ OC.L10N.register( "add group" : "խումբ ավելացնել", "SSL" : "SSL", "TLS" : "TLS", + "Cancel" : "Չեղարկել", + "Email" : "Էլ. հասցե", "Password" : "Գաղտնաբառ", "New password" : "Նոր գաղտնաբառ", - "Email" : "Էլ. հասցե", - "Cancel" : "Չեղարկել", "Language" : "Լեզու", "Help translate" : "Օգնել թարգմանել", "Username" : "Օգտանուն", diff --git a/settings/l10n/hy.json b/settings/l10n/hy.json index 4fc1882858d..5aa20272d3c 100644 --- a/settings/l10n/hy.json +++ b/settings/l10n/hy.json @@ -9,10 +9,10 @@ "add group" : "խումբ ավելացնել", "SSL" : "SSL", "TLS" : "TLS", + "Cancel" : "Չեղարկել", + "Email" : "Էլ. հասցե", "Password" : "Գաղտնաբառ", "New password" : "Նոր գաղտնաբառ", - "Email" : "Էլ. հասցե", - "Cancel" : "Չեղարկել", "Language" : "Լեզու", "Help translate" : "Օգնել թարգմանել", "Username" : "Օգտանուն", diff --git a/settings/l10n/ia.js b/settings/l10n/ia.js index 0c06c89fc7b..264659f6b93 100644 --- a/settings/l10n/ia.js +++ b/settings/l10n/ia.js @@ -21,18 +21,18 @@ OC.L10N.register( "More" : "Plus", "by" : "per", "Cheers!" : "Acclamationes!", - "Get the apps to sync your files" : "Obtene le apps (applicationes) pro synchronizar tu files", + "Profile picture" : "Imagine de profilo", + "Cancel" : "Cancellar", + "Email" : "E-posta", + "Your email address" : "Tu adresse de e-posta", "Password" : "Contrasigno", "Unable to change your password" : "Non pote cambiar tu contrasigno", "Current password" : "Contrasigno currente", "New password" : "Nove contrasigno", "Change password" : "Cambiar contrasigno", - "Email" : "E-posta", - "Your email address" : "Tu adresse de e-posta", - "Profile picture" : "Imagine de profilo", - "Cancel" : "Cancellar", "Language" : "Linguage", "Help translate" : "Adjuta a traducer", + "Get the apps to sync your files" : "Obtene le apps (applicationes) pro synchronizar tu files", "Username" : "Nomine de usator", "Create" : "Crear", "Group" : "Gruppo", diff --git a/settings/l10n/ia.json b/settings/l10n/ia.json index 2b7a5222aca..fc0e1d7430a 100644 --- a/settings/l10n/ia.json +++ b/settings/l10n/ia.json @@ -19,18 +19,18 @@ "More" : "Plus", "by" : "per", "Cheers!" : "Acclamationes!", - "Get the apps to sync your files" : "Obtene le apps (applicationes) pro synchronizar tu files", + "Profile picture" : "Imagine de profilo", + "Cancel" : "Cancellar", + "Email" : "E-posta", + "Your email address" : "Tu adresse de e-posta", "Password" : "Contrasigno", "Unable to change your password" : "Non pote cambiar tu contrasigno", "Current password" : "Contrasigno currente", "New password" : "Nove contrasigno", "Change password" : "Cambiar contrasigno", - "Email" : "E-posta", - "Your email address" : "Tu adresse de e-posta", - "Profile picture" : "Imagine de profilo", - "Cancel" : "Cancellar", "Language" : "Linguage", "Help translate" : "Adjuta a traducer", + "Get the apps to sync your files" : "Obtene le apps (applicationes) pro synchronizar tu files", "Username" : "Nomine de usator", "Create" : "Crear", "Group" : "Gruppo", diff --git a/settings/l10n/id.js b/settings/l10n/id.js index 5b4f9f5c6b5..68eeb1d6bc8 100644 --- a/settings/l10n/id.js +++ b/settings/l10n/id.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Harus memberikan sandi yang benar", "A valid email must be provided" : "Email yang benar harus diberikan", "__language_name__" : "__language_name__", - "Sync clients" : "Klien sync", "Personal info" : "Info pribadi", + "Sync clients" : "Klien sync", "SSL root certificates" : "Sertifikat root SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Semuanya (Masalah fatal, kesalahan, peringatan, info, debug)", "Info, warnings, errors and fatal issues" : "Info, peringatan, kesalahan dan masalah fatal", @@ -223,35 +223,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Pelacak masalah", "Commercial support" : "Dukungan komersial", - "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", - "Desktop client" : "Klien desktop", - "Android app" : "Aplikasi Android", - "iOS app" : "Aplikasi iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jika Anda ingin mendukung proyek ini\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">bergabunglah dalam pengembangan</a>\n\t\tatau\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">promosikan</a>!", - "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Anda telah menggunakan <strong>%s</strong> dari total <strong>%s</strong>", - "Password" : "Sandi", - "Unable to change your password" : "Gagal mengubah sandi Anda", - "Current password" : "Sandi saat ini", - "New password" : "Sandi baru", - "Change password" : "Ubah sandi", + "Profile picture" : "Foto profil", + "Upload new" : "Unggah baru", + "Remove image" : "Hapus gambar", + "Cancel" : "Batal", "Full name" : "Nama lengkap", "No display name set" : "Nama tampilan tidak diatur", "Email" : "Email", "Your email address" : "Alamat email Anda", - "Fill in an email address to enable password recovery and receive notifications" : "Isikan alamat email untuk mengaktifkan pemulihan sandi dan menerima notifikasi", "No email address set" : "Alamat email tidak diatur", "You are member of the following groups:" : "Anda adalah anggota dari grup berikut:", - "Profile picture" : "Foto profil", - "Upload new" : "Unggah baru", - "Select new from Files" : "Pilih baru dari Berkas", - "Remove image" : "Hapus gambar", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Boleh png atau jpg. Idealnya berbentuk persegi tetapi Anda dapat memotongnya. Berkas tidak diizinkan melebihi ukuran 20 MB.", - "Your avatar is provided by your original account." : "Avatar disediakan oleh akun asli Anda.", - "Cancel" : "Batal", - "Choose as profile image" : "Pilih sebagai gambar profil", + "Password" : "Sandi", + "Unable to change your password" : "Gagal mengubah sandi Anda", + "Current password" : "Sandi saat ini", + "New password" : "Sandi baru", + "Change password" : "Ubah sandi", "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", + "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", + "Desktop client" : "Klien desktop", + "Android app" : "Aplikasi Android", + "iOS app" : "Aplikasi iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jika Anda ingin mendukung proyek ini\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">bergabunglah dalam pengembangan</a>\n\t\tatau\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">promosikan</a>!", + "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", "Common Name" : "Nama umum", "Valid until" : "Berlaku sampai", "Issued By" : "Diterbitkan oleh", diff --git a/settings/l10n/id.json b/settings/l10n/id.json index b6d1f9f7501..585104b97aa 100644 --- a/settings/l10n/id.json +++ b/settings/l10n/id.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Harus memberikan sandi yang benar", "A valid email must be provided" : "Email yang benar harus diberikan", "__language_name__" : "__language_name__", - "Sync clients" : "Klien sync", "Personal info" : "Info pribadi", + "Sync clients" : "Klien sync", "SSL root certificates" : "Sertifikat root SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Semuanya (Masalah fatal, kesalahan, peringatan, info, debug)", "Info, warnings, errors and fatal issues" : "Info, peringatan, kesalahan dan masalah fatal", @@ -221,35 +221,29 @@ "Forum" : "Forum", "Issue tracker" : "Pelacak masalah", "Commercial support" : "Dukungan komersial", - "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", - "Desktop client" : "Klien desktop", - "Android app" : "Aplikasi Android", - "iOS app" : "Aplikasi iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jika Anda ingin mendukung proyek ini\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">bergabunglah dalam pengembangan</a>\n\t\tatau\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">promosikan</a>!", - "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Anda telah menggunakan <strong>%s</strong> dari total <strong>%s</strong>", - "Password" : "Sandi", - "Unable to change your password" : "Gagal mengubah sandi Anda", - "Current password" : "Sandi saat ini", - "New password" : "Sandi baru", - "Change password" : "Ubah sandi", + "Profile picture" : "Foto profil", + "Upload new" : "Unggah baru", + "Remove image" : "Hapus gambar", + "Cancel" : "Batal", "Full name" : "Nama lengkap", "No display name set" : "Nama tampilan tidak diatur", "Email" : "Email", "Your email address" : "Alamat email Anda", - "Fill in an email address to enable password recovery and receive notifications" : "Isikan alamat email untuk mengaktifkan pemulihan sandi dan menerima notifikasi", "No email address set" : "Alamat email tidak diatur", "You are member of the following groups:" : "Anda adalah anggota dari grup berikut:", - "Profile picture" : "Foto profil", - "Upload new" : "Unggah baru", - "Select new from Files" : "Pilih baru dari Berkas", - "Remove image" : "Hapus gambar", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Boleh png atau jpg. Idealnya berbentuk persegi tetapi Anda dapat memotongnya. Berkas tidak diizinkan melebihi ukuran 20 MB.", - "Your avatar is provided by your original account." : "Avatar disediakan oleh akun asli Anda.", - "Cancel" : "Batal", - "Choose as profile image" : "Pilih sebagai gambar profil", + "Password" : "Sandi", + "Unable to change your password" : "Gagal mengubah sandi Anda", + "Current password" : "Sandi saat ini", + "New password" : "Sandi baru", + "Change password" : "Ubah sandi", "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", + "Get the apps to sync your files" : "Dapatkan aplikasi untuk sinkronisasi berkas Anda", + "Desktop client" : "Klien desktop", + "Android app" : "Aplikasi Android", + "iOS app" : "Aplikasi iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Jika Anda ingin mendukung proyek ini\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">bergabunglah dalam pengembangan</a>\n\t\tatau\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">promosikan</a>!", + "Show First Run Wizard again" : "Tampilkan Penuntun Konfigurasi Awal", "Common Name" : "Nama umum", "Valid until" : "Berlaku sampai", "Issued By" : "Diterbitkan oleh", diff --git a/settings/l10n/is.js b/settings/l10n/is.js index ffde7f98b5f..ed11afcebe2 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -37,15 +37,14 @@ OC.L10N.register( "by" : "af", "Cheers!" : "Skál!", "Forum" : "Vefspjall", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Þú hefur notað <strong>%s</strong> af tiltæku <strong>%s</strong>", + "Cancel" : "Hætta við", + "Email" : "Netfang", + "Your email address" : "Netfangið þitt", "Password" : "Lykilorð", "Unable to change your password" : "Ekki tókst að breyta lykilorðinu þínu", "Current password" : "Núverandi lykilorð", "New password" : "Nýtt lykilorð", "Change password" : "Breyta lykilorði", - "Email" : "Netfang", - "Your email address" : "Netfangið þitt", - "Cancel" : "Hætta við", "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "Username" : "Notendanafn", diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 15d7cbb4a93..d6f83f3e4a9 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -35,15 +35,14 @@ "by" : "af", "Cheers!" : "Skál!", "Forum" : "Vefspjall", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Þú hefur notað <strong>%s</strong> af tiltæku <strong>%s</strong>", + "Cancel" : "Hætta við", + "Email" : "Netfang", + "Your email address" : "Netfangið þitt", "Password" : "Lykilorð", "Unable to change your password" : "Ekki tókst að breyta lykilorðinu þínu", "Current password" : "Núverandi lykilorð", "New password" : "Nýtt lykilorð", "Change password" : "Breyta lykilorði", - "Email" : "Netfang", - "Your email address" : "Netfangið þitt", - "Cancel" : "Hætta við", "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "Username" : "Notendanafn", diff --git a/settings/l10n/it.js b/settings/l10n/it.js index b2881fea3a4..426838c9971 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Deve essere fornita una password valida", "A valid email must be provided" : "Deve essere fornito un indirizzo email valido", "__language_name__" : "Italiano", - "Sync clients" : "Client di sincronizzazione", "Personal info" : "Informazioni personali", + "Sync clients" : "Client di sincronizzazione", "SSL root certificates" : "Certificati SSL radice", "Everything (fatal issues, errors, warnings, info, debug)" : "Tutto (problemi gravi, errori, avvisi, informazioni, debug)", "Info, warnings, errors and fatal issues" : "Informazioni, avvisi, errori e problemi gravi", @@ -224,35 +224,30 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Sistema di tracciamento dei problemi", "Commercial support" : "Supporto commerciale", - "Get the apps to sync your files" : "Scarica le applicazioni per sincronizzare i tuoi file", - "Desktop client" : "Client desktop", - "Android app" : "Applicazione Android", - "iOS app" : "Applicazione iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se vuoi supportare il progetto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diventa uno sviluppatore</a>\n\t\to\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diffondi il verbo</a>!", - "Show First Run Wizard again" : "Mostra nuovamente la procedura di primo avvio", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Hai utilizzato <strong>%s</strong> dei <strong>%s</strong> disponibili", - "Password" : "Password", - "Unable to change your password" : "Modifica password non riuscita", - "Current password" : "Password attuale", - "New password" : "Nuova password", - "Change password" : "Modifica password", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong> di <strong>%s</strong>", + "Profile picture" : "Immagine del profilo", + "Upload new" : "Carica nuova", + "Remove image" : "Rimuovi immagine", + "Cancel" : "Annulla", "Full name" : "Nome completo", "No display name set" : "Nome visualizzato non impostato", "Email" : "Posta elettronica", "Your email address" : "Il tuo indirizzo email", - "Fill in an email address to enable password recovery and receive notifications" : "Inserisci il tuo indirizzo di posta per abilitare il ripristino della password e ricevere notifiche", "No email address set" : "Nessun indirizzo email impostato", "You are member of the following groups:" : "Sei membro dei seguenti gruppi:", - "Profile picture" : "Immagine del profilo", - "Upload new" : "Carica nuova", - "Select new from Files" : "Seleziona nuova da file", - "Remove image" : "Rimuovi immagine", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Sia png che jpg. Preferibilmente quadrata, ma potrai ritagliarla. Il file non può superare la dimensione massima di 20 MB.", - "Your avatar is provided by your original account." : "Il tuo avatar è ottenuto dal tuo account originale.", - "Cancel" : "Annulla", - "Choose as profile image" : "Scegli come immagine del profilo", + "Password" : "Password", + "Unable to change your password" : "Modifica password non riuscita", + "Current password" : "Password attuale", + "New password" : "Nuova password", + "Change password" : "Modifica password", "Language" : "Lingua", "Help translate" : "Migliora la traduzione", + "Get the apps to sync your files" : "Scarica le applicazioni per sincronizzare i tuoi file", + "Desktop client" : "Client desktop", + "Android app" : "Applicazione Android", + "iOS app" : "Applicazione iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se vuoi supportare il progetto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diventa uno sviluppatore</a>\n\t\to\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diffondi il verbo</a>!", + "Show First Run Wizard again" : "Mostra nuovamente la procedura di primo avvio", "Common Name" : "Nome comune", "Valid until" : "Valido fino al", "Issued By" : "Emesso da", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index 72ac8fa95e1..b78fd4c236d 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Deve essere fornita una password valida", "A valid email must be provided" : "Deve essere fornito un indirizzo email valido", "__language_name__" : "Italiano", - "Sync clients" : "Client di sincronizzazione", "Personal info" : "Informazioni personali", + "Sync clients" : "Client di sincronizzazione", "SSL root certificates" : "Certificati SSL radice", "Everything (fatal issues, errors, warnings, info, debug)" : "Tutto (problemi gravi, errori, avvisi, informazioni, debug)", "Info, warnings, errors and fatal issues" : "Informazioni, avvisi, errori e problemi gravi", @@ -222,35 +222,30 @@ "Forum" : "Forum", "Issue tracker" : "Sistema di tracciamento dei problemi", "Commercial support" : "Supporto commerciale", - "Get the apps to sync your files" : "Scarica le applicazioni per sincronizzare i tuoi file", - "Desktop client" : "Client desktop", - "Android app" : "Applicazione Android", - "iOS app" : "Applicazione iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se vuoi supportare il progetto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diventa uno sviluppatore</a>\n\t\to\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diffondi il verbo</a>!", - "Show First Run Wizard again" : "Mostra nuovamente la procedura di primo avvio", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Hai utilizzato <strong>%s</strong> dei <strong>%s</strong> disponibili", - "Password" : "Password", - "Unable to change your password" : "Modifica password non riuscita", - "Current password" : "Password attuale", - "New password" : "Nuova password", - "Change password" : "Modifica password", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong> di <strong>%s</strong>", + "Profile picture" : "Immagine del profilo", + "Upload new" : "Carica nuova", + "Remove image" : "Rimuovi immagine", + "Cancel" : "Annulla", "Full name" : "Nome completo", "No display name set" : "Nome visualizzato non impostato", "Email" : "Posta elettronica", "Your email address" : "Il tuo indirizzo email", - "Fill in an email address to enable password recovery and receive notifications" : "Inserisci il tuo indirizzo di posta per abilitare il ripristino della password e ricevere notifiche", "No email address set" : "Nessun indirizzo email impostato", "You are member of the following groups:" : "Sei membro dei seguenti gruppi:", - "Profile picture" : "Immagine del profilo", - "Upload new" : "Carica nuova", - "Select new from Files" : "Seleziona nuova da file", - "Remove image" : "Rimuovi immagine", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Sia png che jpg. Preferibilmente quadrata, ma potrai ritagliarla. Il file non può superare la dimensione massima di 20 MB.", - "Your avatar is provided by your original account." : "Il tuo avatar è ottenuto dal tuo account originale.", - "Cancel" : "Annulla", - "Choose as profile image" : "Scegli come immagine del profilo", + "Password" : "Password", + "Unable to change your password" : "Modifica password non riuscita", + "Current password" : "Password attuale", + "New password" : "Nuova password", + "Change password" : "Modifica password", "Language" : "Lingua", "Help translate" : "Migliora la traduzione", + "Get the apps to sync your files" : "Scarica le applicazioni per sincronizzare i tuoi file", + "Desktop client" : "Client desktop", + "Android app" : "Applicazione Android", + "iOS app" : "Applicazione iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se vuoi supportare il progetto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diventa uno sviluppatore</a>\n\t\to\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">diffondi il verbo</a>!", + "Show First Run Wizard again" : "Mostra nuovamente la procedura di primo avvio", "Common Name" : "Nome comune", "Valid until" : "Valido fino al", "Issued By" : "Emesso da", diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js index 5b3643eea80..0e87523179e 100644 --- a/settings/l10n/ja.js +++ b/settings/l10n/ja.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "有効なパスワードを指定する必要があります", "A valid email must be provided" : "有効なメールアドレスを指定する必要があります", "__language_name__" : "Japanese (日本語)", - "Sync clients" : "同期用クライアント", "Personal info" : "個人情報", + "Sync clients" : "同期用クライアント", "SSL root certificates" : "SSLルート証明書", "Everything (fatal issues, errors, warnings, info, debug)" : "すべて (致命的な問題、エラー、警告、情報、デバッグ)", "Info, warnings, errors and fatal issues" : "情報、警告、エラー、致命的な問題", @@ -224,35 +224,30 @@ OC.L10N.register( "Forum" : "フォーラム", "Issue tracker" : "イシュートラッカー", "Commercial support" : "商用サポート", - "Get the apps to sync your files" : "ファイルを同期するアプリを取得しましょう", - "Desktop client" : "デスクトップクライアント", - "Android app" : "Androidアプリ", - "iOS app" : "iOSアプリ", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "プロジェクトをサポートしていただける場合は、\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\">開発に参加する</a>か、\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\">プロジェクトを広く伝えてください</a>!", - "Show First Run Wizard again" : "初回ウィザードを再表示する", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "現在 <strong>%s</strong> / <strong>%s</strong> を使用しています", - "Password" : "パスワード", - "Unable to change your password" : "パスワードを変更することができません", - "Current password" : "現在のパスワード", - "New password" : "新しいパスワード", - "Change password" : "パスワードを変更", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "<strong>%s</strong> / <strong>%s</strong> が現在使用中です", + "Profile picture" : "プロフィール画像", + "Upload new" : "新たにアップロード", + "Remove image" : "画像を削除", + "Cancel" : "キャンセル", "Full name" : "氏名", "No display name set" : "表示名が未設定", "Email" : "メール", "Your email address" : "あなたのメールアドレス", - "Fill in an email address to enable password recovery and receive notifications" : "パスワードの回復を有効にし、通知を受け取るにはメールアドレスを入力してください", "No email address set" : "メールアドレスが設定されていません", "You are member of the following groups:" : "以下のグループのメンバーです:", - "Profile picture" : "プロフィール画像", - "Upload new" : "新たにアップロード", - "Select new from Files" : "新しいファイルを選択", - "Remove image" : "画像を削除", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "pngまたはjpg形式。正方形が理想ですが、切り取って加工することもできます。ファイルは最大20MBを超えないようにしてください。", - "Your avatar is provided by your original account." : "あなたのアバターは、あなたのオリジナルのアカウントで提供されています。", - "Cancel" : "キャンセル", - "Choose as profile image" : "プロファイル画像として選択", + "Password" : "パスワード", + "Unable to change your password" : "パスワードを変更することができません", + "Current password" : "現在のパスワード", + "New password" : "新しいパスワード", + "Change password" : "パスワードを変更", "Language" : "言語", "Help translate" : "翻訳に協力する", + "Get the apps to sync your files" : "ファイルを同期するアプリを取得しましょう", + "Desktop client" : "デスクトップクライアント", + "Android app" : "Androidアプリ", + "iOS app" : "iOSアプリ", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "プロジェクトをサポートしていただける場合は、\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\">開発に参加する</a>か、\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\">プロジェクトを広く伝えてください</a>!", + "Show First Run Wizard again" : "初回ウィザードを再表示する", "Common Name" : "コモンネーム", "Valid until" : "有効期限", "Issued By" : "発行元", diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json index f8daf2d7987..4a1af2b856a 100644 --- a/settings/l10n/ja.json +++ b/settings/l10n/ja.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "有効なパスワードを指定する必要があります", "A valid email must be provided" : "有効なメールアドレスを指定する必要があります", "__language_name__" : "Japanese (日本語)", - "Sync clients" : "同期用クライアント", "Personal info" : "個人情報", + "Sync clients" : "同期用クライアント", "SSL root certificates" : "SSLルート証明書", "Everything (fatal issues, errors, warnings, info, debug)" : "すべて (致命的な問題、エラー、警告、情報、デバッグ)", "Info, warnings, errors and fatal issues" : "情報、警告、エラー、致命的な問題", @@ -222,35 +222,30 @@ "Forum" : "フォーラム", "Issue tracker" : "イシュートラッカー", "Commercial support" : "商用サポート", - "Get the apps to sync your files" : "ファイルを同期するアプリを取得しましょう", - "Desktop client" : "デスクトップクライアント", - "Android app" : "Androidアプリ", - "iOS app" : "iOSアプリ", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "プロジェクトをサポートしていただける場合は、\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\">開発に参加する</a>か、\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\">プロジェクトを広く伝えてください</a>!", - "Show First Run Wizard again" : "初回ウィザードを再表示する", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "現在 <strong>%s</strong> / <strong>%s</strong> を使用しています", - "Password" : "パスワード", - "Unable to change your password" : "パスワードを変更することができません", - "Current password" : "現在のパスワード", - "New password" : "新しいパスワード", - "Change password" : "パスワードを変更", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "<strong>%s</strong> / <strong>%s</strong> が現在使用中です", + "Profile picture" : "プロフィール画像", + "Upload new" : "新たにアップロード", + "Remove image" : "画像を削除", + "Cancel" : "キャンセル", "Full name" : "氏名", "No display name set" : "表示名が未設定", "Email" : "メール", "Your email address" : "あなたのメールアドレス", - "Fill in an email address to enable password recovery and receive notifications" : "パスワードの回復を有効にし、通知を受け取るにはメールアドレスを入力してください", "No email address set" : "メールアドレスが設定されていません", "You are member of the following groups:" : "以下のグループのメンバーです:", - "Profile picture" : "プロフィール画像", - "Upload new" : "新たにアップロード", - "Select new from Files" : "新しいファイルを選択", - "Remove image" : "画像を削除", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "pngまたはjpg形式。正方形が理想ですが、切り取って加工することもできます。ファイルは最大20MBを超えないようにしてください。", - "Your avatar is provided by your original account." : "あなたのアバターは、あなたのオリジナルのアカウントで提供されています。", - "Cancel" : "キャンセル", - "Choose as profile image" : "プロファイル画像として選択", + "Password" : "パスワード", + "Unable to change your password" : "パスワードを変更することができません", + "Current password" : "現在のパスワード", + "New password" : "新しいパスワード", + "Change password" : "パスワードを変更", "Language" : "言語", "Help translate" : "翻訳に協力する", + "Get the apps to sync your files" : "ファイルを同期するアプリを取得しましょう", + "Desktop client" : "デスクトップクライアント", + "Android app" : "Androidアプリ", + "iOS app" : "iOSアプリ", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "プロジェクトをサポートしていただける場合は、\n<a href=\"https://owncloud.org/contribute\"\ntarget=\"_blank\">開発に参加する</a>か、\n<a href=\"https://owncloud.org/promote\"\ntarget=\"_blank\">プロジェクトを広く伝えてください</a>!", + "Show First Run Wizard again" : "初回ウィザードを再表示する", "Common Name" : "コモンネーム", "Valid until" : "有効期限", "Issued By" : "発行元", diff --git a/settings/l10n/ka_GE.js b/settings/l10n/ka_GE.js index 636954b6d7d..c8e03c9189c 100644 --- a/settings/l10n/ka_GE.js +++ b/settings/l10n/ka_GE.js @@ -46,19 +46,18 @@ OC.L10N.register( "Version" : "ვერსია", "by" : "მიერ", "Forum" : "ფორუმი", - "Get the apps to sync your files" : "აპლიკაცია ფაილების სინქრონიზაციისთვის", - "Show First Run Wizard again" : "მაჩვენე თავიდან გაშვებული ვიზარდი", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "თქვენ გამოყენებული გაქვთ <strong>%s</strong> –ი –<strong>%s<strong>–დან", + "Cancel" : "უარყოფა", + "Email" : "იმეილი", + "Your email address" : "თქვენი იმეილ მისამართი", "Password" : "პაროლი", "Unable to change your password" : "თქვენი პაროლი არ შეიცვალა", "Current password" : "მიმდინარე პაროლი", "New password" : "ახალი პაროლი", "Change password" : "პაროლის შეცვლა", - "Email" : "იმეილი", - "Your email address" : "თქვენი იმეილ მისამართი", - "Cancel" : "უარყოფა", "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", + "Get the apps to sync your files" : "აპლიკაცია ფაილების სინქრონიზაციისთვის", + "Show First Run Wizard again" : "მაჩვენე თავიდან გაშვებული ვიზარდი", "Username" : "მომხმარებლის სახელი", "Create" : "შექმნა", "Default Quota" : "საწყისი ქვოტა", diff --git a/settings/l10n/ka_GE.json b/settings/l10n/ka_GE.json index a1a3bb241e9..ebbaa612e17 100644 --- a/settings/l10n/ka_GE.json +++ b/settings/l10n/ka_GE.json @@ -44,19 +44,18 @@ "Version" : "ვერსია", "by" : "მიერ", "Forum" : "ფორუმი", - "Get the apps to sync your files" : "აპლიკაცია ფაილების სინქრონიზაციისთვის", - "Show First Run Wizard again" : "მაჩვენე თავიდან გაშვებული ვიზარდი", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "თქვენ გამოყენებული გაქვთ <strong>%s</strong> –ი –<strong>%s<strong>–დან", + "Cancel" : "უარყოფა", + "Email" : "იმეილი", + "Your email address" : "თქვენი იმეილ მისამართი", "Password" : "პაროლი", "Unable to change your password" : "თქვენი პაროლი არ შეიცვალა", "Current password" : "მიმდინარე პაროლი", "New password" : "ახალი პაროლი", "Change password" : "პაროლის შეცვლა", - "Email" : "იმეილი", - "Your email address" : "თქვენი იმეილ მისამართი", - "Cancel" : "უარყოფა", "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", + "Get the apps to sync your files" : "აპლიკაცია ფაილების სინქრონიზაციისთვის", + "Show First Run Wizard again" : "მაჩვენე თავიდან გაშვებული ვიზარდი", "Username" : "მომხმარებლის სახელი", "Create" : "შექმნა", "Default Quota" : "საწყისი ქვოტა", diff --git a/settings/l10n/km.js b/settings/l10n/km.js index c816d5bed33..41efdda51d2 100644 --- a/settings/l10n/km.js +++ b/settings/l10n/km.js @@ -61,23 +61,21 @@ OC.L10N.register( "Version" : "កំណែ", "by" : "ដោយ", "Forum" : "វេទិកាពិភាក្សា", - "Get the apps to sync your files" : "ដាក់អោយកម្មវិធីផ្សេងៗ ធ្វើសមកាលកម្មឯកសារអ្នក", - "Show First Run Wizard again" : "បង្ហាញ First Run Wizard ម្តងទៀត", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "អ្នកបានប្រើ <strong>%s</strong> ក្នុងចំណោមចំនួនមាន <strong>%s</strong>", + "Profile picture" : "រូបភាពប្រវត្តិរូប", + "Upload new" : "ផ្ទុកឡើងថ្មី", + "Remove image" : "ដករូបភាពចេញ", + "Cancel" : "លើកលែង", + "Email" : "អ៊ីមែល", + "Your email address" : "អ៊ីម៉ែលរបស់អ្នក", "Password" : "ពាក្យសម្ងាត់", "Unable to change your password" : "មិនអាចប្ដូរពាក្យសម្ងាត់របស់អ្នកបានទេ", "Current password" : "ពាក្យសម្ងាត់បច្ចុប្បន្ន", "New password" : "ពាក្យសម្ងាត់ថ្មី", "Change password" : "ប្តូរពាក្យសម្ងាត់", - "Email" : "អ៊ីមែល", - "Your email address" : "អ៊ីម៉ែលរបស់អ្នក", - "Profile picture" : "រូបភាពប្រវត្តិរូប", - "Upload new" : "ផ្ទុកឡើងថ្មី", - "Select new from Files" : "ជ្រើសថ្មីពីឯកសារ", - "Remove image" : "ដករូបភាពចេញ", - "Cancel" : "លើកលែង", "Language" : "ភាសា", "Help translate" : "ជួយបកប្រែ", + "Get the apps to sync your files" : "ដាក់អោយកម្មវិធីផ្សេងៗ ធ្វើសមកាលកម្មឯកសារអ្នក", + "Show First Run Wizard again" : "បង្ហាញ First Run Wizard ម្តងទៀត", "Username" : "ឈ្មោះអ្នកប្រើ", "Create" : "បង្កើត", "Admin Recovery Password" : "ការស្វែងរកពាក្យសម្ងាត់របស់ប្រធានវេបសាយ", diff --git a/settings/l10n/km.json b/settings/l10n/km.json index b57c054faa0..09fcff1b509 100644 --- a/settings/l10n/km.json +++ b/settings/l10n/km.json @@ -59,23 +59,21 @@ "Version" : "កំណែ", "by" : "ដោយ", "Forum" : "វេទិកាពិភាក្សា", - "Get the apps to sync your files" : "ដាក់អោយកម្មវិធីផ្សេងៗ ធ្វើសមកាលកម្មឯកសារអ្នក", - "Show First Run Wizard again" : "បង្ហាញ First Run Wizard ម្តងទៀត", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "អ្នកបានប្រើ <strong>%s</strong> ក្នុងចំណោមចំនួនមាន <strong>%s</strong>", + "Profile picture" : "រូបភាពប្រវត្តិរូប", + "Upload new" : "ផ្ទុកឡើងថ្មី", + "Remove image" : "ដករូបភាពចេញ", + "Cancel" : "លើកលែង", + "Email" : "អ៊ីមែល", + "Your email address" : "អ៊ីម៉ែលរបស់អ្នក", "Password" : "ពាក្យសម្ងាត់", "Unable to change your password" : "មិនអាចប្ដូរពាក្យសម្ងាត់របស់អ្នកបានទេ", "Current password" : "ពាក្យសម្ងាត់បច្ចុប្បន្ន", "New password" : "ពាក្យសម្ងាត់ថ្មី", "Change password" : "ប្តូរពាក្យសម្ងាត់", - "Email" : "អ៊ីមែល", - "Your email address" : "អ៊ីម៉ែលរបស់អ្នក", - "Profile picture" : "រូបភាពប្រវត្តិរូប", - "Upload new" : "ផ្ទុកឡើងថ្មី", - "Select new from Files" : "ជ្រើសថ្មីពីឯកសារ", - "Remove image" : "ដករូបភាពចេញ", - "Cancel" : "លើកលែង", "Language" : "ភាសា", "Help translate" : "ជួយបកប្រែ", + "Get the apps to sync your files" : "ដាក់អោយកម្មវិធីផ្សេងៗ ធ្វើសមកាលកម្មឯកសារអ្នក", + "Show First Run Wizard again" : "បង្ហាញ First Run Wizard ម្តងទៀត", "Username" : "ឈ្មោះអ្នកប្រើ", "Create" : "បង្កើត", "Admin Recovery Password" : "ការស្វែងរកពាក្យសម្ងាត់របស់ប្រធានវេបសាយ", diff --git a/settings/l10n/kn.js b/settings/l10n/kn.js index 673081e5f01..1dc05786534 100644 --- a/settings/l10n/kn.js +++ b/settings/l10n/kn.js @@ -100,14 +100,14 @@ OC.L10N.register( "Uninstall App" : "ಅಳಿಸಿ", "Cheers!" : "ಆನಂದಿಸಿ !", "Forum" : "ವೇದಿಕೆ", + "Cancel" : "ರದ್ದು", + "Email" : "ಇ-ಅಂಚೆ", + "Your email address" : "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ", "Password" : "ಗುಪ್ತ ಪದ", "Unable to change your password" : "ನಿನ್ನ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", "Current password" : "ಪ್ರಸ್ತುತ ಗುಪ್ತಪದ", "New password" : "ಹೊಸ ಗುಪ್ತಪದ", "Change password" : "ಗುಪ್ತ ಪದವನ್ನು ಬದಲಾಯಿಸಿ", - "Email" : "ಇ-ಅಂಚೆ", - "Your email address" : "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ", - "Cancel" : "ರದ್ದು", "Language" : "ಭಾಷೆ", "Help translate" : "ಭಾಷಾಂತರಿಸಲು ಸಹಾಯ ಮಾಡಿ", "Username" : "ಬಳಕೆಯ ಹೆಸರು", diff --git a/settings/l10n/kn.json b/settings/l10n/kn.json index 5942e8a8dc7..0096c4f741e 100644 --- a/settings/l10n/kn.json +++ b/settings/l10n/kn.json @@ -98,14 +98,14 @@ "Uninstall App" : "ಅಳಿಸಿ", "Cheers!" : "ಆನಂದಿಸಿ !", "Forum" : "ವೇದಿಕೆ", + "Cancel" : "ರದ್ದು", + "Email" : "ಇ-ಅಂಚೆ", + "Your email address" : "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ", "Password" : "ಗುಪ್ತ ಪದ", "Unable to change your password" : "ನಿನ್ನ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ", "Current password" : "ಪ್ರಸ್ತುತ ಗುಪ್ತಪದ", "New password" : "ಹೊಸ ಗುಪ್ತಪದ", "Change password" : "ಗುಪ್ತ ಪದವನ್ನು ಬದಲಾಯಿಸಿ", - "Email" : "ಇ-ಅಂಚೆ", - "Your email address" : "ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ", - "Cancel" : "ರದ್ದು", "Language" : "ಭಾಷೆ", "Help translate" : "ಭಾಷಾಂತರಿಸಲು ಸಹಾಯ ಮಾಡಿ", "Username" : "ಬಳಕೆಯ ಹೆಸರು", diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js index 56d7b315fbd..5f7c0f3a61f 100644 --- a/settings/l10n/ko.js +++ b/settings/l10n/ko.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "올바른 암호를 입력해야 함", "A valid email must be provided" : "올바른 이메일 주소를 입력해야 함", "__language_name__" : "한국어", - "Sync clients" : "동기화 클라이언트", "Personal info" : "개인 정보", + "Sync clients" : "동기화 클라이언트", "SSL root certificates" : "SSL 루트 인증서", "Everything (fatal issues, errors, warnings, info, debug)" : "모두 (치명적 문제, 오류, 경고, 정보, 디버그)", "Info, warnings, errors and fatal issues" : "정보, 경고, 오류, 치명적 문제", @@ -191,6 +191,7 @@ OC.L10N.register( "More" : "더 중요함", "Less" : "덜 중요함", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "로그 파일이 100MB보다 큽니다. 다운로드하는 데 시간이 걸릴 수 있습니다!", + "What to log" : "남길 로그", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "데이터베이스로 SQLite를 사용하고 있습니다. 대규모의 파일을 관리하려고 한다면 다른 데이터베이스 백엔드로 전환할 것을 권장합니다.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "특히 파일 동기화를 위해 데스크톱 클라이언트를 사용할 예정이면, SQLite를 사용하지 않는 것이 좋습니다.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "다른 데이터베이스로 이전하려면 다음 명령을 사용하십시오: 'occ db:convert-type' 다른 명령을 알아보려면 <a target=\"_blank\" href=\"%s\">문서 ↗</a>를 참고하십시오.", @@ -223,35 +224,30 @@ OC.L10N.register( "Forum" : "포럼", "Issue tracker" : "이슈 트래커", "Commercial support" : "상용 지원", - "Get the apps to sync your files" : "파일 동기화 앱 가져오기", - "Desktop client" : "데스크톱 클라이언트", - "Android app" : "Android 앱", - "iOS app" : "iOS 앱", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "프로젝트를 지원하려면\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">개발에 참여하거나</a>\n\t\t\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">널리 알려 주십시오</a>!", - "Show First Run Wizard again" : "첫 실행 마법사 다시 보이기", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "현재 공간 중 <strong>%s</strong>/<strong>%s</strong>을(를) 사용 중입니다", - "Password" : "암호", - "Unable to change your password" : "암호를 변경할 수 없음", - "Current password" : "현재 암호", - "New password" : "새 암호", - "Change password" : "암호 변경", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "현재 <strong>%s</strong> / <strong>%s</strong>을(를) 사용중입니다.", + "Profile picture" : "프로필 사진", + "Upload new" : "새로 업로드", + "Remove image" : "그림 삭제", + "Cancel" : "취소", "Full name" : "전체 이름", "No display name set" : "표시 이름이 설정되지 않음", "Email" : "이메일", "Your email address" : "이메일 주소", - "Fill in an email address to enable password recovery and receive notifications" : "이메일 주소를 입력하면 암호 찾기 및 알림 수신이 가능합니다", "No email address set" : "이메일 주소가 설정되지 않음", "You are member of the following groups:" : "다음 그룹의 구성원입니다:", - "Profile picture" : "프로필 사진", - "Upload new" : "새로 업로드", - "Select new from Files" : "파일에서 선택", - "Remove image" : "그림 삭제", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "PNG나 JPG 파일입니다. 정사각형을 사용하는 것이 가장 좋지만 잘라낼 수 있습니다. 파일 최대 크기는 20MB입니다.", - "Your avatar is provided by your original account." : "원본 계정의 아바타를 사용합니다.", - "Cancel" : "취소", - "Choose as profile image" : "프로필 이미지로 사용", + "Password" : "암호", + "Unable to change your password" : "암호를 변경할 수 없음", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Change password" : "암호 변경", "Language" : "언어", "Help translate" : "번역 돕기", + "Get the apps to sync your files" : "파일 동기화 앱 가져오기", + "Desktop client" : "데스크톱 클라이언트", + "Android app" : "Android 앱", + "iOS app" : "iOS 앱", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "프로젝트를 지원하려면\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">개발에 참여하거나</a>\n\t\t\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">널리 알려 주십시오</a>!", + "Show First Run Wizard again" : "첫 실행 마법사 다시 보이기", "Common Name" : "공통 이름", "Valid until" : "만료 기간:", "Issued By" : "발급자:", diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json index 07e8b253e73..23fe181a7d3 100644 --- a/settings/l10n/ko.json +++ b/settings/l10n/ko.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "올바른 암호를 입력해야 함", "A valid email must be provided" : "올바른 이메일 주소를 입력해야 함", "__language_name__" : "한국어", - "Sync clients" : "동기화 클라이언트", "Personal info" : "개인 정보", + "Sync clients" : "동기화 클라이언트", "SSL root certificates" : "SSL 루트 인증서", "Everything (fatal issues, errors, warnings, info, debug)" : "모두 (치명적 문제, 오류, 경고, 정보, 디버그)", "Info, warnings, errors and fatal issues" : "정보, 경고, 오류, 치명적 문제", @@ -189,6 +189,7 @@ "More" : "더 중요함", "Less" : "덜 중요함", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "로그 파일이 100MB보다 큽니다. 다운로드하는 데 시간이 걸릴 수 있습니다!", + "What to log" : "남길 로그", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "데이터베이스로 SQLite를 사용하고 있습니다. 대규모의 파일을 관리하려고 한다면 다른 데이터베이스 백엔드로 전환할 것을 권장합니다.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "특히 파일 동기화를 위해 데스크톱 클라이언트를 사용할 예정이면, SQLite를 사용하지 않는 것이 좋습니다.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "다른 데이터베이스로 이전하려면 다음 명령을 사용하십시오: 'occ db:convert-type' 다른 명령을 알아보려면 <a target=\"_blank\" href=\"%s\">문서 ↗</a>를 참고하십시오.", @@ -221,35 +222,30 @@ "Forum" : "포럼", "Issue tracker" : "이슈 트래커", "Commercial support" : "상용 지원", - "Get the apps to sync your files" : "파일 동기화 앱 가져오기", - "Desktop client" : "데스크톱 클라이언트", - "Android app" : "Android 앱", - "iOS app" : "iOS 앱", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "프로젝트를 지원하려면\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">개발에 참여하거나</a>\n\t\t\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">널리 알려 주십시오</a>!", - "Show First Run Wizard again" : "첫 실행 마법사 다시 보이기", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "현재 공간 중 <strong>%s</strong>/<strong>%s</strong>을(를) 사용 중입니다", - "Password" : "암호", - "Unable to change your password" : "암호를 변경할 수 없음", - "Current password" : "현재 암호", - "New password" : "새 암호", - "Change password" : "암호 변경", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "현재 <strong>%s</strong> / <strong>%s</strong>을(를) 사용중입니다.", + "Profile picture" : "프로필 사진", + "Upload new" : "새로 업로드", + "Remove image" : "그림 삭제", + "Cancel" : "취소", "Full name" : "전체 이름", "No display name set" : "표시 이름이 설정되지 않음", "Email" : "이메일", "Your email address" : "이메일 주소", - "Fill in an email address to enable password recovery and receive notifications" : "이메일 주소를 입력하면 암호 찾기 및 알림 수신이 가능합니다", "No email address set" : "이메일 주소가 설정되지 않음", "You are member of the following groups:" : "다음 그룹의 구성원입니다:", - "Profile picture" : "프로필 사진", - "Upload new" : "새로 업로드", - "Select new from Files" : "파일에서 선택", - "Remove image" : "그림 삭제", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "PNG나 JPG 파일입니다. 정사각형을 사용하는 것이 가장 좋지만 잘라낼 수 있습니다. 파일 최대 크기는 20MB입니다.", - "Your avatar is provided by your original account." : "원본 계정의 아바타를 사용합니다.", - "Cancel" : "취소", - "Choose as profile image" : "프로필 이미지로 사용", + "Password" : "암호", + "Unable to change your password" : "암호를 변경할 수 없음", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Change password" : "암호 변경", "Language" : "언어", "Help translate" : "번역 돕기", + "Get the apps to sync your files" : "파일 동기화 앱 가져오기", + "Desktop client" : "데스크톱 클라이언트", + "Android app" : "Android 앱", + "iOS app" : "iOS 앱", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "프로젝트를 지원하려면\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">개발에 참여하거나</a>\n\t\t\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">널리 알려 주십시오</a>!", + "Show First Run Wizard again" : "첫 실행 마법사 다시 보이기", "Common Name" : "공통 이름", "Valid until" : "만료 기간:", "Issued By" : "발급자:", diff --git a/settings/l10n/ku_IQ.js b/settings/l10n/ku_IQ.js index 1359dc748a3..1225afddf54 100644 --- a/settings/l10n/ku_IQ.js +++ b/settings/l10n/ku_IQ.js @@ -9,10 +9,10 @@ OC.L10N.register( "Encryption" : "نهێنیکردن", "Server address" : "ناونیشانی ڕاژه", "by" : "لهلایهن", + "Cancel" : "لابردن", + "Email" : "ئیمهیل", "Password" : "وشەی تێپەربو", "New password" : "وشەی نهێنی نوێ", - "Email" : "ئیمهیل", - "Cancel" : "لابردن", "Username" : "ناوی بهکارهێنهر" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ku_IQ.json b/settings/l10n/ku_IQ.json index f7dfd226aae..bb1a59521d1 100644 --- a/settings/l10n/ku_IQ.json +++ b/settings/l10n/ku_IQ.json @@ -7,10 +7,10 @@ "Encryption" : "نهێنیکردن", "Server address" : "ناونیشانی ڕاژه", "by" : "لهلایهن", + "Cancel" : "لابردن", + "Email" : "ئیمهیل", "Password" : "وشەی تێپەربو", "New password" : "وشەی نهێنی نوێ", - "Email" : "ئیمهیل", - "Cancel" : "لابردن", "Username" : "ناوی بهکارهێنهر" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/lb.js b/settings/l10n/lb.js index 43f9705baa1..533cff93a70 100644 --- a/settings/l10n/lb.js +++ b/settings/l10n/lb.js @@ -34,19 +34,19 @@ OC.L10N.register( "Less" : "Manner", "by" : "vun", "Cheers!" : "Prost!", - "Desktop client" : "Desktop-Programm", - "Android app" : "Android-App", - "iOS app" : "iOS-App", + "Cancel" : "Ofbriechen", + "Email" : "Email", + "Your email address" : "Deng Email Adress", "Password" : "Passwuert", "Unable to change your password" : "Konnt däin Passwuert net änneren", "Current password" : "Momentan 't Passwuert", "New password" : "Neit Passwuert", "Change password" : "Passwuert änneren", - "Email" : "Email", - "Your email address" : "Deng Email Adress", - "Cancel" : "Ofbriechen", "Language" : "Sprooch", "Help translate" : "Hëllef iwwersetzen", + "Desktop client" : "Desktop-Programm", + "Android app" : "Android-App", + "iOS app" : "iOS-App", "Username" : "Benotzernumm", "Create" : "Erstellen", "Group" : "Grupp", diff --git a/settings/l10n/lb.json b/settings/l10n/lb.json index 1d408deb079..8188babc0eb 100644 --- a/settings/l10n/lb.json +++ b/settings/l10n/lb.json @@ -32,19 +32,19 @@ "Less" : "Manner", "by" : "vun", "Cheers!" : "Prost!", - "Desktop client" : "Desktop-Programm", - "Android app" : "Android-App", - "iOS app" : "iOS-App", + "Cancel" : "Ofbriechen", + "Email" : "Email", + "Your email address" : "Deng Email Adress", "Password" : "Passwuert", "Unable to change your password" : "Konnt däin Passwuert net änneren", "Current password" : "Momentan 't Passwuert", "New password" : "Neit Passwuert", "Change password" : "Passwuert änneren", - "Email" : "Email", - "Your email address" : "Deng Email Adress", - "Cancel" : "Ofbriechen", "Language" : "Sprooch", "Help translate" : "Hëllef iwwersetzen", + "Desktop client" : "Desktop-Programm", + "Android app" : "Android-App", + "iOS app" : "iOS-App", "Username" : "Benotzernumm", "Create" : "Erstellen", "Group" : "Grupp", diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index 41fa2256deb..78ddad66da8 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -83,27 +83,24 @@ OC.L10N.register( "by" : " ", "Cheers!" : "Sveikinimai!", "Forum" : "Forumas", - "Get the apps to sync your files" : "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus", - "Desktop client" : "Darbastalio klientas", - "Android app" : "Android programa", - "iOS app" : "iOS programa", - "Show First Run Wizard again" : "Rodyti pirmo karto vedlį dar kartą", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong> iš galimų <strong>%s</strong>", + "Profile picture" : "Profilio paveikslėlis", + "Upload new" : "Įkelti naują", + "Remove image" : "Pašalinti paveikslėlį", + "Cancel" : "Atšaukti", + "Email" : "El. Paštas", + "Your email address" : "Jūsų el. pašto adresas", "Password" : "Slaptažodis", "Unable to change your password" : "Neįmanoma pakeisti slaptažodžio", "Current password" : "Dabartinis slaptažodis", "New password" : "Naujas slaptažodis", "Change password" : "Pakeisti slaptažodį", - "Email" : "El. Paštas", - "Your email address" : "Jūsų el. pašto adresas", - "Profile picture" : "Profilio paveikslėlis", - "Upload new" : "Įkelti naują", - "Select new from Files" : "Pasirinkti naują iš failų", - "Remove image" : "Pašalinti paveikslėlį", - "Cancel" : "Atšaukti", - "Choose as profile image" : "Pasirinkite profilio paveiksliuką", "Language" : "Kalba", "Help translate" : "Padėkite išversti", + "Get the apps to sync your files" : "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus", + "Desktop client" : "Darbastalio klientas", + "Android app" : "Android programa", + "iOS app" : "iOS programa", + "Show First Run Wizard again" : "Rodyti pirmo karto vedlį dar kartą", "Username" : "Prisijungimo vardas", "Create" : "Sukurti", "Admin Recovery Password" : "Administracinis atkūrimo slaptažodis", diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index dab231151a3..a1f4abf3580 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -81,27 +81,24 @@ "by" : " ", "Cheers!" : "Sveikinimai!", "Forum" : "Forumas", - "Get the apps to sync your files" : "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus", - "Desktop client" : "Darbastalio klientas", - "Android app" : "Android programa", - "iOS app" : "iOS programa", - "Show First Run Wizard again" : "Rodyti pirmo karto vedlį dar kartą", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong> iš galimų <strong>%s</strong>", + "Profile picture" : "Profilio paveikslėlis", + "Upload new" : "Įkelti naują", + "Remove image" : "Pašalinti paveikslėlį", + "Cancel" : "Atšaukti", + "Email" : "El. Paštas", + "Your email address" : "Jūsų el. pašto adresas", "Password" : "Slaptažodis", "Unable to change your password" : "Neįmanoma pakeisti slaptažodžio", "Current password" : "Dabartinis slaptažodis", "New password" : "Naujas slaptažodis", "Change password" : "Pakeisti slaptažodį", - "Email" : "El. Paštas", - "Your email address" : "Jūsų el. pašto adresas", - "Profile picture" : "Profilio paveikslėlis", - "Upload new" : "Įkelti naują", - "Select new from Files" : "Pasirinkti naują iš failų", - "Remove image" : "Pašalinti paveikslėlį", - "Cancel" : "Atšaukti", - "Choose as profile image" : "Pasirinkite profilio paveiksliuką", "Language" : "Kalba", "Help translate" : "Padėkite išversti", + "Get the apps to sync your files" : "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus", + "Desktop client" : "Darbastalio klientas", + "Android app" : "Android programa", + "iOS app" : "iOS programa", + "Show First Run Wizard again" : "Rodyti pirmo karto vedlį dar kartą", "Username" : "Prisijungimo vardas", "Create" : "Sukurti", "Admin Recovery Password" : "Administracinis atkūrimo slaptažodis", diff --git a/settings/l10n/lv.js b/settings/l10n/lv.js index f5c3214b573..cea7028a961 100644 --- a/settings/l10n/lv.js +++ b/settings/l10n/lv.js @@ -123,26 +123,24 @@ OC.L10N.register( "Hide description …" : "Slēpt aprakstu …", "Online documentation" : "Tiešsaistes dokumentācija", "Forum" : "Forums", - "Get the apps to sync your files" : "Saņem lietotnes, lai sinhronizētu savas datnes", - "Desktop client" : "Darbvirsmas klients", - "Android app" : "Android lietotne", - "iOS app" : "iOS lietotne", - "Show First Run Wizard again" : "Vēlreiz rādīt pirmās palaišanas vedni", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Jūs lietojat <strong>%s</strong> no pieejamajiem <strong>%s</strong>", + "Profile picture" : "Profila attēls", + "Upload new" : "Ielādēt jaunu", + "Remove image" : "Novākt attēlu", + "Cancel" : "Atcelt", + "Email" : "E-pasts", + "Your email address" : "Jūsu e-pasta adrese", "Password" : "Parole", "Unable to change your password" : "Nevar nomainīt jūsu paroli", "Current password" : "Pašreizējā parole", "New password" : "Jauna parole", "Change password" : "Mainīt paroli", - "Email" : "E-pasts", - "Your email address" : "Jūsu e-pasta adrese", - "Profile picture" : "Profila attēls", - "Upload new" : "Ielādēt jaunu", - "Select new from Files" : "Izvēlēties jaunu no Failiem", - "Remove image" : "Novākt attēlu", - "Cancel" : "Atcelt", "Language" : "Valoda", "Help translate" : "Palīdzi tulkot", + "Get the apps to sync your files" : "Saņem lietotnes, lai sinhronizētu savas datnes", + "Desktop client" : "Darbvirsmas klients", + "Android app" : "Android lietotne", + "iOS app" : "iOS lietotne", + "Show First Run Wizard again" : "Vēlreiz rādīt pirmās palaišanas vedni", "Send email to new user" : "Sūtīt e-pastu jaunajam lietotājam", "Show email address" : "Rādīt e-pasta adreses", "Username" : "Lietotājvārds", diff --git a/settings/l10n/lv.json b/settings/l10n/lv.json index db564c9ae11..80298766d3b 100644 --- a/settings/l10n/lv.json +++ b/settings/l10n/lv.json @@ -121,26 +121,24 @@ "Hide description …" : "Slēpt aprakstu …", "Online documentation" : "Tiešsaistes dokumentācija", "Forum" : "Forums", - "Get the apps to sync your files" : "Saņem lietotnes, lai sinhronizētu savas datnes", - "Desktop client" : "Darbvirsmas klients", - "Android app" : "Android lietotne", - "iOS app" : "iOS lietotne", - "Show First Run Wizard again" : "Vēlreiz rādīt pirmās palaišanas vedni", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Jūs lietojat <strong>%s</strong> no pieejamajiem <strong>%s</strong>", + "Profile picture" : "Profila attēls", + "Upload new" : "Ielādēt jaunu", + "Remove image" : "Novākt attēlu", + "Cancel" : "Atcelt", + "Email" : "E-pasts", + "Your email address" : "Jūsu e-pasta adrese", "Password" : "Parole", "Unable to change your password" : "Nevar nomainīt jūsu paroli", "Current password" : "Pašreizējā parole", "New password" : "Jauna parole", "Change password" : "Mainīt paroli", - "Email" : "E-pasts", - "Your email address" : "Jūsu e-pasta adrese", - "Profile picture" : "Profila attēls", - "Upload new" : "Ielādēt jaunu", - "Select new from Files" : "Izvēlēties jaunu no Failiem", - "Remove image" : "Novākt attēlu", - "Cancel" : "Atcelt", "Language" : "Valoda", "Help translate" : "Palīdzi tulkot", + "Get the apps to sync your files" : "Saņem lietotnes, lai sinhronizētu savas datnes", + "Desktop client" : "Darbvirsmas klients", + "Android app" : "Android lietotne", + "iOS app" : "iOS lietotne", + "Show First Run Wizard again" : "Vēlreiz rādīt pirmās palaišanas vedni", "Send email to new user" : "Sūtīt e-pastu jaunajam lietotājam", "Show email address" : "Rādīt e-pasta adreses", "Username" : "Lietotājvārds", diff --git a/settings/l10n/mk.js b/settings/l10n/mk.js index 29d21c8f40e..3179deedb11 100644 --- a/settings/l10n/mk.js +++ b/settings/l10n/mk.js @@ -89,8 +89,8 @@ OC.L10N.register( "Error creating user" : "Грешка при креирање на корисникот", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", "__language_name__" : "__language_name__", - "Sync clients" : "Клиенти за синхронизација", "Personal info" : "Лични податоци", + "Sync clients" : "Клиенти за синхронизација", "SSL root certificates" : "SSL root сертификати", "Info, warnings, errors and fatal issues" : "Информации, предупредувања, грешки и фатални работи", "Warnings, errors and fatal issues" : "Предупредувања, грешки и фатални работи", @@ -137,25 +137,21 @@ OC.L10N.register( "Enable only for specific groups" : "Овозможи само на специфицирани групи", "Cheers!" : "Поздрав!", "Forum" : "Форум", - "Get the apps to sync your files" : "Преземете апликации за синхронизирање на вашите датотеки", - "Show First Run Wizard again" : "Прикажи го повторно волшебникот при првото стартување", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Имате искористено <strong>%s</strong> од достапните <strong>%s</strong>", + "Profile picture" : "Фотографија за профил", + "Upload new" : "Префрли нова", + "Remove image" : "Отстрани ја фотографијата", + "Cancel" : "Откажи", + "Email" : "Е-пошта", + "Your email address" : "Вашата адреса за е-пошта", "Password" : "Лозинка", "Unable to change your password" : "Вашата лозинка неможе да се смени", "Current password" : "Моментална лозинка", "New password" : "Нова лозинка", "Change password" : "Смени лозинка", - "Email" : "Е-пошта", - "Your email address" : "Вашата адреса за е-пошта", - "Profile picture" : "Фотографија за профил", - "Upload new" : "Префрли нова", - "Select new from Files" : "Одбери нова од датотеките", - "Remove image" : "Отстрани ја фотографијата", - "Your avatar is provided by your original account." : "Вашиот аватар е креиран со вашата оригинална сметка", - "Cancel" : "Откажи", - "Choose as profile image" : "Одбери фотографија за профилот", "Language" : "Јазик", "Help translate" : "Помогни во преводот", + "Get the apps to sync your files" : "Преземете апликации за синхронизирање на вашите датотеки", + "Show First Run Wizard again" : "Прикажи го повторно волшебникот при првото стартување", "Username" : "Корисничко име", "Create" : "Создај", "Admin Recovery Password" : "Обновување на Admin лозинката", diff --git a/settings/l10n/mk.json b/settings/l10n/mk.json index b3dc7a8ceef..867e297ef8d 100644 --- a/settings/l10n/mk.json +++ b/settings/l10n/mk.json @@ -87,8 +87,8 @@ "Error creating user" : "Грешка при креирање на корисникот", "A valid password must be provided" : "Мора да се обезбеди валидна лозинка", "__language_name__" : "__language_name__", - "Sync clients" : "Клиенти за синхронизација", "Personal info" : "Лични податоци", + "Sync clients" : "Клиенти за синхронизација", "SSL root certificates" : "SSL root сертификати", "Info, warnings, errors and fatal issues" : "Информации, предупредувања, грешки и фатални работи", "Warnings, errors and fatal issues" : "Предупредувања, грешки и фатални работи", @@ -135,25 +135,21 @@ "Enable only for specific groups" : "Овозможи само на специфицирани групи", "Cheers!" : "Поздрав!", "Forum" : "Форум", - "Get the apps to sync your files" : "Преземете апликации за синхронизирање на вашите датотеки", - "Show First Run Wizard again" : "Прикажи го повторно волшебникот при првото стартување", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Имате искористено <strong>%s</strong> од достапните <strong>%s</strong>", + "Profile picture" : "Фотографија за профил", + "Upload new" : "Префрли нова", + "Remove image" : "Отстрани ја фотографијата", + "Cancel" : "Откажи", + "Email" : "Е-пошта", + "Your email address" : "Вашата адреса за е-пошта", "Password" : "Лозинка", "Unable to change your password" : "Вашата лозинка неможе да се смени", "Current password" : "Моментална лозинка", "New password" : "Нова лозинка", "Change password" : "Смени лозинка", - "Email" : "Е-пошта", - "Your email address" : "Вашата адреса за е-пошта", - "Profile picture" : "Фотографија за профил", - "Upload new" : "Префрли нова", - "Select new from Files" : "Одбери нова од датотеките", - "Remove image" : "Отстрани ја фотографијата", - "Your avatar is provided by your original account." : "Вашиот аватар е креиран со вашата оригинална сметка", - "Cancel" : "Откажи", - "Choose as profile image" : "Одбери фотографија за профилот", "Language" : "Јазик", "Help translate" : "Помогни во преводот", + "Get the apps to sync your files" : "Преземете апликации за синхронизирање на вашите датотеки", + "Show First Run Wizard again" : "Прикажи го повторно волшебникот при првото стартување", "Username" : "Корисничко име", "Create" : "Создај", "Admin Recovery Password" : "Обновување на Admin лозинката", diff --git a/settings/l10n/mn.js b/settings/l10n/mn.js index 56695ede7ae..75ca2475868 100644 --- a/settings/l10n/mn.js +++ b/settings/l10n/mn.js @@ -13,8 +13,8 @@ OC.L10N.register( "Your full name has been changed." : "Таны бүтэн нэр солигдлоо.", "Unable to change full name" : "Бүтэн нэр солих боломжгүй байна", "All" : "Бүгд", - "Password" : "Нууц үг", "Email" : "И-мэйл", + "Password" : "Нууц үг", "Username" : "Хэрэглэгчийн нэр" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/mn.json b/settings/l10n/mn.json index 560c7c9cb2e..a98fbc86a0e 100644 --- a/settings/l10n/mn.json +++ b/settings/l10n/mn.json @@ -11,8 +11,8 @@ "Your full name has been changed." : "Таны бүтэн нэр солигдлоо.", "Unable to change full name" : "Бүтэн нэр солих боломжгүй байна", "All" : "Бүгд", - "Password" : "Нууц үг", "Email" : "И-мэйл", + "Password" : "Нууц үг", "Username" : "Хэрэглэгчийн нэр" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/ms_MY.js b/settings/l10n/ms_MY.js index a4c28176fc5..ce27d07be3f 100644 --- a/settings/l10n/ms_MY.js +++ b/settings/l10n/ms_MY.js @@ -16,15 +16,15 @@ OC.L10N.register( "Server address" : "Alamat pelayan", "More" : "Lanjutan", "by" : "oleh", + "Profile picture" : "Gambar profil", + "Cancel" : "Batal", + "Email" : "Email", + "Your email address" : "Alamat emel anda", "Password" : "Kata laluan", "Unable to change your password" : "Gagal mengubah kata laluan anda ", "Current password" : "Kata laluan semasa", "New password" : "Kata laluan baru", "Change password" : "Ubah kata laluan", - "Email" : "Email", - "Your email address" : "Alamat emel anda", - "Profile picture" : "Gambar profil", - "Cancel" : "Batal", "Language" : "Bahasa", "Help translate" : "Bantu terjemah", "Username" : "Nama pengguna", diff --git a/settings/l10n/ms_MY.json b/settings/l10n/ms_MY.json index 9ee8415ef8f..8c6e2a0a41a 100644 --- a/settings/l10n/ms_MY.json +++ b/settings/l10n/ms_MY.json @@ -14,15 +14,15 @@ "Server address" : "Alamat pelayan", "More" : "Lanjutan", "by" : "oleh", + "Profile picture" : "Gambar profil", + "Cancel" : "Batal", + "Email" : "Email", + "Your email address" : "Alamat emel anda", "Password" : "Kata laluan", "Unable to change your password" : "Gagal mengubah kata laluan anda ", "Current password" : "Kata laluan semasa", "New password" : "Kata laluan baru", "Change password" : "Ubah kata laluan", - "Email" : "Email", - "Your email address" : "Alamat emel anda", - "Profile picture" : "Gambar profil", - "Cancel" : "Batal", "Language" : "Bahasa", "Help translate" : "Bantu terjemah", "Username" : "Nama pengguna", diff --git a/settings/l10n/my_MM.js b/settings/l10n/my_MM.js index f95325bb8db..99814ff2418 100644 --- a/settings/l10n/my_MM.js +++ b/settings/l10n/my_MM.js @@ -3,9 +3,9 @@ OC.L10N.register( { "Invalid request" : "တောင်းဆိုချက်မမှန်ကန်ပါ", "Authentication error" : "ခွင့်ပြုချက်မအောင်မြင်", + "Cancel" : "ပယ်ဖျက်မည်", "Password" : "စကားဝှက်", "New password" : "စကားဝှက်အသစ်", - "Cancel" : "ပယ်ဖျက်မည်", "Username" : "သုံးစွဲသူအမည်" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/my_MM.json b/settings/l10n/my_MM.json index 503f7fcb4d9..08dcf1722c8 100644 --- a/settings/l10n/my_MM.json +++ b/settings/l10n/my_MM.json @@ -1,9 +1,9 @@ { "translations": { "Invalid request" : "တောင်းဆိုချက်မမှန်ကန်ပါ", "Authentication error" : "ခွင့်ပြုချက်မအောင်မြင်", + "Cancel" : "ပယ်ဖျက်မည်", "Password" : "စကားဝှက်", "New password" : "စကားဝှက်အသစ်", - "Cancel" : "ပယ်ဖျက်မည်", "Username" : "သုံးစွဲသူအမည်" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js index 9d02c085f05..bf8af543285 100644 --- a/settings/l10n/nb_NO.js +++ b/settings/l10n/nb_NO.js @@ -80,6 +80,7 @@ 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: {message}" : "Det oppstod en feil: {message}", "Select a profile picture" : "Velg et profilbilde", "Very weak password" : "Veldig svakt passord", @@ -106,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Oppgi et gyldig passord", "A valid email must be provided" : "En gyldig e-postadresse må oppgis", "__language_name__" : "__language_name__", - "Sync clients" : "Synkroniseringsklienter", "Personal info" : "Personlig informasjon", + "Sync clients" : "Synkroniseringsklienter", "SSL root certificates" : "SSL rotsertifikater", "Everything (fatal issues, errors, warnings, info, debug)" : "Alt (fatale problemer, feil, advarsler, info, debug)", "Info, warnings, errors and fatal issues" : "Info, advarsler, feil og fatale problemer", @@ -190,6 +191,7 @@ OC.L10N.register( "More" : "Mer", "Less" : "Mindre", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Loggfilen er over 100 MB, nedlastingen kan ta en stund!", + "What to log" : "Hva som skal logges", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite brukes som database. For større installasjoner anbefaler vi å bytte til en annen database-server.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite er spesielt frarådet om man bruker desktopklienten til filsynkronisering", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "For å migrere til en annen database, bruk kommandolinjeverktøyet: 'occ db:convert-type', eller les i <a target=\"_blank\" href=\"%s\">dokumentasjonen ↗</a>.", @@ -222,35 +224,30 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Problemsporing", "Commercial support" : "Forretningsstøtte", - "Get the apps to sync your files" : "Hent apper som synkroniserer filene dine", - "Desktop client" : "Skrivebordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte prosjektet kan du\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">delta i utviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spre budskapet</a>!", - "Show First Run Wizard again" : "Vis \"Førstegangs veiviser\" på nytt", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brukt <strong>%s</strong> av de tilgjengelige <strong>%s</strong>", - "Password" : "Passord", - "Unable to change your password" : "Kunne ikke endre passordet ditt", - "Current password" : "Nåværende passord", - "New password" : "Nytt passord", - "Change password" : "Endre passord", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Du bruker<strong>%s</strong> av <strong>%s</strong>", + "Profile picture" : "Profilbilde", + "Upload new" : "Last opp nytt", + "Remove image" : "Fjern bilde", + "Cancel" : "Avbryt", "Full name" : "Fullt navn", "No display name set" : "Visningsnavn ikke satt", "Email" : "Epost", "Your email address" : "Din e-postadresse", - "Fill in an email address to enable password recovery and receive notifications" : "Legg inn en e-postadresse for å aktivere passordgjenfinning og motta varsler", "No email address set" : "E-postadresse ikke satt", "You are member of the following groups:" : "Du er medlem av følgende grupper:", - "Profile picture" : "Profilbilde", - "Upload new" : "Last opp nytt", - "Select new from Files" : "Velg nytt fra Filer", - "Remove image" : "Fjern bilde", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Enten png eller jpg. Helst kvadratisk, men du kan beskjære bildet. Filen kan ikke være større enn 20 MB.", - "Your avatar is provided by your original account." : "Avataren din kommer fra din opprinnelige konto.", - "Cancel" : "Avbryt", - "Choose as profile image" : "Velg som profilbilde", + "Password" : "Passord", + "Unable to change your password" : "Kunne ikke endre passordet ditt", + "Current password" : "Nåværende passord", + "New password" : "Nytt passord", + "Change password" : "Endre passord", "Language" : "Språk", "Help translate" : "Bidra til oversettelsen", + "Get the apps to sync your files" : "Hent apper som synkroniserer filene dine", + "Desktop client" : "Skrivebordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte prosjektet kan du\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">delta i utviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spre budskapet</a>!", + "Show First Run Wizard again" : "Vis \"Førstegangs veiviser\" på nytt", "Common Name" : "Vanlig navn", "Valid until" : "Gyldig til", "Issued By" : "Utstedt av", diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json index 7a6e0c6867d..0ecfd380555 100644 --- a/settings/l10n/nb_NO.json +++ b/settings/l10n/nb_NO.json @@ -78,6 +78,7 @@ "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: {message}" : "Det oppstod en feil: {message}", "Select a profile picture" : "Velg et profilbilde", "Very weak password" : "Veldig svakt passord", @@ -104,8 +105,8 @@ "A valid password must be provided" : "Oppgi et gyldig passord", "A valid email must be provided" : "En gyldig e-postadresse må oppgis", "__language_name__" : "__language_name__", - "Sync clients" : "Synkroniseringsklienter", "Personal info" : "Personlig informasjon", + "Sync clients" : "Synkroniseringsklienter", "SSL root certificates" : "SSL rotsertifikater", "Everything (fatal issues, errors, warnings, info, debug)" : "Alt (fatale problemer, feil, advarsler, info, debug)", "Info, warnings, errors and fatal issues" : "Info, advarsler, feil og fatale problemer", @@ -188,6 +189,7 @@ "More" : "Mer", "Less" : "Mindre", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Loggfilen er over 100 MB, nedlastingen kan ta en stund!", + "What to log" : "Hva som skal logges", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite brukes som database. For større installasjoner anbefaler vi å bytte til en annen database-server.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "SQLite er spesielt frarådet om man bruker desktopklienten til filsynkronisering", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "For å migrere til en annen database, bruk kommandolinjeverktøyet: 'occ db:convert-type', eller les i <a target=\"_blank\" href=\"%s\">dokumentasjonen ↗</a>.", @@ -220,35 +222,30 @@ "Forum" : "Forum", "Issue tracker" : "Problemsporing", "Commercial support" : "Forretningsstøtte", - "Get the apps to sync your files" : "Hent apper som synkroniserer filene dine", - "Desktop client" : "Skrivebordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte prosjektet kan du\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">delta i utviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spre budskapet</a>!", - "Show First Run Wizard again" : "Vis \"Førstegangs veiviser\" på nytt", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brukt <strong>%s</strong> av de tilgjengelige <strong>%s</strong>", - "Password" : "Passord", - "Unable to change your password" : "Kunne ikke endre passordet ditt", - "Current password" : "Nåværende passord", - "New password" : "Nytt passord", - "Change password" : "Endre passord", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Du bruker<strong>%s</strong> av <strong>%s</strong>", + "Profile picture" : "Profilbilde", + "Upload new" : "Last opp nytt", + "Remove image" : "Fjern bilde", + "Cancel" : "Avbryt", "Full name" : "Fullt navn", "No display name set" : "Visningsnavn ikke satt", "Email" : "Epost", "Your email address" : "Din e-postadresse", - "Fill in an email address to enable password recovery and receive notifications" : "Legg inn en e-postadresse for å aktivere passordgjenfinning og motta varsler", "No email address set" : "E-postadresse ikke satt", "You are member of the following groups:" : "Du er medlem av følgende grupper:", - "Profile picture" : "Profilbilde", - "Upload new" : "Last opp nytt", - "Select new from Files" : "Velg nytt fra Filer", - "Remove image" : "Fjern bilde", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Enten png eller jpg. Helst kvadratisk, men du kan beskjære bildet. Filen kan ikke være større enn 20 MB.", - "Your avatar is provided by your original account." : "Avataren din kommer fra din opprinnelige konto.", - "Cancel" : "Avbryt", - "Choose as profile image" : "Velg som profilbilde", + "Password" : "Passord", + "Unable to change your password" : "Kunne ikke endre passordet ditt", + "Current password" : "Nåværende passord", + "New password" : "Nytt passord", + "Change password" : "Endre passord", "Language" : "Språk", "Help translate" : "Bidra til oversettelsen", + "Get the apps to sync your files" : "Hent apper som synkroniserer filene dine", + "Desktop client" : "Skrivebordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Hvis du vil støtte prosjektet kan du\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">delta i utviklingen</a>\n\t\teller\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spre budskapet</a>!", + "Show First Run Wizard again" : "Vis \"Førstegangs veiviser\" på nytt", "Common Name" : "Vanlig navn", "Valid until" : "Gyldig til", "Issued By" : "Utstedt av", diff --git a/settings/l10n/nds.js b/settings/l10n/nds.js index e1998c807fd..74f4c9834c5 100644 --- a/settings/l10n/nds.js +++ b/settings/l10n/nds.js @@ -12,8 +12,8 @@ OC.L10N.register( "None" : "Keine(r)", "Enable encryption" : "Verschlüsselung aktivieren", "Port" : "Port", - "Password" : "Passwort", "Cancel" : "Abbrechen", + "Password" : "Passwort", "Username" : "Benutzername" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/nds.json b/settings/l10n/nds.json index 2c56decc573..0abbf7738de 100644 --- a/settings/l10n/nds.json +++ b/settings/l10n/nds.json @@ -10,8 +10,8 @@ "None" : "Keine(r)", "Enable encryption" : "Verschlüsselung aktivieren", "Port" : "Port", - "Password" : "Passwort", "Cancel" : "Abbrechen", + "Password" : "Passwort", "Username" : "Benutzername" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index 3162fc61305..e2f3b08a373 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Er moet een geldig wachtwoord worden opgegeven", "A valid email must be provided" : "Er moet een geldig e-mailadres worden opgegeven", "__language_name__" : "Nederlands", - "Sync clients" : "Sync clients", "Personal info" : "Persoonlijke info", + "Sync clients" : "Sync clients", "SSL root certificates" : "SSL root certificaten", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale problemen, fouten, waarschuwingen, info, debug)", "Info, warnings, errors and fatal issues" : "Info, waarschuwingen, fouten en fatale problemen", @@ -224,41 +224,36 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Issue tracker", "Commercial support" : "Commerciële ondersteuning", - "Get the apps to sync your files" : "Download de apps om bestanden te synchroniseren", - "Desktop client" : "Desktop client", - "Android app" : "Android app", - "iOS app" : "iOS app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Als u het project wilt ondersteunen\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ontwikkel mee</a>\n\t\tof\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">verkondig het nieuws</a>!", - "Show First Run Wizard again" : "Toon de Eerste start Wizard opnieuw", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "U heeft <strong>%s</strong> gebruikt van de beschikbare <strong>%s</strong>", - "Password" : "Wachtwoord", - "Unable to change your password" : "Niet in staat om uw wachtwoord te wijzigen", - "Current password" : "Huidig wachtwoord", - "New password" : "Nieuw", - "Change password" : "Wijzig wachtwoord", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "U gebruikt <strong>%s</strong> van <strong>%s</strong>", + "Profile picture" : "Profielafbeelding", + "Upload new" : "Upload een nieuwe", + "Remove image" : "Afbeelding verwijderen", + "Cancel" : "Annuleer", "Full name" : "Volledige naam", "No display name set" : "Nog geen weergavenaam ingesteld", "Email" : "E-mailadres", "Your email address" : "Uw e-mailadres", - "Fill in an email address to enable password recovery and receive notifications" : "Vul een e-mailadres in om wachtwoordherstel mogelijk te maken en meldingen te ontvangen", "No email address set" : "Geen e-mailadres opgegeven", "You are member of the following groups:" : "U bent lid van de volgende groepen:", - "Profile picture" : "Profielafbeelding", - "Upload new" : "Upload een nieuwe", - "Select new from Files" : "Selecteer een nieuwe vanuit bestanden", - "Remove image" : "Afbeelding verwijderen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Of png, of jpg. Bij voorkeur vierkant, maar u kunt de afbeelding bijsnijden. Het bestand mag niet groter zijn dan 20 MB.", - "Your avatar is provided by your original account." : "Uw avatar is verstrekt door uw originele account.", - "Cancel" : "Annuleer", - "Choose as profile image" : "Kies als profielafbeelding", + "Password" : "Wachtwoord", + "Unable to change your password" : "Niet in staat om uw wachtwoord te wijzigen", + "Current password" : "Huidig wachtwoord", + "New password" : "Nieuw", + "Change password" : "Wijzig wachtwoord", "Language" : "Taal", "Help translate" : "Help met vertalen", + "Get the apps to sync your files" : "Download de apps om bestanden te synchroniseren", + "Desktop client" : "Desktop client", + "Android app" : "Android app", + "iOS app" : "iOS app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Als u het project wilt ondersteunen\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ontwikkel mee</a>\n\t\tof\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">verkondig het nieuws</a>!", + "Show First Run Wizard again" : "Toon de Eerste start Wizard opnieuw", "Common Name" : "Common Name", "Valid until" : "Geldig tot", "Issued By" : "Uitgegeven door", "Valid until %s" : "Geldig tot %s", "Import root certificate" : "Importeren root certificaat", - "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Ontwikkeld door de {communityopen}ownCloud gemeenschaplinkclose}, de {githubopen}source code{linkclose} is gelicenseerd onder de {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", + "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Ontwikkeld door de {communityopen}ownCloud gemeenschap{linkclose}, de {githubopen}source code{linkclose} is gelicenseerd onder de {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Toon opslaglocatie", "Show last log in" : "Toon laatste inlog", "Show user backend" : "Toon backend gebruiker", diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index d629588a401..477efbb9945 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Er moet een geldig wachtwoord worden opgegeven", "A valid email must be provided" : "Er moet een geldig e-mailadres worden opgegeven", "__language_name__" : "Nederlands", - "Sync clients" : "Sync clients", "Personal info" : "Persoonlijke info", + "Sync clients" : "Sync clients", "SSL root certificates" : "SSL root certificaten", "Everything (fatal issues, errors, warnings, info, debug)" : "Alles (fatale problemen, fouten, waarschuwingen, info, debug)", "Info, warnings, errors and fatal issues" : "Info, waarschuwingen, fouten en fatale problemen", @@ -222,41 +222,36 @@ "Forum" : "Forum", "Issue tracker" : "Issue tracker", "Commercial support" : "Commerciële ondersteuning", - "Get the apps to sync your files" : "Download de apps om bestanden te synchroniseren", - "Desktop client" : "Desktop client", - "Android app" : "Android app", - "iOS app" : "iOS app", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Als u het project wilt ondersteunen\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ontwikkel mee</a>\n\t\tof\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">verkondig het nieuws</a>!", - "Show First Run Wizard again" : "Toon de Eerste start Wizard opnieuw", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "U heeft <strong>%s</strong> gebruikt van de beschikbare <strong>%s</strong>", - "Password" : "Wachtwoord", - "Unable to change your password" : "Niet in staat om uw wachtwoord te wijzigen", - "Current password" : "Huidig wachtwoord", - "New password" : "Nieuw", - "Change password" : "Wijzig wachtwoord", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "U gebruikt <strong>%s</strong> van <strong>%s</strong>", + "Profile picture" : "Profielafbeelding", + "Upload new" : "Upload een nieuwe", + "Remove image" : "Afbeelding verwijderen", + "Cancel" : "Annuleer", "Full name" : "Volledige naam", "No display name set" : "Nog geen weergavenaam ingesteld", "Email" : "E-mailadres", "Your email address" : "Uw e-mailadres", - "Fill in an email address to enable password recovery and receive notifications" : "Vul een e-mailadres in om wachtwoordherstel mogelijk te maken en meldingen te ontvangen", "No email address set" : "Geen e-mailadres opgegeven", "You are member of the following groups:" : "U bent lid van de volgende groepen:", - "Profile picture" : "Profielafbeelding", - "Upload new" : "Upload een nieuwe", - "Select new from Files" : "Selecteer een nieuwe vanuit bestanden", - "Remove image" : "Afbeelding verwijderen", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Of png, of jpg. Bij voorkeur vierkant, maar u kunt de afbeelding bijsnijden. Het bestand mag niet groter zijn dan 20 MB.", - "Your avatar is provided by your original account." : "Uw avatar is verstrekt door uw originele account.", - "Cancel" : "Annuleer", - "Choose as profile image" : "Kies als profielafbeelding", + "Password" : "Wachtwoord", + "Unable to change your password" : "Niet in staat om uw wachtwoord te wijzigen", + "Current password" : "Huidig wachtwoord", + "New password" : "Nieuw", + "Change password" : "Wijzig wachtwoord", "Language" : "Taal", "Help translate" : "Help met vertalen", + "Get the apps to sync your files" : "Download de apps om bestanden te synchroniseren", + "Desktop client" : "Desktop client", + "Android app" : "Android app", + "iOS app" : "iOS app", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Als u het project wilt ondersteunen\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ontwikkel mee</a>\n\t\tof\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">verkondig het nieuws</a>!", + "Show First Run Wizard again" : "Toon de Eerste start Wizard opnieuw", "Common Name" : "Common Name", "Valid until" : "Geldig tot", "Issued By" : "Uitgegeven door", "Valid until %s" : "Geldig tot %s", "Import root certificate" : "Importeren root certificaat", - "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Ontwikkeld door de {communityopen}ownCloud gemeenschaplinkclose}, de {githubopen}source code{linkclose} is gelicenseerd onder de {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", + "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Ontwikkeld door de {communityopen}ownCloud gemeenschap{linkclose}, de {githubopen}source code{linkclose} is gelicenseerd onder de {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Toon opslaglocatie", "Show last log in" : "Toon laatste inlog", "Show user backend" : "Toon backend gebruiker", diff --git a/settings/l10n/nn_NO.js b/settings/l10n/nn_NO.js index 62871d4ac2d..163dda215cf 100644 --- a/settings/l10n/nn_NO.js +++ b/settings/l10n/nn_NO.js @@ -52,24 +52,21 @@ OC.L10N.register( "Version" : "Utgåve", "by" : "av", "Forum" : "Forum", - "Get the apps to sync your files" : "Få app-ar som kan synkronisera filene dine", - "Show First Run Wizard again" : "Vis Oppstartvegvisaren igjen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brukt <strong>%s</strong> av dine tilgjengelege <strong>%s</strong>", + "Profile picture" : "Profilbilete", + "Upload new" : "Last opp ny", + "Remove image" : "Fjern bilete", + "Cancel" : "Avbryt", + "Email" : "E-post", + "Your email address" : "Di epost-adresse", "Password" : "Passord", "Unable to change your password" : "Klarte ikkje endra passordet", "Current password" : "Passord", "New password" : "Nytt passord", "Change password" : "Endra passord", - "Email" : "E-post", - "Your email address" : "Di epost-adresse", - "Profile picture" : "Profilbilete", - "Upload new" : "Last opp ny", - "Select new from Files" : "Vel ny frå Filer", - "Remove image" : "Fjern bilete", - "Cancel" : "Avbryt", - "Choose as profile image" : "Vel som profilbilete", "Language" : "Språk", "Help translate" : "Hjelp oss å omsetja", + "Get the apps to sync your files" : "Få app-ar som kan synkronisera filene dine", + "Show First Run Wizard again" : "Vis Oppstartvegvisaren igjen", "Username" : "Brukarnamn", "Create" : "Lag", "Admin Recovery Password" : "Gjenopprettingspassord for administrator", diff --git a/settings/l10n/nn_NO.json b/settings/l10n/nn_NO.json index 02497c840a9..ab14d5335fd 100644 --- a/settings/l10n/nn_NO.json +++ b/settings/l10n/nn_NO.json @@ -50,24 +50,21 @@ "Version" : "Utgåve", "by" : "av", "Forum" : "Forum", - "Get the apps to sync your files" : "Få app-ar som kan synkronisera filene dine", - "Show First Run Wizard again" : "Vis Oppstartvegvisaren igjen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har brukt <strong>%s</strong> av dine tilgjengelege <strong>%s</strong>", + "Profile picture" : "Profilbilete", + "Upload new" : "Last opp ny", + "Remove image" : "Fjern bilete", + "Cancel" : "Avbryt", + "Email" : "E-post", + "Your email address" : "Di epost-adresse", "Password" : "Passord", "Unable to change your password" : "Klarte ikkje endra passordet", "Current password" : "Passord", "New password" : "Nytt passord", "Change password" : "Endra passord", - "Email" : "E-post", - "Your email address" : "Di epost-adresse", - "Profile picture" : "Profilbilete", - "Upload new" : "Last opp ny", - "Select new from Files" : "Vel ny frå Filer", - "Remove image" : "Fjern bilete", - "Cancel" : "Avbryt", - "Choose as profile image" : "Vel som profilbilete", "Language" : "Språk", "Help translate" : "Hjelp oss å omsetja", + "Get the apps to sync your files" : "Få app-ar som kan synkronisera filene dine", + "Show First Run Wizard again" : "Vis Oppstartvegvisaren igjen", "Username" : "Brukarnamn", "Create" : "Lag", "Admin Recovery Password" : "Gjenopprettingspassord for administrator", diff --git a/settings/l10n/oc.js b/settings/l10n/oc.js index dc6acaf5dee..221a5421d40 100644 --- a/settings/l10n/oc.js +++ b/settings/l10n/oc.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Un senhal valid deu èsser picat", "A valid email must be provided" : "Vos cal provesir una adreça de corrièl valida", "__language_name__" : "Occitan-lengadocian", - "Sync clients" : "Clients de sincronizacion", "Personal info" : "Informacions personalas", + "Sync clients" : "Clients de sincronizacion", "SSL root certificates" : "Certificats raiç SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tot (errors fatalas, errors, avertiments, informacions, desbugatge)", "Info, warnings, errors and fatal issues" : "Informacions, avertiments, errors e errors fatalas", @@ -223,35 +223,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Seguiment de problèmas", "Commercial support" : "Supòrt comercial", - "Get the apps to sync your files" : "Obtenètz las aplicacions de sincronizacion de vòstres fichièrs", - "Desktop client" : "Client de burèu", - "Android app" : "Aplicacion Android", - "iOS app" : "Aplicacion iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se volètz aportar vòstre supòrt al projècte\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejonhètz lo desvolopament</a>\n o\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">fasètz passar l'informacion</a> !", - "Show First Run Wizard again" : "Reveire la fenèstra d'acuèlh afichada al moment de vòstra primièra connexion", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Utilizatz <strong>%s</strong> dels <strong>%s<strong> disponibles", - "Password" : "Senhal", - "Unable to change your password" : "Impossible de cambiar vòstre senhal", - "Current password" : "Senhal actual", - "New password" : "Senhal novèl", - "Change password" : "Cambiar de senhal", + "Profile picture" : "Fòto de perfil", + "Upload new" : "Novèla dempuèi vòstre ordenador", + "Remove image" : "Suprimir l'imatge", + "Cancel" : "Anullar", "Full name" : "Nom complet", "No display name set" : "Cap de nom d'afichatge pas configurat", "Email" : "Adreça mail", "Your email address" : "Vòstra adreça mail", - "Fill in an email address to enable password recovery and receive notifications" : "Picatz vòstra adreça mail per permetre la reïnicializacion del senhal e la recepcion de las notificacions", "No email address set" : "Cap d'adreça e-mail pas configurada", "You are member of the following groups:" : "Sètz membre dels gropes seguents :", - "Profile picture" : "Fòto de perfil", - "Upload new" : "Novèla dempuèi vòstre ordenador", - "Select new from Files" : "Novèla dempuèi los Fichièrs", - "Remove image" : "Suprimir l'imatge", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Format png o jpg de maximum 20 Mo. Idealament carrada, mas la poiretz requadrar.", - "Your avatar is provided by your original account." : "Vòstre avatar es provesit per vòstre compte original.", - "Cancel" : "Anullar", - "Choose as profile image" : "Causir en tant que fòto de perfil", + "Password" : "Senhal", + "Unable to change your password" : "Impossible de cambiar vòstre senhal", + "Current password" : "Senhal actual", + "New password" : "Senhal novèl", + "Change password" : "Cambiar de senhal", "Language" : "Lenga", "Help translate" : "Ajudatz a tradusir", + "Get the apps to sync your files" : "Obtenètz las aplicacions de sincronizacion de vòstres fichièrs", + "Desktop client" : "Client de burèu", + "Android app" : "Aplicacion Android", + "iOS app" : "Aplicacion iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se volètz aportar vòstre supòrt al projècte\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejonhètz lo desvolopament</a>\n o\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">fasètz passar l'informacion</a> !", + "Show First Run Wizard again" : "Reveire la fenèstra d'acuèlh afichada al moment de vòstra primièra connexion", "Common Name" : "Nom d'usatge", "Valid until" : "Valid fins a", "Issued By" : "Desliurat per", diff --git a/settings/l10n/oc.json b/settings/l10n/oc.json index 30fa894cae1..7c941d523c9 100644 --- a/settings/l10n/oc.json +++ b/settings/l10n/oc.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Un senhal valid deu èsser picat", "A valid email must be provided" : "Vos cal provesir una adreça de corrièl valida", "__language_name__" : "Occitan-lengadocian", - "Sync clients" : "Clients de sincronizacion", "Personal info" : "Informacions personalas", + "Sync clients" : "Clients de sincronizacion", "SSL root certificates" : "Certificats raiç SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tot (errors fatalas, errors, avertiments, informacions, desbugatge)", "Info, warnings, errors and fatal issues" : "Informacions, avertiments, errors e errors fatalas", @@ -221,35 +221,29 @@ "Forum" : "Forum", "Issue tracker" : "Seguiment de problèmas", "Commercial support" : "Supòrt comercial", - "Get the apps to sync your files" : "Obtenètz las aplicacions de sincronizacion de vòstres fichièrs", - "Desktop client" : "Client de burèu", - "Android app" : "Aplicacion Android", - "iOS app" : "Aplicacion iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se volètz aportar vòstre supòrt al projècte\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejonhètz lo desvolopament</a>\n o\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">fasètz passar l'informacion</a> !", - "Show First Run Wizard again" : "Reveire la fenèstra d'acuèlh afichada al moment de vòstra primièra connexion", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Utilizatz <strong>%s</strong> dels <strong>%s<strong> disponibles", - "Password" : "Senhal", - "Unable to change your password" : "Impossible de cambiar vòstre senhal", - "Current password" : "Senhal actual", - "New password" : "Senhal novèl", - "Change password" : "Cambiar de senhal", + "Profile picture" : "Fòto de perfil", + "Upload new" : "Novèla dempuèi vòstre ordenador", + "Remove image" : "Suprimir l'imatge", + "Cancel" : "Anullar", "Full name" : "Nom complet", "No display name set" : "Cap de nom d'afichatge pas configurat", "Email" : "Adreça mail", "Your email address" : "Vòstra adreça mail", - "Fill in an email address to enable password recovery and receive notifications" : "Picatz vòstra adreça mail per permetre la reïnicializacion del senhal e la recepcion de las notificacions", "No email address set" : "Cap d'adreça e-mail pas configurada", "You are member of the following groups:" : "Sètz membre dels gropes seguents :", - "Profile picture" : "Fòto de perfil", - "Upload new" : "Novèla dempuèi vòstre ordenador", - "Select new from Files" : "Novèla dempuèi los Fichièrs", - "Remove image" : "Suprimir l'imatge", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Format png o jpg de maximum 20 Mo. Idealament carrada, mas la poiretz requadrar.", - "Your avatar is provided by your original account." : "Vòstre avatar es provesit per vòstre compte original.", - "Cancel" : "Anullar", - "Choose as profile image" : "Causir en tant que fòto de perfil", + "Password" : "Senhal", + "Unable to change your password" : "Impossible de cambiar vòstre senhal", + "Current password" : "Senhal actual", + "New password" : "Senhal novèl", + "Change password" : "Cambiar de senhal", "Language" : "Lenga", "Help translate" : "Ajudatz a tradusir", + "Get the apps to sync your files" : "Obtenètz las aplicacions de sincronizacion de vòstres fichièrs", + "Desktop client" : "Client de burèu", + "Android app" : "Aplicacion Android", + "iOS app" : "Aplicacion iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se volètz aportar vòstre supòrt al projècte\n <a href=\"https://owncloud.org/contribute\"\n target=\"_blank\" rel=\"noreferrer\">rejonhètz lo desvolopament</a>\n o\n <a href=\"https://owncloud.org/promote\"\n target=\"_blank\" rel=\"noreferrer\">fasètz passar l'informacion</a> !", + "Show First Run Wizard again" : "Reveire la fenèstra d'acuèlh afichada al moment de vòstra primièra connexion", "Common Name" : "Nom d'usatge", "Valid until" : "Valid fins a", "Issued By" : "Desliurat per", diff --git a/settings/l10n/pa.js b/settings/l10n/pa.js index 8e7335dbf7d..15cdb279dda 100644 --- a/settings/l10n/pa.js +++ b/settings/l10n/pa.js @@ -14,9 +14,9 @@ OC.L10N.register( "__language_name__" : "__ਭਾਸ਼ਾ_ਨਾਂ__", "Login" : "ਲਾਗਇਨ", "Server address" : "ਸਰਵਰ ਐਡਰੈਸ", + "Cancel" : "ਰੱਦ ਕਰੋ", "Password" : "ਪਾਸਵਰ", "Change password" : "ਪਾਸਵਰਡ ਬਦਲੋ", - "Cancel" : "ਰੱਦ ਕਰੋ", "Username" : "ਯੂਜ਼ਰ-ਨਾਂ" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/pa.json b/settings/l10n/pa.json index 3d59dc75ffb..b400a8510de 100644 --- a/settings/l10n/pa.json +++ b/settings/l10n/pa.json @@ -12,9 +12,9 @@ "__language_name__" : "__ਭਾਸ਼ਾ_ਨਾਂ__", "Login" : "ਲਾਗਇਨ", "Server address" : "ਸਰਵਰ ਐਡਰੈਸ", + "Cancel" : "ਰੱਦ ਕਰੋ", "Password" : "ਪਾਸਵਰ", "Change password" : "ਪਾਸਵਰਡ ਬਦਲੋ", - "Cancel" : "ਰੱਦ ਕਰੋ", "Username" : "ਯੂਜ਼ਰ-ਨਾਂ" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index a7535c540a9..0c36e110939 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -157,32 +157,27 @@ OC.L10N.register( "Online documentation" : "Dokumentacja Online", "Forum" : "Forum", "Commercial support" : "Wsparcie komercyjne", - "Get the apps to sync your files" : "Pobierz aplikacje żeby synchronizować swoje pliki", - "Desktop client" : "Klient na komputer", - "Android app" : "Aplikacja Android", - "iOS app" : "Aplikacja iOS", - "Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Wykorzystujesz <strong>%s</strong> z dostępnych <strong>%s</strong>", - "Password" : "Hasło", - "Unable to change your password" : "Nie można zmienić hasła", - "Current password" : "Bieżące hasło", - "New password" : "Nowe hasło", - "Change password" : "Zmień hasło", + "Profile picture" : "Zdjęcie profilu", + "Upload new" : "Wczytaj nowe", + "Remove image" : "Usuń zdjęcie", + "Cancel" : "Anuluj", "Full name" : "Pełna nazwa", "No display name set" : "Brak nazwa wyświetlanej", "Email" : "Email", "Your email address" : "Twój adres e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Wypełnij adres email aby włączyć odzyskiwanie hasła oraz otrzymywać powiadomienia", "No email address set" : "Brak adresu email", - "Profile picture" : "Zdjęcie profilu", - "Upload new" : "Wczytaj nowe", - "Select new from Files" : "Wybierz nowe z plików", - "Remove image" : "Usuń zdjęcie", - "Your avatar is provided by your original account." : "Twój awatar jest ustawiony jako domyślny.", - "Cancel" : "Anuluj", - "Choose as profile image" : "Wybierz zdjęcie profilu", + "Password" : "Hasło", + "Unable to change your password" : "Nie można zmienić hasła", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Change password" : "Zmień hasło", "Language" : "Język", "Help translate" : "Pomóż w tłumaczeniu", + "Get the apps to sync your files" : "Pobierz aplikacje żeby synchronizować swoje pliki", + "Desktop client" : "Klient na komputer", + "Android app" : "Aplikacja Android", + "iOS app" : "Aplikacja iOS", + "Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia", "Common Name" : "Nazwa CN", "Valid until" : "Ważny do", "Issued By" : "Wydany przez", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index f14377903d2..c747a8c9727 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -155,32 +155,27 @@ "Online documentation" : "Dokumentacja Online", "Forum" : "Forum", "Commercial support" : "Wsparcie komercyjne", - "Get the apps to sync your files" : "Pobierz aplikacje żeby synchronizować swoje pliki", - "Desktop client" : "Klient na komputer", - "Android app" : "Aplikacja Android", - "iOS app" : "Aplikacja iOS", - "Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Wykorzystujesz <strong>%s</strong> z dostępnych <strong>%s</strong>", - "Password" : "Hasło", - "Unable to change your password" : "Nie można zmienić hasła", - "Current password" : "Bieżące hasło", - "New password" : "Nowe hasło", - "Change password" : "Zmień hasło", + "Profile picture" : "Zdjęcie profilu", + "Upload new" : "Wczytaj nowe", + "Remove image" : "Usuń zdjęcie", + "Cancel" : "Anuluj", "Full name" : "Pełna nazwa", "No display name set" : "Brak nazwa wyświetlanej", "Email" : "Email", "Your email address" : "Twój adres e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Wypełnij adres email aby włączyć odzyskiwanie hasła oraz otrzymywać powiadomienia", "No email address set" : "Brak adresu email", - "Profile picture" : "Zdjęcie profilu", - "Upload new" : "Wczytaj nowe", - "Select new from Files" : "Wybierz nowe z plików", - "Remove image" : "Usuń zdjęcie", - "Your avatar is provided by your original account." : "Twój awatar jest ustawiony jako domyślny.", - "Cancel" : "Anuluj", - "Choose as profile image" : "Wybierz zdjęcie profilu", + "Password" : "Hasło", + "Unable to change your password" : "Nie można zmienić hasła", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Change password" : "Zmień hasło", "Language" : "Język", "Help translate" : "Pomóż w tłumaczeniu", + "Get the apps to sync your files" : "Pobierz aplikacje żeby synchronizować swoje pliki", + "Desktop client" : "Klient na komputer", + "Android app" : "Aplikacja Android", + "iOS app" : "Aplikacja iOS", + "Show First Run Wizard again" : "Uruchom ponownie kreatora pierwszego uruchomienia", "Common Name" : "Nazwa CN", "Valid until" : "Ważny do", "Issued By" : "Wydany przez", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index e7ea47e6b7d..d4e1865c9f2 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Forneça uma senha válida", "A valid email must be provided" : "Deve ser informado um e-mail válido", "__language_name__" : "__language_name__", - "Sync clients" : "Clientes de Sincronização", "Personal info" : "Informação pessoal", + "Sync clients" : "Clientes de Sincronização", "SSL root certificates" : "Certificados SSL raíz", "Everything (fatal issues, errors, warnings, info, debug)" : "Tudo (questões fatais, erros, avisos, informações, depuração)", "Info, warnings, errors and fatal issues" : "Informações, avisos, erros e problemas fatais", @@ -191,6 +191,7 @@ OC.L10N.register( "More" : "Mais", "Less" : "Menos", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "O arquivo de log é maior que 100 MB. Baixar esse arquivo requer algum tempo!", + "What to log" : "O que colocar no log", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite é usada como base de dados. Para instalações maiores recomendamos mudar para um backend de banco de dados diferente.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especialmente quando se utiliza o cliente de desktop para sincronização de arquivos o uso de SQLite é desencorajado.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Para migrar para outro banco de dados usar a ferramenta de linha de comando: 'db occ: converter-type', verifique a <a target=\"_blank\" href=\"%s\">documentação ↗</a>.", @@ -216,42 +217,37 @@ OC.L10N.register( "Uninstall App" : "Desinstalar Aplicativo", "Enable experimental apps" : "Habilitar aplicativos experimentais", "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>" : "Olá,<br><br>somente para lembrar que agora você tem uma conta %s.<br><br>Seu nome de usuário é: %s<br>Acesse em: <a href=\"%s\">%s</a><br><br>", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Olá,\n\nsomente para lembrar que agora você tem uma conta %s.\n\nSeu nome de usuário é: %s\nAcesse em: %s\n\n", "Administrator documentation" : "Documentação do administrador", "Online documentation" : "Documentação online", "Forum" : "Fórum", "Issue tracker" : "Rastreador de tópicos", "Commercial support" : "Suporte comercial", - "Get the apps to sync your files" : "Faça com que os apps sincronizem seus arquivos", - "Desktop client" : "Cliente Desktop", - "Android app" : "App Android", - "iOS app" : "App iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se você quiser dar suporte ao projeto\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">juntese ao desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">espalhe para o mundo</a>!", - "Show First Run Wizard again" : "Mostrar Assistente de Primeira Execução novamente", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Você usou <strong>%s</strong> do seu espaço de <strong>%s</strong>", - "Password" : "Senha", - "Unable to change your password" : "Não é possivel alterar a sua senha", - "Current password" : "Senha atual", - "New password" : "Nova senha", - "Change password" : "Alterar senha", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Você está usando <strong>%s</strong> de <strong>%s</strong>", + "Profile picture" : "Imagem para o perfil", + "Upload new" : "Enviar nova foto", + "Remove image" : "Remover imagem", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Nenhuma exibição de nome de configuração", "Email" : "E-mail", "Your email address" : "Seu endereço de e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um e-mail para permitir a recuperação de senha e receber notificações", "No email address set" : "Nenhum endereço de email foi configurado", "You are member of the following groups:" : "Você é membro dos seguintes grupos:", - "Profile picture" : "Imagem para o perfil", - "Upload new" : "Enviar nova foto", - "Select new from Files" : "Selecinar uma nova dos Arquivos", - "Remove image" : "Remover imagem", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ou png ou jpg. Idealmente quadrada, mas você será capaz de cortá-la. O arquivo não pode exceder o tamanho máximo de 20 MB.", - "Your avatar is provided by your original account." : "Seu avatar é fornecido por sua conta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolha como imagem para o perfil", + "Password" : "Senha", + "Unable to change your password" : "Não é possivel alterar a sua senha", + "Current password" : "Senha atual", + "New password" : "Nova senha", + "Change password" : "Alterar senha", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Get the apps to sync your files" : "Obtenha apps para sincronizar seus arquivos", + "Desktop client" : "Cliente Desktop", + "Android app" : "App Android", + "iOS app" : "App iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se você quiser suportar o projeto, \n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">ajude com o desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">ajude a divulgá-lo</a>!", + "Show First Run Wizard again" : "Mostrar Assistente de Primeira Execução novamente", "Common Name" : "Nome", "Valid until" : "Válido até", "Issued By" : "Emitido Por", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 89fd6bbbb19..445eb55f76c 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Forneça uma senha válida", "A valid email must be provided" : "Deve ser informado um e-mail válido", "__language_name__" : "__language_name__", - "Sync clients" : "Clientes de Sincronização", "Personal info" : "Informação pessoal", + "Sync clients" : "Clientes de Sincronização", "SSL root certificates" : "Certificados SSL raíz", "Everything (fatal issues, errors, warnings, info, debug)" : "Tudo (questões fatais, erros, avisos, informações, depuração)", "Info, warnings, errors and fatal issues" : "Informações, avisos, erros e problemas fatais", @@ -189,6 +189,7 @@ "More" : "Mais", "Less" : "Menos", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "O arquivo de log é maior que 100 MB. Baixar esse arquivo requer algum tempo!", + "What to log" : "O que colocar no log", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "SQLite é usada como base de dados. Para instalações maiores recomendamos mudar para um backend de banco de dados diferente.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especialmente quando se utiliza o cliente de desktop para sincronização de arquivos o uso de SQLite é desencorajado.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Para migrar para outro banco de dados usar a ferramenta de linha de comando: 'db occ: converter-type', verifique a <a target=\"_blank\" href=\"%s\">documentação ↗</a>.", @@ -214,42 +215,37 @@ "Uninstall App" : "Desinstalar Aplicativo", "Enable experimental apps" : "Habilitar aplicativos experimentais", "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>" : "Olá,<br><br>somente para lembrar que agora você tem uma conta %s.<br><br>Seu nome de usuário é: %s<br>Acesse em: <a href=\"%s\">%s</a><br><br>", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Olá,\n\nsomente para lembrar que agora você tem uma conta %s.\n\nSeu nome de usuário é: %s\nAcesse em: %s\n\n", "Administrator documentation" : "Documentação do administrador", "Online documentation" : "Documentação online", "Forum" : "Fórum", "Issue tracker" : "Rastreador de tópicos", "Commercial support" : "Suporte comercial", - "Get the apps to sync your files" : "Faça com que os apps sincronizem seus arquivos", - "Desktop client" : "Cliente Desktop", - "Android app" : "App Android", - "iOS app" : "App iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se você quiser dar suporte ao projeto\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">juntese ao desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">espalhe para o mundo</a>!", - "Show First Run Wizard again" : "Mostrar Assistente de Primeira Execução novamente", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Você usou <strong>%s</strong> do seu espaço de <strong>%s</strong>", - "Password" : "Senha", - "Unable to change your password" : "Não é possivel alterar a sua senha", - "Current password" : "Senha atual", - "New password" : "Nova senha", - "Change password" : "Alterar senha", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Você está usando <strong>%s</strong> de <strong>%s</strong>", + "Profile picture" : "Imagem para o perfil", + "Upload new" : "Enviar nova foto", + "Remove image" : "Remover imagem", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Nenhuma exibição de nome de configuração", "Email" : "E-mail", "Your email address" : "Seu endereço de e-mail", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um e-mail para permitir a recuperação de senha e receber notificações", "No email address set" : "Nenhum endereço de email foi configurado", "You are member of the following groups:" : "Você é membro dos seguintes grupos:", - "Profile picture" : "Imagem para o perfil", - "Upload new" : "Enviar nova foto", - "Select new from Files" : "Selecinar uma nova dos Arquivos", - "Remove image" : "Remover imagem", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ou png ou jpg. Idealmente quadrada, mas você será capaz de cortá-la. O arquivo não pode exceder o tamanho máximo de 20 MB.", - "Your avatar is provided by your original account." : "Seu avatar é fornecido por sua conta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolha como imagem para o perfil", + "Password" : "Senha", + "Unable to change your password" : "Não é possivel alterar a sua senha", + "Current password" : "Senha atual", + "New password" : "Nova senha", + "Change password" : "Alterar senha", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Get the apps to sync your files" : "Obtenha apps para sincronizar seus arquivos", + "Desktop client" : "Cliente Desktop", + "Android app" : "App Android", + "iOS app" : "App iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se você quiser suportar o projeto, \n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">ajude com o desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">ajude a divulgá-lo</a>!", + "Show First Run Wizard again" : "Mostrar Assistente de Primeira Execução novamente", "Common Name" : "Nome", "Valid until" : "Válido até", "Issued By" : "Emitido Por", diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index 37126e2e779..545507c9381 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -101,8 +101,8 @@ OC.L10N.register( "A valid password must be provided" : "Deve ser indicada uma palavra-passe válida", "A valid email must be provided" : "Deve ser fornecido um email válido", "__language_name__" : "__language_name__", - "Sync clients" : "Clientes de sync", "Personal info" : "Informação pessoal", + "Sync clients" : "Clientes de sync", "SSL root certificates" : "Certificados de raiz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tudo (problemas fatais, erros, avisos, informação, depuração)", "Info, warnings, errors and fatal issues" : "Informação, avisos, erros e problemas fatais", @@ -201,34 +201,29 @@ OC.L10N.register( "Forum" : "Fórum", "Issue tracker" : "Pesquisador de problemad", "Commercial support" : "Suporte Comercial", - "Get the apps to sync your files" : "Obtenha as aplicações para sincronizar os seus ficheiros", - "Desktop client" : "Cliente Desktop", - "Android app" : "Aplicação Android", - "iOS app" : "Aplicação iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quer apoiar o projecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">junte-se ao desenvolvimento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalhe a palavra</a>!", - "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usou <strong>%s</strong> do disponivel <strong>%s</strong>", - "Password" : "Palavra-passe", - "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", - "Current password" : "Palavra-passe atual", - "New password" : "Nova palavra-passe", - "Change password" : "Alterar palavra-passe", + "Profile picture" : "Foto do perfil", + "Upload new" : "Carregar novo", + "Remove image" : "Remover imagem", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Nenhum nome display estabelecido", "Email" : "Email", "Your email address" : "O seu endereço de email", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação da palavra-passe e receber notificações", "No email address set" : "Nenhum endereço de email estabelecido", "You are member of the following groups:" : "Você é membro dos seguintes grupos:", - "Profile picture" : "Foto do perfil", - "Upload new" : "Carregar novo", - "Select new from Files" : "Seleccionar novo a partir dos ficheiros", - "Remove image" : "Remover imagem", - "Your avatar is provided by your original account." : "O seu avatar é fornecido pela sua conta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolha uma fotografia de perfil", + "Password" : "Palavra-passe", + "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Get the apps to sync your files" : "Obtenha as aplicações para sincronizar os seus ficheiros", + "Desktop client" : "Cliente Desktop", + "Android app" : "Aplicação Android", + "iOS app" : "Aplicação iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quer apoiar o projecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">junte-se ao desenvolvimento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalhe a palavra</a>!", + "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", "Common Name" : "Nome Comum", "Valid until" : "Válido até", "Issued By" : "Emitido Por", diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index 89357332ce5..e0e4749f872 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -99,8 +99,8 @@ "A valid password must be provided" : "Deve ser indicada uma palavra-passe válida", "A valid email must be provided" : "Deve ser fornecido um email válido", "__language_name__" : "__language_name__", - "Sync clients" : "Clientes de sync", "Personal info" : "Informação pessoal", + "Sync clients" : "Clientes de sync", "SSL root certificates" : "Certificados de raiz SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Tudo (problemas fatais, erros, avisos, informação, depuração)", "Info, warnings, errors and fatal issues" : "Informação, avisos, erros e problemas fatais", @@ -199,34 +199,29 @@ "Forum" : "Fórum", "Issue tracker" : "Pesquisador de problemad", "Commercial support" : "Suporte Comercial", - "Get the apps to sync your files" : "Obtenha as aplicações para sincronizar os seus ficheiros", - "Desktop client" : "Cliente Desktop", - "Android app" : "Aplicação Android", - "iOS app" : "Aplicação iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quer apoiar o projecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">junte-se ao desenvolvimento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalhe a palavra</a>!", - "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usou <strong>%s</strong> do disponivel <strong>%s</strong>", - "Password" : "Palavra-passe", - "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", - "Current password" : "Palavra-passe atual", - "New password" : "Nova palavra-passe", - "Change password" : "Alterar palavra-passe", + "Profile picture" : "Foto do perfil", + "Upload new" : "Carregar novo", + "Remove image" : "Remover imagem", + "Cancel" : "Cancelar", "Full name" : "Nome completo", "No display name set" : "Nenhum nome display estabelecido", "Email" : "Email", "Your email address" : "O seu endereço de email", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação da palavra-passe e receber notificações", "No email address set" : "Nenhum endereço de email estabelecido", "You are member of the following groups:" : "Você é membro dos seguintes grupos:", - "Profile picture" : "Foto do perfil", - "Upload new" : "Carregar novo", - "Select new from Files" : "Seleccionar novo a partir dos ficheiros", - "Remove image" : "Remover imagem", - "Your avatar is provided by your original account." : "O seu avatar é fornecido pela sua conta original.", - "Cancel" : "Cancelar", - "Choose as profile image" : "Escolha uma fotografia de perfil", + "Password" : "Palavra-passe", + "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Get the apps to sync your files" : "Obtenha as aplicações para sincronizar os seus ficheiros", + "Desktop client" : "Cliente Desktop", + "Android app" : "Aplicação Android", + "iOS app" : "Aplicação iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Se quer apoiar o projecto\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">junte-se ao desenvolvimento</a>\n\t\tou\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">espalhe a palavra</a>!", + "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", "Common Name" : "Nome Comum", "Valid until" : "Válido até", "Issued By" : "Emitido Por", diff --git a/settings/l10n/ro.js b/settings/l10n/ro.js index 54666e90862..bbb8b575331 100644 --- a/settings/l10n/ro.js +++ b/settings/l10n/ro.js @@ -87,26 +87,23 @@ OC.L10N.register( "Version" : "Versiunea", "by" : "după", "Forum" : "Forum", - "Get the apps to sync your files" : "Ia acum aplicatia pentru sincronizarea fisierelor ", - "Desktop client" : "Client Desktop", - "Android app" : "Aplicatie Android", - "iOS app" : "Aplicație iOS", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ați utilizat <strong>%s</strong> din <strong>%s</strong> disponibile", + "Profile picture" : "Imagine de profil", + "Upload new" : "Încarcă una nouă", + "Remove image" : "Înlătură imagine", + "Cancel" : "Anulare", + "Email" : "Email", + "Your email address" : "Adresa ta de email", "Password" : "Parolă", "Unable to change your password" : "Imposibil de-ați schimbat parola", "Current password" : "Parola curentă", "New password" : "Noua parolă", "Change password" : "Schimbă parola", - "Email" : "Email", - "Your email address" : "Adresa ta de email", - "Profile picture" : "Imagine de profil", - "Upload new" : "Încarcă una nouă", - "Select new from Files" : "Selectează una din Fișiere", - "Remove image" : "Înlătură imagine", - "Cancel" : "Anulare", - "Choose as profile image" : "Alege drept imagine de profil", "Language" : "Limba", "Help translate" : "Ajută la traducere", + "Get the apps to sync your files" : "Ia acum aplicatia pentru sincronizarea fisierelor ", + "Desktop client" : "Client Desktop", + "Android app" : "Aplicatie Android", + "iOS app" : "Aplicație iOS", "Username" : "Nume utilizator", "Create" : "Crează", "Admin Recovery Password" : "Parolă de recuperare a Administratorului", diff --git a/settings/l10n/ro.json b/settings/l10n/ro.json index 2f1edea71c0..0b2710ae277 100644 --- a/settings/l10n/ro.json +++ b/settings/l10n/ro.json @@ -85,26 +85,23 @@ "Version" : "Versiunea", "by" : "după", "Forum" : "Forum", - "Get the apps to sync your files" : "Ia acum aplicatia pentru sincronizarea fisierelor ", - "Desktop client" : "Client Desktop", - "Android app" : "Aplicatie Android", - "iOS app" : "Aplicație iOS", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ați utilizat <strong>%s</strong> din <strong>%s</strong> disponibile", + "Profile picture" : "Imagine de profil", + "Upload new" : "Încarcă una nouă", + "Remove image" : "Înlătură imagine", + "Cancel" : "Anulare", + "Email" : "Email", + "Your email address" : "Adresa ta de email", "Password" : "Parolă", "Unable to change your password" : "Imposibil de-ați schimbat parola", "Current password" : "Parola curentă", "New password" : "Noua parolă", "Change password" : "Schimbă parola", - "Email" : "Email", - "Your email address" : "Adresa ta de email", - "Profile picture" : "Imagine de profil", - "Upload new" : "Încarcă una nouă", - "Select new from Files" : "Selectează una din Fișiere", - "Remove image" : "Înlătură imagine", - "Cancel" : "Anulare", - "Choose as profile image" : "Alege drept imagine de profil", "Language" : "Limba", "Help translate" : "Ajută la traducere", + "Get the apps to sync your files" : "Ia acum aplicatia pentru sincronizarea fisierelor ", + "Desktop client" : "Client Desktop", + "Android app" : "Aplicatie Android", + "iOS app" : "Aplicație iOS", "Username" : "Nume utilizator", "Create" : "Crează", "Admin Recovery Password" : "Parolă de recuperare a Administratorului", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index 78a5525eb0a..30a7cc64d67 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Должен быть указан правильный пароль", "A valid email must be provided" : "Должен быть указан корректный адрес email", "__language_name__" : "Русский", - "Sync clients" : "Синхронизация клиентов", "Personal info" : "Личная информация", + "Sync clients" : "Синхронизация клиентов", "SSL root certificates" : "Корневые сертификаты SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Все (критические проблемы, ошибки, предупреждения, информационные, отладочные)", "Info, warnings, errors and fatal issues" : "Информационные, предупреждения, ошибки и критические проблемы", @@ -191,6 +191,7 @@ OC.L10N.register( "More" : "Больше", "Less" : "Меньше", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Лог-файл - больше 100 мб. Его скачивание может занять некоторое время!", + "What to log" : "Что записывать в журнал", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "В качестве базы данных используется SQLite. Для больших установок мы рекомендуем переключиться на другую серверную базу данных.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Особенно вызывает сомнение использование SQLite при синхронизации файлов с использование клиента для ПК.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: 'occ db:convert-type' или ознакомьтесь с <a target=\"_blank\" href=\"%s\">документацией ↗</a>.", @@ -223,35 +224,30 @@ OC.L10N.register( "Forum" : "Форум", "Issue tracker" : "трекер проблем", "Commercial support" : "Коммерческая поддержка", - "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", - "Desktop client" : "Клиент для ПК", - "Android app" : "Android приложение", - "iOS app" : "iOS приложение", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Если Вы хотите поддержать проект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">совместная разработка</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">сообщить</a>!", - "Show First Run Wizard again" : "Показать помощник настройки снова", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Вы использовали <strong>%s</strong> из доступных <strong>%s</strong>", - "Password" : "Пароль", - "Unable to change your password" : "Невозможно сменить пароль", - "Current password" : "Текущий пароль", - "New password" : "Новый пароль", - "Change password" : "Сменить пароль", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Вы используете <strong>%s</strong> из <strong>%s</strong>", + "Profile picture" : "Аватар", + "Upload new" : "Загрузить новый", + "Remove image" : "Удалить аватар", + "Cancel" : "Отмена", "Full name" : "Полное имя", "No display name set" : "Отображаемое имя не указано", "Email" : "E-mail", "Your email address" : "Ваш адрес электронной почты", - "Fill in an email address to enable password recovery and receive notifications" : "Введите свой email-адрес для того, чтобы включить возможность восстановления пароля и получения уведомлений", "No email address set" : "E-mail не указан", "You are member of the following groups:" : "Вы являетесь членом следующих групп:", - "Profile picture" : "Аватар", - "Upload new" : "Загрузить новый", - "Select new from Files" : "Выберите новый из файлов", - "Remove image" : "Удалить аватар", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Допустимые форматы: png и jpg. В идеале квадратное, но Вы сможете обрезать его. Файл не должен превышать максимальный размер в 20 МБ.", - "Your avatar is provided by your original account." : "Будет использован аватар вашей оригинальной учетной записи.", - "Cancel" : "Отмена", - "Choose as profile image" : "Установить как аватар", + "Password" : "Пароль", + "Unable to change your password" : "Невозможно сменить пароль", + "Current password" : "Текущий пароль", + "New password" : "Новый пароль", + "Change password" : "Сменить пароль", "Language" : "Язык", "Help translate" : "Помочь с переводом", + "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", + "Desktop client" : "Клиент для ПК", + "Android app" : "Android приложение", + "iOS app" : "iOS приложение", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Если Вы хотите поддержать проект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">совместная разработка</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">сообщить</a>!", + "Show First Run Wizard again" : "Показать помощник настройки снова", "Common Name" : "Общее Имя", "Valid until" : "Действительно до", "Issued By" : "Выдан", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index fd9af89039d..f55a6608aff 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "Должен быть указан правильный пароль", "A valid email must be provided" : "Должен быть указан корректный адрес email", "__language_name__" : "Русский", - "Sync clients" : "Синхронизация клиентов", "Personal info" : "Личная информация", + "Sync clients" : "Синхронизация клиентов", "SSL root certificates" : "Корневые сертификаты SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Все (критические проблемы, ошибки, предупреждения, информационные, отладочные)", "Info, warnings, errors and fatal issues" : "Информационные, предупреждения, ошибки и критические проблемы", @@ -189,6 +189,7 @@ "More" : "Больше", "Less" : "Меньше", "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Лог-файл - больше 100 мб. Его скачивание может занять некоторое время!", + "What to log" : "Что записывать в журнал", "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "В качестве базы данных используется SQLite. Для больших установок мы рекомендуем переключиться на другую серверную базу данных.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Особенно вызывает сомнение использование SQLite при синхронизации файлов с использование клиента для ПК.", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Для перехода на другую базу данных используйте команду: 'occ db:convert-type' или ознакомьтесь с <a target=\"_blank\" href=\"%s\">документацией ↗</a>.", @@ -221,35 +222,30 @@ "Forum" : "Форум", "Issue tracker" : "трекер проблем", "Commercial support" : "Коммерческая поддержка", - "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", - "Desktop client" : "Клиент для ПК", - "Android app" : "Android приложение", - "iOS app" : "iOS приложение", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Если Вы хотите поддержать проект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">совместная разработка</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">сообщить</a>!", - "Show First Run Wizard again" : "Показать помощник настройки снова", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Вы использовали <strong>%s</strong> из доступных <strong>%s</strong>", - "Password" : "Пароль", - "Unable to change your password" : "Невозможно сменить пароль", - "Current password" : "Текущий пароль", - "New password" : "Новый пароль", - "Change password" : "Сменить пароль", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Вы используете <strong>%s</strong> из <strong>%s</strong>", + "Profile picture" : "Аватар", + "Upload new" : "Загрузить новый", + "Remove image" : "Удалить аватар", + "Cancel" : "Отмена", "Full name" : "Полное имя", "No display name set" : "Отображаемое имя не указано", "Email" : "E-mail", "Your email address" : "Ваш адрес электронной почты", - "Fill in an email address to enable password recovery and receive notifications" : "Введите свой email-адрес для того, чтобы включить возможность восстановления пароля и получения уведомлений", "No email address set" : "E-mail не указан", "You are member of the following groups:" : "Вы являетесь членом следующих групп:", - "Profile picture" : "Аватар", - "Upload new" : "Загрузить новый", - "Select new from Files" : "Выберите новый из файлов", - "Remove image" : "Удалить аватар", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Допустимые форматы: png и jpg. В идеале квадратное, но Вы сможете обрезать его. Файл не должен превышать максимальный размер в 20 МБ.", - "Your avatar is provided by your original account." : "Будет использован аватар вашей оригинальной учетной записи.", - "Cancel" : "Отмена", - "Choose as profile image" : "Установить как аватар", + "Password" : "Пароль", + "Unable to change your password" : "Невозможно сменить пароль", + "Current password" : "Текущий пароль", + "New password" : "Новый пароль", + "Change password" : "Сменить пароль", "Language" : "Язык", "Help translate" : "Помочь с переводом", + "Get the apps to sync your files" : "Получить приложения для синхронизации ваших файлов", + "Desktop client" : "Клиент для ПК", + "Android app" : "Android приложение", + "iOS app" : "iOS приложение", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Если Вы хотите поддержать проект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">совместная разработка</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">сообщить</a>!", + "Show First Run Wizard again" : "Показать помощник настройки снова", "Common Name" : "Общее Имя", "Valid until" : "Действительно до", "Issued By" : "Выдан", diff --git a/settings/l10n/si_LK.js b/settings/l10n/si_LK.js index 9207b5ab189..21d569a9abb 100644 --- a/settings/l10n/si_LK.js +++ b/settings/l10n/si_LK.js @@ -27,14 +27,14 @@ OC.L10N.register( "More" : "වැඩි", "Less" : "අඩු", "by" : "විසින්", + "Cancel" : "එපා", + "Email" : "විද්යුත් තැපෑල", + "Your email address" : "ඔබගේ විද්යුත් තැපෑල", "Password" : "මුර පදය", "Unable to change your password" : "මුර පදය වෙනස් කළ නොහැකි විය", "Current password" : "වත්මන් මුරපදය", "New password" : "නව මුරපදය", "Change password" : "මුරපදය වෙනස් කිරීම", - "Email" : "විද්යුත් තැපෑල", - "Your email address" : "ඔබගේ විද්යුත් තැපෑල", - "Cancel" : "එපා", "Language" : "භාෂාව", "Help translate" : "පරිවර්ථන සහය", "Username" : "පරිශීලක නම", diff --git a/settings/l10n/si_LK.json b/settings/l10n/si_LK.json index 9b2287b13be..41699fd92c0 100644 --- a/settings/l10n/si_LK.json +++ b/settings/l10n/si_LK.json @@ -25,14 +25,14 @@ "More" : "වැඩි", "Less" : "අඩු", "by" : "විසින්", + "Cancel" : "එපා", + "Email" : "විද්යුත් තැපෑල", + "Your email address" : "ඔබගේ විද්යුත් තැපෑල", "Password" : "මුර පදය", "Unable to change your password" : "මුර පදය වෙනස් කළ නොහැකි විය", "Current password" : "වත්මන් මුරපදය", "New password" : "නව මුරපදය", "Change password" : "මුරපදය වෙනස් කිරීම", - "Email" : "විද්යුත් තැපෑල", - "Your email address" : "ඔබගේ විද්යුත් තැපෑල", - "Cancel" : "එපා", "Language" : "භාෂාව", "Help translate" : "පරිවර්ථන සහය", "Username" : "පරිශීලක නම", diff --git a/settings/l10n/sk_SK.js b/settings/l10n/sk_SK.js index ea1887a92dd..f25eb6ed5c6 100644 --- a/settings/l10n/sk_SK.js +++ b/settings/l10n/sk_SK.js @@ -97,8 +97,8 @@ OC.L10N.register( "A valid password must be provided" : "Musíte zadať platné heslo", "A valid email must be provided" : "Musíte zadať platnú emailovú adresu", "__language_name__" : "Slovensky", - "Sync clients" : "Klienti synchronizácie", "Personal info" : "Osobné informácie", + "Sync clients" : "Klienti synchronizácie", "SSL root certificates" : "Koreňové SSL certifikáty", "Everything (fatal issues, errors, warnings, info, debug)" : "Všetko (fatálne problémy, chyby, upozornenia, info, debug)", "Info, warnings, errors and fatal issues" : "Info, upozornenia, chyby a fatálne problémy", @@ -195,34 +195,29 @@ OC.L10N.register( "Forum" : "Fórum", "Issue tracker" : "Zoznam chýb", "Commercial support" : "Komerčná podpora", - "Get the apps to sync your files" : "Získať aplikácie na synchronizáciu vašich súborov", - "Desktop client" : "Desktopový klient", - "Android app" : "Android aplikácia", - "iOS app" : "iOS aplikácia", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ak chcete projekt podporiť,\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">zapojte sa do vývoja</a>\n\t\talebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ho propagujte</a>!", - "Show First Run Wizard again" : "Znovu zobraziť sprievodcu prvým spustením", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Použili ste <strong>%s</strong> z <strong>%s</strong> dostupných ", - "Password" : "Heslo", - "Unable to change your password" : "Nie je možné zmeniť vaše heslo", - "Current password" : "Aktuálne heslo", - "New password" : "Nové heslo", - "Change password" : "Zmeniť heslo", + "Profile picture" : "Avatar", + "Upload new" : "Nahrať nový", + "Remove image" : "Zmazať obrázok", + "Cancel" : "Zrušiť", "Full name" : "Meno a priezvisko", "No display name set" : "Zobrazované meno nie je nastavené", "Email" : "Email", "Your email address" : "Vaša emailová adresa", - "Fill in an email address to enable password recovery and receive notifications" : "Zadajte emailovú adresu pre umožnenie obnovy zabudnutého hesla a pre prijímanie upozornení a oznámení", "No email address set" : "Emailová adresa nie je nastavená", "You are member of the following groups:" : "Ste členom nasledovných skupín:", - "Profile picture" : "Avatar", - "Upload new" : "Nahrať nový", - "Select new from Files" : "Vyberte nový zo súborov", - "Remove image" : "Zmazať obrázok", - "Your avatar is provided by your original account." : "Váš avatar je použitý z pôvodného účtu.", - "Cancel" : "Zrušiť", - "Choose as profile image" : "Vybrať ako avatara", + "Password" : "Heslo", + "Unable to change your password" : "Nie je možné zmeniť vaše heslo", + "Current password" : "Aktuálne heslo", + "New password" : "Nové heslo", + "Change password" : "Zmeniť heslo", "Language" : "Jazyk", "Help translate" : "Pomôcť s prekladom", + "Get the apps to sync your files" : "Získať aplikácie na synchronizáciu vašich súborov", + "Desktop client" : "Desktopový klient", + "Android app" : "Android aplikácia", + "iOS app" : "iOS aplikácia", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ak chcete projekt podporiť,\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">zapojte sa do vývoja</a>\n\t\talebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ho propagujte</a>!", + "Show First Run Wizard again" : "Znovu zobraziť sprievodcu prvým spustením", "Common Name" : "Bežný názov", "Valid until" : "Platný do", "Issued By" : "Vydal", diff --git a/settings/l10n/sk_SK.json b/settings/l10n/sk_SK.json index 784a46fe080..c04f846e24a 100644 --- a/settings/l10n/sk_SK.json +++ b/settings/l10n/sk_SK.json @@ -95,8 +95,8 @@ "A valid password must be provided" : "Musíte zadať platné heslo", "A valid email must be provided" : "Musíte zadať platnú emailovú adresu", "__language_name__" : "Slovensky", - "Sync clients" : "Klienti synchronizácie", "Personal info" : "Osobné informácie", + "Sync clients" : "Klienti synchronizácie", "SSL root certificates" : "Koreňové SSL certifikáty", "Everything (fatal issues, errors, warnings, info, debug)" : "Všetko (fatálne problémy, chyby, upozornenia, info, debug)", "Info, warnings, errors and fatal issues" : "Info, upozornenia, chyby a fatálne problémy", @@ -193,34 +193,29 @@ "Forum" : "Fórum", "Issue tracker" : "Zoznam chýb", "Commercial support" : "Komerčná podpora", - "Get the apps to sync your files" : "Získať aplikácie na synchronizáciu vašich súborov", - "Desktop client" : "Desktopový klient", - "Android app" : "Android aplikácia", - "iOS app" : "iOS aplikácia", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ak chcete projekt podporiť,\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">zapojte sa do vývoja</a>\n\t\talebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ho propagujte</a>!", - "Show First Run Wizard again" : "Znovu zobraziť sprievodcu prvým spustením", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Použili ste <strong>%s</strong> z <strong>%s</strong> dostupných ", - "Password" : "Heslo", - "Unable to change your password" : "Nie je možné zmeniť vaše heslo", - "Current password" : "Aktuálne heslo", - "New password" : "Nové heslo", - "Change password" : "Zmeniť heslo", + "Profile picture" : "Avatar", + "Upload new" : "Nahrať nový", + "Remove image" : "Zmazať obrázok", + "Cancel" : "Zrušiť", "Full name" : "Meno a priezvisko", "No display name set" : "Zobrazované meno nie je nastavené", "Email" : "Email", "Your email address" : "Vaša emailová adresa", - "Fill in an email address to enable password recovery and receive notifications" : "Zadajte emailovú adresu pre umožnenie obnovy zabudnutého hesla a pre prijímanie upozornení a oznámení", "No email address set" : "Emailová adresa nie je nastavená", "You are member of the following groups:" : "Ste členom nasledovných skupín:", - "Profile picture" : "Avatar", - "Upload new" : "Nahrať nový", - "Select new from Files" : "Vyberte nový zo súborov", - "Remove image" : "Zmazať obrázok", - "Your avatar is provided by your original account." : "Váš avatar je použitý z pôvodného účtu.", - "Cancel" : "Zrušiť", - "Choose as profile image" : "Vybrať ako avatara", + "Password" : "Heslo", + "Unable to change your password" : "Nie je možné zmeniť vaše heslo", + "Current password" : "Aktuálne heslo", + "New password" : "Nové heslo", + "Change password" : "Zmeniť heslo", "Language" : "Jazyk", "Help translate" : "Pomôcť s prekladom", + "Get the apps to sync your files" : "Získať aplikácie na synchronizáciu vašich súborov", + "Desktop client" : "Desktopový klient", + "Android app" : "Android aplikácia", + "iOS app" : "iOS aplikácia", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ak chcete projekt podporiť,\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">zapojte sa do vývoja</a>\n\t\talebo\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">ho propagujte</a>!", + "Show First Run Wizard again" : "Znovu zobraziť sprievodcu prvým spustením", "Common Name" : "Bežný názov", "Valid until" : "Platný do", "Issued By" : "Vydal", diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index 2f6534eeee6..ab9583e5c29 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -100,8 +100,8 @@ OC.L10N.register( "A valid password must be provided" : "Navedeno mora biti veljavno geslo", "A valid email must be provided" : "Naveden mora biti veljaven naslov elektronske pošte.", "__language_name__" : "Slovenščina", - "Sync clients" : "Uskladi odjemalce", "Personal info" : "Osebni podatki", + "Sync clients" : "Uskladi odjemalce", "SSL root certificates" : "Korenska potrdila SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Vse (podrobnosti, opozorila, hrošče, napake in usodne dogodke)", "Info, warnings, errors and fatal issues" : "Podrobnosti, opozorila, napake in usodne dogodke", @@ -188,35 +188,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Spremljanje težav", "Commercial support" : "Komercialna podpora", - "Get the apps to sync your files" : "Pridobi programe za usklajevanje datotek", - "Desktop client" : "Namizni odjemalec", - "Android app" : "Program za Android", - "iOS app" : "Program za iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", - "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Uporabljenega je <strong>%s</strong> od razpoložljivih <strong>%s</strong> prostora.", - "Password" : "Geslo", - "Unable to change your password" : "Gesla ni mogoče spremeniti.", - "Current password" : "Trenutno geslo", - "New password" : "Novo geslo", - "Change password" : "Spremeni geslo", + "Profile picture" : "Slika profila", + "Upload new" : "Pošlji novo", + "Remove image" : "Odstrani sliko", + "Cancel" : "Prekliči", "Full name" : "Polno ime", "No display name set" : "Ime za prikaz ni bilo nastavljeno", "Email" : "Elektronski naslov", "Your email address" : "Osebni elektronski naslov", - "Fill in an email address to enable password recovery and receive notifications" : "Podajte elektronski naslov, da vam omogočimo reševanje izgubljenega gesla in sprejem obvestil", "No email address set" : "Poštni naslov ni bil vpisan", "You are member of the following groups:" : "Vi ste član sledečih skupin:", - "Profile picture" : "Slika profila", - "Upload new" : "Pošlji novo", - "Select new from Files" : "Izberi novo iz menija datotek", - "Remove image" : "Odstrani sliko", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Naloži png ali jpg. Idealno kvadratno, bo pa še možno obrezati sliko.. Slika ne sme presegati velikosti 20 MB.", - "Your avatar is provided by your original account." : "Podoba je podana v izvornem računu.", - "Cancel" : "Prekliči", - "Choose as profile image" : "Izberi kot sliko profila", + "Password" : "Geslo", + "Unable to change your password" : "Gesla ni mogoče spremeniti.", + "Current password" : "Trenutno geslo", + "New password" : "Novo geslo", + "Change password" : "Spremeni geslo", "Language" : "Jezik", "Help translate" : "Sodelujte pri prevajanju", + "Get the apps to sync your files" : "Pridobi programe za usklajevanje datotek", + "Desktop client" : "Namizni odjemalec", + "Android app" : "Program za Android", + "iOS app" : "Program za iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", + "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", "Common Name" : "Splošno ime", "Valid until" : "Veljavno do", "Issued By" : "Izdajatelj", diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index afb978916f2..c4ac64d1e01 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -98,8 +98,8 @@ "A valid password must be provided" : "Navedeno mora biti veljavno geslo", "A valid email must be provided" : "Naveden mora biti veljaven naslov elektronske pošte.", "__language_name__" : "Slovenščina", - "Sync clients" : "Uskladi odjemalce", "Personal info" : "Osebni podatki", + "Sync clients" : "Uskladi odjemalce", "SSL root certificates" : "Korenska potrdila SSL", "Everything (fatal issues, errors, warnings, info, debug)" : "Vse (podrobnosti, opozorila, hrošče, napake in usodne dogodke)", "Info, warnings, errors and fatal issues" : "Podrobnosti, opozorila, napake in usodne dogodke", @@ -186,35 +186,29 @@ "Forum" : "Forum", "Issue tracker" : "Spremljanje težav", "Commercial support" : "Komercialna podpora", - "Get the apps to sync your files" : "Pridobi programe za usklajevanje datotek", - "Desktop client" : "Namizni odjemalec", - "Android app" : "Program za Android", - "iOS app" : "Program za iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", - "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Uporabljenega je <strong>%s</strong> od razpoložljivih <strong>%s</strong> prostora.", - "Password" : "Geslo", - "Unable to change your password" : "Gesla ni mogoče spremeniti.", - "Current password" : "Trenutno geslo", - "New password" : "Novo geslo", - "Change password" : "Spremeni geslo", + "Profile picture" : "Slika profila", + "Upload new" : "Pošlji novo", + "Remove image" : "Odstrani sliko", + "Cancel" : "Prekliči", "Full name" : "Polno ime", "No display name set" : "Ime za prikaz ni bilo nastavljeno", "Email" : "Elektronski naslov", "Your email address" : "Osebni elektronski naslov", - "Fill in an email address to enable password recovery and receive notifications" : "Podajte elektronski naslov, da vam omogočimo reševanje izgubljenega gesla in sprejem obvestil", "No email address set" : "Poštni naslov ni bil vpisan", "You are member of the following groups:" : "Vi ste član sledečih skupin:", - "Profile picture" : "Slika profila", - "Upload new" : "Pošlji novo", - "Select new from Files" : "Izberi novo iz menija datotek", - "Remove image" : "Odstrani sliko", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Naloži png ali jpg. Idealno kvadratno, bo pa še možno obrezati sliko.. Slika ne sme presegati velikosti 20 MB.", - "Your avatar is provided by your original account." : "Podoba je podana v izvornem računu.", - "Cancel" : "Prekliči", - "Choose as profile image" : "Izberi kot sliko profila", + "Password" : "Geslo", + "Unable to change your password" : "Gesla ni mogoče spremeniti.", + "Current password" : "Trenutno geslo", + "New password" : "Novo geslo", + "Change password" : "Spremeni geslo", "Language" : "Jezik", "Help translate" : "Sodelujte pri prevajanju", + "Get the apps to sync your files" : "Pridobi programe za usklajevanje datotek", + "Desktop client" : "Namizni odjemalec", + "Android app" : "Program za Android", + "iOS app" : "Program za iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", + "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", "Common Name" : "Splošno ime", "Valid until" : "Veljavno do", "Issued By" : "Izdajatelj", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 7248797b6f2..f2cf8228ad5 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -29,6 +29,7 @@ OC.L10N.register( "Enabled" : "E aktivizuar", "Not enabled" : "E paaktivizuar", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", + "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.", "A problem occurred, please check your log files (Error: %s)" : "Ndodhi një gabim, ju lutemi, kontrolloni kartelat tuaja regjistër (Error: %s)", "Migration Completed" : "Migrimi u Plotësua", @@ -106,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "A valid email must be provided" : "Duhet dhënë një email i vlefshëm", "__language_name__" : "Shqip", - "Sync clients" : "Klientë njëkohësimi", "Personal info" : "Të dhëna personale", + "Sync clients" : "Klientë njëkohësimi", "SSL root certificates" : "Dëshmi SSL rrënjë", "Everything (fatal issues, errors, warnings, info, debug)" : "Gjithçka (probleme fatale, gabime, sinjalizime, të dhëna, diagnostikim)", "Info, warnings, errors and fatal issues" : "Të dhëna, sinjalizime, gabime dhe probleme fatale", @@ -117,6 +118,7 @@ OC.L10N.register( "None" : "Asnjë", "Login" : "Hyrje", "Plain" : "E thjeshtë", + "NT LAN Manager" : "Përgjegjës Rrjeti NT", "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-ja nuk duket të jetë rregulluar si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.", @@ -127,6 +129,7 @@ OC.L10N.register( "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Shërbyesi juaj xhiron nën Microsoft Windows. Këshillojmë fort Linux-in për punim optimal nga ana e përdoruesit.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh 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\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" href=\"%s\">dokumentimin ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.", "This means that there might be problems with certain characters in file names." : "Kjo do të thotë që mund të ketë probleme me disa shenja në emra kartelash.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Këshillojmë me forcë instalimin në sistemin tuaj të paketave të domosdoshme për mbulim të një prej vendoreve vijuese: %s.", @@ -145,7 +148,7 @@ OC.L10N.register( "days" : "ditësh", "Enforce expiration date" : "Detyro datë skadimi", "Allow resharing" : "Lejo rindarje", - "Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre", + "Restrict users to only share with users in their groups" : "Përdoruesve kufizoju të ndajnë gjëra vetëm me përdorues në grupin e tyre", "Allow users to send mail notification for shared files to other users" : "Lejoju përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët", "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet", "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.", @@ -221,35 +224,30 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Gjurmues të metash", "Commercial support" : "Asistencë komerciale", - "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja", - "Desktop client" : "Klient desktopi", - "Android app" : "Aplikacion për Android", - "iOS app" : "Aplikacion për iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!", - "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Keni përdorur <strong>%s</strong> nga <strong>%s</strong> tuajat", - "Password" : "Fjalëkalim", - "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj", - "Current password" : "Fjalëkalimi i tanishëm", - "New password" : "Fjalëkalimi i ri", - "Change password" : "Ndrysho fjalëkalimin", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>", + "Profile picture" : "Foto profili", + "Upload new" : "Ngarko të re", + "Remove image" : "Hiqe figurën", + "Cancel" : "Anuloje", "Full name" : "Emër i plotë", "No display name set" : "S’është caktuar emër për në ekran", "Email" : "Email", "Your email address" : "Adresa juaj email", - "Fill in an email address to enable password recovery and receive notifications" : "Futni një adresë email që të aktivizoni rimarrje fjalëkalimi dhe për të marrë njoftime", "No email address set" : "S’është caktuar adresë email", "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:", - "Profile picture" : "Foto profili", - "Upload new" : "Ngarko të re", - "Select new from Files" : "Përzgjidhni të re prej Kartelash", - "Remove image" : "Hiqe figurën", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ose png, ose jpg. E mira do të ishte katrore, por do të jeni në gjendje ta qethni. Nuk lejohet që kartela të tejkalojë madhësinë maksimum prej 20 MB.", - "Your avatar is provided by your original account." : "Avatari juaj jepet nga llogaria juaj origjinale.", - "Cancel" : "Anuloje", - "Choose as profile image" : "Zgjidhni një figurë profili", + "Password" : "Fjalëkalim", + "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj", + "Current password" : "Fjalëkalimi i tanishëm", + "New password" : "Fjalëkalimi i ri", + "Change password" : "Ndrysho fjalëkalimin", "Language" : "Gjuhë", "Help translate" : "Ndihmoni në përkthim", + "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja", + "Desktop client" : "Klient desktopi", + "Android app" : "Aplikacion për Android", + "iOS app" : "Aplikacion për iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!", + "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë", "Common Name" : "Emër i Rëndomtë", "Valid until" : "E vlefshme deri më", "Issued By" : "Lëshuar Nga", @@ -264,7 +262,7 @@ OC.L10N.register( "Username" : "Emër përdoruesi", "E-Mail" : "Email", "Create" : "Krijoje", - "Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin", + "Admin Recovery Password" : "Fjalëkalim Rikthimesh Nga Përgjegjësi", "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalim rimarrje që të mund të rimerrni kartela përdoruesi gjatë ndryshimit të fjalëkalimit", "Add Group" : "Shtoni Grup", "Group" : "Grup", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index 1b27cb6d31f..3cc3c5606b6 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -27,6 +27,7 @@ "Enabled" : "E aktivizuar", "Not enabled" : "E paaktivizuar", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing", + "Federated Cloud Sharing" : "Ndarje Në Re të Federuar ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.", "A problem occurred, please check your log files (Error: %s)" : "Ndodhi një gabim, ju lutemi, kontrolloni kartelat tuaja regjistër (Error: %s)", "Migration Completed" : "Migrimi u Plotësua", @@ -104,8 +105,8 @@ "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm", "A valid email must be provided" : "Duhet dhënë një email i vlefshëm", "__language_name__" : "Shqip", - "Sync clients" : "Klientë njëkohësimi", "Personal info" : "Të dhëna personale", + "Sync clients" : "Klientë njëkohësimi", "SSL root certificates" : "Dëshmi SSL rrënjë", "Everything (fatal issues, errors, warnings, info, debug)" : "Gjithçka (probleme fatale, gabime, sinjalizime, të dhëna, diagnostikim)", "Info, warnings, errors and fatal issues" : "Të dhëna, sinjalizime, gabime dhe probleme fatale", @@ -115,6 +116,7 @@ "None" : "Asnjë", "Login" : "Hyrje", "Plain" : "E thjeshtë", + "NT LAN Manager" : "Përgjegjës Rrjeti NT", "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-ja nuk duket të jetë rregulluar si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.", @@ -125,6 +127,7 @@ "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Shërbyesi juaj xhiron nën Microsoft Windows. Këshillojmë fort Linux-in për punim optimal nga ana e përdoruesit.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh 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\" href=\"%s\">documentation ↗</a> for more information." : "Kyçja e kartelave gjatë transaksioneve është e çaktivizuar, kjo mund të sjellë probleme me gjendje <em>race conditions</em>. Që të shmangni këto probleme, aktivizoni 'filelocking.enabled' te config.php. Për më tepër të dhëna, shihni <a target=\"_blank\" href=\"%s\">dokumentimin ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.", "This means that there might be problems with certain characters in file names." : "Kjo do të thotë që mund të ketë probleme me disa shenja në emra kartelash.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Këshillojmë me forcë instalimin në sistemin tuaj të paketave të domosdoshme për mbulim të një prej vendoreve vijuese: %s.", @@ -143,7 +146,7 @@ "days" : "ditësh", "Enforce expiration date" : "Detyro datë skadimi", "Allow resharing" : "Lejo rindarje", - "Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre", + "Restrict users to only share with users in their groups" : "Përdoruesve kufizoju të ndajnë gjëra vetëm me përdorues në grupin e tyre", "Allow users to send mail notification for shared files to other users" : "Lejoju përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët", "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet", "These groups will still be able to receive shares, but not to initiate them." : "Këto grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.", @@ -219,35 +222,30 @@ "Forum" : "Forum", "Issue tracker" : "Gjurmues të metash", "Commercial support" : "Asistencë komerciale", - "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja", - "Desktop client" : "Klient desktopi", - "Android app" : "Aplikacion për Android", - "iOS app" : "Aplikacion për iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!", - "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Keni përdorur <strong>%s</strong> nga <strong>%s</strong> tuajat", - "Password" : "Fjalëkalim", - "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj", - "Current password" : "Fjalëkalimi i tanishëm", - "New password" : "Fjalëkalimi i ri", - "Change password" : "Ndrysho fjalëkalimin", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Po përdorni <strong>%s</strong> nga <strong>%s</strong>", + "Profile picture" : "Foto profili", + "Upload new" : "Ngarko të re", + "Remove image" : "Hiqe figurën", + "Cancel" : "Anuloje", "Full name" : "Emër i plotë", "No display name set" : "S’është caktuar emër për në ekran", "Email" : "Email", "Your email address" : "Adresa juaj email", - "Fill in an email address to enable password recovery and receive notifications" : "Futni një adresë email që të aktivizoni rimarrje fjalëkalimi dhe për të marrë njoftime", "No email address set" : "S’është caktuar adresë email", "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:", - "Profile picture" : "Foto profili", - "Upload new" : "Ngarko të re", - "Select new from Files" : "Përzgjidhni të re prej Kartelash", - "Remove image" : "Hiqe figurën", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ose png, ose jpg. E mira do të ishte katrore, por do të jeni në gjendje ta qethni. Nuk lejohet që kartela të tejkalojë madhësinë maksimum prej 20 MB.", - "Your avatar is provided by your original account." : "Avatari juaj jepet nga llogaria juaj origjinale.", - "Cancel" : "Anuloje", - "Choose as profile image" : "Zgjidhni një figurë profili", + "Password" : "Fjalëkalim", + "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj", + "Current password" : "Fjalëkalimi i tanishëm", + "New password" : "Fjalëkalimi i ri", + "Change password" : "Ndrysho fjalëkalimin", "Language" : "Gjuhë", "Help translate" : "Ndihmoni në përkthim", + "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja", + "Desktop client" : "Klient desktopi", + "Android app" : "Aplikacion për Android", + "iOS app" : "Aplikacion për iOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!", + "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë", "Common Name" : "Emër i Rëndomtë", "Valid until" : "E vlefshme deri më", "Issued By" : "Lëshuar Nga", @@ -262,7 +260,7 @@ "Username" : "Emër përdoruesi", "E-Mail" : "Email", "Create" : "Krijoje", - "Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin", + "Admin Recovery Password" : "Fjalëkalim Rikthimesh Nga Përgjegjësi", "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalim rimarrje që të mund të rimerrni kartela përdoruesi gjatë ndryshimit të fjalëkalimit", "Add Group" : "Shtoni Grup", "Group" : "Grup", diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js index f0fc5eb3388..65630d3bfd3 100644 --- a/settings/l10n/sr.js +++ b/settings/l10n/sr.js @@ -101,8 +101,8 @@ OC.L10N.register( "A valid password must be provided" : "Морате унети исправну лозинку", "A valid email must be provided" : "Мора бити наведена исправна е-адреса", "__language_name__" : "Српски", - "Sync clients" : "Синхронизовање клијената", "Personal info" : "Лични подаци", + "Sync clients" : "Синхронизовање клијената", "SSL root certificates" : "ССЛ корени сертификати", "Everything (fatal issues, errors, warnings, info, debug)" : "Све (фаталне проблеме, грешке, упозорења, информације, отклањање грешака)", "Info, warnings, errors and fatal issues" : "Информације, упозорења, грешке и фатални проблеми", @@ -207,34 +207,29 @@ OC.L10N.register( "Forum" : "Форум", "Issue tracker" : "Пратилац проблема", "Commercial support" : "Комерцијална подршка", - "Get the apps to sync your files" : "Преузмите апликације ради синхронизовања ваших фајлова", - "Desktop client" : "Клијент за рачунар", - "Android app" : "Андроид апликација", - "iOS app" : "иОС апликација", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако желите да подржите пројект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">придружите се развоју</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разгласите свима</a>!", - "Show First Run Wizard again" : "Поново прикажи чаробњака за прво покретање", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Искористили сте <strong>%s</strong> од дозвољених <strong>%s</strong>", - "Password" : "Лозинка", - "Unable to change your password" : "Не могу да изменим вашу лозинку", - "Current password" : "Тренутна лозинка", - "New password" : "Нова лозинка", - "Change password" : "Измени лозинку", + "Profile picture" : "Слика профила", + "Upload new" : "Отпреми нову", + "Remove image" : "Уклони слику", + "Cancel" : "Одустани", "Full name" : "Пуно име", "No display name set" : "Није постављено име за приказ", "Email" : "Е-пошта", "Your email address" : "Ваша адреса е-поште", - "Fill in an email address to enable password recovery and receive notifications" : "Попуните е-адресу да омогућите обнављање лозинке и добијате обавештења", "No email address set" : "Није постављена е-адреса", "You are member of the following groups:" : "Имате чланство у следећим групама:", - "Profile picture" : "Слика профила", - "Upload new" : "Отпреми нову", - "Select new from Files" : "Изабери нову из фајлова", - "Remove image" : "Уклони слику", - "Your avatar is provided by your original account." : "Ваш аватар је добијен са оригиналног налога.", - "Cancel" : "Одустани", - "Choose as profile image" : "Изаберите слику профила", + "Password" : "Лозинка", + "Unable to change your password" : "Не могу да изменим вашу лозинку", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Change password" : "Измени лозинку", "Language" : "Језик", "Help translate" : " Помозите у превођењу", + "Get the apps to sync your files" : "Преузмите апликације ради синхронизовања ваших фајлова", + "Desktop client" : "Клијент за рачунар", + "Android app" : "Андроид апликација", + "iOS app" : "иОС апликација", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако желите да подржите пројект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">придружите се развоју</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разгласите свима</a>!", + "Show First Run Wizard again" : "Поново прикажи чаробњака за прво покретање", "Common Name" : "Уобичајено име", "Valid until" : "Важи до", "Issued By" : "Издавач", diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json index ec0d3f078dc..d15299b19e9 100644 --- a/settings/l10n/sr.json +++ b/settings/l10n/sr.json @@ -99,8 +99,8 @@ "A valid password must be provided" : "Морате унети исправну лозинку", "A valid email must be provided" : "Мора бити наведена исправна е-адреса", "__language_name__" : "Српски", - "Sync clients" : "Синхронизовање клијената", "Personal info" : "Лични подаци", + "Sync clients" : "Синхронизовање клијената", "SSL root certificates" : "ССЛ корени сертификати", "Everything (fatal issues, errors, warnings, info, debug)" : "Све (фаталне проблеме, грешке, упозорења, информације, отклањање грешака)", "Info, warnings, errors and fatal issues" : "Информације, упозорења, грешке и фатални проблеми", @@ -205,34 +205,29 @@ "Forum" : "Форум", "Issue tracker" : "Пратилац проблема", "Commercial support" : "Комерцијална подршка", - "Get the apps to sync your files" : "Преузмите апликације ради синхронизовања ваших фајлова", - "Desktop client" : "Клијент за рачунар", - "Android app" : "Андроид апликација", - "iOS app" : "иОС апликација", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако желите да подржите пројект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">придружите се развоју</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разгласите свима</a>!", - "Show First Run Wizard again" : "Поново прикажи чаробњака за прво покретање", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Искористили сте <strong>%s</strong> од дозвољених <strong>%s</strong>", - "Password" : "Лозинка", - "Unable to change your password" : "Не могу да изменим вашу лозинку", - "Current password" : "Тренутна лозинка", - "New password" : "Нова лозинка", - "Change password" : "Измени лозинку", + "Profile picture" : "Слика профила", + "Upload new" : "Отпреми нову", + "Remove image" : "Уклони слику", + "Cancel" : "Одустани", "Full name" : "Пуно име", "No display name set" : "Није постављено име за приказ", "Email" : "Е-пошта", "Your email address" : "Ваша адреса е-поште", - "Fill in an email address to enable password recovery and receive notifications" : "Попуните е-адресу да омогућите обнављање лозинке и добијате обавештења", "No email address set" : "Није постављена е-адреса", "You are member of the following groups:" : "Имате чланство у следећим групама:", - "Profile picture" : "Слика профила", - "Upload new" : "Отпреми нову", - "Select new from Files" : "Изабери нову из фајлова", - "Remove image" : "Уклони слику", - "Your avatar is provided by your original account." : "Ваш аватар је добијен са оригиналног налога.", - "Cancel" : "Одустани", - "Choose as profile image" : "Изаберите слику профила", + "Password" : "Лозинка", + "Unable to change your password" : "Не могу да изменим вашу лозинку", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Change password" : "Измени лозинку", "Language" : "Језик", "Help translate" : " Помозите у превођењу", + "Get the apps to sync your files" : "Преузмите апликације ради синхронизовања ваших фајлова", + "Desktop client" : "Клијент за рачунар", + "Android app" : "Андроид апликација", + "iOS app" : "иОС апликација", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ако желите да подржите пројект\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">придружите се развоју</a>\n\t\tили\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">разгласите свима</a>!", + "Show First Run Wizard again" : "Поново прикажи чаробњака за прво покретање", "Common Name" : "Уобичајено име", "Valid until" : "Важи до", "Issued By" : "Издавач", diff --git a/settings/l10n/sr@latin.js b/settings/l10n/sr@latin.js index e7319b531fb..645ea1ee0ec 100644 --- a/settings/l10n/sr@latin.js +++ b/settings/l10n/sr@latin.js @@ -19,18 +19,18 @@ OC.L10N.register( "Port" : "Port", "by" : "od", "Cheers!" : "U zdravlje!", - "Get the apps to sync your files" : "Preuzmite aplikacije za sinhronizaciju Vaših fajlova", - "Desktop client" : "Desktop klijent", - "Android app" : "Android aplikacija", - "iOS app" : "iOS aplikacija", + "Cancel" : "Otkaži", + "Email" : "E-mail", "Password" : "Lozinka", "Unable to change your password" : "Ne mogu da izmenim vašu lozinku", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Izmeni lozinku", - "Email" : "E-mail", - "Cancel" : "Otkaži", "Language" : "Jezik", + "Get the apps to sync your files" : "Preuzmite aplikacije za sinhronizaciju Vaših fajlova", + "Desktop client" : "Desktop klijent", + "Android app" : "Android aplikacija", + "iOS app" : "iOS aplikacija", "Username" : "Korisničko ime", "Create" : "Napravi", "Group" : "Grupa", diff --git a/settings/l10n/sr@latin.json b/settings/l10n/sr@latin.json index f53b0f418c6..bf0779d4fdc 100644 --- a/settings/l10n/sr@latin.json +++ b/settings/l10n/sr@latin.json @@ -17,18 +17,18 @@ "Port" : "Port", "by" : "od", "Cheers!" : "U zdravlje!", - "Get the apps to sync your files" : "Preuzmite aplikacije za sinhronizaciju Vaših fajlova", - "Desktop client" : "Desktop klijent", - "Android app" : "Android aplikacija", - "iOS app" : "iOS aplikacija", + "Cancel" : "Otkaži", + "Email" : "E-mail", "Password" : "Lozinka", "Unable to change your password" : "Ne mogu da izmenim vašu lozinku", "Current password" : "Trenutna lozinka", "New password" : "Nova lozinka", "Change password" : "Izmeni lozinku", - "Email" : "E-mail", - "Cancel" : "Otkaži", "Language" : "Jezik", + "Get the apps to sync your files" : "Preuzmite aplikacije za sinhronizaciju Vaših fajlova", + "Desktop client" : "Desktop klijent", + "Android app" : "Android aplikacija", + "iOS app" : "iOS aplikacija", "Username" : "Korisničko ime", "Create" : "Napravi", "Group" : "Grupa", diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js index 414a1121fae..fd1b96b8502 100644 --- a/settings/l10n/sv.js +++ b/settings/l10n/sv.js @@ -146,31 +146,26 @@ OC.L10N.register( "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", "Forum" : "Forum", - "Get the apps to sync your files" : "Skaffa apparna för att synkronisera dina filer", - "Desktop client" : "Skrivbordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "Show First Run Wizard again" : "Visa Första uppstarts-guiden igen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har använt <strong>%s</strong> av tillgängliga <strong>%s</strong>", + "Profile picture" : "Profilbild", + "Upload new" : "Ladda upp ny", + "Remove image" : "Radera bild", + "Cancel" : "Avbryt", + "No display name set" : "Inget visningsnamn angivet", + "Email" : "E-post", + "Your email address" : "Din e-postadress", + "No email address set" : "Ingen e-postadress angiven", "Password" : "Lösenord", "Unable to change your password" : "Kunde inte ändra ditt lösenord", "Current password" : "Nuvarande lösenord", "New password" : "Nytt lösenord", "Change password" : "Ändra lösenord", - "No display name set" : "Inget visningsnamn angivet", - "Email" : "E-post", - "Your email address" : "Din e-postadress", - "Fill in an email address to enable password recovery and receive notifications" : "Fyll i en e-postadress för att aktivera återställning av lösenord och mottagande av notifieringar", - "No email address set" : "Ingen e-postadress angiven", - "Profile picture" : "Profilbild", - "Upload new" : "Ladda upp ny", - "Select new from Files" : "Välj ny från filer", - "Remove image" : "Radera bild", - "Your avatar is provided by your original account." : "Din avatar tillhandahålls av ditt ursprungliga konto.", - "Cancel" : "Avbryt", - "Choose as profile image" : "Välj som profilbild", "Language" : "Språk", "Help translate" : "Hjälp att översätta", + "Get the apps to sync your files" : "Skaffa apparna för att synkronisera dina filer", + "Desktop client" : "Skrivbordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "Show First Run Wizard again" : "Visa Första uppstarts-guiden igen", "Common Name" : "Vanligt namn", "Valid until" : "Giltigt till", "Issued By" : "Utfärdat av", diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json index 0b0c0ebb88c..7e725594f86 100644 --- a/settings/l10n/sv.json +++ b/settings/l10n/sv.json @@ -144,31 +144,26 @@ "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", "Forum" : "Forum", - "Get the apps to sync your files" : "Skaffa apparna för att synkronisera dina filer", - "Desktop client" : "Skrivbordsklient", - "Android app" : "Android-app", - "iOS app" : "iOS-app", - "Show First Run Wizard again" : "Visa Första uppstarts-guiden igen", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Du har använt <strong>%s</strong> av tillgängliga <strong>%s</strong>", + "Profile picture" : "Profilbild", + "Upload new" : "Ladda upp ny", + "Remove image" : "Radera bild", + "Cancel" : "Avbryt", + "No display name set" : "Inget visningsnamn angivet", + "Email" : "E-post", + "Your email address" : "Din e-postadress", + "No email address set" : "Ingen e-postadress angiven", "Password" : "Lösenord", "Unable to change your password" : "Kunde inte ändra ditt lösenord", "Current password" : "Nuvarande lösenord", "New password" : "Nytt lösenord", "Change password" : "Ändra lösenord", - "No display name set" : "Inget visningsnamn angivet", - "Email" : "E-post", - "Your email address" : "Din e-postadress", - "Fill in an email address to enable password recovery and receive notifications" : "Fyll i en e-postadress för att aktivera återställning av lösenord och mottagande av notifieringar", - "No email address set" : "Ingen e-postadress angiven", - "Profile picture" : "Profilbild", - "Upload new" : "Ladda upp ny", - "Select new from Files" : "Välj ny från filer", - "Remove image" : "Radera bild", - "Your avatar is provided by your original account." : "Din avatar tillhandahålls av ditt ursprungliga konto.", - "Cancel" : "Avbryt", - "Choose as profile image" : "Välj som profilbild", "Language" : "Språk", "Help translate" : "Hjälp att översätta", + "Get the apps to sync your files" : "Skaffa apparna för att synkronisera dina filer", + "Desktop client" : "Skrivbordsklient", + "Android app" : "Android-app", + "iOS app" : "iOS-app", + "Show First Run Wizard again" : "Visa Första uppstarts-guiden igen", "Common Name" : "Vanligt namn", "Valid until" : "Giltigt till", "Issued By" : "Utfärdat av", diff --git a/settings/l10n/ta_LK.js b/settings/l10n/ta_LK.js index e1c01ee9d53..82eb814908c 100644 --- a/settings/l10n/ta_LK.js +++ b/settings/l10n/ta_LK.js @@ -26,15 +26,14 @@ OC.L10N.register( "More" : "மேலதிக", "Less" : "குறைவான", "by" : "மூலம்", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "நீங்கள் <strong>%s</strong> இலுள்ள <strong>%s</strong>பயன்படுத்தியுள்ளீர்கள்", + "Cancel" : "இரத்து செய்க", + "Email" : "மின்னஞ்சல்", + "Your email address" : "உங்களுடைய மின்னஞ்சல் முகவரி", "Password" : "கடவுச்சொல்", "Unable to change your password" : "உங்களுடைய கடவுச்சொல்லை மாற்றமுடியாது", "Current password" : "தற்போதைய கடவுச்சொல்", "New password" : "புதிய கடவுச்சொல்", "Change password" : "கடவுச்சொல்லை மாற்றுக", - "Email" : "மின்னஞ்சல்", - "Your email address" : "உங்களுடைய மின்னஞ்சல் முகவரி", - "Cancel" : "இரத்து செய்க", "Language" : "மொழி", "Help translate" : "மொழிபெயர்க்க உதவி", "Username" : "பயனாளர் பெயர்", diff --git a/settings/l10n/ta_LK.json b/settings/l10n/ta_LK.json index 84c2acbe2ac..e7d85248386 100644 --- a/settings/l10n/ta_LK.json +++ b/settings/l10n/ta_LK.json @@ -24,15 +24,14 @@ "More" : "மேலதிக", "Less" : "குறைவான", "by" : "மூலம்", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "நீங்கள் <strong>%s</strong> இலுள்ள <strong>%s</strong>பயன்படுத்தியுள்ளீர்கள்", + "Cancel" : "இரத்து செய்க", + "Email" : "மின்னஞ்சல்", + "Your email address" : "உங்களுடைய மின்னஞ்சல் முகவரி", "Password" : "கடவுச்சொல்", "Unable to change your password" : "உங்களுடைய கடவுச்சொல்லை மாற்றமுடியாது", "Current password" : "தற்போதைய கடவுச்சொல்", "New password" : "புதிய கடவுச்சொல்", "Change password" : "கடவுச்சொல்லை மாற்றுக", - "Email" : "மின்னஞ்சல்", - "Your email address" : "உங்களுடைய மின்னஞ்சல் முகவரி", - "Cancel" : "இரத்து செய்க", "Language" : "மொழி", "Help translate" : "மொழிபெயர்க்க உதவி", "Username" : "பயனாளர் பெயர்", diff --git a/settings/l10n/te.js b/settings/l10n/te.js index f09acb41060..6db1a682c12 100644 --- a/settings/l10n/te.js +++ b/settings/l10n/te.js @@ -4,11 +4,11 @@ OC.L10N.register( "Delete" : "తొలగించు", "Server address" : "సేవకి చిరునామా", "More" : "మరిన్ని", - "Password" : "సంకేతపదం", - "New password" : "కొత్త సంకేతపదం", + "Cancel" : "రద్దుచేయి", "Email" : "ఈమెయిలు", "Your email address" : "మీ ఈమెయిలు చిరునామా", - "Cancel" : "రద్దుచేయి", + "Password" : "సంకేతపదం", + "New password" : "కొత్త సంకేతపదం", "Language" : "భాష", "Username" : "వాడుకరి పేరు" }, diff --git a/settings/l10n/te.json b/settings/l10n/te.json index 031f99d1498..5b4d5344fa3 100644 --- a/settings/l10n/te.json +++ b/settings/l10n/te.json @@ -2,11 +2,11 @@ "Delete" : "తొలగించు", "Server address" : "సేవకి చిరునామా", "More" : "మరిన్ని", - "Password" : "సంకేతపదం", - "New password" : "కొత్త సంకేతపదం", + "Cancel" : "రద్దుచేయి", "Email" : "ఈమెయిలు", "Your email address" : "మీ ఈమెయిలు చిరునామా", - "Cancel" : "రద్దుచేయి", + "Password" : "సంకేతపదం", + "New password" : "కొత్త సంకేతపదం", "Language" : "భాష", "Username" : "వాడుకరి పేరు" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js index 28cc6d0e3b0..c47ff2581cb 100644 --- a/settings/l10n/th_TH.js +++ b/settings/l10n/th_TH.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "จะต้องระบุรหัสผ่านที่ถูกต้อง", "A valid email must be provided" : "จะต้องระบุอีเมลที่ถูกต้อง", "__language_name__" : "ภาษาไทย - Thai languages", - "Sync clients" : "ประสานข้อมูลไคลเอนต์", "Personal info" : "ข้อมูลส่วนบุคคล", + "Sync clients" : "ประสานข้อมูลไคลเอนต์", "SSL root certificates" : "ใบรับรองความปลอดภัยด้วยระบบ SSL จาก Root", "Everything (fatal issues, errors, warnings, info, debug)" : "ทุกอย่าง (ปัญหาร้ายแรง ข้อผิดพลาด คำเตือน ข้อมูล การแก้ปัญหา)", "Info, warnings, errors and fatal issues" : "ข้อมูล คำเตือน ข้อผิดพลาดและปัญหาร้ายแรง", @@ -224,35 +224,29 @@ OC.L10N.register( "Forum" : "ฟอรั่ม", "Issue tracker" : "ติดตามปัญหา", "Commercial support" : "สนับสนุนเชิงพาณิชย์", - "Get the apps to sync your files" : "ใช้แอพพลิเคชันในการประสานไฟล์ของคุณ", - "Desktop client" : "เดสก์ทอปผู้ใช้", - "Android app" : "แอพฯ แอนดรอยด์", - "iOS app" : "แอพฯ IOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "หากคุณต้องการที่จะสนับสนุนโครงการ <a href=\"https://owncloud.org/contribute\" target=\"_blank\" rel=\"noreferrer\">เข้าร่วมการพัฒนา</a> หรือ <a href=\"https://owncloud.org/promote\" target=\"_blank\" rel=\"noreferrer\">กระจายข่าวสาร</a>!\n\t\t", - "Show First Run Wizard again" : "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "คุณได้ใช้งานไปแล้ว <strong>%s</strong> จากจำนวนที่สามารถใช้ได้ <strong>%s</strong>", - "Password" : "รหัสผ่าน", - "Unable to change your password" : "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้", - "Current password" : "รหัสผ่านปัจจุบัน", - "New password" : "รหัสผ่านใหม่", - "Change password" : "เปลี่ยนรหัสผ่าน", + "Profile picture" : "รูปภาพโปรไฟล์", + "Upload new" : "อัพโหลดใหม่", + "Remove image" : "ลบรูปภาพ", + "Cancel" : "ยกเลิก", "Full name" : "ชื่อเต็ม", "No display name set" : "ไม่มีชื่อที่แสดง", "Email" : "อีเมล", "Your email address" : "ที่อยู่อีเมล์ของคุณ", - "Fill in an email address to enable password recovery and receive notifications" : "กรอกที่อยู่อีเมลเพื่อเปิดใช้งานการกู้คืนรหัสผ่านและการได้รับการแจ้งเตือน", "No email address set" : "ไม่ได้ตั้งค่าที่อยู่อีเมล", "You are member of the following groups:" : "คุณเป็นสมาชิกของกลุ่มต่อไปนี้:", - "Profile picture" : "รูปภาพโปรไฟล์", - "Upload new" : "อัพโหลดใหม่", - "Select new from Files" : "เลือกใหม่จากไฟล์", - "Remove image" : "ลบรูปภาพ", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "การครอบตัดรูปภาพ .PNG หรือ .JPG ให้รูปเป็นสี่เหลี่ยม ไฟล์ต้องมีขนาดไม่เกิน 20 เมกะไบต์", - "Your avatar is provided by your original account." : "อวตาลของคุณถูกระบุโดยบัญชีเดิมของคุณ", - "Cancel" : "ยกเลิก", - "Choose as profile image" : "เลือกรูปภาพโปรไฟล์", + "Password" : "รหัสผ่าน", + "Unable to change your password" : "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้", + "Current password" : "รหัสผ่านปัจจุบัน", + "New password" : "รหัสผ่านใหม่", + "Change password" : "เปลี่ยนรหัสผ่าน", "Language" : "ภาษา", "Help translate" : "มาช่วยกันแปลสิ!", + "Get the apps to sync your files" : "ใช้แอพพลิเคชันในการประสานไฟล์ของคุณ", + "Desktop client" : "เดสก์ทอปผู้ใช้", + "Android app" : "แอพฯ แอนดรอยด์", + "iOS app" : "แอพฯ IOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "หากคุณต้องการที่จะสนับสนุนโครงการ <a href=\"https://owncloud.org/contribute\" target=\"_blank\" rel=\"noreferrer\">เข้าร่วมการพัฒนา</a> หรือ <a href=\"https://owncloud.org/promote\" target=\"_blank\" rel=\"noreferrer\">กระจายข่าวสาร</a>!\n\t\t", + "Show First Run Wizard again" : "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง", "Common Name" : "ชื่อทั่วไป", "Valid until" : "ใช้ได้จนถึง", "Issued By" : "ปัญหาโดย", diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json index 16757eda425..af0e3de03ae 100644 --- a/settings/l10n/th_TH.json +++ b/settings/l10n/th_TH.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "จะต้องระบุรหัสผ่านที่ถูกต้อง", "A valid email must be provided" : "จะต้องระบุอีเมลที่ถูกต้อง", "__language_name__" : "ภาษาไทย - Thai languages", - "Sync clients" : "ประสานข้อมูลไคลเอนต์", "Personal info" : "ข้อมูลส่วนบุคคล", + "Sync clients" : "ประสานข้อมูลไคลเอนต์", "SSL root certificates" : "ใบรับรองความปลอดภัยด้วยระบบ SSL จาก Root", "Everything (fatal issues, errors, warnings, info, debug)" : "ทุกอย่าง (ปัญหาร้ายแรง ข้อผิดพลาด คำเตือน ข้อมูล การแก้ปัญหา)", "Info, warnings, errors and fatal issues" : "ข้อมูล คำเตือน ข้อผิดพลาดและปัญหาร้ายแรง", @@ -222,35 +222,29 @@ "Forum" : "ฟอรั่ม", "Issue tracker" : "ติดตามปัญหา", "Commercial support" : "สนับสนุนเชิงพาณิชย์", - "Get the apps to sync your files" : "ใช้แอพพลิเคชันในการประสานไฟล์ของคุณ", - "Desktop client" : "เดสก์ทอปผู้ใช้", - "Android app" : "แอพฯ แอนดรอยด์", - "iOS app" : "แอพฯ IOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "หากคุณต้องการที่จะสนับสนุนโครงการ <a href=\"https://owncloud.org/contribute\" target=\"_blank\" rel=\"noreferrer\">เข้าร่วมการพัฒนา</a> หรือ <a href=\"https://owncloud.org/promote\" target=\"_blank\" rel=\"noreferrer\">กระจายข่าวสาร</a>!\n\t\t", - "Show First Run Wizard again" : "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "คุณได้ใช้งานไปแล้ว <strong>%s</strong> จากจำนวนที่สามารถใช้ได้ <strong>%s</strong>", - "Password" : "รหัสผ่าน", - "Unable to change your password" : "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้", - "Current password" : "รหัสผ่านปัจจุบัน", - "New password" : "รหัสผ่านใหม่", - "Change password" : "เปลี่ยนรหัสผ่าน", + "Profile picture" : "รูปภาพโปรไฟล์", + "Upload new" : "อัพโหลดใหม่", + "Remove image" : "ลบรูปภาพ", + "Cancel" : "ยกเลิก", "Full name" : "ชื่อเต็ม", "No display name set" : "ไม่มีชื่อที่แสดง", "Email" : "อีเมล", "Your email address" : "ที่อยู่อีเมล์ของคุณ", - "Fill in an email address to enable password recovery and receive notifications" : "กรอกที่อยู่อีเมลเพื่อเปิดใช้งานการกู้คืนรหัสผ่านและการได้รับการแจ้งเตือน", "No email address set" : "ไม่ได้ตั้งค่าที่อยู่อีเมล", "You are member of the following groups:" : "คุณเป็นสมาชิกของกลุ่มต่อไปนี้:", - "Profile picture" : "รูปภาพโปรไฟล์", - "Upload new" : "อัพโหลดใหม่", - "Select new from Files" : "เลือกใหม่จากไฟล์", - "Remove image" : "ลบรูปภาพ", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "การครอบตัดรูปภาพ .PNG หรือ .JPG ให้รูปเป็นสี่เหลี่ยม ไฟล์ต้องมีขนาดไม่เกิน 20 เมกะไบต์", - "Your avatar is provided by your original account." : "อวตาลของคุณถูกระบุโดยบัญชีเดิมของคุณ", - "Cancel" : "ยกเลิก", - "Choose as profile image" : "เลือกรูปภาพโปรไฟล์", + "Password" : "รหัสผ่าน", + "Unable to change your password" : "ไม่สามารถเปลี่ยนรหัสผ่านของคุณได้", + "Current password" : "รหัสผ่านปัจจุบัน", + "New password" : "รหัสผ่านใหม่", + "Change password" : "เปลี่ยนรหัสผ่าน", "Language" : "ภาษา", "Help translate" : "มาช่วยกันแปลสิ!", + "Get the apps to sync your files" : "ใช้แอพพลิเคชันในการประสานไฟล์ของคุณ", + "Desktop client" : "เดสก์ทอปผู้ใช้", + "Android app" : "แอพฯ แอนดรอยด์", + "iOS app" : "แอพฯ IOS", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "หากคุณต้องการที่จะสนับสนุนโครงการ <a href=\"https://owncloud.org/contribute\" target=\"_blank\" rel=\"noreferrer\">เข้าร่วมการพัฒนา</a> หรือ <a href=\"https://owncloud.org/promote\" target=\"_blank\" rel=\"noreferrer\">กระจายข่าวสาร</a>!\n\t\t", + "Show First Run Wizard again" : "แสดงหน้าจอวิซาร์ดนำทางครั้งแรกอีกครั้ง", "Common Name" : "ชื่อทั่วไป", "Valid until" : "ใช้ได้จนถึง", "Issued By" : "ปัญหาโดย", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index 0e8bbe28b17..813b8bb3de9 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -107,8 +107,8 @@ OC.L10N.register( "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", - "Sync clients" : "Eşitleme istemcileri", "Personal info" : "Kişisel bilgi", + "Sync clients" : "Eşitleme istemcileri", "SSL root certificates" : "SSL kök sertifikaları", "Everything (fatal issues, errors, warnings, info, debug)" : "Her şey (Ciddi sorunlar, hatalar, uyarılar, bilgi, hata ayıklama)", "Info, warnings, errors and fatal issues" : "Bilgi, uyarılar, hatalar ve ciddi sorunlar", @@ -224,35 +224,29 @@ OC.L10N.register( "Forum" : "Forum", "Issue tracker" : "Sorun izleyici", "Commercial support" : "Ticari destek", - "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", - "Desktop client" : "Masaüstü istemcisi", - "Android app" : "Android uygulaması", - "iOS app" : "iOS uygulaması", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek istiyorsanız\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">geliştirilmesine katılın</a>\n\t\tveya\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">duyurun</a>!", - "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Kullandığınız: <strong>%s</strong>. Kullanılabilir alan: <strong>%s</strong>", - "Password" : "Parola", - "Unable to change your password" : "Parolanız değiştirilemiyor", - "Current password" : "Mevcut parola", - "New password" : "Yeni parola", - "Change password" : "Parola değiştir", + "Profile picture" : "Profil resmi", + "Upload new" : "Yeni yükle", + "Remove image" : "Resmi kaldır", + "Cancel" : "İptal", "Full name" : "Ad soyad", "No display name set" : "Ekran adı ayarlanmamış", "Email" : "E-posta", "Your email address" : "E-posta adresiniz", - "Fill in an email address to enable password recovery and receive notifications" : "Parola kurtarmayı ve bildirim almayı açmak için bir e-posta adresi girin", "No email address set" : "E-posta adresi ayarlanmamış", "You are member of the following groups:" : "Şu grupların üyesisiniz:", - "Profile picture" : "Profil resmi", - "Upload new" : "Yeni yükle", - "Select new from Files" : "Dosyalardan seç", - "Remove image" : "Resmi kaldır", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Png veya jpg'den biri olmalıdır. İdeal olanı karedir ama kırpmanıza izin verilecektir. Dosya boyutu 20MB'ı geçemez.", - "Your avatar is provided by your original account." : "Görüntü resminiz, özgün hesabınız tarafından sağlanıyor.", - "Cancel" : "İptal", - "Choose as profile image" : "Profil resmi olarak seç", + "Password" : "Parola", + "Unable to change your password" : "Parolanız değiştirilemiyor", + "Current password" : "Mevcut parola", + "New password" : "Yeni parola", + "Change password" : "Parola değiştir", "Language" : "Dil", "Help translate" : "Çevirilere yardım edin", + "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", + "Desktop client" : "Masaüstü istemcisi", + "Android app" : "Android uygulaması", + "iOS app" : "iOS uygulaması", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek istiyorsanız\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">geliştirilmesine katılın</a>\n\t\tveya\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">duyurun</a>!", + "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", "Common Name" : "Ortak Ad", "Valid until" : "Geçerlilik", "Issued By" : "Veren", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 4774d4dc48f..c523b652432 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -105,8 +105,8 @@ "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", - "Sync clients" : "Eşitleme istemcileri", "Personal info" : "Kişisel bilgi", + "Sync clients" : "Eşitleme istemcileri", "SSL root certificates" : "SSL kök sertifikaları", "Everything (fatal issues, errors, warnings, info, debug)" : "Her şey (Ciddi sorunlar, hatalar, uyarılar, bilgi, hata ayıklama)", "Info, warnings, errors and fatal issues" : "Bilgi, uyarılar, hatalar ve ciddi sorunlar", @@ -222,35 +222,29 @@ "Forum" : "Forum", "Issue tracker" : "Sorun izleyici", "Commercial support" : "Ticari destek", - "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", - "Desktop client" : "Masaüstü istemcisi", - "Android app" : "Android uygulaması", - "iOS app" : "iOS uygulaması", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek istiyorsanız\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">geliştirilmesine katılın</a>\n\t\tveya\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">duyurun</a>!", - "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Kullandığınız: <strong>%s</strong>. Kullanılabilir alan: <strong>%s</strong>", - "Password" : "Parola", - "Unable to change your password" : "Parolanız değiştirilemiyor", - "Current password" : "Mevcut parola", - "New password" : "Yeni parola", - "Change password" : "Parola değiştir", + "Profile picture" : "Profil resmi", + "Upload new" : "Yeni yükle", + "Remove image" : "Resmi kaldır", + "Cancel" : "İptal", "Full name" : "Ad soyad", "No display name set" : "Ekran adı ayarlanmamış", "Email" : "E-posta", "Your email address" : "E-posta adresiniz", - "Fill in an email address to enable password recovery and receive notifications" : "Parola kurtarmayı ve bildirim almayı açmak için bir e-posta adresi girin", "No email address set" : "E-posta adresi ayarlanmamış", "You are member of the following groups:" : "Şu grupların üyesisiniz:", - "Profile picture" : "Profil resmi", - "Upload new" : "Yeni yükle", - "Select new from Files" : "Dosyalardan seç", - "Remove image" : "Resmi kaldır", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Png veya jpg'den biri olmalıdır. İdeal olanı karedir ama kırpmanıza izin verilecektir. Dosya boyutu 20MB'ı geçemez.", - "Your avatar is provided by your original account." : "Görüntü resminiz, özgün hesabınız tarafından sağlanıyor.", - "Cancel" : "İptal", - "Choose as profile image" : "Profil resmi olarak seç", + "Password" : "Parola", + "Unable to change your password" : "Parolanız değiştirilemiyor", + "Current password" : "Mevcut parola", + "New password" : "Yeni parola", + "Change password" : "Parola değiştir", "Language" : "Dil", "Help translate" : "Çevirilere yardım edin", + "Get the apps to sync your files" : "Dosyalarınızı eşitlemek için uygulamaları indirin", + "Desktop client" : "Masaüstü istemcisi", + "Android app" : "Android uygulaması", + "iOS app" : "iOS uygulaması", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Projeyi desteklemek istiyorsanız\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">geliştirilmesine katılın</a>\n\t\tveya\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">duyurun</a>!", + "Show First Run Wizard again" : "İlk Çalıştırma Sihirbazı'nı yeniden göster", "Common Name" : "Ortak Ad", "Valid until" : "Geçerlilik", "Issued By" : "Veren", diff --git a/settings/l10n/ug.js b/settings/l10n/ug.js index 0182ed481c6..9c2afaea8fd 100644 --- a/settings/l10n/ug.js +++ b/settings/l10n/ug.js @@ -37,14 +37,14 @@ OC.L10N.register( "Version" : "نەشرى", "by" : "سەنئەتكار", "Forum" : "مۇنبەر", + "Cancel" : "ۋاز كەچ", + "Email" : "تورخەت", + "Your email address" : "تورخەت ئادرېسىڭىز", "Password" : "ئىم", "Unable to change your password" : "ئىمنى ئۆزگەرتكىلى بولمايدۇ.", "Current password" : "نۆۋەتتىكى ئىم", "New password" : "يېڭى ئىم", "Change password" : "ئىم ئۆزگەرت", - "Email" : "تورخەت", - "Your email address" : "تورخەت ئادرېسىڭىز", - "Cancel" : "ۋاز كەچ", "Language" : "تىل", "Help translate" : "تەرجىمىگە ياردەم", "Username" : "ئىشلەتكۈچى ئاتى", diff --git a/settings/l10n/ug.json b/settings/l10n/ug.json index 30a13dd57f7..d1cfe0ebdbe 100644 --- a/settings/l10n/ug.json +++ b/settings/l10n/ug.json @@ -35,14 +35,14 @@ "Version" : "نەشرى", "by" : "سەنئەتكار", "Forum" : "مۇنبەر", + "Cancel" : "ۋاز كەچ", + "Email" : "تورخەت", + "Your email address" : "تورخەت ئادرېسىڭىز", "Password" : "ئىم", "Unable to change your password" : "ئىمنى ئۆزگەرتكىلى بولمايدۇ.", "Current password" : "نۆۋەتتىكى ئىم", "New password" : "يېڭى ئىم", "Change password" : "ئىم ئۆزگەرت", - "Email" : "تورخەت", - "Your email address" : "تورخەت ئادرېسىڭىز", - "Cancel" : "ۋاز كەچ", "Language" : "تىل", "Help translate" : "تەرجىمىگە ياردەم", "Username" : "ئىشلەتكۈچى ئاتى", diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js index 6818791d109..e701b22e2bf 100644 --- a/settings/l10n/uk.js +++ b/settings/l10n/uk.js @@ -103,8 +103,8 @@ OC.L10N.register( "A valid password must be provided" : "Потрібно задати вірний пароль", "A valid email must be provided" : "Вкажіть дійсний email", "__language_name__" : "__language_name__", - "Sync clients" : "Клієнти синхронізації", "Personal info" : "Особиста інформація", + "Sync clients" : "Клієнти синхронізації", "SSL root certificates" : "Кореневі SSL сертифікати", "Everything (fatal issues, errors, warnings, info, debug)" : "Усі (критичні проблеми, помилки, попередження, інформаційні, налагодження)", "Info, warnings, errors and fatal issues" : "Інформаційні, попередження, помилки та критичні проблеми", @@ -204,34 +204,29 @@ OC.L10N.register( "Forum" : "Форум", "Issue tracker" : "Вирішення проблем", "Commercial support" : "Комерційна підтримка", - "Get the apps to sync your files" : "Отримати додатки для синхронізації ваших файлів", - "Desktop client" : "Клієнт для ПК", - "Android app" : "Android-додаток", - "iOS app" : "iOS додаток", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Якщо Ви хочете підтримати проект\n⇥⇥ <a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> спільна розробка </a> \n⇥⇥або\n⇥ ⇥ <a href=\"https://owncloud.org/promote\"\n ⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> повідомити у світі </a> !", - "Show First Run Wizard again" : "Показувати Майстер Налаштувань знову", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ви використали <strong>%s</strong> із доступних <strong>%s</strong>", - "Password" : "Пароль", - "Unable to change your password" : "Не вдалося змінити Ваш пароль", - "Current password" : "Поточний пароль", - "New password" : "Новий пароль", - "Change password" : "Змінити пароль", + "Profile picture" : "Зображення облікового запису", + "Upload new" : "Завантажити нове", + "Remove image" : "Видалити зображення", + "Cancel" : "Відмінити", "Full name" : "Повне ім'я", "No display name set" : "Коротке ім'я не вказано", "Email" : "E-mail", "Your email address" : "Ваша адреса електронної пошти", - "Fill in an email address to enable password recovery and receive notifications" : "Введіть адресу електронної пошти, щоб ввімкнути відновлення паролю та отримання повідомлень", "No email address set" : "E-mail не вказано", "You are member of the following groups:" : "Ви є членом наступних груп:", - "Profile picture" : "Зображення облікового запису", - "Upload new" : "Завантажити нове", - "Select new from Files" : "Обрати із завантажених файлів", - "Remove image" : "Видалити зображення", - "Your avatar is provided by your original account." : "Буде використано аватар вашого оригінального облікового запису.", - "Cancel" : "Відмінити", - "Choose as profile image" : "Обрати зображенням облікового запису", + "Password" : "Пароль", + "Unable to change your password" : "Не вдалося змінити Ваш пароль", + "Current password" : "Поточний пароль", + "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Language" : "Мова", "Help translate" : "Допомогти з перекладом", + "Get the apps to sync your files" : "Отримати додатки для синхронізації ваших файлів", + "Desktop client" : "Клієнт для ПК", + "Android app" : "Android-додаток", + "iOS app" : "iOS додаток", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Якщо Ви хочете підтримати проект\n⇥⇥ <a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> спільна розробка </a> \n⇥⇥або\n⇥ ⇥ <a href=\"https://owncloud.org/promote\"\n ⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> повідомити у світі </a> !", + "Show First Run Wizard again" : "Показувати Майстер Налаштувань знову", "Common Name" : "Ім'я:", "Valid until" : "Дійсно до", "Issued By" : "Виданий", diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json index 1b75667fd39..b73ae57bded 100644 --- a/settings/l10n/uk.json +++ b/settings/l10n/uk.json @@ -101,8 +101,8 @@ "A valid password must be provided" : "Потрібно задати вірний пароль", "A valid email must be provided" : "Вкажіть дійсний email", "__language_name__" : "__language_name__", - "Sync clients" : "Клієнти синхронізації", "Personal info" : "Особиста інформація", + "Sync clients" : "Клієнти синхронізації", "SSL root certificates" : "Кореневі SSL сертифікати", "Everything (fatal issues, errors, warnings, info, debug)" : "Усі (критичні проблеми, помилки, попередження, інформаційні, налагодження)", "Info, warnings, errors and fatal issues" : "Інформаційні, попередження, помилки та критичні проблеми", @@ -202,34 +202,29 @@ "Forum" : "Форум", "Issue tracker" : "Вирішення проблем", "Commercial support" : "Комерційна підтримка", - "Get the apps to sync your files" : "Отримати додатки для синхронізації ваших файлів", - "Desktop client" : "Клієнт для ПК", - "Android app" : "Android-додаток", - "iOS app" : "iOS додаток", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Якщо Ви хочете підтримати проект\n⇥⇥ <a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> спільна розробка </a> \n⇥⇥або\n⇥ ⇥ <a href=\"https://owncloud.org/promote\"\n ⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> повідомити у світі </a> !", - "Show First Run Wizard again" : "Показувати Майстер Налаштувань знову", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ви використали <strong>%s</strong> із доступних <strong>%s</strong>", - "Password" : "Пароль", - "Unable to change your password" : "Не вдалося змінити Ваш пароль", - "Current password" : "Поточний пароль", - "New password" : "Новий пароль", - "Change password" : "Змінити пароль", + "Profile picture" : "Зображення облікового запису", + "Upload new" : "Завантажити нове", + "Remove image" : "Видалити зображення", + "Cancel" : "Відмінити", "Full name" : "Повне ім'я", "No display name set" : "Коротке ім'я не вказано", "Email" : "E-mail", "Your email address" : "Ваша адреса електронної пошти", - "Fill in an email address to enable password recovery and receive notifications" : "Введіть адресу електронної пошти, щоб ввімкнути відновлення паролю та отримання повідомлень", "No email address set" : "E-mail не вказано", "You are member of the following groups:" : "Ви є членом наступних груп:", - "Profile picture" : "Зображення облікового запису", - "Upload new" : "Завантажити нове", - "Select new from Files" : "Обрати із завантажених файлів", - "Remove image" : "Видалити зображення", - "Your avatar is provided by your original account." : "Буде використано аватар вашого оригінального облікового запису.", - "Cancel" : "Відмінити", - "Choose as profile image" : "Обрати зображенням облікового запису", + "Password" : "Пароль", + "Unable to change your password" : "Не вдалося змінити Ваш пароль", + "Current password" : "Поточний пароль", + "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Language" : "Мова", "Help translate" : "Допомогти з перекладом", + "Get the apps to sync your files" : "Отримати додатки для синхронізації ваших файлів", + "Desktop client" : "Клієнт для ПК", + "Android app" : "Android-додаток", + "iOS app" : "iOS додаток", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Якщо Ви хочете підтримати проект\n⇥⇥ <a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> спільна розробка </a> \n⇥⇥або\n⇥ ⇥ <a href=\"https://owncloud.org/promote\"\n ⇥⇥⇥target=\"_blank\" rel=\"noreferrer\"> повідомити у світі </a> !", + "Show First Run Wizard again" : "Показувати Майстер Налаштувань знову", "Common Name" : "Ім'я:", "Valid until" : "Дійсно до", "Issued By" : "Виданий", diff --git a/settings/l10n/ur_PK.js b/settings/l10n/ur_PK.js index d59ea076104..682a37fa9c8 100644 --- a/settings/l10n/ur_PK.js +++ b/settings/l10n/ur_PK.js @@ -12,9 +12,9 @@ OC.L10N.register( "More" : "مزید", "Less" : "کم", "Cheers!" : "واہ!", + "Cancel" : "منسوخ کریں", "Password" : "پاسورڈ", "New password" : "نیا پاسورڈ", - "Cancel" : "منسوخ کریں", "Username" : "یوزر نیم", "Other" : "دیگر" }, diff --git a/settings/l10n/ur_PK.json b/settings/l10n/ur_PK.json index 842c262782b..1ddd73d159d 100644 --- a/settings/l10n/ur_PK.json +++ b/settings/l10n/ur_PK.json @@ -10,9 +10,9 @@ "More" : "مزید", "Less" : "کم", "Cheers!" : "واہ!", + "Cancel" : "منسوخ کریں", "Password" : "پاسورڈ", "New password" : "نیا پاسورڈ", - "Cancel" : "منسوخ کریں", "Username" : "یوزر نیم", "Other" : "دیگر" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/settings/l10n/vi.js b/settings/l10n/vi.js index ff82c3e6ca0..f9de635698f 100644 --- a/settings/l10n/vi.js +++ b/settings/l10n/vi.js @@ -47,22 +47,20 @@ OC.L10N.register( "by" : "bởi", "Cheers!" : "Chúc mừng!", "Forum" : "Diễn đàn", - "Get the apps to sync your files" : "Nhận ứng dụng để đồng bộ file của bạn", - "Show First Run Wizard again" : "Hiện lại việc chạy đồ thuật khởi đầu", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Bạn đã sử dụng <strong>%s </ strong> có sẵn <strong> %s </ strong>", + "Upload new" : "Tải lên", + "Remove image" : "Xóa ", + "Cancel" : "Hủy", + "Email" : "Email", + "Your email address" : "Email của bạn", "Password" : "Mật khẩu", "Unable to change your password" : "Không thể đổi mật khẩu", "Current password" : "Mật khẩu cũ", "New password" : "Mật khẩu mới", "Change password" : "Đổi mật khẩu", - "Email" : "Email", - "Your email address" : "Email của bạn", - "Upload new" : "Tải lên", - "Remove image" : "Xóa ", - "Cancel" : "Hủy", - "Choose as profile image" : "Chọn hình ảnh như hồ sơ cá nhân", "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", + "Get the apps to sync your files" : "Nhận ứng dụng để đồng bộ file của bạn", + "Show First Run Wizard again" : "Hiện lại việc chạy đồ thuật khởi đầu", "Username" : "Tên đăng nhập", "Create" : "Tạo", "Group" : "N", diff --git a/settings/l10n/vi.json b/settings/l10n/vi.json index 95674c8fb37..4ca64588e85 100644 --- a/settings/l10n/vi.json +++ b/settings/l10n/vi.json @@ -45,22 +45,20 @@ "by" : "bởi", "Cheers!" : "Chúc mừng!", "Forum" : "Diễn đàn", - "Get the apps to sync your files" : "Nhận ứng dụng để đồng bộ file của bạn", - "Show First Run Wizard again" : "Hiện lại việc chạy đồ thuật khởi đầu", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Bạn đã sử dụng <strong>%s </ strong> có sẵn <strong> %s </ strong>", + "Upload new" : "Tải lên", + "Remove image" : "Xóa ", + "Cancel" : "Hủy", + "Email" : "Email", + "Your email address" : "Email của bạn", "Password" : "Mật khẩu", "Unable to change your password" : "Không thể đổi mật khẩu", "Current password" : "Mật khẩu cũ", "New password" : "Mật khẩu mới", "Change password" : "Đổi mật khẩu", - "Email" : "Email", - "Your email address" : "Email của bạn", - "Upload new" : "Tải lên", - "Remove image" : "Xóa ", - "Cancel" : "Hủy", - "Choose as profile image" : "Chọn hình ảnh như hồ sơ cá nhân", "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", + "Get the apps to sync your files" : "Nhận ứng dụng để đồng bộ file của bạn", + "Show First Run Wizard again" : "Hiện lại việc chạy đồ thuật khởi đầu", "Username" : "Tên đăng nhập", "Create" : "Tạo", "Group" : "N", diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index cc01afbf24c..89bd0a3b4d4 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "必须提供合法的密码", "A valid email must be provided" : "必须提供合法的用户名", "__language_name__" : "简体中文", - "Sync clients" : "客户端", "Personal info" : "个人信息", + "Sync clients" : "客户端", "SSL root certificates" : "SSL 根证书", "Everything (fatal issues, errors, warnings, info, debug)" : "所有(灾难性问题,错误,警告,信息,调试)", "Info, warnings, errors and fatal issues" : "信息,警告,错误和灾难性问题", @@ -219,35 +219,29 @@ OC.L10N.register( "Forum" : "论坛", "Issue tracker" : "问题跟踪", "Commercial support" : "商业支持", - "Get the apps to sync your files" : "安装应用进行文件同步", - "Desktop client" : "桌面客户端", - "Android app" : "Android 应用", - "iOS app" : "iOS 应用", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "想支持ownCloud项目?请\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">参加开发</a>\n\t\t或者\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">帮助推广</a>吧!", - "Show First Run Wizard again" : "再次显示首次运行向导", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "你已使用 <strong>%s</strong>,有效空间 <strong>%s</strong>", - "Password" : "密码", - "Unable to change your password" : "无法修改密码", - "Current password" : "当前密码", - "New password" : "新密码", - "Change password" : "修改密码", + "Profile picture" : "联系人图片", + "Upload new" : "上传新的", + "Remove image" : "移除图片", + "Cancel" : "取消", "Full name" : "全名", "No display name set" : "不显示名称设置", "Email" : "电子邮件", "Your email address" : "您的电子邮件", - "Fill in an email address to enable password recovery and receive notifications" : "填入电子邮件地址从而启用密码恢复和接收通知", "No email address set" : "尚未设置 Email 地址", "You are member of the following groups:" : "您是以下组的成员:", - "Profile picture" : "联系人图片", - "Upload new" : "上传新的", - "Select new from Files" : "从文件中选择一个新的", - "Remove image" : "移除图片", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "png 或 jpg。正方形比较理想但你也可以之后对其进行裁剪。文件大小最大不允许超过 20MB。", - "Your avatar is provided by your original account." : "您的头像由您的原始账户所提供。", - "Cancel" : "取消", - "Choose as profile image" : "用作头像", + "Password" : "密码", + "Unable to change your password" : "无法修改密码", + "Current password" : "当前密码", + "New password" : "新密码", + "Change password" : "修改密码", "Language" : "语言", "Help translate" : "帮助翻译", + "Get the apps to sync your files" : "安装应用进行文件同步", + "Desktop client" : "桌面客户端", + "Android app" : "Android 应用", + "iOS app" : "iOS 应用", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "想支持ownCloud项目?请\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">参加开发</a>\n\t\t或者\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">帮助推广</a>吧!", + "Show First Run Wizard again" : "再次显示首次运行向导", "Common Name" : "通用名称", "Valid until" : "有效期至", "Issued By" : "授权由", diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index e5532b98a5d..33074e2245d 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "必须提供合法的密码", "A valid email must be provided" : "必须提供合法的用户名", "__language_name__" : "简体中文", - "Sync clients" : "客户端", "Personal info" : "个人信息", + "Sync clients" : "客户端", "SSL root certificates" : "SSL 根证书", "Everything (fatal issues, errors, warnings, info, debug)" : "所有(灾难性问题,错误,警告,信息,调试)", "Info, warnings, errors and fatal issues" : "信息,警告,错误和灾难性问题", @@ -217,35 +217,29 @@ "Forum" : "论坛", "Issue tracker" : "问题跟踪", "Commercial support" : "商业支持", - "Get the apps to sync your files" : "安装应用进行文件同步", - "Desktop client" : "桌面客户端", - "Android app" : "Android 应用", - "iOS app" : "iOS 应用", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "想支持ownCloud项目?请\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">参加开发</a>\n\t\t或者\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">帮助推广</a>吧!", - "Show First Run Wizard again" : "再次显示首次运行向导", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "你已使用 <strong>%s</strong>,有效空间 <strong>%s</strong>", - "Password" : "密码", - "Unable to change your password" : "无法修改密码", - "Current password" : "当前密码", - "New password" : "新密码", - "Change password" : "修改密码", + "Profile picture" : "联系人图片", + "Upload new" : "上传新的", + "Remove image" : "移除图片", + "Cancel" : "取消", "Full name" : "全名", "No display name set" : "不显示名称设置", "Email" : "电子邮件", "Your email address" : "您的电子邮件", - "Fill in an email address to enable password recovery and receive notifications" : "填入电子邮件地址从而启用密码恢复和接收通知", "No email address set" : "尚未设置 Email 地址", "You are member of the following groups:" : "您是以下组的成员:", - "Profile picture" : "联系人图片", - "Upload new" : "上传新的", - "Select new from Files" : "从文件中选择一个新的", - "Remove image" : "移除图片", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "png 或 jpg。正方形比较理想但你也可以之后对其进行裁剪。文件大小最大不允许超过 20MB。", - "Your avatar is provided by your original account." : "您的头像由您的原始账户所提供。", - "Cancel" : "取消", - "Choose as profile image" : "用作头像", + "Password" : "密码", + "Unable to change your password" : "无法修改密码", + "Current password" : "当前密码", + "New password" : "新密码", + "Change password" : "修改密码", "Language" : "语言", "Help translate" : "帮助翻译", + "Get the apps to sync your files" : "安装应用进行文件同步", + "Desktop client" : "桌面客户端", + "Android app" : "Android 应用", + "iOS app" : "iOS 应用", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "想支持ownCloud项目?请\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">参加开发</a>\n\t\t或者\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">帮助推广</a>吧!", + "Show First Run Wizard again" : "再次显示首次运行向导", "Common Name" : "通用名称", "Valid until" : "有效期至", "Issued By" : "授权由", diff --git a/settings/l10n/zh_HK.js b/settings/l10n/zh_HK.js index 98445b9c961..7fff6540b53 100644 --- a/settings/l10n/zh_HK.js +++ b/settings/l10n/zh_HK.js @@ -35,17 +35,17 @@ OC.L10N.register( "More" : "更多", "Version" : "版本", "Forum" : "討論區", - "Android app" : "Android 應用程式", - "iOS app" : "iOS 應用程式", + "Remove image" : "刪除圖片", + "Cancel" : "取消", + "Email" : "電郵", + "Your email address" : "你的電郵地址", "Password" : "密碼", "New password" : "新密碼", "Change password" : "更改密碼", - "Email" : "電郵", - "Your email address" : "你的電郵地址", - "Remove image" : "刪除圖片", - "Cancel" : "取消", "Language" : "語言", "Help translate" : "幫忙翻譯", + "Android app" : "Android 應用程式", + "iOS app" : "iOS 應用程式", "Username" : "用戶名稱", "Create" : "新增", "Group" : "群組", diff --git a/settings/l10n/zh_HK.json b/settings/l10n/zh_HK.json index 2f24b442cc6..27421c62505 100644 --- a/settings/l10n/zh_HK.json +++ b/settings/l10n/zh_HK.json @@ -33,17 +33,17 @@ "More" : "更多", "Version" : "版本", "Forum" : "討論區", - "Android app" : "Android 應用程式", - "iOS app" : "iOS 應用程式", + "Remove image" : "刪除圖片", + "Cancel" : "取消", + "Email" : "電郵", + "Your email address" : "你的電郵地址", "Password" : "密碼", "New password" : "新密碼", "Change password" : "更改密碼", - "Email" : "電郵", - "Your email address" : "你的電郵地址", - "Remove image" : "刪除圖片", - "Cancel" : "取消", "Language" : "語言", "Help translate" : "幫忙翻譯", + "Android app" : "Android 應用程式", + "iOS app" : "iOS 應用程式", "Username" : "用戶名稱", "Create" : "新增", "Group" : "群組", diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js index c0cf5ad4024..68d9f45dd09 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -107,8 +107,8 @@ OC.L10N.register( "A valid password must be provided" : "一定要提供一個有效的密碼", "A valid email must be provided" : "必須提供一個有效的電子郵件", "__language_name__" : "__language_name__", - "Sync clients" : "同步客戶端", "Personal info" : "個人資訊", + "Sync clients" : "同步客戶端", "SSL root certificates" : "SSL 根憑證", "Everything (fatal issues, errors, warnings, info, debug)" : "全部(嚴重問題,錯誤,警告,資訊,除錯)", "Info, warnings, errors and fatal issues" : "資訊,警告,錯誤和嚴重問題", @@ -221,35 +221,29 @@ OC.L10N.register( "Forum" : "論壇", "Issue tracker" : "問題追蹤", "Commercial support" : "商用支援", - "Get the apps to sync your files" : "下載應用程式來同步您的檔案", - "Desktop client" : "桌面客戶端", - "Android app" : "Android 應用程式", - "iOS app" : "iOS 應用程式", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "若您想支援這個計畫\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">加入開發者</a>\n\t\t或\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">替我們宣傳</a>!", - "Show First Run Wizard again" : "再次顯示首次使用精靈", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "您已經使用了 <strong>%s</strong> ,總共可用空間為 <strong>%s</strong>", - "Password" : "密碼", - "Unable to change your password" : "無法變更您的密碼", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "變更密碼", + "Profile picture" : "個人資料照片", + "Upload new" : "上傳新的", + "Remove image" : "移除圖片", + "Cancel" : "取消", "Full name" : "全名", "No display name set" : "未設置顯示名稱", "Email" : "信箱", "Your email address" : "您的電子郵件信箱", - "Fill in an email address to enable password recovery and receive notifications" : "填入電子郵件地址來啟用忘記密碼和接收通知的功能", "No email address set" : "未設置電子郵件信箱", "You are member of the following groups:" : "您的會員帳號歸類在以下群組:", - "Profile picture" : "個人資料照片", - "Upload new" : "上傳新的", - "Select new from Files" : "從已上傳的檔案中選一個", - "Remove image" : "移除圖片", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "可以使用 png 或 jpg 格式,最好是方形的,但是您之後也可以裁剪它。圖片容量最大請勿超過 20 MB。", - "Your avatar is provided by your original account." : "您的圖像是由您原來的帳號所提供的。", - "Cancel" : "取消", - "Choose as profile image" : "設定為大頭貼", + "Password" : "密碼", + "Unable to change your password" : "無法變更您的密碼", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "變更密碼", "Language" : "語言", "Help translate" : "幫助翻譯", + "Get the apps to sync your files" : "下載應用程式來同步您的檔案", + "Desktop client" : "桌面客戶端", + "Android app" : "Android 應用程式", + "iOS app" : "iOS 應用程式", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "若您想支援這個計畫\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">加入開發者</a>\n\t\t或\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">替我們宣傳</a>!", + "Show First Run Wizard again" : "再次顯示首次使用精靈", "Common Name" : "Common Name", "Valid until" : "前有效", "Issued By" : "發行者:", diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index aaa5881d449..02d8f6787d5 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -105,8 +105,8 @@ "A valid password must be provided" : "一定要提供一個有效的密碼", "A valid email must be provided" : "必須提供一個有效的電子郵件", "__language_name__" : "__language_name__", - "Sync clients" : "同步客戶端", "Personal info" : "個人資訊", + "Sync clients" : "同步客戶端", "SSL root certificates" : "SSL 根憑證", "Everything (fatal issues, errors, warnings, info, debug)" : "全部(嚴重問題,錯誤,警告,資訊,除錯)", "Info, warnings, errors and fatal issues" : "資訊,警告,錯誤和嚴重問題", @@ -219,35 +219,29 @@ "Forum" : "論壇", "Issue tracker" : "問題追蹤", "Commercial support" : "商用支援", - "Get the apps to sync your files" : "下載應用程式來同步您的檔案", - "Desktop client" : "桌面客戶端", - "Android app" : "Android 應用程式", - "iOS app" : "iOS 應用程式", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "若您想支援這個計畫\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">加入開發者</a>\n\t\t或\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">替我們宣傳</a>!", - "Show First Run Wizard again" : "再次顯示首次使用精靈", - "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "您已經使用了 <strong>%s</strong> ,總共可用空間為 <strong>%s</strong>", - "Password" : "密碼", - "Unable to change your password" : "無法變更您的密碼", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "變更密碼", + "Profile picture" : "個人資料照片", + "Upload new" : "上傳新的", + "Remove image" : "移除圖片", + "Cancel" : "取消", "Full name" : "全名", "No display name set" : "未設置顯示名稱", "Email" : "信箱", "Your email address" : "您的電子郵件信箱", - "Fill in an email address to enable password recovery and receive notifications" : "填入電子郵件地址來啟用忘記密碼和接收通知的功能", "No email address set" : "未設置電子郵件信箱", "You are member of the following groups:" : "您的會員帳號歸類在以下群組:", - "Profile picture" : "個人資料照片", - "Upload new" : "上傳新的", - "Select new from Files" : "從已上傳的檔案中選一個", - "Remove image" : "移除圖片", - "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "可以使用 png 或 jpg 格式,最好是方形的,但是您之後也可以裁剪它。圖片容量最大請勿超過 20 MB。", - "Your avatar is provided by your original account." : "您的圖像是由您原來的帳號所提供的。", - "Cancel" : "取消", - "Choose as profile image" : "設定為大頭貼", + "Password" : "密碼", + "Unable to change your password" : "無法變更您的密碼", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "變更密碼", "Language" : "語言", "Help translate" : "幫助翻譯", + "Get the apps to sync your files" : "下載應用程式來同步您的檔案", + "Desktop client" : "桌面客戶端", + "Android app" : "Android 應用程式", + "iOS app" : "iOS 應用程式", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "若您想支援這個計畫\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">加入開發者</a>\n\t\t或\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">替我們宣傳</a>!", + "Show First Run Wizard again" : "再次顯示首次使用精靈", "Common Name" : "Common Name", "Valid until" : "前有效", "Issued By" : "發行者:", diff --git a/settings/personal.php b/settings/personal.php index 9a714393585..e5ceb1b4fb5 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -163,9 +163,8 @@ $tmpl->assign('groups', $groups2); // add hardcoded forms from the template $l = \OC::$server->getL10N('settings'); $formsAndMore = []; +$formsAndMore[]= ['anchor' => 'avatar', 'section-name' => $l->t('Personal info')]; $formsAndMore[]= ['anchor' => 'clientsbox', 'section-name' => $l->t('Sync clients')]; -$formsAndMore[]= ['anchor' => 'passwordform', 'section-name' => $l->t('Personal info')]; -$formsAndMore[]= ['anchor' => 'groups', 'section-name' => $l->t('Groups')]; $forms=OC_App::getForms('personal'); diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 7213d552c08..94efd76c7c2 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -97,6 +97,18 @@ script( <div class="app-description-toggle-show"><?php p($l->t("Show description …"));?></div> <div class="app-description-toggle-hide hidden"><?php p($l->t("Hide description …"));?></div> + {{#if missingMinOwnCloudVersion}} + <div class="app-dependencies"> + <p><?php p($l->t('This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later.')); ?></p> + </div> + {{else}} + {{#if missingMaxOwnCloudVersion}} + <div class="app-dependencies"> + <p><?php p($l->t('This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later.')); ?></p> + </div> + {{/if}} + {{/if}} + {{#unless canInstall}} <div class="app-dependencies"> <p><?php p($l->t('This app cannot be installed because the following dependencies are not fulfilled:')); ?></p> diff --git a/settings/templates/email.new_user.php b/settings/templates/email.new_user.php index 74149632cb8..8b13ac753eb 100644 --- a/settings/templates/email.new_user.php +++ b/settings/templates/email.new_user.php @@ -4,7 +4,7 @@ <tr> <td bgcolor="<?php p($theme->getMailHeaderColor());?>" width="20px"> </td> <td bgcolor="<?php p($theme->getMailHeaderColor());?>"> - <img src="<?php p(OC_Helper::makeURLAbsolute(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> + <img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.gif'))); ?>" alt="<?php p($theme->getName()); ?>"/> </td> </tr> <tr><td colspan="2"> </td></tr> diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 09194ea3e39..a7d44a69f8e 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -22,75 +22,45 @@ <div id="app-content"> -<div id="clientsbox" class="clientsbox center"> - <h2><?php p($l->t('Get the apps to sync your files'));?></h2> - <a href="<?php p($_['clients']['desktop']); ?>" target="_blank"> - <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'desktopapp.png')); ?>" - alt="<?php p($l->t('Desktop client'));?>" /> - </a> - <a href="<?php p($_['clients']['android']); ?>" target="_blank"> - <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'googleplay.png')); ?>" - alt="<?php p($l->t('Android app'));?>" /> - </a> - <a href="<?php p($_['clients']['ios']); ?>" target="_blank"> - <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'appstore.png')); ?>" - alt="<?php p($l->t('iOS app'));?>" /> - </a> - - <?php if (OC_Util::getEditionString() === ''): ?> - <p class="center"> - <?php print_unescaped($l->t('If you want to support the project - <a href="https://owncloud.org/contribute" - target="_blank" rel="noreferrer">join development</a> - or - <a href="https://owncloud.org/promote" - target="_blank" rel="noreferrer">spread the word</a>!'));?> - </p> - <?php endif; ?> - - <?php if(OC_APP::isEnabled('firstrunwizard')) {?> - <p class="center"><a class="button" href="#" id="showWizard"><?php p($l->t('Show First Run Wizard again'));?></a></p> - <?php }?> -</div> <div id="quota" class="section"> <div style="width:<?php p($_['usage_relative']);?>%" <?php if($_['usage_relative'] > 80): ?> class="quota-warning" <?php endif; ?>> <p id="quotatext"> - <?php print_unescaped($l->t('You have used <strong>%s</strong> of the available <strong>%s</strong>', + <?php print_unescaped($l->t('You are using <strong>%s</strong> of <strong>%s</strong>', array($_['usage'], $_['total_space'])));?> </p> </div> </div> -<?php -if($_['passwordChangeSupported']) { - script('jquery-showpassword'); -?> -<form id="passwordform" class="section"> - <h2 class="inlineblock"><?php p($l->t('Password'));?></h2> - <div class="hidden icon-checkmark" id="password-changed"></div> - <div class="hidden" id="password-error"><?php p($l->t('Unable to change your password'));?></div> - <br> - <label for="pass1" class="onlyInIE8"><?php echo $l->t('Current password');?>: </label> - <input type="password" id="pass1" name="oldpassword" - placeholder="<?php echo $l->t('Current password');?>" - autocomplete="off" autocapitalize="off" autocorrect="off" /> - <label for="pass2" class="onlyInIE8"><?php echo $l->t('New password');?>: </label> - <input type="password" id="pass2" name="personal-password" - placeholder="<?php echo $l->t('New password');?>" - data-typetoggle="#personal-show" - autocomplete="off" autocapitalize="off" autocorrect="off" /> - <input type="checkbox" id="personal-show" name="show" /><label for="personal-show" class="svg"></label> - <input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" /> - <br/> - <div class="strengthify-wrapper"></div> + +<?php if ($_['enableAvatars']): ?> +<form id="avatar" class="section" method="post" action="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.avatar.postAvatar')); ?>"> + <h2><?php p($l->t('Profile picture')); ?></h2> + <div id="displayavatar"> + <div class="avatardiv"></div> + <div class="warning hidden"></div> + <?php if ($_['avatarChangeSupported']): ?> + <label for="uploadavatar" class="inlineblock button icon-upload svg" id="uploadavatarbutton" title="<?php p($l->t('Upload new')); ?>"></label> + <div class="inlineblock button icon-folder svg" id="selectavatar" title="<?php p($l->t('Select from Files')); ?>"></div> + <div class="inlineblock button icon-delete svg" id="removeavatar" title="<?php p($l->t('Remove image')); ?>"></div> + <input type="file" name="files[]" id="uploadavatar" class="hiddenuploadfield"> + <p><em><?php p($l->t('png or jpg, max. 20 MB')); ?></em></p> + <?php else: ?> + <?php p($l->t('Picture provided by original account')); ?> + <?php endif; ?> + </div> + + <div id="cropper" class="hidden"> + <div class="inlineblock button" id="abortcropperbutton"><?php p($l->t('Cancel')); ?></div> + <div class="inlineblock button primary" id="sendcropperbutton"><?php p($l->t('Choose as profile picture')); ?></div> + </div> </form> -<?php -} -?> +<?php endif; ?> + + <?php if($_['displayNameChangeSupported']) { @@ -116,6 +86,8 @@ if($_['displayNameChangeSupported']) { } ?> + + <?php if($_['passwordChangeSupported']) { ?> @@ -127,7 +99,7 @@ if($_['passwordChangeSupported']) { placeholder="<?php p($l->t('Your email address'));?>" autocomplete="on" autocapitalize="off" autocorrect="off" /> <span class="msg"></span><br /> - <em><?php p($l->t('Fill in an email address to enable password recovery and receive notifications'));?></em> + <em><?php p($l->t('For password recovery and notifications'));?></em> </form> <?php } else { @@ -140,6 +112,8 @@ if($_['passwordChangeSupported']) { } ?> + + <div id="groups" class="section"> <h2><?php p($l->t('Groups')); ?></h2> <p><?php p($l->t('You are member of the following groups:')); ?></p> @@ -148,29 +122,36 @@ if($_['passwordChangeSupported']) { </p> </div> -<?php if ($_['enableAvatars']): ?> -<form id="avatar" class="section" method="post" action="<?php p(\OC_Helper::linkToRoute('core.avatar.postAvatar')); ?>"> - <h2><?php p($l->t('Profile picture')); ?></h2> - <div id="displayavatar"> - <div class="avatardiv"></div><br> - <div class="warning hidden"></div> - <?php if ($_['avatarChangeSupported']): ?> - <label for="uploadavatar" class="inlineblock button" id="uploadavatarbutton"><?php p($l->t('Upload new')); ?></label> - <div class="inlineblock button" id="selectavatar"><?php p($l->t('Select new from Files')); ?></div> - <div class="inlineblock button" id="removeavatar"><?php p($l->t('Remove image')); ?></div> - <input type="file" name="files[]" id="uploadavatar" class="hiddenuploadfield"> - <br> - <?php p($l->t('Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB.')); ?> - <?php else: ?> - <?php p($l->t('Your avatar is provided by your original account.')); ?> - <?php endif; ?> - </div> - <div id="cropper" class="hidden"> - <div class="inlineblock button" id="abortcropperbutton"><?php p($l->t('Cancel')); ?></div> - <div class="inlineblock button primary" id="sendcropperbutton"><?php p($l->t('Choose as profile image')); ?></div> - </div> + + +<?php +if($_['passwordChangeSupported']) { + script('jquery-showpassword'); +?> +<form id="passwordform" class="section"> + <h2 class="inlineblock"><?php p($l->t('Password'));?></h2> + <div class="hidden icon-checkmark" id="password-changed"></div> + <div class="hidden" id="password-error"><?php p($l->t('Unable to change your password'));?></div> + <br> + <label for="pass1" class="onlyInIE8"><?php echo $l->t('Current password');?>: </label> + <input type="password" id="pass1" name="oldpassword" + placeholder="<?php echo $l->t('Current password');?>" + autocomplete="off" autocapitalize="off" autocorrect="off" /> + <label for="pass2" class="onlyInIE8"><?php echo $l->t('New password');?>: </label> + <input type="password" id="pass2" name="personal-password" + placeholder="<?php echo $l->t('New password');?>" + data-typetoggle="#personal-show" + autocomplete="off" autocapitalize="off" autocorrect="off" /> + <input type="checkbox" id="personal-show" name="show" /><label for="personal-show" class="svg"></label> + <input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" /> + <br/> + <div class="strengthify-wrapper"></div> </form> -<?php endif; ?> +<?php +} +?> + + <form class="section"> <h2> @@ -200,6 +181,41 @@ if($_['passwordChangeSupported']) { <?php endif; ?> </form> + + +<div id="clientsbox" class="section clientsbox"> + <h2><?php p($l->t('Get the apps to sync your files'));?></h2> + <a href="<?php p($_['clients']['desktop']); ?>" target="_blank"> + <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'desktopapp.png')); ?>" + alt="<?php p($l->t('Desktop client'));?>" /> + </a> + <a href="<?php p($_['clients']['android']); ?>" target="_blank"> + <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'googleplay.png')); ?>" + alt="<?php p($l->t('Android app'));?>" /> + </a> + <a href="<?php p($_['clients']['ios']); ?>" target="_blank"> + <img src="<?php print_unescaped(OCP\Util::imagePath('core', 'appstore.png')); ?>" + alt="<?php p($l->t('iOS app'));?>" /> + </a> + + <?php if (OC_Util::getEditionString() === ''): ?> + <p> + <?php print_unescaped($l->t('If you want to support the project + <a href="https://owncloud.org/contribute" + target="_blank" rel="noreferrer">join development</a> + or + <a href="https://owncloud.org/promote" + target="_blank" rel="noreferrer">spread the word</a>!'));?> + </p> + <?php endif; ?> + + <?php if(OC_APP::isEnabled('firstrunwizard')) {?> + <a class="button" href="#" id="showWizard"><?php p($l->t('Show First Run Wizard again'));?></a> + <?php }?> +</div> + + + <?php foreach($_['forms'] as $form) { if (isset($form['form'])) {?> <div id="<?php isset($form['anchor']) ? p($form['anchor']) : p('');?>"><?php print_unescaped($form['form']);?></div> diff --git a/settings/users.php b/settings/users.php index ccf1bcd9e1a..0e9823e73e3 100644 --- a/settings/users.php +++ b/settings/users.php @@ -37,7 +37,7 @@ OC_Util::checkSubAdminUser(); \OC::$server->getNavigationManager()->setActiveEntry('core_users'); -$userManager = \OC_User::getManager(); +$userManager = \OC::$server->getUserManager(); $groupManager = \OC_Group::getManager(); // Set the sort option: SORT_USERCOUNT or SORT_GROUPNAME diff --git a/status.php b/status.php index f59dc16b6a2..65418336e26 100644 --- a/status.php +++ b/status.php @@ -36,7 +36,7 @@ try { $values=array( 'installed'=>$installed, 'maintenance' => $maintenance, - 'version'=>implode('.', OC_Util::getVersion()), + 'version'=>implode('.', \OCP\Util::getVersion()), 'versionstring'=>OC_Util::getVersionString(), 'edition'=>OC_Util::getEditionString()); if (OC::$CLI) { diff --git a/tests/core/avatar/avatarcontrollertest.php b/tests/core/avatar/avatarcontrollertest.php index a113add72b9..7f69ba0aadb 100644 --- a/tests/core/avatar/avatarcontrollertest.php +++ b/tests/core/avatar/avatarcontrollertest.php @@ -26,8 +26,10 @@ use OCP\AppFramework\IAppContainer; use OCP\AppFramework\Http; use OCP\Files\Folder; use OCP\Files\File; +use OCP\Files\NotFoundException; use OCP\IUser; use OCP\IAvatar; +use Punic\Exception; use Test\Traits\UserTrait; /** @@ -56,6 +58,8 @@ class AvatarControllerTest extends \Test\TestCase { private $avatarMock; /** @var IUser */ private $userMock; + /** @var File */ + private $avatarFile; protected function setUp() { parent::setUp(); @@ -88,6 +92,10 @@ class AvatarControllerTest extends \Test\TestCase { ->willReturnMap([['userId', $this->userMock]]); $this->container['UserSession']->method('getUser')->willReturn($this->userMock); + $this->avatarFile = $this->getMock('OCP\Files\File'); + $this->avatarFile->method('getContnet')->willReturn('image data'); + $this->avatarFile->method('getMimeType')->willReturn('image type'); + $this->avatarFile->method('getEtag')->willReturn('my etag'); } public function tearDown() { @@ -100,6 +108,7 @@ class AvatarControllerTest extends \Test\TestCase { */ public function testGetAvatarNoAvatar() { $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); + $this->avatarMock->method('getFile')->will($this->throwException(new NotFoundException())); $response = $this->avatarController->getAvatar('userId', 32); //Comment out until JS is fixed @@ -112,12 +121,8 @@ class AvatarControllerTest extends \Test\TestCase { * Fetch the user's avatar */ public function testGetAvatar() { - $image = $this->getMock('OCP\IImage'); - $image->method('data')->willReturn('image data'); - $image->method('mimeType')->willReturn('image type'); - - $this->avatarMock->method('get')->willReturn($image); - $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); + $this->avatarMock->method('getFile')->willReturn($this->avatarFile); + $this->container['AvatarManager']->method('getAvatar')->with('userId')->willReturn($this->avatarMock); $response = $this->avatarController->getAvatar('userId', 32); @@ -125,17 +130,19 @@ class AvatarControllerTest extends \Test\TestCase { $this->assertArrayHasKey('Content-Type', $response->getHeaders()); $this->assertEquals('image type', $response->getHeaders()['Content-Type']); - $this->assertEquals(crc32('image data'), $response->getEtag()); + $this->assertEquals('my etag', $response->getEtag()); } /** * Fetch the avatar of a non-existing user */ public function testGetAvatarNoUser() { - $this->avatarMock->method('get')->willReturn(null); - $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); + $this->container['AvatarManager'] + ->method('getAvatar') + ->with('userDoesNotExist') + ->will($this->throwException(new \Exception('user does not exist'))); - $response = $this->avatarController->getAvatar('userDoesnotexist', 32); + $response = $this->avatarController->getAvatar('userDoesNotExist', 32); //Comment out until JS is fixed //$this->assertEquals(Http::STATUS_NOT_FOUND, $response->getStatus()); @@ -148,8 +155,9 @@ class AvatarControllerTest extends \Test\TestCase { */ public function testGetAvatarSize() { $this->avatarMock->expects($this->once()) - ->method('get') - ->with($this->equalTo(32)); + ->method('getFile') + ->with($this->equalTo(32)) + ->willReturn($this->avatarFile); $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); @@ -161,8 +169,9 @@ class AvatarControllerTest extends \Test\TestCase { */ public function testGetAvatarSizeMin() { $this->avatarMock->expects($this->once()) - ->method('get') - ->with($this->equalTo(64)); + ->method('getFile') + ->with($this->equalTo(64)) + ->willReturn($this->avatarFile); $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); @@ -174,8 +183,9 @@ class AvatarControllerTest extends \Test\TestCase { */ public function testGetAvatarSizeMax() { $this->avatarMock->expects($this->once()) - ->method('get') - ->with($this->equalTo(2048)); + ->method('getFile') + ->with($this->equalTo(2048)) + ->willReturn($this->avatarFile); $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock); diff --git a/tests/lib/allconfig.php b/tests/lib/allconfig.php index ca3dce12eaf..0caf8163cfc 100644 --- a/tests/lib/allconfig.php +++ b/tests/lib/allconfig.php @@ -28,7 +28,9 @@ class TestAllConfig extends \Test\TestCase { $connection = $this->connection; } if($systemConfig === null) { - $systemConfig = $this->getMock('\OC\SystemConfig'); + $systemConfig = $this->getMockBuilder('\OC\SystemConfig') + ->disableOriginalConstructor() + ->getMock(); } return new \OC\AllConfig($systemConfig, $connection); } @@ -89,7 +91,9 @@ class TestAllConfig extends \Test\TestCase { public function testSetUserValueWithPreCondition() { // mock the check for the database to run the correct SQL statements for each database type - $systemConfig = $this->getMock('\OC\SystemConfig'); + $systemConfig = $this->getMockBuilder('\OC\SystemConfig') + ->disableOriginalConstructor() + ->getMock(); $systemConfig->expects($this->once()) ->method('getValue') ->with($this->equalTo('dbtype'), @@ -133,7 +137,9 @@ class TestAllConfig extends \Test\TestCase { */ public function testSetUserValueWithPreConditionFailure() { // mock the check for the database to run the correct SQL statements for each database type - $systemConfig = $this->getMock('\OC\SystemConfig'); + $systemConfig = $this->getMockBuilder('\OC\SystemConfig') + ->disableOriginalConstructor() + ->getMock(); $systemConfig->expects($this->once()) ->method('getValue') ->with($this->equalTo('dbtype'), @@ -394,7 +400,9 @@ class TestAllConfig extends \Test\TestCase { public function testGetUsersForUserValue() { // mock the check for the database to run the correct SQL statements for each database type - $systemConfig = $this->getMock('\OC\SystemConfig'); + $systemConfig = $this->getMockBuilder('\OC\SystemConfig') + ->disableOriginalConstructor() + ->getMock(); $systemConfig->expects($this->once()) ->method('getValue') ->with($this->equalTo('dbtype'), diff --git a/tests/lib/app/dependencyanalyzer.php b/tests/lib/app/dependencyanalyzer.php index 58f1c0a7a99..fecba518856 100644 --- a/tests/lib/app/dependencyanalyzer.php +++ b/tests/lib/app/dependencyanalyzer.php @@ -12,8 +12,9 @@ namespace Test\App; use OC; use OC\App\Platform; use OCP\IL10N; +use Test\TestCase; -class DependencyAnalyzer extends \PHPUnit_Framework_TestCase { +class DependencyAnalyzer extends TestCase { /** @var Platform */ private $platformMock; diff --git a/tests/lib/app/infoparser.php b/tests/lib/app/infoparser.php index fb4ffe8af94..1e5257abec3 100644 --- a/tests/lib/app/infoparser.php +++ b/tests/lib/app/infoparser.php @@ -10,8 +10,9 @@ namespace Test\App; use OC; +use Test\TestCase; -class InfoParser extends \PHPUnit_Framework_TestCase { +class InfoParser extends TestCase { /** * @var \OC\App\InfoParser diff --git a/tests/lib/app/manager.php b/tests/lib/app/manager.php index 38358fd61cf..a3e55c6b890 100644 --- a/tests/lib/app/manager.php +++ b/tests/lib/app/manager.php @@ -11,8 +11,9 @@ namespace Test\App; use OC\Group\Group; use OC\User\User; +use Test\TestCase; -class Manager extends \PHPUnit_Framework_TestCase { +class Manager extends TestCase { /** * @return \OCP\IAppConfig | \PHPUnit_Framework_MockObject_MockObject */ diff --git a/tests/lib/appframework/utility/ControllerMethodReflectorTest.php b/tests/lib/appframework/utility/ControllerMethodReflectorTest.php index a584b5481ba..c643c362a9c 100644 --- a/tests/lib/appframework/utility/ControllerMethodReflectorTest.php +++ b/tests/lib/appframework/utility/ControllerMethodReflectorTest.php @@ -104,6 +104,29 @@ class ControllerMethodReflectorTest extends \Test\TestCase { $this->assertEquals('int', $reader->getType('test')); } + /** + * @Annotation + * @param int $a + * @param int $b + */ + public function arguments3($a, float $b, int $c, $d){} + + /** + * @requires PHP 7 + */ + public function testReadTypeIntAnnotationsScalarTypes(){ + $reader = new ControllerMethodReflector(); + $reader->reflect( + '\OC\AppFramework\Utility\ControllerMethodReflectorTest', + 'arguments3' + ); + + $this->assertEquals('int', $reader->getType('a')); + $this->assertEquals('float', $reader->getType('b')); + $this->assertEquals('int', $reader->getType('c')); + $this->assertNull($reader->getType('d')); + } + /** * @Annotation diff --git a/tests/lib/autoloader.php b/tests/lib/autoloader.php index 9fb717c4f63..6443d87a2e5 100644 --- a/tests/lib/autoloader.php +++ b/tests/lib/autoloader.php @@ -90,7 +90,7 @@ class AutoLoader extends TestCase { public function testLoadCoreNamespaceRepair() { $this->assertEquals([ - \OC::$SERVERROOT . '/lib/repair/foo/bar.php', + \OC::$SERVERROOT . '/lib/private/repair/foo/bar.php', ], $this->loader->findClass('OC\Repair\Foo\Bar')); } } diff --git a/tests/lib/avatartest.php b/tests/lib/avatartest.php index 49e8be98c83..3d77a282a7d 100644 --- a/tests/lib/avatartest.php +++ b/tests/lib/avatartest.php @@ -60,12 +60,25 @@ class AvatarTest extends \Test\TestCase { $file = $this->getMock('\OCP\Files\File'); $file->method('getContent')->willReturn($expected->data()); - $this->folder->method('get')->with('avatar.png')->willReturn($file); + + $this->folder->method('get') + ->will($this->returnCallback( + function($path) use ($file) { + if ($path === 'avatar.png') { + return $file; + } else { + throw new \OCP\Files\NotFoundException; + } + } + )); $newFile = $this->getMock('\OCP\Files\File'); $newFile->expects($this->once()) ->method('putContent') ->with($expected2->data()); + $newFile->expects($this->once()) + ->method('getContent') + ->willReturn($expected2->data()); $this->folder->expects($this->once()) ->method('newFile') ->with('avatar.32.png') diff --git a/tests/lib/backgroundjob/job.php b/tests/lib/backgroundjob/job.php index fec9b0a792d..912e0e13b57 100644 --- a/tests/lib/backgroundjob/job.php +++ b/tests/lib/backgroundjob/job.php @@ -23,10 +23,17 @@ class Job extends \Test\TestCase { }); $jobList->add($job); + $logger = $this->getMockBuilder('OCP\ILogger') + ->disableOriginalConstructor() + ->getMock(); + $logger->expects($this->once()) + ->method('error') + ->with('Error while running background job: '); + $this->assertCount(1, $jobList->getAll()); - $job->execute($jobList); + $job->execute($jobList, $logger); $this->assertTrue($this->run); - $this->assertCount(0, $jobList->getAll()); + $this->assertCount(1, $jobList->getAll()); } public function markRun() { diff --git a/tests/lib/backgroundjob/joblist.php b/tests/lib/backgroundjob/joblist.php index 73b3255c079..c0796d8253a 100644 --- a/tests/lib/backgroundjob/joblist.php +++ b/tests/lib/backgroundjob/joblist.php @@ -15,26 +15,21 @@ use Test\TestCase; * Class JobList * * @group DB - * * @package Test\BackgroundJob */ class JobList extends TestCase { - /** - * @var \OC\BackgroundJob\JobList - */ + /** @var \OC\BackgroundJob\JobList */ protected $instance; - /** - * @var \OCP\IConfig | \PHPUnit_Framework_MockObject_MockObject $config - */ + /** @var \OCP\IConfig|\PHPUnit_Framework_MockObject_MockObject */ protected $config; protected function setUp() { parent::setUp(); - $conn = \OC::$server->getDatabaseConnection(); + $connection = \OC::$server->getDatabaseConnection(); $this->config = $this->getMock('\OCP\IConfig'); - $this->instance = new \OC\BackgroundJob\JobList($conn, $this->config); + $this->instance = new \OC\BackgroundJob\JobList($connection, $this->config); } protected function getAllSorted() { diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 7aa969df02c..0880e7e1282 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -71,7 +71,7 @@ class FileCache extends \Test_Cache { \OC_User::useBackend(new \Test\Util\User\Dummy()); //login - \OC_User::createUser('test', 'test'); + \OC::$server->getUserManager()->createUser('test', 'test'); $this->user = \OC_User::getUser(); \OC_User::setUserId('test'); diff --git a/tests/lib/configtests.php b/tests/lib/configtests.php index 0269ae542f4..c0251e693c6 100644 --- a/tests/lib/configtests.php +++ b/tests/lib/configtests.php @@ -23,7 +23,7 @@ class ConfigTests extends TestCase { protected function setUp() { parent::setUp(); - $this->randomTmpDir = \OC_Helper::tmpFolder(); + $this->randomTmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->configFile = $this->randomTmpDir.'testconfig.php'; file_put_contents($this->configFile, self::TESTCONTENT); $this->config = new \OC\Config($this->randomTmpDir, 'testconfig.php'); diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 503d25597cd..d674ac27fa1 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -317,7 +317,7 @@ class Cache extends \Test\TestCase { function testSearchByTag() { $userId = $this->getUniqueId('user'); - \OC_User::createUser($userId, $userId); + \OC::$server->getUserManager()->createUser($userId, $userId); $this->loginAsUser($userId); $user = new \OC\User\User($userId, null); @@ -373,7 +373,8 @@ class Cache extends \Test\TestCase { $tagManager->delete('tag2'); $this->logout(); - \OC_User::deleteUser($userId); + $user = \OC::$server->getUserManager()->get($userId); + if ($user !== null) { $user->delete(); } } function testMove() { diff --git a/tests/lib/files/cache/homecache.php b/tests/lib/files/cache/homecache.php index 3adb25fa9d4..e133d0afc55 100644 --- a/tests/lib/files/cache/homecache.php +++ b/tests/lib/files/cache/homecache.php @@ -69,7 +69,7 @@ class HomeCache extends \Test\TestCase { protected function setUp() { parent::setUp(); - $this->user = new DummyUser('foo', \OC_Helper::tmpFolder()); + $this->user = new DummyUser('foo', \OC::$server->getTempManager()->getTemporaryFolder()); $this->storage = new \OC\Files\Storage\Home(array('user' => $this->user)); $this->cache = $this->storage->getCache(); } diff --git a/tests/lib/files/cache/updaterlegacy.php b/tests/lib/files/cache/updaterlegacy.php index 1946913bba4..09688afd465 100644 --- a/tests/lib/files/cache/updaterlegacy.php +++ b/tests/lib/files/cache/updaterlegacy.php @@ -57,7 +57,7 @@ class UpdaterLegacy extends \Test\TestCase { self::$user = $this->getUniqueID(); } - \OC_User::createUser(self::$user, 'password'); + \OC::$server->getUserManager()->createUser(self::$user, 'password'); $this->loginAsUser(self::$user); Filesystem::init(self::$user, '/' . self::$user . '/files'); @@ -72,7 +72,10 @@ class UpdaterLegacy extends \Test\TestCase { if ($this->cache) { $this->cache->clear(); } - $result = \OC_User::deleteUser(self::$user); + + $result = false; + $user = \OC::$server->getUserManager()->get(self::$user); + if ($user !== null) { $result = $user->delete(); } $this->assertTrue($result); $this->logout(); diff --git a/tests/lib/files/etagtest.php b/tests/lib/files/etagtest.php index c214a3d4da6..d8e44000f9c 100644 --- a/tests/lib/files/etagtest.php +++ b/tests/lib/files/etagtest.php @@ -39,7 +39,7 @@ class EtagTest extends \Test\TestCase { $config = \OC::$server->getConfig(); $this->datadir = $config->getSystemValue('datadirectory'); - $this->tmpDir = \OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $config->setSystemValue('datadirectory', $this->tmpDir); $this->userBackend = new \Test\Util\User\Dummy(); diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index c5ebbdd1a2d..db1f22f894a 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -72,7 +72,7 @@ class Filesystem extends \Test\TestCase { * @return array */ private function getStorageData() { - $dir = \OC_Helper::tmpFolder(); + $dir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->tmpDirs[] = $dir; return array('datadir' => $dir); } @@ -302,7 +302,7 @@ class Filesystem extends \Test\TestCase { \OC\Files\Filesystem::mkdir('/bar'); // \OC\Files\Filesystem::file_put_contents('/bar//foo', 'foo'); - $tmpFile = \OC_Helper::tmpFile(); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); file_put_contents($tmpFile, 'foo'); $fh = fopen($tmpFile, 'r'); // \OC\Files\Filesystem::file_put_contents('/bar//foo', $fh); @@ -325,7 +325,7 @@ class Filesystem extends \Test\TestCase { public function testHomeMount() { $userId = $this->getUniqueID('user_'); - \OC_User::createUser($userId, $userId); + \OC::$server->getUserManager()->createUser($userId, $userId); \OC\Files\Filesystem::initMountPoints($userId); @@ -340,7 +340,8 @@ class Filesystem extends \Test\TestCase { $this->assertEquals('home::' . $userId, $homeMount->getId()); } - \OC_User::deleteUser($userId); + $user = \OC::$server->getUserManager()->get($userId); + if ($user !== null) { $user->delete(); } } /** @@ -360,7 +361,7 @@ class Filesystem extends \Test\TestCase { // this will trigger the insert $cache = $localStorage->getCache(); - \OC_User::createUser($userId, $userId); + \OC::$server->getUserManager()->createUser($userId, $userId); \OC\Files\Filesystem::initMountPoints($userId); $homeMount = \OC\Files\Filesystem::getStorage('/' . $userId . '/'); @@ -368,7 +369,8 @@ class Filesystem extends \Test\TestCase { $this->assertTrue($homeMount->instanceOfStorage('\OC\Files\Storage\Home')); $this->assertEquals('local::' . $datadir . '/' . $userId . '/', $homeMount->getId()); - \OC_User::deleteUser($userId); + $user = \OC::$server->getUserManager()->get($userId); + if ($user !== null) { $user->delete(); } // delete storage entry $cache->clear(); } @@ -388,7 +390,7 @@ class Filesystem extends \Test\TestCase { // no cache path configured $config->setSystemValue('cache_path', ''); - \OC_User::createUser($userId, $userId); + \OC::$server->getUserManager()->createUser($userId, $userId); \OC\Files\Filesystem::initMountPoints($userId); $this->assertEquals( @@ -398,7 +400,8 @@ class Filesystem extends \Test\TestCase { list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache'); $this->assertTrue($storage->instanceOfStorage('\OCP\Files\IHomeStorage')); $this->assertEquals('cache', $internalPath); - \OC_User::deleteUser($userId); + $user = \OC::$server->getUserManager()->get($userId); + if ($user !== null) { $user->delete(); } $config->setSystemValue('cache_path', $oldCachePath); } @@ -413,10 +416,10 @@ class Filesystem extends \Test\TestCase { $config = \OC::$server->getConfig(); $oldCachePath = $config->getSystemValue('cache_path', ''); // set cache path to temp dir - $cachePath = \OC_Helper::tmpFolder() . '/extcache'; + $cachePath = \OC::$server->getTempManager()->getTemporaryFolder() . '/extcache'; $config->setSystemValue('cache_path', $cachePath); - \OC_User::createUser($userId, $userId); + \OC::$server->getUserManager()->createUser($userId, $userId); \OC\Files\Filesystem::initMountPoints($userId); $this->assertEquals( @@ -426,7 +429,8 @@ class Filesystem extends \Test\TestCase { list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache'); $this->assertTrue($storage->instanceOfStorage('\OC\Files\Storage\Local')); $this->assertEquals('', $internalPath); - \OC_User::deleteUser($userId); + $user = \OC::$server->getUserManager()->get($userId); + if ($user !== null) { $user->delete(); } $config->setSystemValue('cache_path', $oldCachePath); } diff --git a/tests/lib/files/objectstore/swift.php b/tests/lib/files/objectstore/swift.php index 63332af68da..a63f5844145 100644 --- a/tests/lib/files/objectstore/swift.php +++ b/tests/lib/files/objectstore/swift.php @@ -51,8 +51,9 @@ class Swift extends \Test\Files\Storage\Storage { // create users $users = array('test'); foreach($users as $userName) { - \OC_User::deleteUser($userName); - \OC_User::createUser($userName, $userName); + $user = \OC::$server->getUserManager()->get($userName); + if ($user !== null) { $user->delete(); } + \OC::$server->getUserManager()->createUser($userName, $userName); } // main test user @@ -76,7 +77,8 @@ class Swift extends \Test\Files\Storage\Storage { $users = array('test'); foreach($users as $userName) { - \OC_User::deleteUser($userName); + $user = \OC::$server->getUserManager()->get($userName); + if ($user !== null) { $user->delete(); } } parent::tearDown(); } diff --git a/tests/lib/files/storage/commontest.php b/tests/lib/files/storage/commontest.php index bbe6f2a73e2..38faa9b0b21 100644 --- a/tests/lib/files/storage/commontest.php +++ b/tests/lib/files/storage/commontest.php @@ -37,7 +37,7 @@ class CommonTest extends Storage { protected function setUp() { parent::setUp(); - $this->tmpDir=\OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->instance=new \OC\Files\Storage\CommonTest(array('datadir'=>$this->tmpDir)); } diff --git a/tests/lib/files/storage/home.php b/tests/lib/files/storage/home.php index a51912ca1b2..7e10f09d554 100644 --- a/tests/lib/files/storage/home.php +++ b/tests/lib/files/storage/home.php @@ -70,7 +70,7 @@ class Home extends Storage { protected function setUp() { parent::setUp(); - $this->tmpDir = \OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->userId = $this->getUniqueID('user_'); $this->user = new DummyUser($this->userId, $this->tmpDir); $this->instance = new \OC\Files\Storage\Home(array('user' => $this->user)); diff --git a/tests/lib/files/storage/homestoragequota.php b/tests/lib/files/storage/homestoragequota.php index 49e8f499efd..9a3c6b151fc 100644 --- a/tests/lib/files/storage/homestoragequota.php +++ b/tests/lib/files/storage/homestoragequota.php @@ -32,7 +32,7 @@ class HomeStorageQuota extends \Test\TestCase { */ function testHomeStorageWrapperWithoutQuota() { $user1 = $this->getUniqueID(); - \OC_User::createUser($user1, 'test'); + \OC::$server->getUserManager()->createUser($user1, 'test'); \OC::$server->getConfig()->setUserValue($user1, 'files', 'quota', 'none'); \OC_User::setUserId($user1); @@ -44,7 +44,8 @@ class HomeStorageQuota extends \Test\TestCase { // clean up \OC_User::setUserId(''); - \OC_User::deleteUser($user1); + $user = \OC::$server->getUserManager()->get($user1); + if ($user !== null) { $user->delete(); } \OC::$server->getConfig()->deleteAllUserValues($user1); \OC_Util::tearDownFS(); } @@ -54,7 +55,7 @@ class HomeStorageQuota extends \Test\TestCase { */ function testHomeStorageWrapperWithQuota() { $user1 = $this->getUniqueID(); - \OC_User::createUser($user1, 'test'); + \OC::$server->getUserManager()->createUser($user1, 'test'); \OC::$server->getConfig()->setUserValue($user1, 'files', 'quota', '1024'); \OC_User::setUserId($user1); @@ -71,7 +72,8 @@ class HomeStorageQuota extends \Test\TestCase { // clean up \OC_User::setUserId(''); - \OC_User::deleteUser($user1); + $user = \OC::$server->getUserManager()->get($user1); + if ($user !== null) { $user->delete(); } \OC::$server->getConfig()->deleteAllUserValues($user1); \OC_Util::tearDownFS(); } diff --git a/tests/lib/files/storage/local.php b/tests/lib/files/storage/local.php index 36267dc6605..2583863b554 100644 --- a/tests/lib/files/storage/local.php +++ b/tests/lib/files/storage/local.php @@ -38,7 +38,7 @@ class Local extends Storage { protected function setUp() { parent::setUp(); - $this->tmpDir = \OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $this->instance = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); } diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php index d381b4cdf40..95dd70bfdac 100644 --- a/tests/lib/files/storage/storage.php +++ b/tests/lib/files/storage/storage.php @@ -598,4 +598,17 @@ abstract class Storage extends \Test\TestCase { $this->instance->mkdir('source'); $this->assertTrue($this->instance->isSharable('source')); } + + public function testStatAfterWrite() { + $this->instance->file_put_contents('foo.txt', 'bar'); + $stat = $this->instance->stat('foo.txt'); + $this->assertEquals(3, $stat['size']); + + $fh = $this->instance->fopen('foo.txt', 'w'); + fwrite($fh, 'qwerty'); + fclose($fh); + + $stat = $this->instance->stat('foo.txt'); + $this->assertEquals(6, $stat['size']); + } } diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php index b0a06b0d898..95bc2ff7a1a 100644 --- a/tests/lib/files/storage/wrapper/quota.php +++ b/tests/lib/files/storage/wrapper/quota.php @@ -27,7 +27,7 @@ class Quota extends \Test\Files\Storage\Storage { protected function setUp() { parent::setUp(); - $this->tmpDir = \OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); $this->instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 10000000)); } diff --git a/tests/lib/files/storage/wrapper/wrapper.php b/tests/lib/files/storage/wrapper/wrapper.php index 486cd0495c1..a5a678cb9f7 100644 --- a/tests/lib/files/storage/wrapper/wrapper.php +++ b/tests/lib/files/storage/wrapper/wrapper.php @@ -17,7 +17,7 @@ class Wrapper extends \Test\Files\Storage\Storage { protected function setUp() { parent::setUp(); - $this->tmpDir = \OC_Helper::tmpFolder(); + $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); $this->instance = new \OC\Files\Storage\Wrapper\Wrapper(array('storage' => $storage)); } diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index 1fc4b9ab684..3e88a5306f8 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -757,7 +757,7 @@ class View extends \Test\TestCase { * 228 is the max path length in windows */ $folderName = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123456789'; - $tmpdirLength = strlen(\OC_Helper::tmpFolder()); + $tmpdirLength = strlen(\OC::$server->getTempManager()->getTemporaryFolder()); if (\OC_Util::runningOnWindows()) { $this->markTestSkipped('[Windows] '); $depth = ((260 - $tmpdirLength) / 57); diff --git a/tests/lib/group.php b/tests/lib/group.php index 066dddc738e..4bb888ed725 100644 --- a/tests/lib/group.php +++ b/tests/lib/group.php @@ -31,7 +31,7 @@ class Test_Group extends \Test\TestCase { public function testSingleBackend() { $userBackend = new \Test\Util\User\Dummy(); - \OC_User::getManager()->registerBackend($userBackend); + \OC::$server->getUserManager()->registerBackend($userBackend); OC_Group::useBackend(new OC_Group_Dummy()); $group1 = $this->getUniqueID(); @@ -113,7 +113,7 @@ class Test_Group extends \Test\TestCase { public function testUsersInGroup() { OC_Group::useBackend(new OC_Group_Dummy()); $userBackend = new \Test\Util\User\Dummy(); - \OC_User::getManager()->registerBackend($userBackend); + \OC::$server->getUserManager()->registerBackend($userBackend); $group1 = $this->getUniqueID(); $group2 = $this->getUniqueID(); @@ -142,7 +142,7 @@ class Test_Group extends \Test\TestCase { public function testMultiBackend() { $userBackend = new \Test\Util\User\Dummy(); - \OC_User::getManager()->registerBackend($userBackend); + \OC::$server->getUserManager()->registerBackend($userBackend); $backend1 = new OC_Group_Dummy(); $backend2 = new OC_Group_Dummy(); OC_Group::useBackend($backend1); diff --git a/tests/lib/helper.php b/tests/lib/helper.php index b7deb3fc13d..c2620896157 100644 --- a/tests/lib/helper.php +++ b/tests/lib/helper.php @@ -71,37 +71,6 @@ class Test_Helper extends \Test\TestCase { ]; } - function testGetSecureMimeType() { - $dir=OC::$SERVERROOT.'/tests/data'; - - $result = OC_Helper::getSecureMimeType('image/svg+xml'); - $expected = 'text/plain'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::getSecureMimeType('image/png'); - $expected = 'image/png'; - $this->assertEquals($result, $expected); - } - - function testGetFileNameMimeType() { - $this->assertEquals('text/plain', OC_Helper::getFileNameMimeType('foo.txt')); - $this->assertEquals('image/png', OC_Helper::getFileNameMimeType('foo.png')); - $this->assertEquals('image/png', OC_Helper::getFileNameMimeType('foo.bar.png')); - $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('.png')); - $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('foo')); - $this->assertEquals('application/octet-stream', OC_Helper::getFileNameMimeType('')); - } - - function testGetStringMimeType() { - if (\OC_Util::runningOnWindows()) { - $this->markTestSkipped('[Windows] Strings have mimetype application/octet-stream on Windows'); - } - - $result = OC_Helper::getStringMimeType("/data/data.tar.gz"); - $expected = 'text/plain; charset=us-ascii'; - $this->assertEquals($result, $expected); - } - function testIsSubDirectory() { $result = OC_Helper::isSubDirectory("./data/", "/anotherDirectory/"); $this->assertFalse($result); @@ -254,172 +223,6 @@ class Test_Helper extends \Test\TestCase { /** * @small - * test absolute URL construction - * @dataProvider provideDocRootURLs - */ - function testMakeAbsoluteURLDocRoot($url, $expectedResult) { - \OC::$WEBROOT = ''; - $result = \OC_Helper::makeURLAbsolute($url); - - $this->assertEquals($expectedResult, $result); - } - - /** - * @small - * test absolute URL construction - * @dataProvider provideSubDirURLs - */ - function testMakeAbsoluteURLSubDir($url, $expectedResult) { - \OC::$WEBROOT = '/owncloud'; - $result = \OC_Helper::makeURLAbsolute($url); - - $this->assertEquals($expectedResult, $result); - } - - public function provideDocRootURLs() { - return array( - array('index.php', 'http://localhost/index.php'), - array('/index.php', 'http://localhost/index.php'), - array('/apps/index.php', 'http://localhost/apps/index.php'), - array('apps/index.php', 'http://localhost/apps/index.php'), - ); - } - - public function provideSubDirURLs() { - return array( - array('index.php', 'http://localhost/owncloud/index.php'), - array('/index.php', 'http://localhost/owncloud/index.php'), - array('/apps/index.php', 'http://localhost/owncloud/apps/index.php'), - array('apps/index.php', 'http://localhost/owncloud/apps/index.php'), - ); - } - - /** - * @small - * test linkTo URL construction - * @dataProvider provideDocRootAppUrlParts - */ - public function testLinkToDocRoot($app, $file, $args, $expectedResult) { - \OC::$WEBROOT = ''; - $result = \OC_Helper::linkTo($app, $file, $args); - - $this->assertEquals($expectedResult, $result); - } - - /** - * @small - * test linkTo URL construction in sub directory - * @dataProvider provideSubDirAppUrlParts - */ - public function testLinkToSubDir($app, $file, $args, $expectedResult) { - \OC::$WEBROOT = '/owncloud'; - $result = \OC_Helper::linkTo($app, $file, $args); - - $this->assertEquals($expectedResult, $result); - } - - /** - * @return array - */ - public function provideDocRootAppUrlParts() { - return array( - array('files', 'ajax/list.php', array(), '/index.php/apps/files/ajax/list.php'), - array('files', 'ajax/list.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php/apps/files/ajax/list.php?trut=trat&dut=dat'), - array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/index.php?trut=trat&dut=dat'), - ); - } - - /** - * @return array - */ - public function provideSubDirAppUrlParts() { - return array( - array('files', 'ajax/list.php', array(), '/owncloud/index.php/apps/files/ajax/list.php'), - array('files', 'ajax/list.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php/apps/files/ajax/list.php?trut=trat&dut=dat'), - array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), '/owncloud/index.php?trut=trat&dut=dat'), - ); - } - - /** - * @small - * test linkToAbsolute URL construction - * @dataProvider provideDocRootAppAbsoluteUrlParts - */ - public function testLinkToAbsoluteDocRoot($app, $file, $args, $expectedResult) { - \OC::$WEBROOT = ''; - $result = \OC_Helper::linkToAbsolute($app, $file, $args); - - $this->assertEquals($expectedResult, $result); - } - - /** - * @small - * test linkToAbsolute URL construction in sub directory - * @dataProvider provideSubDirAppAbsoluteUrlParts - */ - public function testLinkToAbsoluteSubDir($app, $file, $args, $expectedResult) { - \OC::$WEBROOT = '/owncloud'; - $result = \OC_Helper::linkToAbsolute($app, $file, $args); - - $this->assertEquals($expectedResult, $result); - } - - /** - * @return array - */ - public function provideDocRootAppAbsoluteUrlParts() { - return array( - array('files', 'ajax/list.php', array(), 'http://localhost/index.php/apps/files/ajax/list.php'), - array('files', 'ajax/list.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/index.php/apps/files/ajax/list.php?trut=trat&dut=dat'), - array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/index.php?trut=trat&dut=dat'), - ); - } - - /** - * @return array - */ - public function provideSubDirAppAbsoluteUrlParts() { - return array( - array('files', 'ajax/list.php', array(), 'http://localhost/owncloud/index.php/apps/files/ajax/list.php'), - array('files', 'ajax/list.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/owncloud/index.php/apps/files/ajax/list.php?trut=trat&dut=dat'), - array('', 'index.php', array('trut' => 'trat', 'dut' => 'dat'), 'http://localhost/owncloud/index.php?trut=trat&dut=dat'), - ); - } - - /** - * @small - * test linkToRemoteBase URL construction - */ - public function testLinkToRemoteBase() { - \OC::$WEBROOT = ''; - $result = \OC_Helper::linkToRemoteBase('webdav'); - $this->assertEquals('/remote.php/webdav', $result); - - \OC::$WEBROOT = '/owncloud'; - $result = \OC_Helper::linkToRemoteBase('webdav'); - $this->assertEquals('/owncloud/remote.php/webdav', $result); - } - - /** - * @small - * test linkToRemote URL construction - */ - public function testLinkToRemote() { - \OC::$WEBROOT = ''; - $result = \OC_Helper::linkToRemote('webdav'); - $this->assertEquals('http://localhost/remote.php/webdav/', $result); - $result = \OC_Helper::linkToRemote('webdav', false); - $this->assertEquals('http://localhost/remote.php/webdav', $result); - - \OC::$WEBROOT = '/owncloud'; - $result = \OC_Helper::linkToRemote('webdav'); - $this->assertEquals('http://localhost/owncloud/remote.php/webdav/', $result); - $result = \OC_Helper::linkToRemote('webdav', false); - $this->assertEquals('http://localhost/owncloud/remote.php/webdav', $result); - } - - /** - * @small * test linkToPublic URL construction */ public function testLinkToPublic() { @@ -458,7 +261,7 @@ class Test_Helper extends \Test\TestCase { * Tests recursive folder deletion with rmdirr() */ public function testRecursiveFolderDeletion() { - $baseDir = \OC_Helper::tmpFolder() . '/'; + $baseDir = \OC::$server->getTempManager()->getTemporaryFolder() . '/'; mkdir($baseDir . 'a/b/c/d/e', 0777, true); mkdir($baseDir . 'a/b/c1/d/e', 0777, true); mkdir($baseDir . 'a/b/c2/d/e', 0777, true); diff --git a/tests/lib/helperstorage.php b/tests/lib/helperstorage.php index cf022109c27..3109b509549 100644 --- a/tests/lib/helperstorage.php +++ b/tests/lib/helperstorage.php @@ -23,7 +23,7 @@ class Test_Helper_Storage extends \Test\TestCase { parent::setUp(); $this->user = $this->getUniqueID('user_'); - \OC_User::createUser($this->user, $this->user); + \OC::$server->getUserManager()->createUser($this->user, $this->user); $this->storage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::tearDown(); @@ -45,7 +45,8 @@ class Test_Helper_Storage extends \Test\TestCase { \OC\Files\Filesystem::mount($this->storage, array(), '/'); \OC_User::setUserId(''); - \OC_User::deleteUser($this->user); + $user = \OC::$server->getUserManager()->get($this->user); + if ($user !== null) { $user->delete(); } \OC::$server->getConfig()->deleteAllUserValues($this->user); parent::tearDown(); diff --git a/tests/lib/installer.php b/tests/lib/installer.php index c3c2f8a275e..cfad4d7f0de 100644 --- a/tests/lib/installer.php +++ b/tests/lib/installer.php @@ -32,7 +32,7 @@ class Test_Installer extends \Test\TestCase { $pathOfTestApp .= '/../data/'; $pathOfTestApp .= 'testapp.zip'; - $tmp = OC_Helper::tmpFile('.zip'); + $tmp = \OC::$server->getTempManager()->getTemporaryFile('.zip'); OC_Helper::copyr($pathOfTestApp, $tmp); $data = array( @@ -51,7 +51,7 @@ class Test_Installer extends \Test\TestCase { $pathOfOldTestApp .= '/../data/'; $pathOfOldTestApp .= 'testapp.zip'; - $oldTmp = OC_Helper::tmpFile('.zip'); + $oldTmp = \OC::$server->getTempManager()->getTemporaryFile('.zip'); OC_Helper::copyr($pathOfOldTestApp, $oldTmp); $oldData = array( @@ -63,7 +63,7 @@ class Test_Installer extends \Test\TestCase { $pathOfNewTestApp .= '/../data/'; $pathOfNewTestApp .= 'testapp2.zip'; - $newTmp = OC_Helper::tmpFile('.zip'); + $newTmp = \OC::$server->getTempManager()->getTemporaryFile('.zip'); OC_Helper::copyr($pathOfNewTestApp, $newTmp); $newData = array( diff --git a/tests/lib/security/certificatemanager.php b/tests/lib/security/certificatemanager.php index 43b2f1cf980..f2e29cab18e 100644 --- a/tests/lib/security/certificatemanager.php +++ b/tests/lib/security/certificatemanager.php @@ -24,7 +24,7 @@ class CertificateManagerTest extends \Test\TestCase { parent::setUp(); $this->username = $this->getUniqueID('', 20); - OC_User::createUser($this->username, $this->getUniqueID('', 20)); + \OC::$server->getUserManager()->createUser($this->username, $this->getUniqueID('', 20)); \OC_Util::tearDownFS(); \OC_User::setUserId(''); @@ -39,7 +39,8 @@ class CertificateManagerTest extends \Test\TestCase { } protected function tearDown() { - \OC_User::deleteUser($this->username); + $user = \OC::$server->getUserManager()->get($this->username); + if ($user !== null) { $user->delete(); } parent::tearDown(); } diff --git a/tests/lib/server.php b/tests/lib/server.php index 6b569e77dd9..44e1aac5cce 100644 --- a/tests/lib/server.php +++ b/tests/lib/server.php @@ -38,7 +38,8 @@ class Server extends \Test\TestCase { public function setUp() { parent::setUp(); - $this->server = new \OC\Server(''); + $config = new \OC\Config(\OC::$configDir); + $this->server = new \OC\Server('', $config); } public function dataTestQuery() { @@ -93,6 +94,8 @@ class Server extends \Test\TestCase { ['HttpClientService', '\OCP\Http\Client\IClientService'], ['IniWrapper', '\bantu\IniGetWrapper\IniGetWrapper'], + ['MimeTypeDetector', '\OCP\Files\IMimeTypeDetector'], + ['MimeTypeDetector', '\OC\Files\Type\Detection'], ['JobList', '\OC\BackgroundJob\JobList'], ['JobList', '\OCP\BackgroundJob\IJobList'], diff --git a/tests/lib/share/helper.php b/tests/lib/share/helper.php index e37a3db8bf0..eaa29c8cb90 100644 --- a/tests/lib/share/helper.php +++ b/tests/lib/share/helper.php @@ -19,6 +19,10 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ +/** + * @group DB + * Class Test_Share_Helper + */ class Test_Share_Helper extends \Test\TestCase { public function expireDateProvider() { @@ -121,4 +125,37 @@ class Test_Share_Helper extends \Test\TestCase { public function testSplitUserRemoteError($id) { \OC\Share\Helper::splitUserRemote($id); } + + /** + * @dataProvider dataTestCompareServerAddresses + * + * @param string $server1 + * @param string $server2 + * @param bool $expected + */ + public function testIsSameUserOnSameServer($user1, $server1, $user2, $server2, $expected) { + $this->assertSame($expected, + \OC\Share\Helper::isSameUserOnSameServer($user1, $server1, $user2, $server2) + ); + } + + public function dataTestCompareServerAddresses() { + return [ + ['user1', 'http://server1', 'user1', 'http://server1', true], + ['user1', 'https://server1', 'user1', 'http://server1', true], + ['user1', 'http://serVer1', 'user1', 'http://server1', true], + ['user1', 'http://server1/', 'user1', 'http://server1', true], + ['user1', 'server1', 'user1', 'http://server1', true], + ['user1', 'http://server1', 'user1', 'http://server2', false], + ['user1', 'https://server1', 'user1', 'http://server2', false], + ['user1', 'http://serVer1', 'user1', 'http://serer2', false], + ['user1', 'http://server1/', 'user1', 'http://server2', false], + ['user1', 'server1', 'user1', 'http://server2', false], + ['user1', 'http://server1', 'user2', 'http://server1', false], + ['user1', 'https://server1', 'user2', 'http://server1', false], + ['user1', 'http://serVer1', 'user2', 'http://server1', false], + ['user1', 'http://server1/', 'user2', 'http://server1', false], + ['user1', 'server1', 'user2', 'http://server1', false], + ]; + } } diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index fa19577cb72..5162a03f367 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -54,13 +54,13 @@ class Test_Share extends \Test\TestCase { $this->user5 = $this->getUniqueID('user5_'); $this->user6 = $this->getUniqueID('user6_'); $this->groupAndUser = $this->getUniqueID('groupAndUser_'); - OC_User::createUser($this->user1, 'pass'); - OC_User::createUser($this->user2, 'pass'); - OC_User::createUser($this->user3, 'pass'); - OC_User::createUser($this->user4, 'pass'); - OC_User::createUser($this->user5, 'pass'); - OC_User::createUser($this->user6, 'pass'); // no group - OC_User::createUser($this->groupAndUser, 'pass'); + \OC::$server->getUserManager()->createUser($this->user1, 'pass'); + \OC::$server->getUserManager()->createUser($this->user2, 'pass'); + \OC::$server->getUserManager()->createUser($this->user3, 'pass'); + \OC::$server->getUserManager()->createUser($this->user4, 'pass'); + \OC::$server->getUserManager()->createUser($this->user5, 'pass'); + \OC::$server->getUserManager()->createUser($this->user6, 'pass'); // no group + \OC::$server->getUserManager()->createUser($this->groupAndUser, 'pass'); OC_User::setUserId($this->user1); OC_Group::clearBackends(); OC_Group::useBackend(new OC_Group_Dummy); @@ -94,13 +94,20 @@ class Test_Share extends \Test\TestCase { $query->execute(array('test')); \OC::$server->getAppConfig()->setValue('core', 'shareapi_allow_resharing', $this->resharing); - OC_User::deleteUser($this->user1); - OC_User::deleteUser($this->user2); - OC_User::deleteUser($this->user3); - OC_User::deleteUser($this->user4); - OC_User::deleteUser($this->user5); - OC_User::deleteUser($this->user6); - OC_User::deleteUser($this->groupAndUser); + $user = \OC::$server->getUserManager()->get($this->user1); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->user2); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->user3); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->user4); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->user5); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->user6); + if ($user !== null) { $user->delete(); } + $user = \OC::$server->getUserManager()->get($this->groupAndUser); + if ($user !== null) { $user->delete(); } OC_Group::deleteGroup($this->group1); OC_Group::deleteGroup($this->group2); @@ -375,7 +382,8 @@ class Test_Share extends \Test\TestCase { // Remove user OC_User::setUserId($this->user1); - OC_User::deleteUser($this->user1); + $user = \OC::$server->getUserManager()->get($this->user1); + if ($user !== null) { $user->delete(); } OC_User::setUserId($this->user2); $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); } diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php index dc45bc7c085..beef4c9ef53 100644 --- a/tests/lib/share20/defaultshareprovidertest.php +++ b/tests/lib/share20/defaultshareprovidertest.php @@ -26,6 +26,12 @@ use OCP\IGroupManager; use OCP\Files\IRootFolder; use OC\Share20\DefaultShareProvider; +/** + * Class DefaultShareProviderTest + * + * @package Test\Share20 + * @group DB + */ class DefaultShareProviderTest extends \Test\TestCase { /** @var IDBConnection */ @@ -533,4 +539,186 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertEquals(null, $children[1]->getExpirationDate()); $this->assertEquals('myTarget2', $children[1]->getTarget()); } + + public function testCreateUserShare() { + $share = new \OC\Share20\Share(); + + $sharedWith = $this->getMock('OCP\IUser'); + $sharedWith->method('getUID')->willReturn('sharedWith'); + $sharedBy = $this->getMock('OCP\IUser'); + $sharedBy->method('getUID')->willReturn('sharedBy'); + $shareOwner = $this->getMock('OCP\IUser'); + $shareOwner->method('getUID')->WillReturn('shareOwner'); + + $this->userManager + ->method('get') + ->will($this->returnValueMap([ + ['sharedWith', $sharedWith], + ['sharedBy', $sharedBy], + ['shareOwner', $shareOwner], + ])); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getId')->willReturn(100); + $path->method('getOwner')->willReturn($shareOwner); + + $ownerFolder = $this->getMock('OCP\Files\Folder'); + $userFolder = $this->getMock('OCP\Files\Folder'); + $this->rootFolder + ->method('getUserFolder') + ->will($this->returnValueMap([ + ['sharedBy', $userFolder], + ['shareOwner', $ownerFolder], + ])); + + $userFolder->method('getById') + ->with(100) + ->willReturn([$path]); + $ownerFolder->method('getById') + ->with(100) + ->willReturn([$path]); + + $share->setShareType(\OCP\Share::SHARE_TYPE_USER); + $share->setSharedWith($sharedWith); + $share->setSharedBy($sharedBy); + $share->setShareOwner($shareOwner); + $share->setPath($path); + $share->setPermissions(1); + $share->setTarget('/target'); + + $share2 = $this->provider->create($share); + + $this->assertNotNull($share2->getId()); + $this->assertSame(\OCP\Share::SHARE_TYPE_USER, $share2->getShareType()); + $this->assertSame($sharedWith, $share2->getSharedWith()); + $this->assertSame($sharedBy, $share2->getSharedBy()); + $this->assertSame($shareOwner, $share2->getShareOwner()); + $this->assertSame(1, $share2->getPermissions()); + $this->assertSame('/target', $share2->getTarget()); + $this->assertLessThanOrEqual(time(), $share2->getSharetime()); + $this->assertSame($path, $share2->getPath()); + } + + public function testCreateGroupShare() { + $share = new \OC\Share20\Share(); + + $sharedWith = $this->getMock('OCP\IGroup'); + $sharedWith->method('getGID')->willReturn('sharedWith'); + $sharedBy = $this->getMock('OCP\IUser'); + $sharedBy->method('getUID')->willReturn('sharedBy'); + $shareOwner = $this->getMock('OCP\IUser'); + $shareOwner->method('getUID')->WillReturn('shareOwner'); + + $this->userManager + ->method('get') + ->will($this->returnValueMap([ + ['sharedBy', $sharedBy], + ['shareOwner', $shareOwner], + ])); + $this->groupManager + ->method('get') + ->with('sharedWith') + ->willReturn($sharedWith); + + $path = $this->getMock('\OCP\Files\Folder'); + $path->method('getId')->willReturn(100); + $path->method('getOwner')->willReturn($shareOwner); + + $ownerFolder = $this->getMock('OCP\Files\Folder'); + $userFolder = $this->getMock('OCP\Files\Folder'); + $this->rootFolder + ->method('getUserFolder') + ->will($this->returnValueMap([ + ['sharedBy', $userFolder], + ['shareOwner', $ownerFolder], + ])); + + $userFolder->method('getById') + ->with(100) + ->willReturn([$path]); + $ownerFolder->method('getById') + ->with(100) + ->willReturn([$path]); + + $share->setShareType(\OCP\Share::SHARE_TYPE_GROUP); + $share->setSharedWith($sharedWith); + $share->setSharedBy($sharedBy); + $share->setShareOwner($shareOwner); + $share->setPath($path); + $share->setPermissions(1); + $share->setTarget('/target'); + + $share2 = $this->provider->create($share); + + $this->assertNotNull($share2->getId()); + $this->assertSame(\OCP\Share::SHARE_TYPE_GROUP, $share2->getShareType()); + $this->assertSame($sharedWith, $share2->getSharedWith()); + $this->assertSame($sharedBy, $share2->getSharedBy()); + $this->assertSame($shareOwner, $share2->getShareOwner()); + $this->assertSame(1, $share2->getPermissions()); + $this->assertSame('/target', $share2->getTarget()); + $this->assertLessThanOrEqual(time(), $share2->getSharetime()); + $this->assertSame($path, $share2->getPath()); + } + + public function testCreateLinkShare() { + $share = new \OC\Share20\Share(); + + $sharedBy = $this->getMock('OCP\IUser'); + $sharedBy->method('getUID')->willReturn('sharedBy'); + $shareOwner = $this->getMock('OCP\IUser'); + $shareOwner->method('getUID')->WillReturn('shareOwner'); + + $this->userManager + ->method('get') + ->will($this->returnValueMap([ + ['sharedBy', $sharedBy], + ['shareOwner', $shareOwner], + ])); + + $path = $this->getMock('\OCP\Files\Folder'); + $path->method('getId')->willReturn(100); + $path->method('getOwner')->willReturn($shareOwner); + + $ownerFolder = $this->getMock('OCP\Files\Folder'); + $userFolder = $this->getMock('OCP\Files\Folder'); + $this->rootFolder + ->method('getUserFolder') + ->will($this->returnValueMap([ + ['sharedBy', $userFolder], + ['shareOwner', $ownerFolder], + ])); + + $userFolder->method('getById') + ->with(100) + ->willReturn([$path]); + $ownerFolder->method('getById') + ->with(100) + ->willReturn([$path]); + + $share->setShareType(\OCP\Share::SHARE_TYPE_LINK); + $share->setSharedBy($sharedBy); + $share->setShareOwner($shareOwner); + $share->setPath($path); + $share->setPermissions(1); + $share->setPassword('password'); + $share->setToken('token'); + $expireDate = new \DateTime(); + $share->setExpirationDate($expireDate); + $share->setTarget('/target'); + + $share2 = $this->provider->create($share); + + $this->assertNotNull($share2->getId()); + $this->assertSame(\OCP\Share::SHARE_TYPE_LINK, $share2->getShareType()); + $this->assertSame($sharedBy, $share2->getSharedBy()); + $this->assertSame($shareOwner, $share2->getShareOwner()); + $this->assertSame(1, $share2->getPermissions()); + $this->assertSame('/target', $share2->getTarget()); + $this->assertLessThanOrEqual(time(), $share2->getSharetime()); + $this->assertSame($path, $share2->getPath()); + $this->assertSame('password', $share2->getPassword()); + $this->assertSame('token', $share2->getToken()); + $this->assertEquals($expireDate, $share2->getExpirationDate()); + } } diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php index e4d0bfad584..57e7e110712 100644 --- a/tests/lib/share20/managertest.php +++ b/tests/lib/share20/managertest.php @@ -23,10 +23,21 @@ namespace Test\Share20; use OC\Share20\Manager; use OC\Share20\Exception; +use OCP\IL10N; use OCP\ILogger; -use OCP\IAppConfig; +use OCP\IConfig; use OC\Share20\IShareProvider; +use OCP\Security\ISecureRandom; +use OCP\Security\IHasher; +use OCP\Files\Mount\IMountManager; +use OCP\IGroupManager; +/** + * Class ManagerTest + * + * @package Test\Share20 + * @group DB + */ class ManagerTest extends \Test\TestCase { /** @var Manager */ @@ -35,22 +46,52 @@ class ManagerTest extends \Test\TestCase { /** @var ILogger */ protected $logger; - /** @var IAppConfig */ - protected $appConfig; + /** @var IConfig */ + protected $config; + + /** @var ISecureRandom */ + protected $secureRandom; + + /** @var IHasher */ + protected $hasher; /** @var IShareProvider */ protected $defaultProvider; + /** @var IMountManager */ + protected $mountManager; + + /** @var IGroupManager */ + protected $groupManager; + + /** @var IL10N */ + protected $l; + public function setUp() { $this->logger = $this->getMock('\OCP\ILogger'); - $this->appConfig = $this->getMock('\OCP\IAppConfig'); + $this->config = $this->getMock('\OCP\IConfig'); $this->defaultProvider = $this->getMock('\OC\Share20\IShareProvider'); + $this->secureRandom = $this->getMock('\OCP\Security\ISecureRandom'); + $this->hasher = $this->getMock('\OCP\Security\IHasher'); + $this->mountManager = $this->getMock('\OCP\Files\Mount\IMountManager'); + $this->groupManager = $this->getMock('\OCP\IGroupManager'); + + $this->l = $this->getMock('\OCP\IL10N'); + $this->l->method('t') + ->will($this->returnCallback(function($text, $parameters = []) { + return vsprintf($text, $parameters); + })); $this->manager = new Manager( $this->logger, - $this->appConfig, - $this->defaultProvider + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l ); } @@ -91,8 +132,13 @@ class ManagerTest extends \Test\TestCase { $manager = $this->getMockBuilder('\OC\Share20\Manager') ->setConstructorArgs([ $this->logger, - $this->appConfig, - $this->defaultProvider + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l ]) ->setMethods(['getShareById', 'deleteChildren']) ->getMock(); @@ -177,8 +223,13 @@ class ManagerTest extends \Test\TestCase { $manager = $this->getMockBuilder('\OC\Share20\Manager') ->setConstructorArgs([ $this->logger, - $this->appConfig, - $this->defaultProvider + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, ]) ->setMethods(['getShareById']) ->getMock(); @@ -317,8 +368,13 @@ class ManagerTest extends \Test\TestCase { $manager = $this->getMockBuilder('\OC\Share20\Manager') ->setConstructorArgs([ $this->logger, - $this->appConfig, - $this->defaultProvider + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, ]) ->setMethods(['deleteShare']) ->getMock(); @@ -365,4 +421,1128 @@ class ManagerTest extends \Test\TestCase { $this->assertEquals($share, $this->manager->getShareById(42)); } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Passwords are enforced for link shares + */ + public function testVerifyPasswordNullButEnforced() { + $this->config->method('getAppValue')->will($this->returnValueMap([ + ['core', 'shareapi_enforce_links_password', 'no', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'verifyPassword', [null]); + } + + public function testVerifyPasswordNull() { + $this->config->method('getAppValue')->will($this->returnValueMap([ + ['core', 'shareapi_enforce_links_password', 'no', 'no'], + ])); + + $result = $this->invokePrivate($this->manager, 'verifyPassword', [null]); + $this->assertNull($result); + } + + public function testVerifyPasswordHook() { + $this->config->method('getAppValue')->will($this->returnValueMap([ + ['core', 'shareapi_enforce_links_password', 'no', 'no'], + ])); + + $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listner'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyPassword', $hookListner, 'listner'); + + $hookListner->expects($this->once()) + ->method('listner') + ->with([ + 'password' => 'password', + 'accepted' => true, + 'message' => '' + ]); + + $result = $this->invokePrivate($this->manager, 'verifyPassword', ['password']); + $this->assertNull($result); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage password not accepted + */ + public function testVerifyPasswordHookFails() { + $this->config->method('getAppValue')->will($this->returnValueMap([ + ['core', 'shareapi_enforce_links_password', 'no', 'no'], + ])); + + $dummy = new DummyPassword(); + \OCP\Util::connectHook('\OC\Share', 'verifyPassword', $dummy, 'listner'); + $this->invokePrivate($this->manager, 'verifyPassword', ['password']); + } + + public function createShare($id, $type, $path, $sharedWith, $sharedBy, $shareOwner, + $permissions, $expireDate = null, $password = null) { + $share = $this->getMock('\OC\Share20\IShare'); + + $share->method('getShareType')->willReturn($type); + $share->method('getSharedWith')->willReturn($sharedWith); + $share->method('getSharedBy')->willReturn($sharedBy); + $share->method('getSharedOwner')->willReturn($shareOwner); + $share->method('getPath')->willReturn($path); + $share->method('getPermissions')->willReturn($permissions); + $share->method('getExpirationDate')->willReturn($expireDate); + $share->method('getPassword')->willReturn($password); + + return $share; + } + + public function dataGeneralChecks() { + $user = $this->getMock('\OCP\IUser'); + $user2 = $this->getMock('\OCP\IUser'); + $group = $this->getMock('\OCP\IGroup'); + + $file = $this->getMock('\OCP\Files\File'); + $node = $this->getMock('\OCP\Files\Node'); + + $data = [ + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $file, null, $user, $user, 31, null, null), 'SharedWith should be an IUser', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $file, $group, $user, $user, 31, null, null), 'SharedWith should be an IUser', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $file, 'foo@bar.com', $user, $user, 31, null, null), 'SharedWith should be an IUser', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $file, null, $user, $user, 31, null, null), 'SharedWith should be an IGroup', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $file, $user2, $user, $user, 31, null, null), 'SharedWith should be an IGroup', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $file, 'foo@bar.com', $user, $user, 31, null, null), 'SharedWith should be an IGroup', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $file, $user2, $user, $user, 31, null, null), 'SharedWith should be empty', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $file, $group, $user, $user, 31, null, null), 'SharedWith should be empty', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $file, 'foo@bar.com', $user, $user, 31, null, null), 'SharedWith should be empty', true], + [$this->createShare(null, -1, $file, null, $user, $user, 31, null, null), 'unkown share type', true], + + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $file, $user2, null, $user, 31, null, null), 'SharedBy should be set', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $file, $group, null, $user, 31, null, null), 'SharedBy should be set', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $file, null, null, $user, 31, null, null), 'SharedBy should be set', true], + + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $file, $user, $user, $user, 31, null, null), 'Can\'t share with yourself', true], + + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, null, $user2, $user, $user, 31, null, null), 'Path should be set', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, null, $group, $user, $user, 31, null, null), 'Path should be set', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, null, null, $user, $user, 31, null, null), 'Path should be set', true], + + [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $node, $user2, $user, $user, 31, null, null), 'Path should be either a file or a folder', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $node, $group, $user, $user, 31, null, null), 'Path should be either a file or a folder', true], + [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $node, null, $user, $user, 31, null, null), 'Path should be either a file or a folder', true], + ]; + + $nonShareAble = $this->getMock('\OCP\Files\Folder'); + $nonShareAble->method('isShareable')->willReturn(false); + $nonShareAble->method('getPath')->willReturn('path'); + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $nonShareAble, $user2, $user, $user, 31, null, null), 'You are not allowed to share path', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $nonShareAble, $group, $user, $user, 31, null, null), 'You are not allowed to share path', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $nonShareAble, null, $user, $user, 31, null, null), 'You are not allowed to share path', true]; + + $limitedPermssions = $this->getMock('\OCP\Files\File'); + $limitedPermssions->method('isShareable')->willReturn(true); + $limitedPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ); + $limitedPermssions->method('getPath')->willReturn('path'); + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $limitedPermssions, $user2, $user, $user, null, null, null), 'A share requires permissions', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group, $user, $user, null, null, null), 'A share requires permissions', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $limitedPermssions, null, $user, $user, null, null, null), 'A share requires permissions', true]; + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $limitedPermssions, $user2, $user, $user, 31, null, null), 'Cannot increase permissions of path', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group, $user, $user, 17, null, null), 'Cannot increase permissions of path', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $limitedPermssions, null, $user, $user, 3, null, null), 'Cannot increase permissions of path', true]; + + $allPermssions = $this->getMock('\OCP\Files\Folder'); + $allPermssions->method('isShareable')->willReturn(true); + $allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $allPermssions, $user2, $user, $user, 30, null, null), 'Shares need at least read permissions', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $allPermssions, $group, $user, $user, 2, null, null), 'Shares need at least read permissions', true]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $allPermssions, null, $user, $user, 16, null, null), 'Shares need at least read permissions', true]; + + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $allPermssions, $user2, $user, $user, 31, null, null), null, false]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $allPermssions, $group, $user, $user, 3, null, null), null, false]; + $data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $allPermssions, null, $user, $user, 17, null, null), null, false]; + + return $data; + } + + /** + * @dataProvider dataGeneralChecks + * + * @param $share + * @param $exceptionMessage + */ + public function testGeneralChecks($share, $exceptionMessage, $exception) { + $thrown = null; + + try { + $this->invokePrivate($this->manager, 'generalCreateChecks', [$share]); + $thrown = false; + } catch (\OC\HintException $e) { + $this->assertEquals($exceptionMessage, $e->getHint()); + $thrown = true; + } catch(\InvalidArgumentException $e) { + $this->assertEquals($exceptionMessage, $e->getMessage()); + $thrown = true; + } + + $this->assertSame($exception, $thrown); + } + + /** + * @expectedException \OC\HintException + * @expectedExceptionMessage Expiration date is in the past + */ + public function testValidateExpiredateInPast() { + + // Expire date in the past + $past = new \DateTime(); + $past->sub(new \DateInterval('P1D')); + + $this->invokePrivate($this->manager, 'validateExpiredate', [$past]); + } + + /** + * @expectedException InvalidArgumentException + * @expectedExceptionMessage Expiration date is enforced + */ + public function testValidateExpiredateEnforceButNotSet() { + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'validateExpiredate', [null]); + } + + public function testValidateExpiredateEnforceToFarIntoFuture() { + // Expire date in the past + $future = new \DateTime(); + $future->add(new \DateInterval('P7D')); + + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '3'], + ])); + + try { + $this->invokePrivate($this->manager, 'validateExpiredate', [$future]); + } catch (\OC\HintException $e) { + $this->assertEquals('Cannot set expiration date more than 3 days in the future', $e->getMessage()); + $this->assertEquals('Cannot set expiration date more than 3 days in the future', $e->getHint()); + $this->assertEquals(404, $e->getCode()); + } + } + + public function testValidateExpiredateEnforceValid() { + // Expire date in the past + $future = new \DateTime(); + $future->add(new \DateInterval('P2D')); + $future->setTime(0,0,0); + $expected = $future->format(\DateTime::ISO8601); + $future->setTime(1,2,3); + + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '3'], + ])); + + $future = $this->invokePrivate($this->manager, 'validateExpiredate', [$future]); + + $this->assertEquals($expected, $future->format(\DateTime::ISO8601)); + } + + public function testValidateExpiredateNoDateNoDefaultNull() { + $date = new \DateTime(); + $date->add(new \DateInterval('P5D')); + + $res = $this->invokePrivate($this->manager, 'validateExpiredate', [$date]); + + $this->assertEquals($date, $res); + } + + public function testValidateExpiredateNoDateNoDefault() { + $date = $this->invokePrivate($this->manager, 'validateExpiredate', [null]); + + $this->assertNull($date); + } + + public function testValidateExpiredateNoDateDefault() { + $future = new \DateTime(); + $future->add(new \DateInterval('P3D')); + $future->setTime(0,0,0); + + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_default_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '3'], + ])); + + $date = $this->invokePrivate($this->manager, 'validateExpiredate', [null]); + + $this->assertEquals($future->format(\DateTime::ISO8601), $date->format(\DateTime::ISO8601)); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Only sharing with group members is allowed + */ + public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups() { + $share = new \OC\Share20\Share(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedWith = $this->getMock('\OCP\IUser'); + $share->setSharedBy($sharedBy)->setSharedWith($sharedWith); + + $this->groupManager + ->method('getUserGroupIds') + ->will( + $this->returnValueMap([ + [$sharedBy, ['group1']], + [$sharedWith, ['group2']], + ]) + ); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'userCreateChecks', [$share]); + } + + public function testUserCreateChecksShareWithGroupMembersOnlySharedGroup() { + $share = new \OC\Share20\Share(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedWith = $this->getMock('\OCP\IUser'); + $share->setSharedBy($sharedBy)->setSharedWith($sharedWith); + + $path = $this->getMock('\OCP\Files\Node'); + $share->setPath($path); + + $this->groupManager + ->method('getUserGroupIds') + ->will( + $this->returnValueMap([ + [$sharedBy, ['group1', 'group3']], + [$sharedWith, ['group2', 'group3']], + ]) + ); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], + ])); + + $this->defaultProvider + ->method('getSharesByPath') + ->with($path) + ->willReturn([]); + + $this->invokePrivate($this->manager, 'userCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Path already shared with this user + */ + public function testUserCreateChecksIdenticalShareExists() { + $share = new \OC\Share20\Share(); + + $sharedWith = $this->getMock('\OCP\IUser'); + $share->setSharedWith($sharedWith); + + $path = $this->getMock('\OCP\Files\Node'); + $share->setPath($path); + + $this->defaultProvider + ->method('getSharesByPath') + ->with($path) + ->willReturn([$share]); + + $this->invokePrivate($this->manager, 'userCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Path already shared with this user + */ + public function testUserCreateChecksIdenticalPathSharedViaGroup() { + $share = new \OC\Share20\Share(); + $sharedWith = $this->getMock('\OCP\IUser'); + $owner = $this->getMock('\OCP\IUser'); + $path = $this->getMock('\OCP\Files\Node'); + $share->setSharedWith($sharedWith) + ->setPath($path) + ->setShareOwner($owner); + + $share2 = new \OC\Share20\Share(); + $owner2 = $this->getMock('\OCP\IUser'); + $share2->setShareType(\OCP\Share::SHARE_TYPE_GROUP) + ->setShareOwner($owner2); + + $group = $this->getMock('\OCP\IGroup'); + $group->method('inGroup') + ->with($sharedWith) + ->willReturn(true); + + $share2->setSharedWith($group); + + $this->defaultProvider + ->method('getSharesByPath') + ->with($path) + ->willReturn([$share2]); + + $this->invokePrivate($this->manager, 'userCreateChecks', [$share]); + } + + public function testUserCreateChecksIdenticalPathNotSharedWithUser() { + $share = new \OC\Share20\Share(); + $sharedWith = $this->getMock('\OCP\IUser'); + $owner = $this->getMock('\OCP\IUser'); + $path = $this->getMock('\OCP\Files\Node'); + $share->setSharedWith($sharedWith) + ->setPath($path) + ->setShareOwner($owner); + + $share2 = new \OC\Share20\Share(); + $owner2 = $this->getMock('\OCP\IUser'); + $share2->setShareType(\OCP\Share::SHARE_TYPE_GROUP) + ->setShareOwner($owner2); + + $group = $this->getMock('\OCP\IGroup'); + $group->method('inGroup') + ->with($sharedWith) + ->willReturn(false); + + $share2->setSharedWith($group); + + $this->defaultProvider + ->method('getSharesByPath') + ->with($path) + ->willReturn([$share2]); + + $this->invokePrivate($this->manager, 'userCreateChecks', [$share]); + } + + + /** + * @expectedException Exception + * @expectedExceptionMessage Only sharing within your own groups is allowed + */ + public function testGroupCreateChecksShareWithGroupMembersOnlyNotInGroup() { + $share = new \OC\Share20\Share(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedWith = $this->getMock('\OCP\IGroup'); + $share->setSharedBy($sharedBy)->setSharedWith($sharedWith); + + $sharedWith->method('inGroup')->with($sharedBy)->willReturn(false); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'groupCreateChecks', [$share]); + } + + public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup() { + $share = new \OC\Share20\Share(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedWith = $this->getMock('\OCP\IGroup'); + $share->setSharedBy($sharedBy)->setSharedWith($sharedWith); + + $sharedWith->method('inGroup')->with($sharedBy)->willReturn(true); + + $path = $this->getMock('\OCP\Files\Node'); + $share->setPath($path); + + $this->defaultProvider->method('getSharesByPath') + ->with($path) + ->willReturn([]); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'groupCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Path already shared with this group + */ + public function testGroupCreateChecksPathAlreadySharedWithSameGroup() { + $share = new \OC\Share20\Share(); + + $sharedWith = $this->getMock('\OCP\IGroup'); + $share->setSharedWith($sharedWith); + + $path = $this->getMock('\OCP\Files\Node'); + $share->setPath($path); + + $share2 = new \OC\Share20\Share(); + $share2->setSharedWith($sharedWith); + + $this->defaultProvider->method('getSharesByPath') + ->with($path) + ->willReturn([$share2]); + + $this->invokePrivate($this->manager, 'groupCreateChecks', [$share]); + } + + public function testGroupCreateChecksPathAlreadySharedWithDifferentGroup() { + $share = new \OC\Share20\Share(); + + $sharedWith = $this->getMock('\OCP\IGroup'); + $share->setSharedWith($sharedWith); + + $path = $this->getMock('\OCP\Files\Node'); + $share->setPath($path); + + $share2 = new \OC\Share20\Share(); + $sharedWith2 = $this->getMock('\OCP\IGroup'); + $share2->setSharedWith($sharedWith2); + + $this->defaultProvider->method('getSharesByPath') + ->with($path) + ->willReturn([$share2]); + + $this->invokePrivate($this->manager, 'groupCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Link sharing not allowed + */ + public function testLinkCreateChecksNoLinkSharesAllowed() { + $share = new \OC\Share20\Share(); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'no'], + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Link shares can't have reshare permissions + */ + public function testLinkCreateChecksSharePermissions() { + $share = new \OC\Share20\Share(); + + $share->setPermissions(\OCP\Constants::PERMISSION_SHARE); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Link shares can't have delete permissions + */ + public function testLinkCreateChecksDeletePermissions() { + $share = new \OC\Share20\Share(); + + $share->setPermissions(\OCP\Constants::PERMISSION_DELETE); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'yes'], + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Public upload not allowed + */ + public function testLinkCreateChecksNoPublicUpload() { + $share = new \OC\Share20\Share(); + + $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'yes'], + ['core', 'shareapi_allow_public_upload', 'yes', 'no'] + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + + public function testLinkCreateChecksPublicUpload() { + $share = new \OC\Share20\Share(); + + $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'yes'], + ['core', 'shareapi_allow_public_upload', 'yes', 'yes'] + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + public function testLinkCreateChecksReadOnly() { + $share = new \OC\Share20\Share(); + + $share->setPermissions(\OCP\Constants::PERMISSION_READ); + + $this->config + ->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_allow_links', 'yes', 'yes'], + ['core', 'shareapi_allow_public_upload', 'yes', 'no'] + ])); + + $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Path contains files shared with you + */ + public function testPathCreateChecksContainsSharedMount() { + $path = $this->getMock('\OCP\Files\Folder'); + $path->method('getPath')->willReturn('path'); + + $mount = $this->getMock('\OCP\Files\Mount\IMountPoint'); + $storage = $this->getMock('\OCP\Files\Storage'); + $mount->method('getStorage')->willReturn($storage); + $storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(true); + + $this->mountManager->method('findIn')->with('path')->willReturn([$mount]); + + $this->invokePrivate($this->manager, 'pathCreateChecks', [$path]); + } + + public function testPathCreateChecksContainsNoSharedMount() { + $path = $this->getMock('\OCP\Files\Folder'); + $path->method('getPath')->willReturn('path'); + + $mount = $this->getMock('\OCP\Files\Mount\IMountPoint'); + $storage = $this->getMock('\OCP\Files\Storage'); + $mount->method('getStorage')->willReturn($storage); + $storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(false); + + $this->mountManager->method('findIn')->with('path')->willReturn([$mount]); + + $this->invokePrivate($this->manager, 'pathCreateChecks', [$path]); + } + + public function testPathCreateChecksContainsNoFolder() { + $path = $this->getMock('\OCP\Files\File'); + + $this->invokePrivate($this->manager, 'pathCreateChecks', [$path]); + } + + public function dataIsSharingDisabledForUser() { + $data = []; + + // No exclude groups + $data[] = ['no', null, null, null, false]; + + // empty exclude list, user no groups + $data[] = ['yes', '', json_encode(['']), [], false]; + + // empty exclude list, user groups + $data[] = ['yes', '', json_encode(['']), ['group1', 'group2'], false]; + + // Convert old list to json + $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), [], false]; + + // Old list partly groups in common + $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1', 'group3'], false]; + + // Old list only groups in common + $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1'], true]; + + // New list partly in common + $data[] = ['yes', json_encode(['group1', 'group2']), null, ['group1', 'group3'], false]; + + // New list only groups in common + $data[] = ['yes', json_encode(['group1', 'group2']), null, ['group2'], true]; + + return $data; + } + + /** + * @dataProvider dataIsSharingDisabledForUser + * + * @param string $excludeGroups + * @param string $groupList + * @param string $setList + * @param string[] $groupIds + * @param bool $expected + */ + public function testIsSharingDisabledForUser($excludeGroups, $groupList, $setList, $groupIds, $expected) { + $user = $this->getMock('\OCP\IUser'); + + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_exclude_groups', 'no', $excludeGroups], + ['core', 'shareapi_exclude_groups_list', '', $groupList], + ])); + + if ($setList !== null) { + $this->config->expects($this->once()) + ->method('setAppValue') + ->with('core', 'shareapi_exclude_groups_list', $setList); + } else { + $this->config->expects($this->never()) + ->method('setAppValue'); + } + + $this->groupManager->method('getUserGroupIds') + ->with($user) + ->willReturn($groupIds); + + $res = $this->manager->isSharingDisabledForUser($user); + $this->assertEquals($expected, $res); + } + + public function dataCanShare() { + $data = []; + + /* + * [expected, sharing enabled, disabled for user] + */ + + $data[] = [false, 'no', false]; + $data[] = [false, 'no', true]; + $data[] = [true, 'yes', false]; + $data[] = [false, 'yes', true]; + + return $data; + } + + /** + * @dataProvider dataCanShare + * + * @param bool $expected + * @param string $sharingEnabled + * @param bool $disabledForUser + */ + public function testCanShare($expected, $sharingEnabled, $disabledForUser) { + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_enabled', 'yes', $sharingEnabled], + ])); + + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods(['isSharingDisabledForUser']) + ->getMock(); + + $manager->method('isSharingDisabledForUser')->willReturn($disabledForUser); + + $user = $this->getMock('\OCP\IUser'); + $share = new \OC\Share20\Share(); + $share->setSharedBy($user); + + $res = $this->invokePrivate($manager, 'canShare', [$share]); + $this->assertEquals($expected, $res); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage The Share API is disabled + */ + public function testCreateShareCantShare() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods(['canShare']) + ->getMock(); + + $manager->expects($this->once())->method('canShare')->willReturn(false); + $share = new \OC\Share20\Share(); + $manager->createShare($share); + } + + public function testCreateShareUser() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks']) + ->getMock(); + + $sharedWith = $this->getMock('\OCP\IUser'); + $sharedBy = $this->getMock('\OCP\IUser'); + $shareOwner = $this->getMock('\OCP\IUser'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getOwner')->willReturn($shareOwner); + $path->method('getName')->willReturn('target'); + + $share = $this->createShare( + null, + \OCP\Share::SHARE_TYPE_USER, + $path, + $sharedWith, + $sharedBy, + null, + \OCP\Constants::PERMISSION_ALL); + + $manager->expects($this->once()) + ->method('canShare') + ->with($share) + ->willReturn(true); + $manager->expects($this->once()) + ->method('generalCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('userCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('pathCreateChecks') + ->with($path); + + $this->defaultProvider + ->expects($this->once()) + ->method('create') + ->with($share) + ->will($this->returnArgument(0)); + + $share->expects($this->once()) + ->method('setShareOwner') + ->with($shareOwner); + $share->expects($this->once()) + ->method('setTarget') + ->with('/target'); + + $manager->createShare($share); + } + + public function testCreateShareGroup() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods(['canShare', 'generalCreateChecks', 'groupCreateChecks', 'pathCreateChecks']) + ->getMock(); + + $sharedWith = $this->getMock('\OCP\IGroup'); + $sharedBy = $this->getMock('\OCP\IUser'); + $shareOwner = $this->getMock('\OCP\IUser'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getOwner')->willReturn($shareOwner); + $path->method('getName')->willReturn('target'); + + $share = $this->createShare( + null, + \OCP\Share::SHARE_TYPE_GROUP, + $path, + $sharedWith, + $sharedBy, + null, + \OCP\Constants::PERMISSION_ALL); + + $manager->expects($this->once()) + ->method('canShare') + ->with($share) + ->willReturn(true); + $manager->expects($this->once()) + ->method('generalCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('groupCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('pathCreateChecks') + ->with($path); + + $this->defaultProvider + ->expects($this->once()) + ->method('create') + ->with($share) + ->will($this->returnArgument(0)); + + $share->expects($this->once()) + ->method('setShareOwner') + ->with($shareOwner); + $share->expects($this->once()) + ->method('setTarget') + ->with('/target'); + + $manager->createShare($share); + } + + public function testCreateShareLink() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods([ + 'canShare', + 'generalCreateChecks', + 'linkCreateChecks', + 'pathCreateChecks', + 'validateExpiredate', + 'verifyPassword', + ]) + ->getMock(); + + $sharedBy = $this->getMock('\OCP\IUser'); + $sharedBy->method('getUID')->willReturn('sharedBy'); + $shareOwner = $this->getMock('\OCP\IUser'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getOwner')->willReturn($shareOwner); + $path->method('getName')->willReturn('target'); + $path->method('getId')->willReturn(1); + + $date = new \DateTime(); + + $share = $this->createShare( + null, + \OCP\Share::SHARE_TYPE_LINK, + $path, + null, + $sharedBy, + null, + \OCP\Constants::PERMISSION_ALL, + $date, + 'password'); + + $manager->expects($this->once()) + ->method('canShare') + ->with($share) + ->willReturn(true); + $manager->expects($this->once()) + ->method('generalCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('linkCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('pathCreateChecks') + ->with($path); + $manager->expects($this->once()) + ->method('validateExpiredate') + ->with($date) + ->will($this->returnArgument(0)); + $manager->expects($this->once()) + ->method('verifyPassword') + ->with('password'); + + $this->hasher->expects($this->once()) + ->method('hash') + ->with('password') + ->willReturn('hashed'); + + $this->secureRandom->method('getMediumStrengthGenerator') + ->will($this->returnSelf()); + $this->secureRandom->method('generate') + ->willReturn('token'); + + $this->defaultProvider + ->expects($this->once()) + ->method('create') + ->with($share) + ->will($this->returnArgument(0)); + + $share->expects($this->once()) + ->method('setShareOwner') + ->with($shareOwner); + $share->expects($this->once()) + ->method('setTarget') + ->with('/target'); + $share->expects($this->once()) + ->method('setExpirationDate') + ->with($date); + $share->expects($this->once()) + ->method('setPassword') + ->with('hashed'); + $share->method('getToken') + ->willReturn('token'); + + $hookListner = $this->getMockBuilder('Dummy')->setMethods(['pre', 'post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'pre'); + \OCP\Util::connectHook('OCP\Share', 'post_shared', $hookListner, 'post'); + + $hookListnerExpectsPre = [ + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_LINK, + 'uidOwner' => 'sharedBy', + 'permissions' => 31, + 'fileSource' => 1, + 'expiration' => $date, + 'token' => 'token', + 'run' => true, + 'error' => '', + ]; + + $hookListnerExpectsPost = [ + 'itemType' => 'file', + 'itemSource' => 1, + 'shareType' => \OCP\Share::SHARE_TYPE_LINK, + 'uidOwner' => 'sharedBy', + 'permissions' => 31, + 'fileSource' => 1, + 'expiration' => $date, + 'token' => 'token', + 'id' => 42, + ]; + + $share->method('getId')->willReturn(42); + + $hookListner->expects($this->once()) + ->method('pre') + ->with($this->equalTo($hookListnerExpectsPre)); + $hookListner->expects($this->once()) + ->method('post') + ->with($this->equalTo($hookListnerExpectsPost)); + + $manager->createShare($share); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage I won't let you share + */ + public function testCreateShareHookError() { + $manager = $this->getMockBuilder('\OC\Share20\Manager') + ->setConstructorArgs([ + $this->logger, + $this->config, + $this->defaultProvider, + $this->secureRandom, + $this->hasher, + $this->mountManager, + $this->groupManager, + $this->l, + ]) + ->setMethods([ + 'canShare', + 'generalCreateChecks', + 'userCreateChecks', + 'pathCreateChecks', + ]) + ->getMock(); + + $sharedWith = $this->getMock('\OCP\IUser'); + $sharedBy = $this->getMock('\OCP\IUser'); + $shareOwner = $this->getMock('\OCP\IUser'); + + $path = $this->getMock('\OCP\Files\File'); + $path->method('getOwner')->willReturn($shareOwner); + $path->method('getName')->willReturn('target'); + + $date = new \DateTime(); + + $share = $this->createShare( + null, + \OCP\Share::SHARE_TYPE_USER, + $path, + $sharedWith, + $sharedBy, + null, + \OCP\Constants::PERMISSION_ALL); + + $manager->expects($this->once()) + ->method('canShare') + ->with($share) + ->willReturn(true); + $manager->expects($this->once()) + ->method('generalCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('userCreateChecks') + ->with($share);; + $manager->expects($this->once()) + ->method('pathCreateChecks') + ->with($path); + + $share->expects($this->once()) + ->method('setShareOwner') + ->with($shareOwner); + $share->expects($this->once()) + ->method('setTarget') + ->with('/target'); + + $dummy = new DummyCreate(); + \OCP\Util::connectHook('OCP\Share', 'pre_shared', $dummy, 'listner'); + + $manager->createShare($share); + } } + +class DummyPassword { + public function listner($array) { + $array['accepted'] = false; + $array['message'] = 'password not accepted'; + } +} + +class DummyCreate { + public function listner($array) { + $array['run'] = false; + $array['error'] = 'I won\'t let you share!'; + } +} + diff --git a/tests/lib/streamwrappers.php b/tests/lib/streamwrappers.php index 9b097535280..7175683a60b 100644 --- a/tests/lib/streamwrappers.php +++ b/tests/lib/streamwrappers.php @@ -55,7 +55,7 @@ class Test_StreamWrappers extends \Test\TestCase { public function testCloseStream() { //ensure all basic stream stuff works $sourceFile = OC::$SERVERROOT . '/tests/data/lorem.txt'; - $tmpFile = OC_Helper::TmpFile('.txt'); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile('.txt'); $file = 'close://' . $tmpFile; $this->assertTrue(file_exists($file)); file_put_contents($file, file_get_contents($sourceFile)); @@ -65,7 +65,7 @@ class Test_StreamWrappers extends \Test\TestCase { $this->assertFalse(file_exists($file)); //test callback - $tmpFile = OC_Helper::TmpFile('.txt'); + $tmpFile = \OC::$server->getTempManager()->getTemporaryFile('.txt'); $file = 'close://' . $tmpFile; $actual = false; $callback = function($path) use (&$actual) { $actual = $path; }; diff --git a/tests/lib/tags.php b/tests/lib/tags.php index a8f59ff16e4..537c898da13 100644 --- a/tests/lib/tags.php +++ b/tests/lib/tags.php @@ -44,7 +44,7 @@ class Test_Tags extends \Test\TestCase { OC_User::clearBackends(); OC_User::useBackend('dummy'); $userId = $this->getUniqueID('user_'); - OC_User::createUser($userId, 'pass'); + \OC::$server->getUserManager()->createUser($userId, 'pass'); OC_User::setUserId($userId); $this->user = new OC\User\User($userId, null); $this->userSession = $this->getMock('\OCP\IUserSession'); @@ -290,7 +290,7 @@ class Test_Tags extends \Test\TestCase { $tagger->tagAs(1, $testTag); $otherUserId = $this->getUniqueID('user2_'); - OC_User::createUser($otherUserId, 'pass'); + \OC::$server->getUserManager()->createUser($otherUserId, 'pass'); OC_User::setUserId($otherUserId); $otherUserSession = $this->getMock('\OCP\IUserSession'); $otherUserSession diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php index 5d88fa08a6d..93b354863a9 100644 --- a/tests/lib/testcase.php +++ b/tests/lib/testcase.php @@ -33,7 +33,8 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { private $commandBus; /** @var IDBConnection */ - static private $realDatabase; + static protected $realDatabase = null; + static private $wasDatabaseAllowed = false; protected function getTestTraits() { $traits = []; @@ -52,7 +53,9 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { protected function setUp() { // detect database access + self::$wasDatabaseAllowed = true; if (!$this->IsDatabaseAccessAllowed()) { + self::$wasDatabaseAllowed = false; if (is_null(self::$realDatabase)) { self::$realDatabase = \OC::$server->getDatabaseConnection(); } @@ -92,6 +95,12 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { throw $hookExceptions[0]; } + // fail hard if xml errors have not been cleaned up + $errors = libxml_get_errors(); + libxml_clear_errors(); + $this->assertEquals([], $errors); + + // tearDown the traits $traits = $this->getTestTraits(); foreach ($traits as $trait) { $methodName = 'tearDown' . basename(str_replace('\\', '/', $trait)); @@ -149,12 +158,21 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { } public static function tearDownAfterClass() { + if (!self::$wasDatabaseAllowed && self::$realDatabase !== null) { + // in case an error is thrown in a test, PHPUnit jumps straight to tearDownAfterClass, + // so we need the database again + \OC::$server->registerService('DatabaseConnection', function () { + return self::$realDatabase; + }); + } $dataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data-autotest'); - $queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + if (self::$wasDatabaseAllowed && \OC::$server->getDatabaseConnection()) { + $queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); - self::tearDownAfterClassCleanShares($queryBuilder); - self::tearDownAfterClassCleanStorages($queryBuilder); - self::tearDownAfterClassCleanFileCache($queryBuilder); + self::tearDownAfterClassCleanShares($queryBuilder); + self::tearDownAfterClassCleanStorages($queryBuilder); + self::tearDownAfterClassCleanFileCache($queryBuilder); + } self::tearDownAfterClassCleanStrayDataFiles($dataDir); self::tearDownAfterClassCleanStrayHooks(); self::tearDownAfterClassCleanStrayLocks(); diff --git a/tests/lib/updater.php b/tests/lib/updater.php index 14ae3db3276..8ee77b9f81e 100644 --- a/tests/lib/updater.php +++ b/tests/lib/updater.php @@ -27,7 +27,7 @@ use OCP\ILogger; use OC\IntegrityCheck\Checker; class UpdaterTest extends \Test\TestCase { - /** @var IConfig */ + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; /** @var HTTPHelper */ private $httpHelper; @@ -66,7 +66,7 @@ class UpdaterTest extends \Test\TestCase { * @return string */ private function buildUpdateUrl($baseUrl) { - return $baseUrl . '?version='.implode('x', \OC_Util::getVersion()).'xinstalledatxlastupdatedatx'.\OC_Util::getChannel().'x'.\OC_Util::getEditionString().'x'; + return $baseUrl . '?version='.implode('x', \OCP\Util::getVersion()).'xinstalledatxlastupdatedatx'.\OC_Util::getChannel().'x'.\OC_Util::getEditionString().'x'; } /** @@ -136,9 +136,33 @@ class UpdaterTest extends \Test\TestCase { ['9.0.0.0', '8.0.0.0', '7.0', false], ['9.1.0.0', '8.0.0.0', '7.0', false], ['8.2.0.0', '8.1.0.0', '8.0', false], + + // With debug enabled + ['8.0.0.0', '8.2.0.0', '8.1', false, true], + ['8.1.0.0', '8.2.0.0', '8.1', true, true], + ['8.2.0.1', '8.2.0.1', '8.1', true, true], + ['8.3.0.0', '8.2.0.0', '8.1', true, true], ]; } + /** + * @dataProvider versionCompatibilityTestData + * + * @param string $oldVersion + * @param string $newVersion + * @param string $allowedVersion + * @param bool $result + * @param bool $debug + */ + public function testIsUpgradePossible($oldVersion, $newVersion, $allowedVersion, $result, $debug = false) { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->with('debug', false) + ->willReturn($debug); + + $this->assertSame($result, $this->updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersion)); + } + public function testSetSimulateStepEnabled() { $this->updater->setSimulateStepEnabled(true); $this->assertSame(true, $this->invokePrivate($this->updater, 'simulateStepEnabled')); @@ -160,18 +184,6 @@ class UpdaterTest extends \Test\TestCase { $this->assertSame(false, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable')); } - /** - * @dataProvider versionCompatibilityTestData - * - * @param string $oldVersion - * @param string $newVersion - * @param string $allowedVersion - * @param bool $result - */ - public function testIsUpgradePossible($oldVersion, $newVersion, $allowedVersion, $result) { - $this->assertSame($result, $this->updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersion)); - } - public function testCheckInCache() { $expectedResult = [ 'version' => '8.0.4.2', diff --git a/tests/lib/user.php b/tests/lib/user.php index bc1ba063c8f..c4c74cbc254 100644 --- a/tests/lib/user.php +++ b/tests/lib/user.php @@ -26,7 +26,7 @@ class User extends TestCase { parent::setUp(); $this->backend = $this->getMock('\Test\Util\User\Dummy'); - $manager = \OC_User::getManager(); + $manager = \OC::$server->getUserManager(); $manager->registerBackend($this->backend); } @@ -51,30 +51,5 @@ class User extends TestCase { $uid = \OC_User::checkPassword('foo', 'bar'); $this->assertEquals($uid, 'foo'); } - - public function testDeleteUser() { - $fail = \OC_User::deleteUser('victim'); - $this->assertFalse($fail); - - $success = \OC_User::createUser('victim', 'password'); - - $success = \OC_User::deleteUser('victim'); - $this->assertTrue($success); - } - - public function testCreateUser(){ - $this->backend->expects($this->any()) - ->method('implementsActions') - ->will($this->returnCallback(function ($actions) { - if ($actions === \OC_USER_BACKEND_CREATE_USER) { - return true; - } else { - return false; - } - })); - - $user = \OC_User::createUser('newuser', 'newpassword'); - $this->assertEquals('newuser', $user->getUid()); - } } diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php index d9dace2ef05..1c042dec9f0 100644 --- a/tests/lib/user/session.php +++ b/tests/lib/user/session.php @@ -12,6 +12,10 @@ namespace Test\User; use OC\Session\Memory; use OC\User\User; +/** + * @group DB + * @package Test\User + */ class Session extends \Test\TestCase { public function testGetUser() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); @@ -95,6 +99,8 @@ class Session extends \Test\TestCase { public function testLoginValidPasswordEnabled() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); + $session->expects($this->once()) + ->method('regenerateId'); $session->expects($this->exactly(2)) ->method('set') ->with($this->callback(function ($key) { @@ -148,6 +154,8 @@ class Session extends \Test\TestCase { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->never()) ->method('set'); + $session->expects($this->once()) + ->method('regenerateId'); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are @@ -179,10 +187,12 @@ class Session extends \Test\TestCase { $userSession->login('foo', 'bar'); } - public function testLoginInValidPassword() { + public function testLoginInvalidPassword() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->never()) ->method('set'); + $session->expects($this->once()) + ->method('regenerateId'); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are @@ -217,6 +227,8 @@ class Session extends \Test\TestCase { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->never()) ->method('set'); + $session->expects($this->once()) + ->method('regenerateId'); $manager = $this->getMock('\OC\User\Manager'); @@ -244,6 +256,8 @@ class Session extends \Test\TestCase { } }, 'foo')); + $session->expects($this->once()) + ->method('regenerateId'); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are @@ -292,6 +306,8 @@ class Session extends \Test\TestCase { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->never()) ->method('set'); + $session->expects($this->once()) + ->method('regenerateId'); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are @@ -334,6 +350,8 @@ class Session extends \Test\TestCase { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->never()) ->method('set'); + $session->expects($this->once()) + ->method('regenerateId'); $managerMethods = get_class_methods('\OC\User\Manager'); //keep following methods intact in order to ensure hooks are diff --git a/tests/lib/util.php b/tests/lib/util.php index fa559c17c80..cb5d28b48a7 100644 --- a/tests/lib/util.php +++ b/tests/lib/util.php @@ -8,7 +8,7 @@ */ class Test_Util extends \Test\TestCase { public function testGetVersion() { - $version = \OC_Util::getVersion(); + $version = \OCP\Util::getVersion(); $this->assertTrue(is_array($version)); foreach ($version as $num) { $this->assertTrue(is_int($num)); diff --git a/tests/lib/utilcheckserver.php b/tests/lib/utilcheckserver.php index a5ec529ff85..94e7fd2f779 100644 --- a/tests/lib/utilcheckserver.php +++ b/tests/lib/utilcheckserver.php @@ -37,7 +37,7 @@ class Test_Util_CheckServer extends \Test\TestCase { protected function setUp() { parent::setUp(); - $this->datadir = \OC_Helper::tmpFolder(); + $this->datadir = \OC::$server->getTempManager()->getTemporaryFolder(); file_put_contents($this->datadir . '/.ocdata', ''); \OC::$server->getSession()->set('checkServer_succeeded', false); @@ -123,7 +123,7 @@ class Test_Util_CheckServer extends \Test\TestCase { $result = \OC_Util::checkServer($this->getConfig(array( 'installed' => true, - 'version' => implode('.', OC_Util::getVersion()) + 'version' => implode('.', \OCP\Util::getVersion()) ))); $this->assertCount(1, $result); } @@ -134,7 +134,7 @@ class Test_Util_CheckServer extends \Test\TestCase { public function testDataDirWritable() { $result = \OC_Util::checkServer($this->getConfig(array( 'installed' => true, - 'version' => implode('.', OC_Util::getVersion()) + 'version' => implode('.', \OCP\Util::getVersion()) ))); $this->assertEmpty($result); } @@ -150,7 +150,7 @@ class Test_Util_CheckServer extends \Test\TestCase { chmod($this->datadir, 0300); $result = \OC_Util::checkServer($this->getConfig(array( 'installed' => true, - 'version' => implode('.', OC_Util::getVersion()) + 'version' => implode('.', \OCP\Util::getVersion()) ))); $this->assertCount(1, $result); } @@ -162,7 +162,7 @@ class Test_Util_CheckServer extends \Test\TestCase { chmod($this->datadir, 0300); $result = \OC_Util::checkServer($this->getConfig(array( 'installed' => false, - 'version' => implode('.', OC_Util::getVersion()) + 'version' => implode('.', \OCP\Util::getVersion()) ))); chmod($this->datadir, 0700); //needed for cleanup $this->assertEmpty($result); diff --git a/version.php b/version.php index ca90fdb3167..b8b1ad2b5fa 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ // We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades // between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel // when updating major/minor version number. -$OC_Version = array(9, 0, 0, 5); +$OC_Version = array(9, 0, 0, 6); // The human readable string $OC_VersionString = '9.0 pre alpha'; |