Merge branch 'master' into bugfix/fixed-get-filename-in-fileinfo

This commit is contained in:
hopleus 2024-02-29 16:16:57 +03:00 committed by GitHub
commit fefa3382e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
283 changed files with 1823 additions and 490 deletions

View File

@ -4,4 +4,4 @@ OC.L10N.register(
"Auditing / Logging" : "פיקוח / תיעוד",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "מספק יכולות תיעוד ל־Nextcloud כגון תיעוד גישה ליומן התיעוד או פעולות רגישות אחרות."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");

View File

@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "פיקוח / תיעוד",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "מספק יכולות תיעוד ל־Nextcloud כגון תיעוד גישה ליומן התיעוד או פעולות רגישות אחרות."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
},"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
}

View File

@ -9,6 +9,7 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함",
"{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
"Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
"Edit comment" : "댓글 편집",

View File

@ -7,6 +7,7 @@
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함",
"{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
"Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
"Edit comment" : "댓글 편집",

View File

@ -22,16 +22,23 @@
import { createClient } from 'webdav'
import { getRootPath } from '../utils/davUtils.js'
import { getRequestToken } from '@nextcloud/auth'
import { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
// init webdav client
const client = createClient(getRootPath(), {
headers: {
// Add this so the server knows it is an request from the browser
'X-Requested-With': 'XMLHttpRequest',
// Inject user auth
requesttoken: getRequestToken() ?? '',
},
})
const client = createClient(getRootPath())
// set CSRF token header
const setHeaders = (token) => {
client.setHeaders({
// Add this so the server knows it is an request from the browser
'X-Requested-With': 'XMLHttpRequest',
// Inject user auth
requesttoken: token ?? '',
})
}
// refresh headers when request token changes
onRequestTokenUpdate(setHeaders)
setHeaders(getRequestToken())
export default client

View File

@ -23,8 +23,8 @@
import { parseXML, type DAVResult, type FileStat, type ResponseDataDetailed } from 'webdav'
// https://github.com/perry-mitchell/webdav-client/issues/339
import { processResponsePayload } from '../../../../node_modules/webdav/dist/node/response.js'
import { prepareFileFromProps } from '../../../../node_modules/webdav/dist/node/tools/dav.js'
import { processResponsePayload } from 'webdav/dist/node/response.js'
import { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js'
import client from './DavClient.js'
export const DEFAULT_LIMIT = 20
@ -77,10 +77,8 @@ const getDirectoryFiles = function(
// Map all items to a consistent output structure (results)
return responseItems.map(item => {
// Each item should contain a stat object
const {
propstat: { prop: props },
} = item
const props = item.propstat!.prop!;
return prepareFileFromProps(props, props.id.toString(), isDetailed)
return prepareFileFromProps(props, props.id!.toString(), isDetailed)
})
}

View File

@ -21,4 +21,4 @@ OC.L10N.register(
"Hello" : "שלום",
"Hello, {name}" : "שלום, {name}"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");

View File

@ -18,5 +18,5 @@
"Good evening, {name}" : "ערב טוב, {name}",
"Hello" : "שלום",
"Hello, {name}" : "שלום, {name}"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
},"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
}

View File

@ -54,25 +54,14 @@ use OCP\IRequest;
*/
class DashboardApiController extends OCSController {
/** @var IManager */
private $dashboardManager;
/** @var IConfig */
private $config;
/** @var string|null */
private $userId;
public function __construct(
string $appName,
IRequest $request,
IManager $dashboardManager,
IConfig $config,
?string $userId
private IManager $dashboardManager,
private IConfig $config,
private ?string $userId,
) {
parent::__construct($appName, $request);
$this->dashboardManager = $dashboardManager;
$this->config = $config;
$this->userId = $userId;
}
/**

View File

@ -46,37 +46,17 @@ use OCP\IRequest;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class DashboardController extends Controller {
/** @var IInitialState */
private $initialState;
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var IManager */
private $dashboardManager;
/** @var IConfig */
private $config;
/** @var IL10N */
private $l10n;
/** @var string */
private $userId;
public function __construct(
string $appName,
IRequest $request,
IInitialState $initialState,
IEventDispatcher $eventDispatcher,
IManager $dashboardManager,
IConfig $config,
IL10N $l10n,
$userId
private IInitialState $initialState,
private IEventDispatcher $eventDispatcher,
private IManager $dashboardManager,
private IConfig $config,
private IL10N $l10n,
private ?string $userId
) {
parent::__construct($appName, $request);
$this->initialState = $initialState;
$this->eventDispatcher = $eventDispatcher;
$this->dashboardManager = $dashboardManager;
$this->config = $config;
$this->l10n = $l10n;
$this->userId = $userId;
}
/**

View File

@ -31,21 +31,15 @@ use OCP\IConfig;
use OCP\IRequest;
class LayoutApiController extends OCSController {
/** @var IConfig */
private $config;
/** @var string */
private $userId;
public function __construct(
string $appName,
IRequest $request,
IConfig $config,
$userId
private IConfig $config,
private ?string $userId,
) {
parent::__construct($appName, $request);
$this->config = $config;
$this->userId = $userId;
}
/**

View File

@ -95,6 +95,13 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
$server->on('propFind', [$this, 'propFindDefaultCalendarUrl'], 90);
$server->on('afterWriteContent', [$this, 'dispatchSchedulingResponses']);
$server->on('afterCreateFile', [$this, 'dispatchSchedulingResponses']);
// We allow mutating the default calendar URL through the CustomPropertiesBackend
// (oc_properties table)
$server->protectedProperties = array_filter(
$server->protectedProperties,
static fn (string $property) => $property !== self::SCHEDULE_DEFAULT_CALENDAR_URL,
);
}
/**

View File

@ -260,6 +260,7 @@ class Principal implements BackendInterface {
* @return int
*/
public function updatePrincipal($path, PropPatch $propPatch) {
// Updating schedule-default-calendar-URL is handled in CustomPropertiesBackend
return 0;
}

View File

@ -188,6 +188,7 @@ class ServerFactory {
$server->addPlugin(
new \Sabre\DAV\PropertyStorage\Plugin(
new \OCA\DAV\DAV\CustomPropertiesBackend(
$server,
$objectTree,
$this->databaseConnection,
$this->userSession->getUser()

View File

@ -6,6 +6,7 @@
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license AGPL-3.0
*
@ -31,11 +32,19 @@ use OCA\DAV\Connector\Sabre\FilesPlugin;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUser;
use Sabre\CalDAV\ICalendar;
use Sabre\DAV\Exception as DavException;
use Sabre\DAV\PropertyStorage\Backend\BackendInterface;
use Sabre\DAV\PropFind;
use Sabre\DAV\PropPatch;
use Sabre\DAV\Server;
use Sabre\DAV\Tree;
use Sabre\DAV\Xml\Property\Complex;
use Sabre\DAV\Xml\Property\Href;
use Sabre\DAV\Xml\Property\LocalHref;
use Sabre\Xml\ParseException;
use Sabre\Xml\Service as XmlService;
use function array_intersect;
class CustomPropertiesBackend implements BackendInterface {
@ -58,6 +67,11 @@ class CustomPropertiesBackend implements BackendInterface {
*/
public const PROPERTY_TYPE_OBJECT = 3;
/**
* Value is stored as a {DAV:}href string.
*/
public const PROPERTY_TYPE_HREF = 4;
/**
* Ignored properties
*
@ -105,6 +119,15 @@ class CustomPropertiesBackend implements BackendInterface {
*/
private const PUBLISHED_READ_ONLY_PROPERTIES = [
'{urn:ietf:params:xml:ns:caldav}calendar-availability',
'{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL',
];
/**
* Map of custom XML elements to parse when trying to deserialize an instance of
* \Sabre\DAV\Xml\Property\Complex to find a more specialized PROPERTY_TYPE_*
*/
private const COMPLEX_XML_ELEMENT_MAP = [
'{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => Href::class,
];
/**
@ -129,19 +152,29 @@ class CustomPropertiesBackend implements BackendInterface {
*/
private $userCache = [];
private Server $server;
private XmlService $xmlService;
/**
* @param Tree $tree node tree
* @param IDBConnection $connection database connection
* @param IUser $user owner of the tree and properties
*/
public function __construct(
Server $server,
Tree $tree,
IDBConnection $connection,
IUser $user,
) {
$this->server = $server;
$this->tree = $tree;
$this->connection = $connection;
$this->user = $user;
$this->xmlService = new XmlService();
$this->xmlService->elementMap = array_merge(
$this->xmlService->elementMap,
self::COMPLEX_XML_ELEMENT_MAP,
);
}
/**
@ -199,6 +232,21 @@ class CustomPropertiesBackend implements BackendInterface {
}
}
// substr of principals/users/ => path is a user principal
// two '/' => this a principal collection (and not some child object)
if (str_starts_with($path, 'principals/users/') && substr_count($path, '/') === 2) {
$allRequestedProps = $propFind->getRequestedProperties();
$customProperties = [
'{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL',
];
foreach ($customProperties as $customProperty) {
if (in_array($customProperty, $allRequestedProps, true)) {
$requestedProps[] = $customProperty;
}
}
}
if (empty($requestedProps)) {
return;
}
@ -211,9 +259,19 @@ class CustomPropertiesBackend implements BackendInterface {
// First fetch the published properties (set by another user), then get the ones set by
// the current user. If both are set then the latter as priority.
foreach ($this->getPublishedProperties($path, $requestedProps) as $propName => $propValue) {
try {
$this->validateProperty($path, $propName, $propValue);
} catch (DavException $e) {
continue;
}
$propFind->set($propName, $propValue);
}
foreach ($this->getUserProperties($path, $requestedProps) as $propName => $propValue) {
try {
$this->validateProperty($path, $propName, $propValue);
} catch (DavException $e) {
continue;
}
$propFind->set($propName, $propValue);
}
}
@ -264,6 +322,30 @@ class CustomPropertiesBackend implements BackendInterface {
$statement->closeCursor();
}
/**
* Validate the value of a property. Will throw if a value is invalid.
*
* @throws DavException The value of the property is invalid
*/
private function validateProperty(string $path, string $propName, mixed $propValue): void {
switch ($propName) {
case '{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL':
/** @var Href $propValue */
$href = $propValue->getHref();
if ($href === null) {
throw new DavException('Href is empty');
}
// $path is the principal here as this prop is only set on principals
$node = $this->tree->getNodeForPath($href);
if (!($node instanceof ICalendar) || $node->getOwner() !== $path) {
throw new DavException('No such calendar');
}
break;
}
}
/**
* @param string $path
* @param string[] $requestedProperties
@ -393,7 +475,11 @@ class CustomPropertiesBackend implements BackendInterface {
->executeStatement();
}
} else {
[$value, $valueType] = $this->encodeValueForDatabase($propertyValue);
[$value, $valueType] = $this->encodeValueForDatabase(
$path,
$propertyName,
$propertyValue,
);
$dbParameters['propertyValue'] = $value;
$dbParameters['valueType'] = $valueType;
@ -436,15 +522,38 @@ class CustomPropertiesBackend implements BackendInterface {
}
/**
* @param mixed $value
* @return array
* @throws ParseException If parsing a \Sabre\DAV\Xml\Property\Complex value fails
* @throws DavException If the property value is invalid
*/
private function encodeValueForDatabase($value): array {
private function encodeValueForDatabase(string $path, string $name, mixed $value): array {
// Try to parse a more specialized property type first
if ($value instanceof Complex) {
$xml = $this->xmlService->write($name, [$value], $this->server->getBaseUri());
$value = $this->xmlService->parse($xml, $this->server->getBaseUri()) ?? $value;
}
if ($name === '{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL') {
$value = $this->encodeDefaultCalendarUrl($value);
}
try {
$this->validateProperty($path, $name, $value);
} catch (DavException $e) {
throw new DavException(
"Property \"$name\" has an invalid value: " . $e->getMessage(),
0,
$e,
);
}
if (is_scalar($value)) {
$valueType = self::PROPERTY_TYPE_STRING;
} elseif ($value instanceof Complex) {
$valueType = self::PROPERTY_TYPE_XML;
$value = $value->getXml();
} elseif ($value instanceof Href) {
$valueType = self::PROPERTY_TYPE_HREF;
$value = $value->getHref();
} else {
$valueType = self::PROPERTY_TYPE_OBJECT;
$value = serialize($value);
@ -459,6 +568,8 @@ class CustomPropertiesBackend implements BackendInterface {
switch ($valueType) {
case self::PROPERTY_TYPE_XML:
return new Complex($value);
case self::PROPERTY_TYPE_HREF:
return new Href($value);
case self::PROPERTY_TYPE_OBJECT:
return unserialize($value);
case self::PROPERTY_TYPE_STRING:
@ -467,6 +578,26 @@ class CustomPropertiesBackend implements BackendInterface {
}
}
private function encodeDefaultCalendarUrl(Href $value): Href {
$href = $value->getHref();
if ($href === null) {
return $value;
}
if (!str_starts_with($href, '/')) {
return $value;
}
try {
// Build path relative to the dav base URI to be used later to find the node
$value = new LocalHref($this->server->calculateUri($href) . '/');
} catch (DavException\Forbidden) {
// Not existing calendars will be handled later when the value is validated
}
return $value;
}
private function createDeleteQuery(): IQueryBuilder {
$deleteQuery = $this->connection->getQueryBuilder();
$deleteQuery->delete('properties')

View File

@ -276,6 +276,7 @@ class Server {
$this->server->addPlugin(
new \Sabre\DAV\PropertyStorage\Plugin(
new CustomPropertiesBackend(
$this->server,
$this->server->tree,
\OC::$server->getDatabaseConnection(),
\OC::$server->getUserSession()->getUser()

View File

@ -19,21 +19,29 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import * as webdav from 'webdav'
import axios from '@nextcloud/axios'
import { createClient } from 'webdav'
import memoize from 'lodash/fp/memoize.js'
import { generateRemoteUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
export const getClient = memoize((service) => {
// Add this so the server knows it is an request from the browser
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
// init webdav client
const remote = generateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)
const client = createClient(remote)
// force our axios
const patcher = webdav.getPatcher()
patcher.patch('request', axios)
// set CSRF token header
const setHeaders = (token) => {
client.setHeaders({
// Add this so the server knows it is an request from the browser
'X-Requested-With': 'XMLHttpRequest',
// Inject user auth
requesttoken: token ?? '',
})
}
return webdav.createClient(
generateRemoteUrl(`dav/${service}/${getCurrentUser().uid}`)
)
// refresh headers when request token changes
onRequestTokenUpdate(setHeaders)
setHeaders(getRequestToken())
return client;
})

View File

@ -87,6 +87,7 @@ class CustomPropertiesBackendTest extends \Test\TestCase {
->willReturn($userId);
$this->plugin = new \OCA\DAV\DAV\CustomPropertiesBackend(
$this->server,
$this->tree,
\OC::$server->getDatabaseConnection(),
$this->user

View File

@ -8,6 +8,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@ -28,17 +29,29 @@
namespace OCA\DAV\Tests\DAV;
use OCA\DAV\DAV\CustomPropertiesBackend;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUser;
use Sabre\CalDAV\ICalendar;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\PropFind;
use Sabre\DAV\PropPatch;
use Sabre\DAV\Server;
use Sabre\DAV\Tree;
use Sabre\DAV\Xml\Property\Href;
use Sabre\DAVACL\IACL;
use Sabre\DAVACL\IPrincipal;
use Test\TestCase;
/**
* @group DB
*/
class CustomPropertiesBackendTest extends TestCase {
private const BASE_URI = '/remote.php/dav/';
/** @var Server | \PHPUnit\Framework\MockObject\MockObject */
private $server;
/** @var Tree | \PHPUnit\Framework\MockObject\MockObject */
private $tree;
@ -54,6 +67,9 @@ class CustomPropertiesBackendTest extends TestCase {
protected function setUp(): void {
parent::setUp();
$this->server = $this->createMock(Server::class);
$this->server->method('getBaseUri')
->willReturn(self::BASE_URI);
$this->tree = $this->createMock(Tree::class);
$this->user = $this->createMock(IUser::class);
$this->user->method('getUID')
@ -62,9 +78,10 @@ class CustomPropertiesBackendTest extends TestCase {
$this->dbConnection = \OC::$server->getDatabaseConnection();
$this->backend = new CustomPropertiesBackend(
$this->server,
$this->tree,
$this->dbConnection,
$this->user
$this->user,
);
}
@ -90,7 +107,13 @@ class CustomPropertiesBackendTest extends TestCase {
}
}
protected function insertProp(string $user, string $path, string $name, string $value) {
protected function insertProp(string $user, string $path, string $name, mixed $value) {
$type = CustomPropertiesBackend::PROPERTY_TYPE_STRING;
if ($value instanceof Href) {
$value = $value->getHref();
$type = CustomPropertiesBackend::PROPERTY_TYPE_HREF;
}
$query = $this->dbConnection->getQueryBuilder();
$query->insert('properties')
->values([
@ -98,13 +121,14 @@ class CustomPropertiesBackendTest extends TestCase {
'propertypath' => $query->createNamedParameter($this->formatPath($path)),
'propertyname' => $query->createNamedParameter($name),
'propertyvalue' => $query->createNamedParameter($value),
'valuetype' => $query->createNamedParameter($type, IQueryBuilder::PARAM_INT)
]);
$query->execute();
}
protected function getProps(string $user, string $path) {
$query = $this->dbConnection->getQueryBuilder();
$query->select('propertyname', 'propertyvalue')
$query->select('propertyname', 'propertyvalue', 'valuetype')
->from('properties')
->where($query->expr()->eq('userid', $query->createNamedParameter($user)))
->andWhere($query->expr()->eq('propertypath', $query->createNamedParameter($this->formatPath($path))));
@ -112,7 +136,11 @@ class CustomPropertiesBackendTest extends TestCase {
$result = $query->execute();
$data = [];
while ($row = $result->fetch()) {
$data[$row['propertyname']] = $row['propertyvalue'];
$value = $row['propertyvalue'];
if ((int)$row['valuetype'] === CustomPropertiesBackend::PROPERTY_TYPE_HREF) {
$value = new Href($value);
}
$data[$row['propertyname']] = $value;
}
$result->closeCursor();
@ -122,9 +150,10 @@ class CustomPropertiesBackendTest extends TestCase {
public function testPropFindNoDbCalls(): void {
$db = $this->createMock(IDBConnection::class);
$backend = new CustomPropertiesBackend(
$this->server,
$this->tree,
$db,
$this->user
$this->user,
);
$propFind = $this->createMock(PropFind::class);
@ -186,10 +215,169 @@ class CustomPropertiesBackendTest extends TestCase {
$this->assertEquals($props, $setProps);
}
public function testPropFindPrincipalCall(): void {
$this->tree->method('getNodeForPath')
->willReturnCallback(function ($uri) {
$node = $this->createMock(ICalendar::class);
$node->method('getOwner')
->willReturn('principals/users/dummy_user_42');
return $node;
});
$propFind = $this->createMock(PropFind::class);
$propFind->method('get404Properties')
->with()
->willReturn([
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
'{DAV:}getetag',
'{abc}def',
]);
$propFind->method('getRequestedProperties')
->with()
->willReturn([
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
'{DAV:}getetag',
'{abc}def',
'{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL',
]);
$props = [
'{abc}def' => 'a',
'{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('calendars/admin/personal'),
];
$this->insertProps('dummy_user_42', 'principals/users/dummy_user_42', $props);
$setProps = [];
$propFind->method('set')
->willReturnCallback(function ($name, $value, $status) use (&$setProps): void {
$setProps[$name] = $value;
});
$this->backend->propFind('principals/users/dummy_user_42', $propFind);
$this->assertEquals($props, $setProps);
}
public function propFindPrincipalScheduleDefaultCalendarProviderUrlProvider(): array {
// [ user, nodes, existingProps, requestedProps, returnedProps ]
return [
[ // Exists
'dummy_user_42',
['calendars/dummy_user_42/foo/' => ICalendar::class],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('calendars/dummy_user_42/foo/')],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL'],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('calendars/dummy_user_42/foo/')],
],
[ // Doesn't exist
'dummy_user_42',
['calendars/dummy_user_42/foo/' => ICalendar::class],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('calendars/dummy_user_42/bar/')],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL'],
[],
],
[ // No privilege
'dummy_user_42',
['calendars/user2/baz/' => ICalendar::class],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('calendars/user2/baz/')],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL'],
[],
],
[ // Not a calendar
'dummy_user_42',
['foo/dummy_user_42/bar/' => IACL::class],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('foo/dummy_user_42/bar/')],
['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL'],
[],
],
];
}
/**
* @dataProvider propFindPrincipalScheduleDefaultCalendarProviderUrlProvider
*/
public function testPropFindPrincipalScheduleDefaultCalendarUrl(
string $user,
array $nodes,
array $existingProps,
array $requestedProps,
array $returnedProps,
): void {
$propFind = $this->createMock(PropFind::class);
$propFind->method('get404Properties')
->with()
->willReturn([
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
'{DAV:}getetag',
]);
$propFind->method('getRequestedProperties')
->with()
->willReturn(array_merge([
'{DAV:}getcontentlength',
'{DAV:}getcontenttype',
'{DAV:}getetag',
'{abc}def',
],
$requestedProps,
));
$this->server->method('calculateUri')
->willReturnCallback(function ($uri) {
if (!str_starts_with($uri, self::BASE_URI)) {
return trim(substr($uri, strlen(self::BASE_URI)), '/');
}
return null;
});
$this->tree->method('getNodeForPath')
->willReturnCallback(function ($uri) use ($nodes) {
if (str_starts_with($uri, 'principals/')) {
return $this->createMock(IPrincipal::class);
}
if (array_key_exists($uri, $nodes)) {
$owner = explode('/', $uri)[1];
$node = $this->createMock($nodes[$uri]);
$node->method('getOwner')
->willReturn("principals/users/$owner");
return $node;
}
throw new NotFound('Node not found');
});
$this->insertProps($user, "principals/users/$user", $existingProps);
$setProps = [];
$propFind->method('set')
->willReturnCallback(function ($name, $value, $status) use (&$setProps): void {
$setProps[$name] = $value;
});
$this->backend->propFind("principals/users/$user", $propFind);
$this->assertEquals($returnedProps, $setProps);
}
/**
* @dataProvider propPatchProvider
*/
public function testPropPatch(string $path, array $existing, array $props, array $result): void {
$this->server->method('calculateUri')
->willReturnCallback(function ($uri) {
if (str_starts_with($uri, self::BASE_URI)) {
return trim(substr($uri, strlen(self::BASE_URI)), '/');
}
return null;
});
$this->tree->method('getNodeForPath')
->willReturnCallback(function ($uri) {
$node = $this->createMock(ICalendar::class);
$node->method('getOwner')
->willReturn('principals/users/' . $this->user->getUID());
return $node;
});
$this->insertProps($this->user->getUID(), $path, $existing);
$propPatch = new PropPatch($props);
@ -207,6 +395,8 @@ class CustomPropertiesBackendTest extends TestCase {
['foo_bar_path_1337', ['{DAV:}displayname' => 'foo'], ['{DAV:}displayname' => 'anything'], ['{DAV:}displayname' => 'anything']],
['foo_bar_path_1337', ['{DAV:}displayname' => 'foo'], ['{DAV:}displayname' => null], []],
[$longPath, [], ['{DAV:}displayname' => 'anything'], ['{DAV:}displayname' => 'anything']],
['principals/users/dummy_user_42', [], ['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('foo/bar/')], ['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('foo/bar/')]],
['principals/users/dummy_user_42', [], ['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href(self::BASE_URI . 'foo/bar/')], ['{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL' => new Href('foo/bar/')]],
];
}

View File

@ -42,6 +42,7 @@ OC.L10N.register(
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다",
"Enable recovery key" : "복구 키 활성화",
"Disable recovery key" : "복구 키 비활성화",
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "복구 키는 암호화된 파일에 대한 추가적 키 입니다. 암호를 잊은 상황에서 파일을 복구할 때 사용됩니다.",
"Recovery key password" : "복구 키 암호",
"Repeat recovery key password" : "복구 키 암호 확인",
"Change recovery key password:" : "복구 키 암호 변경:",

View File

@ -40,6 +40,7 @@
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다",
"Enable recovery key" : "복구 키 활성화",
"Disable recovery key" : "복구 키 비활성화",
"The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten." : "복구 키는 암호화된 파일에 대한 추가적 키 입니다. 암호를 잊은 상황에서 파일을 복구할 때 사용됩니다.",
"Recovery key password" : "복구 키 암호",
"Repeat recovery key password" : "복구 키 암호 확인",
"Change recovery key password:" : "복구 키 암호 변경:",

View File

@ -13,6 +13,7 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "クラウド共有リクエストが送信されました。招待が受信できます。通知を確認してください。",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "フェデレーション共有を確立できませんでした。連合するサーバーが古すぎますNextcloud <= 9。",
"It is not allowed to send federated group shares from this server." : "このサーバーからフェデレーショングループ共有を送信することはできません。",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "このアイテム %1$sはすでにアカウント %2$sと共有されているため、共有に失敗しました",
"Federated shares require read permissions" : "フェデレーション共有には読み取り権限が必要です",
"File is already shared with %s" : "ファイルはすでに %s と共有されています。",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s の共有に失敗しました。%2$s が見つかりませんでした。おそらくサーバーに接続できないか、自己証明書を使用しています。",

View File

@ -11,6 +11,7 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "クラウド共有リクエストが送信されました。招待が受信できます。通知を確認してください。",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "フェデレーション共有を確立できませんでした。連合するサーバーが古すぎますNextcloud <= 9。",
"It is not allowed to send federated group shares from this server." : "このサーバーからフェデレーショングループ共有を送信することはできません。",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "このアイテム %1$sはすでにアカウント %2$sと共有されているため、共有に失敗しました",
"Federated shares require read permissions" : "フェデレーション共有には読み取り権限が必要です",
"File is already shared with %s" : "ファイルはすでに %s と共有されています。",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s の共有に失敗しました。%2$s が見つかりませんでした。おそらくサーバーに接続できないか、自己証明書を使用しています。",

View File

@ -13,6 +13,8 @@ OC.L10N.register(
"Federated Share request sent, you will receive an invitation. Check your notifications." : "연합 공유 요청을 보냈으며 초대장을 받을 것입니다. 알림을 확인하십시오.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "연합 공유를 설정할 수 없습니다. 연합하려고 하는 서버가 너무 오래되었습니다(Nextcloud 9 이하).",
"It is not allowed to send federated group shares from this server." : "이 서버에서 연합 공유를 보낼 수 없습니다.",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s을(를) 공유할 수 없습니다. 이 항목을 이미 %2$s 계정과 공유하고 있습니다",
"Not allowed to create a federated share to the same account" : "같은 계정과 연합 공유를 만들 수 없음",
"Federated shares require read permissions" : "연합 공유는 읽기 권한이 필요합니다",
"File is already shared with %s" : "파일이 %s와(과) 이미 공유됨",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s 공유 실패. %2$s을(를) 찾을 수 없습니다. 서버에 접근할 수 없거나 자가 서명된 인증서를 사용하고 있을 수도 있습니다.",

View File

@ -11,6 +11,8 @@
"Federated Share request sent, you will receive an invitation. Check your notifications." : "연합 공유 요청을 보냈으며 초대장을 받을 것입니다. 알림을 확인하십시오.",
"Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "연합 공유를 설정할 수 없습니다. 연합하려고 하는 서버가 너무 오래되었습니다(Nextcloud 9 이하).",
"It is not allowed to send federated group shares from this server." : "이 서버에서 연합 공유를 보낼 수 없습니다.",
"Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s을(를) 공유할 수 없습니다. 이 항목을 이미 %2$s 계정과 공유하고 있습니다",
"Not allowed to create a federated share to the same account" : "같은 계정과 연합 공유를 만들 수 없음",
"Federated shares require read permissions" : "연합 공유는 읽기 권한이 필요합니다",
"File is already shared with %s" : "파일이 %s와(과) 이미 공유됨",
"Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "%1$s 공유 실패. %2$s을(를) 찾을 수 없습니다. 서버에 접근할 수 없거나 자가 서명된 인증서를 사용하고 있을 수도 있습니다.",

View File

@ -7,6 +7,9 @@ OC.L10N.register(
"Could not add server" : "서버를 추가할 수 없음",
"Trusted servers" : "신뢰할 수 있는 서버",
"Federation" : "연합",
"Federation allows you to connect with other trusted servers to exchange the account directory." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정 디렉토리를 교환할 수 있습니다.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정 디렉토리를 교환할 수 있습니다. 예를 들어, 연합 공유 시 외부 계정을 자동 완성하는 데 사용할 수 있습니다.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정의 디렉토리를 교환할 수 있습니다. 예를 들어, 연합 공유시 외부 계정을 자동 완성하는 데에 사용될 수 있습니다. 연합 공유를 생성하기 위해 특정 서버를 신뢰할 수 있는 서버에 반드시 추가할 필요는 없습니다.",
"+ Add trusted server" : "+ 신뢰할 수 있는 서버 추가",
"Trusted server" : "신뢰할 수 있는 서버",
"Add" : "추가",

View File

@ -5,6 +5,9 @@
"Could not add server" : "서버를 추가할 수 없음",
"Trusted servers" : "신뢰할 수 있는 서버",
"Federation" : "연합",
"Federation allows you to connect with other trusted servers to exchange the account directory." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정 디렉토리를 교환할 수 있습니다.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정 디렉토리를 교환할 수 있습니다. 예를 들어, 연합 공유 시 외부 계정을 자동 완성하는 데 사용할 수 있습니다.",
"Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 계정의 디렉토리를 교환할 수 있습니다. 예를 들어, 연합 공유시 외부 계정을 자동 완성하는 데에 사용될 수 있습니다. 연합 공유를 생성하기 위해 특정 서버를 신뢰할 수 있는 서버에 반드시 추가할 필요는 없습니다.",
"+ Add trusted server" : "+ 신뢰할 수 있는 서버 추가",
"Trusted server" : "신뢰할 수 있는 서버",
"Add" : "추가",

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(نسخ %n)",
"Move cancelled" : "تمّ إلغاء النقل",
"A file or folder with that name already exists in this folder" : "ملف أو مجلد بنفس ذاك الاسم موجود سلفاً في هذا المجلد",
"The files is locked" : "الملفات مقفله",
"The file does not exist anymore" : "الملف لم يعد موجوداً",
"Choose destination" : "إختَر المَقصِد",
"Copy to {target}" : "أُنسُخ إلى {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "البحث عن حساب",
"Choose" : "إختَر",
"No files or folders have been deleted yet" : "لم يتم حذف أي ملفات أو مجلدات بعدُ",
"Add" : "أضِف"
"Add" : "أضِف",
"The files is locked" : "الملفات مقفله"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(نسخ %n)",
"Move cancelled" : "تمّ إلغاء النقل",
"A file or folder with that name already exists in this folder" : "ملف أو مجلد بنفس ذاك الاسم موجود سلفاً في هذا المجلد",
"The files is locked" : "الملفات مقفله",
"The file does not exist anymore" : "الملف لم يعد موجوداً",
"Choose destination" : "إختَر المَقصِد",
"Copy to {target}" : "أُنسُخ إلى {target}",
@ -343,6 +342,7 @@
"Search for an account" : "البحث عن حساب",
"Choose" : "إختَر",
"No files or folders have been deleted yet" : "لم يتم حذف أي ملفات أو مجلدات بعدُ",
"Add" : "أضِف"
"Add" : "أضِف",
"The files is locked" : "الملفات مقفله"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}

View File

@ -91,9 +91,11 @@ OC.L10N.register(
"\"/\" is not allowed inside a file name." : "«/» ye un caráuter que nun ta permitíu nel nome del ficheru.",
"\"{name}\" is not an allowed filetype" : "«{name}» nun ye un tipu de ficheru permitíu",
"Storage of {owner} is full, files cannot be updated or synced anymore!" : "L'almacenamientu del usuariu «{owner}» ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "La carpeta del grupu «{mountPoint}» ta enllena, ¡yá nun se puen xubir nin sincronizar ficheros!",
"External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "L'almacenamientu esternu «{mountPoint}» ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Your storage is full, files cannot be updated or synced anymore!" : "El to almacenamientu ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "L'almacenamientu del usuariu «{owner}» ta cuasi enllén ({usedSpacePercent}%).",
"Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "La carpeta del grupu «{mountPoint}» ta cuasi enllena ({usedSpacePercent}%).",
"External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "L'almacenamientu esternu «{mountPoint}» ta cuasi enllén ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)." : "El to almacenamientu ta cuasi enllén ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["concasa con «{filter}»","concasen con «{filter}»"],
@ -117,6 +119,7 @@ OC.L10N.register(
"You added {file} to your favorites" : "Metiesti'l ficheru «{ficheru}» en Favoritos",
"You removed {file} from your favorites" : "Quitesti'l ficheru «{file}» de Favoritos",
"Favorites" : "Favoritos",
"File changes" : "Cambeos del ficheru",
"Created by {user}" : "Elementu creáu por {user}",
"Changed by {user}" : "Elementu camudáu por {user}",
"Deleted by {user}" : "Elementu desaniciáu por {user}",
@ -139,7 +142,17 @@ OC.L10N.register(
"{user} deleted an encrypted file in {file}" : "«{user}» desanició un ficheru cifráu de: {file}",
"You restored {file}" : "Restauresti {file}",
"{user} restored {file}" : "{user} restauró {file}",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Renomesti «{oldfile}» (elementu anubríu) a «{newfile}» (elementu anubríu)",
"You renamed {oldfile} (hidden) to {newfile}" : "Renomesti «{oldfile}» (elementu anubríu) a «{newfile}»",
"You renamed {oldfile} to {newfile} (hidden)" : "Renomesti «{oldfile}» a «{newfile}» (elementu anubríu)",
"You renamed {oldfile} to {newfile}" : "Renomesti «{oldfile}» a «{newfile}»",
"{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} renomó «{oldfile}» (elementu anubríu) a {newfile} (elementu anubríu)",
"{user} renamed {oldfile} (hidden) to {newfile}" : "{user} renomó {oldfile} (elementu anubríu) a {newfile}",
"{user} renamed {oldfile} to {newfile} (hidden)" : "{user} renomó {oldfile} a {newfile} (elementu anubríu)",
"{user} renamed {oldfile} to {newfile}" : "{user} renomó {oldfile} a {newfile}",
"You moved {oldfile} to {newfile}" : "Moviesti {oldfile} a {newfile}",
"A file or folder has been <strong>changed</strong>" : "Hai un ficheru o una carpeta que <strong>camudó</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Hai un ficheru o una carpeta de Favoritos que <strong>camudó</strong>",
"Accept" : "Aceptar",
"Reject" : "Refugar",
"Incoming ownership transfer from {user}" : "Recibióse una tresferencia de propiedá de: {user}",
@ -175,6 +188,8 @@ OC.L10N.register(
"Another entry with the same name already exists" : "Yá esiste otra entrada col mesmu nome",
"Renamed \"{oldName}\" to \"{newName}\"" : "Renomóse «{oldName}» a «{newName}»",
"Could not rename \"{oldName}\", it does not exist any more" : "Nun se pue renomar «{oldName}». Yá nun esiste",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nome «{newName}» yá ta n'usu na carpeta «{dir}». Escueyi otru nome.",
"Could not rename \"{oldName}\"" : "Nun se pudo renomar «{oldName}»",
"Total rows summary" : "Resume total de fieleres",
"Toggle selection for all files and folders" : "Alternar la seleición de tolos ficheros y toles carpetes",
"\"{displayName}\" failed on some elements " : "«{displauName}» falló con dalgún elementu",
@ -252,7 +267,6 @@ OC.L10N.register(
"(copy %n)" : "(copia %n)",
"Move cancelled" : "Anulóse la operación de mover",
"A file or folder with that name already exists in this folder" : "Nesta carpeta, yá estie un ficheru o una carpeta con esi nome",
"The files is locked" : "El ficheru ta bloquiáu",
"The file does not exist anymore" : "El ficheru yá nun esiste",
"Choose destination" : "Escoyer el destín",
"Copy to {target}" : "Copiar a {target}",
@ -322,6 +336,7 @@ OC.L10N.register(
"Search for an account" : "Buscar una cuenta",
"Choose" : "Escoyer",
"No files or folders have been deleted yet" : "Entá nun se desanició nengún ficheru nin carpeta",
"Add" : "Amestar"
"Add" : "Amestar",
"The files is locked" : "El ficheru ta bloquiáu"
},
"nplurals=2; plural=(n != 1);");

View File

@ -89,9 +89,11 @@
"\"/\" is not allowed inside a file name." : "«/» ye un caráuter que nun ta permitíu nel nome del ficheru.",
"\"{name}\" is not an allowed filetype" : "«{name}» nun ye un tipu de ficheru permitíu",
"Storage of {owner} is full, files cannot be updated or synced anymore!" : "L'almacenamientu del usuariu «{owner}» ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "La carpeta del grupu «{mountPoint}» ta enllena, ¡yá nun se puen xubir nin sincronizar ficheros!",
"External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "L'almacenamientu esternu «{mountPoint}» ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Your storage is full, files cannot be updated or synced anymore!" : "El to almacenamientu ta enllén. ¡Yá nun se puen xubir o sincronizar ficheros!",
"Storage of {owner} is almost full ({usedSpacePercent}%)." : "L'almacenamientu del usuariu «{owner}» ta cuasi enllén ({usedSpacePercent}%).",
"Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "La carpeta del grupu «{mountPoint}» ta cuasi enllena ({usedSpacePercent}%).",
"External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "L'almacenamientu esternu «{mountPoint}» ta cuasi enllén ({usedSpacePercent}%).",
"Your storage is almost full ({usedSpacePercent}%)." : "El to almacenamientu ta cuasi enllén ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["concasa con «{filter}»","concasen con «{filter}»"],
@ -115,6 +117,7 @@
"You added {file} to your favorites" : "Metiesti'l ficheru «{ficheru}» en Favoritos",
"You removed {file} from your favorites" : "Quitesti'l ficheru «{file}» de Favoritos",
"Favorites" : "Favoritos",
"File changes" : "Cambeos del ficheru",
"Created by {user}" : "Elementu creáu por {user}",
"Changed by {user}" : "Elementu camudáu por {user}",
"Deleted by {user}" : "Elementu desaniciáu por {user}",
@ -137,7 +140,17 @@
"{user} deleted an encrypted file in {file}" : "«{user}» desanició un ficheru cifráu de: {file}",
"You restored {file}" : "Restauresti {file}",
"{user} restored {file}" : "{user} restauró {file}",
"You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Renomesti «{oldfile}» (elementu anubríu) a «{newfile}» (elementu anubríu)",
"You renamed {oldfile} (hidden) to {newfile}" : "Renomesti «{oldfile}» (elementu anubríu) a «{newfile}»",
"You renamed {oldfile} to {newfile} (hidden)" : "Renomesti «{oldfile}» a «{newfile}» (elementu anubríu)",
"You renamed {oldfile} to {newfile}" : "Renomesti «{oldfile}» a «{newfile}»",
"{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} renomó «{oldfile}» (elementu anubríu) a {newfile} (elementu anubríu)",
"{user} renamed {oldfile} (hidden) to {newfile}" : "{user} renomó {oldfile} (elementu anubríu) a {newfile}",
"{user} renamed {oldfile} to {newfile} (hidden)" : "{user} renomó {oldfile} a {newfile} (elementu anubríu)",
"{user} renamed {oldfile} to {newfile}" : "{user} renomó {oldfile} a {newfile}",
"You moved {oldfile} to {newfile}" : "Moviesti {oldfile} a {newfile}",
"A file or folder has been <strong>changed</strong>" : "Hai un ficheru o una carpeta que <strong>camudó</strong>",
"A favorite file or folder has been <strong>changed</strong>" : "Hai un ficheru o una carpeta de Favoritos que <strong>camudó</strong>",
"Accept" : "Aceptar",
"Reject" : "Refugar",
"Incoming ownership transfer from {user}" : "Recibióse una tresferencia de propiedá de: {user}",
@ -173,6 +186,8 @@
"Another entry with the same name already exists" : "Yá esiste otra entrada col mesmu nome",
"Renamed \"{oldName}\" to \"{newName}\"" : "Renomóse «{oldName}» a «{newName}»",
"Could not rename \"{oldName}\", it does not exist any more" : "Nun se pue renomar «{oldName}». Yá nun esiste",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nome «{newName}» yá ta n'usu na carpeta «{dir}». Escueyi otru nome.",
"Could not rename \"{oldName}\"" : "Nun se pudo renomar «{oldName}»",
"Total rows summary" : "Resume total de fieleres",
"Toggle selection for all files and folders" : "Alternar la seleición de tolos ficheros y toles carpetes",
"\"{displayName}\" failed on some elements " : "«{displauName}» falló con dalgún elementu",
@ -250,7 +265,6 @@
"(copy %n)" : "(copia %n)",
"Move cancelled" : "Anulóse la operación de mover",
"A file or folder with that name already exists in this folder" : "Nesta carpeta, yá estie un ficheru o una carpeta con esi nome",
"The files is locked" : "El ficheru ta bloquiáu",
"The file does not exist anymore" : "El ficheru yá nun esiste",
"Choose destination" : "Escoyer el destín",
"Copy to {target}" : "Copiar a {target}",
@ -320,6 +334,7 @@
"Search for an account" : "Buscar una cuenta",
"Choose" : "Escoyer",
"No files or folders have been deleted yet" : "Entá nun se desanició nengún ficheru nin carpeta",
"Add" : "Amestar"
"Add" : "Amestar",
"The files is locked" : "El ficheru ta bloquiáu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(còpia %n)",
"Move cancelled" : "S'ha cancel·lat el desplaçament",
"A file or folder with that name already exists in this folder" : "Ja existeix un fitxer o carpeta amb aquest nom en aquesta carpeta",
"The files is locked" : "El fitxer està blocat",
"The file does not exist anymore" : "El fitxer ja no existeix",
"Choose destination" : "Trieu una destinació",
"Copy to {target}" : "Copia a {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Cerqueu un compte",
"Choose" : "Tria",
"No files or folders have been deleted yet" : "Encara no s'ha suprimit cap fitxer o carpeta",
"Add" : "Afegeix"
"Add" : "Afegeix",
"The files is locked" : "El fitxer està blocat"
},
"nplurals=2; plural=(n != 1);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(còpia %n)",
"Move cancelled" : "S'ha cancel·lat el desplaçament",
"A file or folder with that name already exists in this folder" : "Ja existeix un fitxer o carpeta amb aquest nom en aquesta carpeta",
"The files is locked" : "El fitxer està blocat",
"The file does not exist anymore" : "El fitxer ja no existeix",
"Choose destination" : "Trieu una destinació",
"Copy to {target}" : "Copia a {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Cerqueu un compte",
"Choose" : "Tria",
"No files or folders have been deleted yet" : "Encara no s'ha suprimit cap fitxer o carpeta",
"Add" : "Afegeix"
"Add" : "Afegeix",
"The files is locked" : "El fitxer està blocat"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -255,7 +255,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "V oné složce se už daný soubor/složka nachází",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Není možné přesunout soubor/složku do sebe samé nebo do své vlastní podložky",
"A file or folder with that name already exists in this folder" : "V této složce už existuje stejnojmenný soubor či složka",
"The files is locked" : "Soubory jsou uzamčené",
"The file does not exist anymore" : "Soubor už neexistuje",
"Choose destination" : "Vyberte cíl",
"Copy to {target}" : "Zkopírovat do {target}",
@ -319,6 +318,7 @@ OC.L10N.register(
"Search for an account" : "Hledat účet",
"Choose" : "Vybrat",
"No files or folders have been deleted yet" : "Zatím nebyly smazány žádné soubory či složky",
"Add" : "Přidat"
"Add" : "Přidat",
"The files is locked" : "Soubory jsou uzamčené"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");

View File

@ -253,7 +253,6 @@
"This file/folder is already in that directory" : "V oné složce se už daný soubor/složka nachází",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Není možné přesunout soubor/složku do sebe samé nebo do své vlastní podložky",
"A file or folder with that name already exists in this folder" : "V této složce už existuje stejnojmenný soubor či složka",
"The files is locked" : "Soubory jsou uzamčené",
"The file does not exist anymore" : "Soubor už neexistuje",
"Choose destination" : "Vyberte cíl",
"Copy to {target}" : "Zkopírovat do {target}",
@ -317,6 +316,7 @@
"Search for an account" : "Hledat účet",
"Choose" : "Vybrat",
"No files or folders have been deleted yet" : "Zatím nebyly smazány žádné soubory či složky",
"Add" : "Přidat"
"Add" : "Přidat",
"The files is locked" : "Soubory jsou uzamčené"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}

View File

@ -244,7 +244,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Filen/mappen er allerede i denne mappe",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe ind i sig selv, eller til en mappe inden i sig selv",
"A file or folder with that name already exists in this folder" : "En fil eller mappe med det navn findes allerede i denne mappe",
"The files is locked" : "Filerne er låste",
"The file does not exist anymore" : "Filen findes ikke længere",
"Copy to {target}" : "Kopiér til {target}",
"Move to {target}" : "Flyt til {target}",
@ -305,6 +304,7 @@ OC.L10N.register(
"Search for an account" : "Søg efter en konto",
"Choose" : "Vælg",
"No files or folders have been deleted yet" : "Ingen filer eller mappe er slettet endnu",
"Add" : "Tilføj"
"Add" : "Tilføj",
"The files is locked" : "Filerne er låste"
},
"nplurals=2; plural=(n != 1);");

View File

@ -242,7 +242,6 @@
"This file/folder is already in that directory" : "Filen/mappen er allerede i denne mappe",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan ikke flytte en fil/mappe ind i sig selv, eller til en mappe inden i sig selv",
"A file or folder with that name already exists in this folder" : "En fil eller mappe med det navn findes allerede i denne mappe",
"The files is locked" : "Filerne er låste",
"The file does not exist anymore" : "Filen findes ikke længere",
"Copy to {target}" : "Kopiér til {target}",
"Move to {target}" : "Flyt til {target}",
@ -303,6 +302,7 @@
"Search for an account" : "Søg efter en konto",
"Choose" : "Vælg",
"No files or folders have been deleted yet" : "Ingen filer eller mappe er slettet endnu",
"Add" : "Tilføj"
"Add" : "Tilføj",
"The files is locked" : "Filerne er låste"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -251,7 +251,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden.",
"A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
"The files is locked" : "Die Datei ist gesperrt",
"The file does not exist anymore" : "Die Datei existiert nicht mehr",
"Copy to {target}" : "Nach {target} kopieren",
"Move to {target}" : "Nach {target} verschieben",
@ -314,6 +313,7 @@ OC.L10N.register(
"Search for an account" : "Nach einem Konto suchen",
"Choose" : "Auswählen",
"No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
"Add" : "Hinzufügen"
"Add" : "Hinzufügen",
"The files is locked" : "Die Datei ist gesperrt"
},
"nplurals=2; plural=(n != 1);");

View File

@ -249,7 +249,6 @@
"This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden.",
"A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
"The files is locked" : "Die Datei ist gesperrt",
"The file does not exist anymore" : "Die Datei existiert nicht mehr",
"Copy to {target}" : "Nach {target} kopieren",
"Move to {target}" : "Nach {target} verschieben",
@ -312,6 +311,7 @@
"Search for an account" : "Nach einem Konto suchen",
"Choose" : "Auswählen",
"No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
"Add" : "Hinzufügen"
"Add" : "Hinzufügen",
"The files is locked" : "Die Datei ist gesperrt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(%n kopieren)",
"Move cancelled" : "Verschieben abgebrochen",
"A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
"The files is locked" : "Die Datei ist gesperrt",
"The file does not exist anymore" : "Diese Datei existiert nicht mehr",
"Choose destination" : "Ziel wählen",
"Copy to {target}" : "Nach {target} kopieren",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Nach einem Konto suchen",
"Choose" : "Auswählen",
"No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
"Add" : "Hinzufügen"
"Add" : "Hinzufügen",
"The files is locked" : "Die Datei ist gesperrt"
},
"nplurals=2; plural=(n != 1);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(%n kopieren)",
"Move cancelled" : "Verschieben abgebrochen",
"A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
"The files is locked" : "Die Datei ist gesperrt",
"The file does not exist anymore" : "Diese Datei existiert nicht mehr",
"Choose destination" : "Ziel wählen",
"Copy to {target}" : "Nach {target} kopieren",
@ -343,6 +342,7 @@
"Search for an account" : "Nach einem Konto suchen",
"Choose" : "Auswählen",
"No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
"Add" : "Hinzufügen"
"Add" : "Hinzufügen",
"The files is locked" : "Die Datei ist gesperrt"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -250,7 +250,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Αυτό το αρχείο/φάκελος βρίσκεται ήδη σε αυτόν τον κατάλογο",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Δεν μπορείτε να μετακινήσετε ένα αρχείο/φάκελο στον εαυτό του ή σε έναν υποφάκελο του ίδιου του φακέλου.",
"A file or folder with that name already exists in this folder" : "Ένα αρχείο ή ένας φάκελος με αυτό το όνομα υπάρχει ήδη σε αυτόν το φάκελο",
"The files is locked" : "Το αρχείο είναι κλειδωμένο",
"The file does not exist anymore" : "Το αρχείο δεν υπάρχει πλέον",
"Choose destination" : "Επιλέξτε προορισμό",
"Copy to {target}" : "Αντιγραφή σε {target}",
@ -312,6 +311,7 @@ OC.L10N.register(
"Search for an account" : "Αναζήτηση για λογαριασμό",
"Choose" : "Επιλογή",
"No files or folders have been deleted yet" : "Κανένα αρχείο ή φάκελος δεν έχει διαγραφεί ακόμα",
"Add" : "Προσθήκη"
"Add" : "Προσθήκη",
"The files is locked" : "Το αρχείο είναι κλειδωμένο"
},
"nplurals=2; plural=(n != 1);");

View File

@ -248,7 +248,6 @@
"This file/folder is already in that directory" : "Αυτό το αρχείο/φάκελος βρίσκεται ήδη σε αυτόν τον κατάλογο",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Δεν μπορείτε να μετακινήσετε ένα αρχείο/φάκελο στον εαυτό του ή σε έναν υποφάκελο του ίδιου του φακέλου.",
"A file or folder with that name already exists in this folder" : "Ένα αρχείο ή ένας φάκελος με αυτό το όνομα υπάρχει ήδη σε αυτόν το φάκελο",
"The files is locked" : "Το αρχείο είναι κλειδωμένο",
"The file does not exist anymore" : "Το αρχείο δεν υπάρχει πλέον",
"Choose destination" : "Επιλέξτε προορισμό",
"Copy to {target}" : "Αντιγραφή σε {target}",
@ -310,6 +309,7 @@
"Search for an account" : "Αναζήτηση για λογαριασμό",
"Choose" : "Επιλογή",
"No files or folders have been deleted yet" : "Κανένα αρχείο ή φάκελος δεν έχει διαγραφεί ακόμα",
"Add" : "Προσθήκη"
"Add" : "Προσθήκη",
"The files is locked" : "Το αρχείο είναι κλειδωμένο"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(copy %n)",
"Move cancelled" : "Move cancelled",
"A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
"The files is locked" : "The files is locked",
"The file does not exist anymore" : "The file does not exist anymore",
"Choose destination" : "Choose destination",
"Copy to {target}" : "Copy to {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Search for an account",
"Choose" : "Choose",
"No files or folders have been deleted yet" : "No files or folders have been deleted yet",
"Add" : "Add"
"Add" : "Add",
"The files is locked" : "The files is locked"
},
"nplurals=2; plural=(n != 1);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(copy %n)",
"Move cancelled" : "Move cancelled",
"A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
"The files is locked" : "The files is locked",
"The file does not exist anymore" : "The file does not exist anymore",
"Choose destination" : "Choose destination",
"Copy to {target}" : "Copy to {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Search for an account",
"Choose" : "Choose",
"No files or folders have been deleted yet" : "No files or folders have been deleted yet",
"Add" : "Add"
"Add" : "Add",
"The files is locked" : "The files is locked"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -38,6 +38,9 @@ OC.L10N.register(
"Edit locally" : "Editar localmente",
"Open" : "Abrir",
"_Delete file_::_Delete files_" : ["Eliminar archivo","Eliminar archivos","Eliminar archivos"],
"_Delete folder_::_Delete folders_" : ["Eliminar carpeta","Eliminar carpetas","Eliminar carpetas"],
"_Disconnect storage_::_Disconnect storages_" : ["Desconectar almacenamiento","Desconectar almacenamientos","Desconectar almacenamientos"],
"_Leave this share_::_Leave these shares_" : ["Abandonar este recurso compartido","Abandonar estos recursos compartidos","Abandonar estos recursos compartidos"],
"Could not load info for file \"{file}\"" : "No se ha podido cargar información para el archivo \"{file}\"",
"Files" : "Archivos",
"Details" : "Detalles",
@ -98,10 +101,12 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)." : "Tu almacenamiento está casi lleno ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["coinciden \"{filter}\"","coincide \"{filter}\"","coincide \"{filter}\""],
"View in folder" : "Ver en carpeta",
"Direct link was copied (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"Path" : "Ruta",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Favorited" : "Agregado a favoritos",
"Favorite" : "Favorito",
"Copy direct link (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"New folder" : "Nueva carpeta",
"Create new folder" : "Crear carpeta nueva",
"Upload file" : "Subir archivo",
@ -122,6 +127,7 @@ OC.L10N.register(
"Restored by {user}" : "Restaurado por {user}",
"Renamed by {user}" : "Renombrado por {user}",
"Moved by {user}" : "Movido por {user}",
"\"remote account\"" : "\"cuenta remota\"",
"You created {file}" : "Ha creado {file}",
"You created an encrypted file in {file}" : "Has creado un archivo cifrado en {file}",
"{user} created {file}" : "{user} ha creado {file}",
@ -169,6 +175,8 @@ OC.L10N.register(
"Drag and drop files here to upload" : "Arrastre y suelte archivos aquí para subirlos",
"Your have used your space quota and cannot upload files anymore" : "Ha utilizado su cuota de espacio y ya no puede subir más archivos",
"You dont have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"Some files could not be uploaded" : "No se pudieron subir algunos archivos",
"Files uploaded successfully" : "Se subieron los archivos exitosamente",
"\"{displayName}\" action executed successfully" : "la acción \"{displayName}\" se ejecutó exitósamente",
"\"{displayName}\" action failed" : "la acción \"{displayName}\" falló",
"Toggle selection for file \"{displayName}\"" : "Alternar selección para archivo \"{displayName}\"",
@ -201,6 +209,7 @@ OC.L10N.register(
"Could not refresh storage stats" : "No fue posible refrescar las estadísticas de almacenamiento",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡Ya no se pueden subir ni sincronizarse más archivos!",
"Create" : "Crear",
"A file or folder with that name already exists." : "Un archivo o carpeta con ese nombre ya existe.",
"Transfer ownership of a file or folder" : "Transferir la propiedad de un archivo o carpeta",
"Choose file or folder to transfer" : "Elegir archivo o carpeta para transferir",
"Change" : "Cambiar",
@ -254,15 +263,17 @@ OC.L10N.register(
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
"Delete permanently" : "Eliminar de forma permanente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
"Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una sub-carpeta de sí mismo",
"(copy)" : "(copiar)",
"(copy %n)" : "(copiar %n)",
"Move cancelled" : "Se canceló la movida",
"A file or folder with that name already exists in this folder" : "Un archivo o carpeta con ese nombre ya existe en esta carpeta",
"The files is locked" : "El archivo está bloqueado",
"The file does not exist anymore" : "El archivo ya no existe",
"Choose destination" : "Elegir destino",
"Copy to {target}" : "Copiar a {target}",
@ -272,6 +283,7 @@ OC.L10N.register(
"Open folder {displayName}" : "Abrir carpeta {displayName}",
"Open in Files" : "Abrir en Archivos",
"Open details" : "Abrir detalles",
"An error occurred while uploading. Please try again later." : "Ocurrió un error mientras se hacía la subida. Por favor, inténtelo de nuevo más tarde.",
"Could not copy {file}. {message}" : "No se pudo copiar {file}. {message}",
"Could not move {file}. {message}" : "No se pudo mover {file}. {message}",
"Created new folder \"{name}\"" : "Se creó la carpeta nueva \"{name}\"",
@ -279,6 +291,7 @@ OC.L10N.register(
"Unable to initialize the templates directory" : "No se ha podido iniciar la carpeta de plantillas",
"Create new templates folder" : "Crear nueva carpeta de plantillas",
"Templates" : "Plantillas",
"New template folder" : "Nueva carpeta de plantillas",
"One of the dropped files could not be processed" : "Uno de los archivos arrastrados no puede ser procesado",
"Uploading \"{filename}\" failed" : "La subida de \"{filename}\" falló",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"],
@ -291,6 +304,10 @@ OC.L10N.register(
"Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos",
"All files" : "Todos los archivos",
"List of your files and folders." : "Lista de sus archivos y carpetas.",
"Personal Files" : "Archivos Personales",
"List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.",
"No personal files found" : "No se encontraron archivos personales",
"Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.",
"List of recently modified files and folders." : "Lista de archivos y carpetas modificados recientemente.",
"No recently modified files" : "No hay archivos modificados recientemente.",
"Files and folders you recently modified will show up here." : "Los archivos y carpetas que ha modificado recientemente aparecerán aquí.",
@ -327,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Buscar una cuenta",
"Choose" : "Seleccione",
"No files or folders have been deleted yet" : "No se han borrado archivos o carpetas todavía",
"Add" : "Añadir"
"Add" : "Añadir",
"The files is locked" : "El archivo está bloqueado"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@ -36,6 +36,9 @@
"Edit locally" : "Editar localmente",
"Open" : "Abrir",
"_Delete file_::_Delete files_" : ["Eliminar archivo","Eliminar archivos","Eliminar archivos"],
"_Delete folder_::_Delete folders_" : ["Eliminar carpeta","Eliminar carpetas","Eliminar carpetas"],
"_Disconnect storage_::_Disconnect storages_" : ["Desconectar almacenamiento","Desconectar almacenamientos","Desconectar almacenamientos"],
"_Leave this share_::_Leave these shares_" : ["Abandonar este recurso compartido","Abandonar estos recursos compartidos","Abandonar estos recursos compartidos"],
"Could not load info for file \"{file}\"" : "No se ha podido cargar información para el archivo \"{file}\"",
"Files" : "Archivos",
"Details" : "Detalles",
@ -96,10 +99,12 @@
"Your storage is almost full ({usedSpacePercent}%)." : "Tu almacenamiento está casi lleno ({usedSpacePercent}%).",
"_matches \"{filter}\"_::_match \"{filter}\"_" : ["coinciden \"{filter}\"","coincide \"{filter}\"","coincide \"{filter}\""],
"View in folder" : "Ver en carpeta",
"Direct link was copied (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"Path" : "Ruta",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Favorited" : "Agregado a favoritos",
"Favorite" : "Favorito",
"Copy direct link (only works for people who have access to this file/folder)" : "El enlace directo fue copiado (solo funciona para usuarios que tienen acceso a este archivo/carpeta)",
"New folder" : "Nueva carpeta",
"Create new folder" : "Crear carpeta nueva",
"Upload file" : "Subir archivo",
@ -120,6 +125,7 @@
"Restored by {user}" : "Restaurado por {user}",
"Renamed by {user}" : "Renombrado por {user}",
"Moved by {user}" : "Movido por {user}",
"\"remote account\"" : "\"cuenta remota\"",
"You created {file}" : "Ha creado {file}",
"You created an encrypted file in {file}" : "Has creado un archivo cifrado en {file}",
"{user} created {file}" : "{user} ha creado {file}",
@ -167,6 +173,8 @@
"Drag and drop files here to upload" : "Arrastre y suelte archivos aquí para subirlos",
"Your have used your space quota and cannot upload files anymore" : "Ha utilizado su cuota de espacio y ya no puede subir más archivos",
"You dont have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí",
"Some files could not be uploaded" : "No se pudieron subir algunos archivos",
"Files uploaded successfully" : "Se subieron los archivos exitosamente",
"\"{displayName}\" action executed successfully" : "la acción \"{displayName}\" se ejecutó exitósamente",
"\"{displayName}\" action failed" : "la acción \"{displayName}\" falló",
"Toggle selection for file \"{displayName}\"" : "Alternar selección para archivo \"{displayName}\"",
@ -199,6 +207,7 @@
"Could not refresh storage stats" : "No fue posible refrescar las estadísticas de almacenamiento",
"Your storage is full, files can not be updated or synced anymore!" : "Su almacenamiento está lleno, ¡Ya no se pueden subir ni sincronizarse más archivos!",
"Create" : "Crear",
"A file or folder with that name already exists." : "Un archivo o carpeta con ese nombre ya existe.",
"Transfer ownership of a file or folder" : "Transferir la propiedad de un archivo o carpeta",
"Choose file or folder to transfer" : "Elegir archivo o carpeta para transferir",
"Change" : "Cambiar",
@ -252,15 +261,17 @@
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
"Delete permanently" : "Eliminar de forma permanente",
"Delete and unshare" : "Eliminar y dejar de compartir",
"You are about to delete {count} items." : "Está a punto de eliminar {count} ítems.",
"Confirm deletion" : "Confirmar eliminación",
"Cancel" : "Cancelar",
"Deletion cancelled" : "Eliminación cancelada",
"Destination is not a folder" : "El destino no es una carpeta",
"This file/folder is already in that directory" : "Este archivo/carpeta ya está en ese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "No puede mover un archivo/carpeta a sí mismo o a una sub-carpeta de sí mismo",
"(copy)" : "(copiar)",
"(copy %n)" : "(copiar %n)",
"Move cancelled" : "Se canceló la movida",
"A file or folder with that name already exists in this folder" : "Un archivo o carpeta con ese nombre ya existe en esta carpeta",
"The files is locked" : "El archivo está bloqueado",
"The file does not exist anymore" : "El archivo ya no existe",
"Choose destination" : "Elegir destino",
"Copy to {target}" : "Copiar a {target}",
@ -270,6 +281,7 @@
"Open folder {displayName}" : "Abrir carpeta {displayName}",
"Open in Files" : "Abrir en Archivos",
"Open details" : "Abrir detalles",
"An error occurred while uploading. Please try again later." : "Ocurrió un error mientras se hacía la subida. Por favor, inténtelo de nuevo más tarde.",
"Could not copy {file}. {message}" : "No se pudo copiar {file}. {message}",
"Could not move {file}. {message}" : "No se pudo mover {file}. {message}",
"Created new folder \"{name}\"" : "Se creó la carpeta nueva \"{name}\"",
@ -277,6 +289,7 @@
"Unable to initialize the templates directory" : "No se ha podido iniciar la carpeta de plantillas",
"Create new templates folder" : "Crear nueva carpeta de plantillas",
"Templates" : "Plantillas",
"New template folder" : "Nueva carpeta de plantillas",
"One of the dropped files could not be processed" : "Uno de los archivos arrastrados no puede ser procesado",
"Uploading \"{filename}\" failed" : "La subida de \"{filename}\" falló",
"_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetas","{folderCount} carpetas"],
@ -289,6 +302,10 @@
"Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que has marcado como favoritos",
"All files" : "Todos los archivos",
"List of your files and folders." : "Lista de sus archivos y carpetas.",
"Personal Files" : "Archivos Personales",
"List of your files and folders that are not shared." : "Lista de sus archivos y carpetas que no están compartidos.",
"No personal files found" : "No se encontraron archivos personales",
"Files that are not shared will show up here." : "Los archivos y carpetas que no ha compartido aparecerán aquí.",
"List of recently modified files and folders." : "Lista de archivos y carpetas modificados recientemente.",
"No recently modified files" : "No hay archivos modificados recientemente.",
"Files and folders you recently modified will show up here." : "Los archivos y carpetas que ha modificado recientemente aparecerán aquí.",
@ -325,6 +342,7 @@
"Search for an account" : "Buscar una cuenta",
"Choose" : "Seleccione",
"No files or folders have been deleted yet" : "No se han borrado archivos o carpetas todavía",
"Add" : "Añadir"
"Add" : "Añadir",
"The files is locked" : "El archivo está bloqueado"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@ -273,7 +273,6 @@ OC.L10N.register(
"(copy)" : "(copiar)",
"(copy %n)" : "(copiar %n)",
"A file or folder with that name already exists in this folder" : "Un archivo o carpeta con ese nombre ya existe en esta carpeta",
"The files is locked" : "El archivo está bloqueado",
"The file does not exist anymore" : "El archivo ya no existe",
"Choose destination" : "Elegir destino",
"Copy to {target}" : "Copiar a {target}",
@ -344,6 +343,7 @@ OC.L10N.register(
"Search for an account" : "Buscar una cuenta",
"Choose" : "Seleccionar",
"No files or folders have been deleted yet" : "No se han eliminado archivos o carpetas todavía",
"Add" : "Guardar"
"Add" : "Guardar",
"The files is locked" : "El archivo está bloqueado"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@ -271,7 +271,6 @@
"(copy)" : "(copiar)",
"(copy %n)" : "(copiar %n)",
"A file or folder with that name already exists in this folder" : "Un archivo o carpeta con ese nombre ya existe en esta carpeta",
"The files is locked" : "El archivo está bloqueado",
"The file does not exist anymore" : "El archivo ya no existe",
"Choose destination" : "Elegir destino",
"Copy to {target}" : "Copiar a {target}",
@ -342,6 +341,7 @@
"Search for an account" : "Buscar una cuenta",
"Choose" : "Seleccionar",
"No files or folders have been deleted yet" : "No se han eliminado archivos o carpetas todavía",
"Add" : "Guardar"
"Add" : "Guardar",
"The files is locked" : "El archivo está bloqueado"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@ -269,7 +269,6 @@ OC.L10N.register(
"(copy)" : "(kopiatu)",
"(copy %n)" : "(kopiatu %n)",
"A file or folder with that name already exists in this folder" : "Izen hori duen fitxategi edo karpeta bat dago karpena honetan",
"The files is locked" : "Fixategiak blokeatuta dago",
"The file does not exist anymore" : "Fitxategia ez da existizen dagoeneko",
"Choose destination" : "Aukeratu helburua",
"Copy to {target}" : "Kopiatu hona: {target}",
@ -334,6 +333,7 @@ OC.L10N.register(
"Search for an account" : "Bilatu kontu bat",
"Choose" : "Aukeratu",
"No files or folders have been deleted yet" : "Oraindik ez da ezabatu fitxategirik edo karpetarik",
"Add" : "Gehitu"
"Add" : "Gehitu",
"The files is locked" : "Fixategiak blokeatuta dago"
},
"nplurals=2; plural=(n != 1);");

View File

@ -267,7 +267,6 @@
"(copy)" : "(kopiatu)",
"(copy %n)" : "(kopiatu %n)",
"A file or folder with that name already exists in this folder" : "Izen hori duen fitxategi edo karpeta bat dago karpena honetan",
"The files is locked" : "Fixategiak blokeatuta dago",
"The file does not exist anymore" : "Fitxategia ez da existizen dagoeneko",
"Choose destination" : "Aukeratu helburua",
"Copy to {target}" : "Kopiatu hona: {target}",
@ -332,6 +331,7 @@
"Search for an account" : "Bilatu kontu bat",
"Choose" : "Aukeratu",
"No files or folders have been deleted yet" : "Oraindik ez da ezabatu fitxategirik edo karpetarik",
"Add" : "Gehitu"
"Add" : "Gehitu",
"The files is locked" : "Fixategiak blokeatuta dago"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(copier %n)",
"Move cancelled" : "Déplacement annulé",
"A file or folder with that name already exists in this folder" : "Un fichier ou un dossier portant ce nom existe déjà dans ce dossier",
"The files is locked" : "Le fichier est verrouillé",
"The file does not exist anymore" : "Le fichier n'existe plus",
"Choose destination" : "Choisir la destination",
"Copy to {target}" : "Copier vers {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Chercher un compte",
"Choose" : "Choisir",
"No files or folders have been deleted yet" : "Aucun fichier ou dossier n'a encore été supprimé",
"Add" : "Ajouter"
"Add" : "Ajouter",
"The files is locked" : "Le fichier est verrouillé"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(copier %n)",
"Move cancelled" : "Déplacement annulé",
"A file or folder with that name already exists in this folder" : "Un fichier ou un dossier portant ce nom existe déjà dans ce dossier",
"The files is locked" : "Le fichier est verrouillé",
"The file does not exist anymore" : "Le fichier n'existe plus",
"Choose destination" : "Choisir la destination",
"Copy to {target}" : "Copier vers {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Chercher un compte",
"Choose" : "Choisir",
"No files or folders have been deleted yet" : "Aucun fichier ou dossier n'a encore été supprimé",
"Add" : "Ajouter"
"Add" : "Ajouter",
"The files is locked" : "Le fichier est verrouillé"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@ -252,7 +252,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Este ficheiro/cartafol xa está nese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non é posíbel mover un ficheiro/cartafol sobre si mesmo ou a un subcartafol de si mesmo",
"A file or folder with that name already exists in this folder" : "Neste cartafol xa existe un ficheiro ou cartafol con ese nome",
"The files is locked" : "Os ficheiros están bloqueados",
"The file does not exist anymore" : "O ficheiro xa non existe",
"Copy to {target}" : "Copiar en {target}",
"Move to {target}" : "Mover a {target}",
@ -315,6 +314,7 @@ OC.L10N.register(
"Search for an account" : "Buscar por unha conta",
"Choose" : "Escoller",
"No files or folders have been deleted yet" : "Aínda non se eliminou ningún ficheiro nin cartafol",
"Add" : "Engadir"
"Add" : "Engadir",
"The files is locked" : "Os ficheiros están bloqueados"
},
"nplurals=2; plural=(n != 1);");

View File

@ -250,7 +250,6 @@
"This file/folder is already in that directory" : "Este ficheiro/cartafol xa está nese directorio",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Non é posíbel mover un ficheiro/cartafol sobre si mesmo ou a un subcartafol de si mesmo",
"A file or folder with that name already exists in this folder" : "Neste cartafol xa existe un ficheiro ou cartafol con ese nome",
"The files is locked" : "Os ficheiros están bloqueados",
"The file does not exist anymore" : "O ficheiro xa non existe",
"Copy to {target}" : "Copiar en {target}",
"Move to {target}" : "Mover a {target}",
@ -313,6 +312,7 @@
"Search for an account" : "Buscar por unha conta",
"Choose" : "Escoller",
"No files or folders have been deleted yet" : "Aínda non se eliminou ningún ficheiro nin cartafol",
"Add" : "Engadir"
"Add" : "Engadir",
"The files is locked" : "Os ficheiros están bloqueados"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -251,7 +251,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Ez a fájl/mappa már létezik a mappában",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "A fájl/mappa önmagába, vagy saját almappájába áthelyezése nem lehetséges",
"A file or folder with that name already exists in this folder" : "Már létezik ilyen nevű fájl vagy mappa ebben a mappában",
"The files is locked" : "Ez a fájl zárolva van",
"The file does not exist anymore" : "Ez a fájl már nem létezik",
"Copy to {target}" : "Másolás ide: {target}",
"Move to {target}" : "Áthelyezés ide: {target}",
@ -314,6 +313,7 @@ OC.L10N.register(
"Search for an account" : "Fiók keresése",
"Choose" : "Válasszon",
"No files or folders have been deleted yet" : "Még nem lettek fájlok vagy mappák törölve",
"Add" : "Hozzáadás"
"Add" : "Hozzáadás",
"The files is locked" : "Ez a fájl zárolva van"
},
"nplurals=2; plural=(n != 1);");

View File

@ -249,7 +249,6 @@
"This file/folder is already in that directory" : "Ez a fájl/mappa már létezik a mappában",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "A fájl/mappa önmagába, vagy saját almappájába áthelyezése nem lehetséges",
"A file or folder with that name already exists in this folder" : "Már létezik ilyen nevű fájl vagy mappa ebben a mappában",
"The files is locked" : "Ez a fájl zárolva van",
"The file does not exist anymore" : "Ez a fájl már nem létezik",
"Copy to {target}" : "Másolás ide: {target}",
"Move to {target}" : "Áthelyezés ide: {target}",
@ -312,6 +311,7 @@
"Search for an account" : "Fiók keresése",
"Choose" : "Válasszon",
"No files or folders have been deleted yet" : "Még nem lettek fájlok vagy mappák törölve",
"Add" : "Hozzáadás"
"Add" : "Hozzáadás",
"The files is locked" : "Ez a fájl zárolva van"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -250,7 +250,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Þessi skrá/mappa er þegar í þessari möppu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Þú getur ekki flutt skrá/möppu inn í sjálfa sig eða inni í undirmöppu af sjálfri sér",
"A file or folder with that name already exists in this folder" : "Skrá eða mappa með þessu heiti er þegar til staðar í þessari möppu",
"The files is locked" : "Skráin er læst",
"The file does not exist anymore" : "Skráin er ekki lengur til",
"Copy to {target}" : "Afrita í {target}",
"Move to {target}" : "Færa í {target}",
@ -313,6 +312,7 @@ OC.L10N.register(
"Search for an account" : "Leita að notandaaðgangi",
"Choose" : "Velja",
"No files or folders have been deleted yet" : "Engum skrám eða möppum hefur enn verið eytt",
"Add" : "Bæta við"
"Add" : "Bæta við",
"The files is locked" : "Skráin er læst"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");

View File

@ -248,7 +248,6 @@
"This file/folder is already in that directory" : "Þessi skrá/mappa er þegar í þessari möppu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Þú getur ekki flutt skrá/möppu inn í sjálfa sig eða inni í undirmöppu af sjálfri sér",
"A file or folder with that name already exists in this folder" : "Skrá eða mappa með þessu heiti er þegar til staðar í þessari möppu",
"The files is locked" : "Skráin er læst",
"The file does not exist anymore" : "Skráin er ekki lengur til",
"Copy to {target}" : "Afrita í {target}",
"Move to {target}" : "Færa í {target}",
@ -311,6 +310,7 @@
"Search for an account" : "Leita að notandaaðgangi",
"Choose" : "Velja",
"No files or folders have been deleted yet" : "Engum skrám eða möppum hefur enn verið eytt",
"Add" : "Bæta við"
"Add" : "Bæta við",
"The files is locked" : "Skráin er læst"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
}

View File

@ -255,7 +255,6 @@ OC.L10N.register(
"(copy)" : "(copia)",
"(copy %n)" : "(copia %n)",
"A file or folder with that name already exists in this folder" : "Esiste già un file o una cartella con quel nome in questa cartella",
"The files is locked" : "Il file è bloccato",
"The file does not exist anymore" : "Il file non esiste più",
"Choose destination" : "Scegli la destinazione",
"Copy to {target}" : "Copia in {target}",
@ -319,6 +318,7 @@ OC.L10N.register(
"Search for an account" : "Cerca un account",
"Choose" : "Scegli",
"No files or folders have been deleted yet" : "Nessun file o cartella è stato ancora eliminato",
"Add" : "Aggiungi"
"Add" : "Aggiungi",
"The files is locked" : "Il file è bloccato"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@ -253,7 +253,6 @@
"(copy)" : "(copia)",
"(copy %n)" : "(copia %n)",
"A file or folder with that name already exists in this folder" : "Esiste già un file o una cartella con quel nome in questa cartella",
"The files is locked" : "Il file è bloccato",
"The file does not exist anymore" : "Il file non esiste più",
"Choose destination" : "Scegli la destinazione",
"Copy to {target}" : "Copia in {target}",
@ -317,6 +316,7 @@
"Search for an account" : "Cerca un account",
"Choose" : "Scegli",
"No files or folders have been deleted yet" : "Nessun file o cartella è stato ancora eliminato",
"Add" : "Aggiungi"
"Add" : "Aggiungi",
"The files is locked" : "Il file è bloccato"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@ -273,7 +273,6 @@ OC.L10N.register(
"(copy)" : "(copy)",
"(copy %n)" : "(copy %n)",
"A file or folder with that name already exists in this folder" : "その名前のファイルまたはフォルダが、このフォルダに既に存在します",
"The files is locked" : "ファイルはロックされています",
"The file does not exist anymore" : "ファイルはもう存在しません",
"Choose destination" : "移動先を選択",
"Copy to {target}" : "{target} にコピー",
@ -344,6 +343,7 @@ OC.L10N.register(
"Search for an account" : "アカウントを検索",
"Choose" : "選択",
"No files or folders have been deleted yet" : "まだ削除されたファイルやフォルダはありません",
"Add" : "追加"
"Add" : "追加",
"The files is locked" : "ファイルはロックされています"
},
"nplurals=1; plural=0;");

View File

@ -271,7 +271,6 @@
"(copy)" : "(copy)",
"(copy %n)" : "(copy %n)",
"A file or folder with that name already exists in this folder" : "その名前のファイルまたはフォルダが、このフォルダに既に存在します",
"The files is locked" : "ファイルはロックされています",
"The file does not exist anymore" : "ファイルはもう存在しません",
"Choose destination" : "移動先を選択",
"Copy to {target}" : "{target} にコピー",
@ -342,6 +341,7 @@
"Search for an account" : "アカウントを検索",
"Choose" : "選択",
"No files or folders have been deleted yet" : "まだ削除されたファイルやフォルダはありません",
"Add" : "追加"
"Add" : "追加",
"The files is locked" : "ファイルはロックされています"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -251,7 +251,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "This file/folder is already in that directory",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
"A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
"The files is locked" : "The files is locked",
"The file does not exist anymore" : "The file does not exist anymore",
"Choose destination" : "Choose destination",
"Copy to {target}" : "Copy to {target}",
@ -315,6 +314,7 @@ OC.L10N.register(
"Search for an account" : "Search for an account",
"Choose" : "Choose",
"No files or folders have been deleted yet" : "No files or folders have been deleted yet",
"Add" : "Add"
"Add" : "Add",
"The files is locked" : "The files is locked"
},
"nplurals=2; plural=(n!=1);");

View File

@ -249,7 +249,6 @@
"This file/folder is already in that directory" : "This file/folder is already in that directory",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
"A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
"The files is locked" : "The files is locked",
"The file does not exist anymore" : "The file does not exist anymore",
"Choose destination" : "Choose destination",
"Copy to {target}" : "Copy to {target}",
@ -313,6 +312,7 @@
"Search for an account" : "Search for an account",
"Choose" : "Choose",
"No files or folders have been deleted yet" : "No files or folders have been deleted yet",
"Add" : "Add"
"Add" : "Add",
"The files is locked" : "The files is locked"
},"pluralForm" :"nplurals=2; plural=(n!=1);"
}

View File

@ -272,8 +272,8 @@ OC.L10N.register(
"You cannot move a file/folder onto itself or into a subfolder of itself" : "파일/폴더를 그 안이나 그 안의 폴더로 이동할 수 없습니다.",
"(copy)" : "(복사)",
"(copy %n)" : "(%n 복사)",
"Move cancelled" : "이동이 취소됨",
"A file or folder with that name already exists in this folder" : "같은 이름을 사용하는 파일 또는 폴더가 이미 이 폴더에 있습니다.",
"The files is locked" : "이 파일은 잠겼습니다.",
"The file does not exist anymore" : "파일이 더이상 존재하지 않습니다.",
"Choose destination" : "목적지 선택",
"Copy to {target}" : "{target}에 복사",
@ -344,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "계정 검색",
"Choose" : "선택",
"No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.",
"Add" : "추가"
"Add" : "추가",
"The files is locked" : "이 파일은 잠겼습니다."
},
"nplurals=1; plural=0;");

View File

@ -270,8 +270,8 @@
"You cannot move a file/folder onto itself or into a subfolder of itself" : "파일/폴더를 그 안이나 그 안의 폴더로 이동할 수 없습니다.",
"(copy)" : "(복사)",
"(copy %n)" : "(%n 복사)",
"Move cancelled" : "이동이 취소됨",
"A file or folder with that name already exists in this folder" : "같은 이름을 사용하는 파일 또는 폴더가 이미 이 폴더에 있습니다.",
"The files is locked" : "이 파일은 잠겼습니다.",
"The file does not exist anymore" : "파일이 더이상 존재하지 않습니다.",
"Choose destination" : "목적지 선택",
"Copy to {target}" : "{target}에 복사",
@ -342,6 +342,7 @@
"Search for an account" : "계정 검색",
"Choose" : "선택",
"No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.",
"Add" : "추가"
"Add" : "추가",
"The files is locked" : "이 파일은 잠겼습니다."
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -251,7 +251,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Оваа папка/датотека се наоѓа веќе во таа папка",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Неможете да преместите датотека/папка во себеси или во подпапка во себеси",
"A file or folder with that name already exists in this folder" : "Датотека или папка со тоа име веќе постои во оваа папка",
"The files is locked" : "Датотекатите се заклучени",
"The file does not exist anymore" : "Датотеката не постои",
"Choose destination" : "Избери дестинација",
"Copy to {target}" : "Копирај во {target}",
@ -315,6 +314,7 @@ OC.L10N.register(
"Search for an account" : "Пребарај сметка",
"Choose" : "Избери",
"No files or folders have been deleted yet" : "Нема датотеки или папки што се избришани",
"Add" : "Додади"
"Add" : "Додади",
"The files is locked" : "Датотекатите се заклучени"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");

View File

@ -249,7 +249,6 @@
"This file/folder is already in that directory" : "Оваа папка/датотека се наоѓа веќе во таа папка",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Неможете да преместите датотека/папка во себеси или во подпапка во себеси",
"A file or folder with that name already exists in this folder" : "Датотека или папка со тоа име веќе постои во оваа папка",
"The files is locked" : "Датотекатите се заклучени",
"The file does not exist anymore" : "Датотеката не постои",
"Choose destination" : "Избери дестинација",
"Copy to {target}" : "Копирај во {target}",
@ -313,6 +312,7 @@
"Search for an account" : "Пребарај сметка",
"Choose" : "Избери",
"No files or folders have been deleted yet" : "Нема датотеки или папки што се избришани",
"Add" : "Додади"
"Add" : "Додади",
"The files is locked" : "Датотекатите се заклучени"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(kopier %n)",
"Move cancelled" : "Flytt avbrutt",
"A file or folder with that name already exists in this folder" : "En fil eller mappe med det navnet finnes allerede i denne mappen",
"The files is locked" : "Filene er låst",
"The file does not exist anymore" : "Filen finnes ikke lenger",
"Choose destination" : "Velg målplassering",
"Copy to {target}" : "Copy to {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Søk etter en konto",
"Choose" : "Velg",
"No files or folders have been deleted yet" : "Ingen filer eller mapper er slettet enda",
"Add" : "Legg til"
"Add" : "Legg til",
"The files is locked" : "Filene er låst"
},
"nplurals=2; plural=(n != 1);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(kopier %n)",
"Move cancelled" : "Flytt avbrutt",
"A file or folder with that name already exists in this folder" : "En fil eller mappe med det navnet finnes allerede i denne mappen",
"The files is locked" : "Filene er låst",
"The file does not exist anymore" : "Filen finnes ikke lenger",
"Choose destination" : "Velg målplassering",
"Copy to {target}" : "Copy to {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Søk etter en konto",
"Choose" : "Velg",
"No files or folders have been deleted yet" : "Ingen filer eller mapper er slettet enda",
"Add" : "Legg til"
"Add" : "Legg til",
"The files is locked" : "Filene er låst"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -244,7 +244,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Ten plik/katalog znajduje się już w tym katalogu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu",
"A file or folder with that name already exists in this folder" : "Plik lub katalog o tej nazwie już istnieje w tym katalogu",
"The files is locked" : "Pliki są zablokowane",
"The file does not exist anymore" : "Plik już nie istnieje",
"Copy to {target}" : "Skopiuj do {target}",
"Move to {target}" : "Przenieś do {target}",
@ -305,6 +304,7 @@ OC.L10N.register(
"Search for an account" : "Wyszukaj konto",
"Choose" : "Wybierz",
"No files or folders have been deleted yet" : "Żadne pliki ani katalogi nie zostały jeszcze usunięte",
"Add" : "Dodaj"
"Add" : "Dodaj",
"The files is locked" : "Pliki są zablokowane"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");

View File

@ -242,7 +242,6 @@
"This file/folder is already in that directory" : "Ten plik/katalog znajduje się już w tym katalogu",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nie można przenieść pliku/katalogu do tego samego katalogu lub do własnego podkatalogu",
"A file or folder with that name already exists in this folder" : "Plik lub katalog o tej nazwie już istnieje w tym katalogu",
"The files is locked" : "Pliki są zablokowane",
"The file does not exist anymore" : "Plik już nie istnieje",
"Copy to {target}" : "Skopiuj do {target}",
"Move to {target}" : "Przenieś do {target}",
@ -303,6 +302,7 @@
"Search for an account" : "Wyszukaj konto",
"Choose" : "Wybierz",
"No files or folders have been deleted yet" : "Żadne pliki ani katalogi nie zostały jeszcze usunięte",
"Add" : "Dodaj"
"Add" : "Dodaj",
"The files is locked" : "Pliki są zablokowane"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
}

View File

@ -261,7 +261,6 @@ OC.L10N.register(
"(copy)" : "(cópia)",
"(copy %n)" : "(copiar %n)",
"A file or folder with that name already exists in this folder" : "Já existe um arquivo ou pasta com esse nome nesta pasta",
"The files is locked" : "Os arquivos estão bloqueados",
"The file does not exist anymore" : "O arquivo não existe mais",
"Choose destination" : "Escolha o destino",
"Copy to {target}" : "Copiar para {target}",
@ -326,6 +325,7 @@ OC.L10N.register(
"Search for an account" : "Pesquisar uma conta",
"Choose" : "Escolher",
"No files or folders have been deleted yet" : "Nenhum arquivo ou pasta foi excluído ainda",
"Add" : "Adicionar"
"Add" : "Adicionar",
"The files is locked" : "Os arquivos estão bloqueados"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

View File

@ -259,7 +259,6 @@
"(copy)" : "(cópia)",
"(copy %n)" : "(copiar %n)",
"A file or folder with that name already exists in this folder" : "Já existe um arquivo ou pasta com esse nome nesta pasta",
"The files is locked" : "Os arquivos estão bloqueados",
"The file does not exist anymore" : "O arquivo não existe mais",
"Choose destination" : "Escolha o destino",
"Copy to {target}" : "Copiar para {target}",
@ -324,6 +323,7 @@
"Search for an account" : "Pesquisar uma conta",
"Choose" : "Escolher",
"No files or folders have been deleted yet" : "Nenhum arquivo ou pasta foi excluído ainda",
"Add" : "Adicionar"
"Add" : "Adicionar",
"The files is locked" : "Os arquivos estão bloqueados"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

View File

@ -242,7 +242,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Acest fișier/folder există în acel dosar",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nu se poate muta/redenumi un fișier/folder în el însuși sau într-un subfolder al său",
"A file or folder with that name already exists in this folder" : "Un fișier sau folder cu acest nume există deja în acest folder",
"The files is locked" : "Fișierul este blocat",
"The file does not exist anymore" : "Fișierul nu mai există",
"Copy to {target}" : "Copiază la {target}",
"Move to {target}" : "Mută la {target}",
@ -303,6 +302,7 @@ OC.L10N.register(
"Search for an account" : "Căutați un cont",
"Choose" : "Alege",
"No files or folders have been deleted yet" : "Niciun fișier sau folder nu a fost șters încă",
"Add" : "Adaugă"
"Add" : "Adaugă",
"The files is locked" : "Fișierul este blocat"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");

View File

@ -240,7 +240,6 @@
"This file/folder is already in that directory" : "Acest fișier/folder există în acel dosar",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nu se poate muta/redenumi un fișier/folder în el însuși sau într-un subfolder al său",
"A file or folder with that name already exists in this folder" : "Un fișier sau folder cu acest nume există deja în acest folder",
"The files is locked" : "Fișierul este blocat",
"The file does not exist anymore" : "Fișierul nu mai există",
"Copy to {target}" : "Copiază la {target}",
"Move to {target}" : "Mută la {target}",
@ -301,6 +300,7 @@
"Search for an account" : "Căutați un cont",
"Choose" : "Alege",
"No files or folders have been deleted yet" : "Niciun fișier sau folder nu a fost șters încă",
"Add" : "Adaugă"
"Add" : "Adaugă",
"The files is locked" : "Fișierul este blocat"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
}

View File

@ -273,7 +273,6 @@ OC.L10N.register(
"(copy)" : "(копия)",
"(copy %n)" : "(копия %n)",
"A file or folder with that name already exists in this folder" : "В этой папке уже есть файл или папка с этим именем",
"The files is locked" : "Файлы заблокированы",
"The file does not exist anymore" : "Файл больше не существует",
"Choose destination" : "Выберите место назначения",
"Copy to {target}" : "Скопировать в «{target}»",
@ -344,6 +343,7 @@ OC.L10N.register(
"Search for an account" : "Поиск по учетной записи",
"Choose" : "Выберите",
"No files or folders have been deleted yet" : "Файлы или папки еще не удалены",
"Add" : "Добавить"
"Add" : "Добавить",
"The files is locked" : "Файлы заблокированы"
},
"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);");

View File

@ -271,7 +271,6 @@
"(copy)" : "(копия)",
"(copy %n)" : "(копия %n)",
"A file or folder with that name already exists in this folder" : "В этой папке уже есть файл или папка с этим именем",
"The files is locked" : "Файлы заблокированы",
"The file does not exist anymore" : "Файл больше не существует",
"Choose destination" : "Выберите место назначения",
"Copy to {target}" : "Скопировать в «{target}»",
@ -342,6 +341,7 @@
"Search for an account" : "Поиск по учетной записи",
"Choose" : "Выберите",
"No files or folders have been deleted yet" : "Файлы или папки еще не удалены",
"Add" : "Добавить"
"Add" : "Добавить",
"The files is locked" : "Файлы заблокированы"
},"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);"
}

View File

@ -248,7 +248,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Tento súbor/priečinok sa už v danom adresári nachádza",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nemôžete presunúť súbor/priečinok do seba alebo do jeho podpriečinka.",
"A file or folder with that name already exists in this folder" : "Súbor alebo priečinok s týmto názvom už existuje v tomto priečinku",
"The files is locked" : "Súbory sú uzamknuté",
"The file does not exist anymore" : "Súbor už neexistuje",
"Copy to {target}" : "Kopírovať do {target}",
"Move to {target}" : "Presunúť do {target}",
@ -310,6 +309,7 @@ OC.L10N.register(
"Search for an account" : "Vyhľadať účet",
"Choose" : "Vybrať",
"No files or folders have been deleted yet" : "Žiadne súbory alebo priečinky neboli ešte vymazané",
"Add" : "Pridať"
"Add" : "Pridať",
"The files is locked" : "Súbory sú uzamknuté"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");

View File

@ -246,7 +246,6 @@
"This file/folder is already in that directory" : "Tento súbor/priečinok sa už v danom adresári nachádza",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Nemôžete presunúť súbor/priečinok do seba alebo do jeho podpriečinka.",
"A file or folder with that name already exists in this folder" : "Súbor alebo priečinok s týmto názvom už existuje v tomto priečinku",
"The files is locked" : "Súbory sú uzamknuté",
"The file does not exist anymore" : "Súbor už neexistuje",
"Copy to {target}" : "Kopírovať do {target}",
"Move to {target}" : "Presunúť do {target}",
@ -308,6 +307,7 @@
"Search for an account" : "Vyhľadať účet",
"Choose" : "Vybrať",
"No files or folders have been deleted yet" : "Žiadne súbory alebo priečinky neboli ešte vymazané",
"Add" : "Pridať"
"Add" : "Pridať",
"The files is locked" : "Súbory sú uzamknuté"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
}

View File

@ -245,7 +245,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Ta datoteka oziroma mapa je že v določeni mapi",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Mape ali datoteke ni mogoče premakniti samo vase oziroma v podmapo same sebe",
"A file or folder with that name already exists in this folder" : "Datoteka oziroma mapa s tem imenom v tej mapi že obstaja",
"The files is locked" : "Datoteka je zaklenjena",
"The file does not exist anymore" : "Datoteka ne obstaja več",
"Copy to {target}" : "Kopiraj na {target}",
"Move to {target}" : "Premakni na {target}",
@ -306,6 +305,7 @@ OC.L10N.register(
"Search for an account" : "Poišči račun",
"Choose" : "Izbor",
"No files or folders have been deleted yet" : "Ni še izbrisanih datotek in map",
"Add" : "Dodaj"
"Add" : "Dodaj",
"The files is locked" : "Datoteka je zaklenjena"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");

View File

@ -243,7 +243,6 @@
"This file/folder is already in that directory" : "Ta datoteka oziroma mapa je že v določeni mapi",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Mape ali datoteke ni mogoče premakniti samo vase oziroma v podmapo same sebe",
"A file or folder with that name already exists in this folder" : "Datoteka oziroma mapa s tem imenom v tej mapi že obstaja",
"The files is locked" : "Datoteka je zaklenjena",
"The file does not exist anymore" : "Datoteka ne obstaja več",
"Copy to {target}" : "Kopiraj na {target}",
"Move to {target}" : "Premakni na {target}",
@ -304,6 +303,7 @@
"Search for an account" : "Poišči račun",
"Choose" : "Izbor",
"No files or folders have been deleted yet" : "Ni še izbrisanih datotek in map",
"Add" : "Dodaj"
"Add" : "Dodaj",
"The files is locked" : "Datoteka je zaklenjena"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(копирано %n)",
"Move cancelled" : "Премештање је отказано",
"A file or folder with that name already exists in this folder" : "У овом фолдеру већ постоји фајл или фолдер са тим именом",
"The files is locked" : "Фајл је закључан",
"The file does not exist anymore" : "Фајл више не постоји",
"Choose destination" : "Изаберите одредиште",
"Copy to {target}" : "Копирај у {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Претражите налог",
"Choose" : "Изаберите",
"No files or folders have been deleted yet" : "Још увек није обрисан ниједан фајл или фолдер",
"Add" : "Додај"
"Add" : "Додај",
"The files is locked" : "Фајл је закључан"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(копирано %n)",
"Move cancelled" : "Премештање је отказано",
"A file or folder with that name already exists in this folder" : "У овом фолдеру већ постоји фајл или фолдер са тим именом",
"The files is locked" : "Фајл је закључан",
"The file does not exist anymore" : "Фајл више не постоји",
"Choose destination" : "Изаберите одредиште",
"Copy to {target}" : "Копирај у {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Претражите налог",
"Choose" : "Изаберите",
"No files or folders have been deleted yet" : "Још увек није обрисан ниједан фајл или фолдер",
"Add" : "Додај"
"Add" : "Додај",
"The files is locked" : "Фајл је закључан"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(kopia %n)",
"Move cancelled" : "Flytt avbruten",
"A file or folder with that name already exists in this folder" : "En fil eller mapp med det namnet finns redan i den här mappen",
"The files is locked" : "Filerna är låsta",
"The file does not exist anymore" : "Filen finns inte längre",
"Choose destination" : "Välj destination",
"Copy to {target}" : "Kopiera till {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Sök efter ett konto",
"Choose" : "Välj",
"No files or folders have been deleted yet" : "Inga filer eller mappar har tagits bort än",
"Add" : "Lägg till"
"Add" : "Lägg till",
"The files is locked" : "Filerna är låsta"
},
"nplurals=2; plural=(n != 1);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(kopia %n)",
"Move cancelled" : "Flytt avbruten",
"A file or folder with that name already exists in this folder" : "En fil eller mapp med det namnet finns redan i den här mappen",
"The files is locked" : "Filerna är låsta",
"The file does not exist anymore" : "Filen finns inte längre",
"Choose destination" : "Välj destination",
"Copy to {target}" : "Kopiera till {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Sök efter ett konto",
"Choose" : "Välj",
"No files or folders have been deleted yet" : "Inga filer eller mappar har tagits bort än",
"Add" : "Lägg till"
"Add" : "Lägg till",
"The files is locked" : "Filerna är låsta"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@ -273,7 +273,6 @@ OC.L10N.register(
"(copy)" : "(kopya)",
"(copy %n)" : "(%n kopyası)",
"A file or folder with that name already exists in this folder" : "Bu klasörde aynı adlı bir dosya ya da klasör zaten var",
"The files is locked" : "Dosyalar kilitli",
"The file does not exist anymore" : "Dosya artık yok",
"Choose destination" : "Hedefi seçin",
"Copy to {target}" : "{target} içine kopyala",
@ -344,6 +343,7 @@ OC.L10N.register(
"Search for an account" : "Hesap ara",
"Choose" : "Seçin",
"No files or folders have been deleted yet" : "Henüz silinmiş bir dosya ya da klasör yok",
"Add" : "Ekle"
"Add" : "Ekle",
"The files is locked" : "Dosyalar kilitli"
},
"nplurals=2; plural=(n > 1);");

View File

@ -271,7 +271,6 @@
"(copy)" : "(kopya)",
"(copy %n)" : "(%n kopyası)",
"A file or folder with that name already exists in this folder" : "Bu klasörde aynı adlı bir dosya ya da klasör zaten var",
"The files is locked" : "Dosyalar kilitli",
"The file does not exist anymore" : "Dosya artık yok",
"Choose destination" : "Hedefi seçin",
"Copy to {target}" : "{target} içine kopyala",
@ -342,6 +341,7 @@
"Search for an account" : "Hesap ara",
"Choose" : "Seçin",
"No files or folders have been deleted yet" : "Henüz silinmiş bir dosya ya da klasör yok",
"Add" : "Ekle"
"Add" : "Ekle",
"The files is locked" : "Dosyalar kilitli"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(копія %n)",
"Move cancelled" : "Переміщення скасовано",
"A file or folder with that name already exists in this folder" : "Файл чи каталог з таким ім'ям вже присутній в цьому каталозі",
"The files is locked" : "Файл заблоковано",
"The file does not exist anymore" : "Цей файл більше недоступний",
"Choose destination" : "Виберіть каталог призначення",
"Copy to {target}" : "Копіювати до {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "Пошук облікового запису",
"Choose" : "Вибрати",
"No files or folders have been deleted yet" : "Поки жодного каталогу чи файлу не було вилучено",
"Add" : "Додати"
"Add" : "Додати",
"The files is locked" : "Файл заблоковано"
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(копія %n)",
"Move cancelled" : "Переміщення скасовано",
"A file or folder with that name already exists in this folder" : "Файл чи каталог з таким ім'ям вже присутній в цьому каталозі",
"The files is locked" : "Файл заблоковано",
"The file does not exist anymore" : "Цей файл більше недоступний",
"Choose destination" : "Виберіть каталог призначення",
"Copy to {target}" : "Копіювати до {target}",
@ -343,6 +342,7 @@
"Search for an account" : "Пошук облікового запису",
"Choose" : "Вибрати",
"No files or folders have been deleted yet" : "Поки жодного каталогу чи файлу не було вилучено",
"Add" : "Додати"
"Add" : "Додати",
"The files is locked" : "Файл заблоковано"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
}

View File

@ -244,7 +244,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "Tệp/thư mục này đã có trong thư mục đó",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Bạn không thể di chuyển một tập tin/thư mục vào chính nó hoặc vào một thư mục con của chính nó",
"A file or folder with that name already exists in this folder" : "Tệp hoặc thư mục có tên đó đã tồn tại trong thư mục này",
"The files is locked" : "Các tập tin bị khóa",
"The file does not exist anymore" : "Tập tin không tồn tại nữa",
"Copy to {target}" : "Copy to {mục tiêu}",
"Move to {target}" : "Di chuyển đến {mục tiêu}",
@ -305,6 +304,7 @@ OC.L10N.register(
"Search for an account" : "Tìm kiếm tài khoản",
"Choose" : "Chọn",
"No files or folders have been deleted yet" : "Chưa có tập tin hoặc thư mục nào bị xóa",
"Add" : "Thêm"
"Add" : "Thêm",
"The files is locked" : "Các tập tin bị khóa"
},
"nplurals=1; plural=0;");

View File

@ -242,7 +242,6 @@
"This file/folder is already in that directory" : "Tệp/thư mục này đã có trong thư mục đó",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "Bạn không thể di chuyển một tập tin/thư mục vào chính nó hoặc vào một thư mục con của chính nó",
"A file or folder with that name already exists in this folder" : "Tệp hoặc thư mục có tên đó đã tồn tại trong thư mục này",
"The files is locked" : "Các tập tin bị khóa",
"The file does not exist anymore" : "Tập tin không tồn tại nữa",
"Copy to {target}" : "Copy to {mục tiêu}",
"Move to {target}" : "Di chuyển đến {mục tiêu}",
@ -303,6 +302,7 @@
"Search for an account" : "Tìm kiếm tài khoản",
"Choose" : "Chọn",
"No files or folders have been deleted yet" : "Chưa có tập tin hoặc thư mục nào bị xóa",
"Add" : "Thêm"
"Add" : "Thêm",
"The files is locked" : "Các tập tin bị khóa"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -247,7 +247,6 @@ OC.L10N.register(
"This file/folder is already in that directory" : "该文件/文件夹已经存在与该目录中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "你无法将文件/文件夹移动至其自身或子文件夹中",
"A file or folder with that name already exists in this folder" : "相同的文件/文件夹已存在于该文件夹中",
"The files is locked" : "文件已锁定",
"The file does not exist anymore" : "文件不存在",
"Copy to {target}" : "复制到 {target}",
"Move to {target}" : "移动到 {target}",
@ -309,6 +308,7 @@ OC.L10N.register(
"Search for an account" : "搜索一个账户",
"Choose" : "选择",
"No files or folders have been deleted yet" : "尚未删除任何文件或文件夹",
"Add" : "添加"
"Add" : "添加",
"The files is locked" : "文件已锁定"
},
"nplurals=1; plural=0;");

View File

@ -245,7 +245,6 @@
"This file/folder is already in that directory" : "该文件/文件夹已经存在与该目录中",
"You cannot move a file/folder onto itself or into a subfolder of itself" : "你无法将文件/文件夹移动至其自身或子文件夹中",
"A file or folder with that name already exists in this folder" : "相同的文件/文件夹已存在于该文件夹中",
"The files is locked" : "文件已锁定",
"The file does not exist anymore" : "文件不存在",
"Copy to {target}" : "复制到 {target}",
"Move to {target}" : "移动到 {target}",
@ -307,6 +306,7 @@
"Search for an account" : "搜索一个账户",
"Choose" : "选择",
"No files or folders have been deleted yet" : "尚未删除任何文件或文件夹",
"Add" : "添加"
"Add" : "添加",
"The files is locked" : "文件已锁定"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(複本 %n",
"Move cancelled" : "移動已取消",
"A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
"The files is locked" : "檔案已被上鎖",
"The file does not exist anymore" : "檔案已不存在",
"Choose destination" : "選擇目標地",
"Copy to {target}" : "複製到 {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "搜尋賬號",
"Choose" : "選擇",
"No files or folders have been deleted yet" : "尚未刪除任何檔案或資料夾",
"Add" : "添加"
"Add" : "添加",
"The files is locked" : "檔案已被上鎖"
},
"nplurals=1; plural=0;");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(複本 %n",
"Move cancelled" : "移動已取消",
"A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
"The files is locked" : "檔案已被上鎖",
"The file does not exist anymore" : "檔案已不存在",
"Choose destination" : "選擇目標地",
"Copy to {target}" : "複製到 {target}",
@ -343,6 +342,7 @@
"Search for an account" : "搜尋賬號",
"Choose" : "選擇",
"No files or folders have been deleted yet" : "尚未刪除任何檔案或資料夾",
"Add" : "添加"
"Add" : "添加",
"The files is locked" : "檔案已被上鎖"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -274,7 +274,6 @@ OC.L10N.register(
"(copy %n)" : "(副本 %n",
"Move cancelled" : "移動已取消",
"A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
"The files is locked" : "檔案已鎖定",
"The file does not exist anymore" : "檔案已不存在",
"Choose destination" : "選擇目的地",
"Copy to {target}" : "複製到 {target}",
@ -345,6 +344,7 @@ OC.L10N.register(
"Search for an account" : "搜尋帳號",
"Choose" : "選擇",
"No files or folders have been deleted yet" : "尚未刪除任何檔案或資料夾",
"Add" : "新增"
"Add" : "新增",
"The files is locked" : "檔案已鎖定"
},
"nplurals=1; plural=0;");

View File

@ -272,7 +272,6 @@
"(copy %n)" : "(副本 %n",
"Move cancelled" : "移動已取消",
"A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
"The files is locked" : "檔案已鎖定",
"The file does not exist anymore" : "檔案已不存在",
"Choose destination" : "選擇目的地",
"Copy to {target}" : "複製到 {target}",
@ -343,6 +342,7 @@
"Search for an account" : "搜尋帳號",
"Choose" : "選擇",
"No files or folders have been deleted yet" : "尚未刪除任何檔案或資料夾",
"Add" : "新增"
"Add" : "新增",
"The files is locked" : "檔案已鎖定"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@ -39,13 +39,14 @@ class Capabilities implements ICapability {
/**
* Return this classes capabilities
*
* @return array{files: array{bigfilechunking: bool, blacklisted_files: array<mixed>}}
* @return array{files: array{bigfilechunking: bool, blacklisted_files: array<mixed>, forbidden_filename_characters: array<string>}}
*/
public function getCapabilities() {
return [
'files' => [
'bigfilechunking' => true,
'blacklisted_files' => (array)$this->config->getSystemValue('blacklisted_files', ['.htaccess'])
'blacklisted_files' => (array)$this->config->getSystemValue('blacklisted_files', ['.htaccess']),
'forbidden_filename_characters' => \OCP\Util::getForbiddenFileNameChars(),
],
];
}

Some files were not shown because too many files have changed in this diff Show More