diff options
Diffstat (limited to 'apps/files_external')
495 files changed, 9704 insertions, 23395 deletions
diff --git a/apps/files_external/.l10nignore b/apps/files_external/.l10nignore index 3179ed23dd6..9fc3f56d26c 100644 --- a/apps/files_external/.l10nignore +++ b/apps/files_external/.l10nignore @@ -1,2 +1,4 @@ +# SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later # compiled handlebar templates js/templates.js diff --git a/apps/files_external/3rdparty/.gitignore b/apps/files_external/3rdparty/.gitignore deleted file mode 100644 index e787d39fca6..00000000000 --- a/apps/files_external/3rdparty/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -example.php -.editorconfig -icewind/smb/tests -icewind/smb/install_libsmbclient.sh -icewind/smb/Makefile -icewind/smb/.travis.yml -icewind/smb/.scrutinizer.yml -icewind/smb/example-apache-kerberos.php -icewind/smb/codecov.yml -icewind/streams/tests -.github -.php_cs* -psalm.xml diff --git a/apps/files_external/3rdparty/autoload.php b/apps/files_external/3rdparty/autoload.php deleted file mode 100644 index d3359ad45d9..00000000000 --- a/apps/files_external/3rdparty/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -// autoload.php @generated by Composer - -if (PHP_VERSION_ID < 50600) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, $err); - } elseif (!headers_sent()) { - echo $err; - } - } - trigger_error( - $err, - E_USER_ERROR - ); -} - -require_once __DIR__ . '/composer/autoload_real.php'; - -return ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3::getLoader(); diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json deleted file mode 100644 index 348e482c2c3..00000000000 --- a/apps/files_external/3rdparty/composer.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "files_external/3rdparty", - "description": "3rdparty components for files_external", - "license": "MIT", - "config": { - "vendor-dir": ".", - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "require": { - "icewind/smb": "3.5.4", - "icewind/streams": "0.7.7" - } -} diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock deleted file mode 100644 index 281fdef3e23..00000000000 --- a/apps/files_external/3rdparty/composer.lock +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "1419e286d2372dfbce44dd73ddbab2ff", - "packages": [ - { - "name": "icewind/smb", - "version": "v3.5.4", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/SMB.git", - "reference": "76995aa11c14e39bccd0f2370ed63b2f8f623a6d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/SMB/zipball/76995aa11c14e39bccd0f2370ed63b2f8f623a6d", - "reference": "76995aa11c14e39bccd0f2370ed63b2f8f623a6d", - "shasum": "" - }, - "require": { - "icewind/streams": ">=0.7.3", - "php": ">=7.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "phpunit/phpunit": "^8.5|^9.3.8", - "psalm/phar": "^4.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "php wrapper for smbclient and libsmbclient-php", - "support": { - "issues": "https://github.com/icewind1991/SMB/issues", - "source": "https://github.com/icewind1991/SMB/tree/v3.5.4" - }, - "time": "2022-05-30T15:18:19+00:00" - }, - { - "name": "icewind/streams", - "version": "v0.7.7", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/Streams.git", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9" - }, - "type": "library", - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "A set of generic stream wrappers", - "support": { - "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" - }, - "time": "2023-03-16T14:52:25+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php deleted file mode 100644 index a72151c77c8..00000000000 --- a/apps/files_external/3rdparty/composer/ClassLoader.php +++ /dev/null @@ -1,585 +0,0 @@ -<?php - -/* - * This file is part of Composer. - * - * (c) Nils Adermann <naderman@naderman.de> - * Jordi Boggiano <j.boggiano@seld.be> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier <fabien@symfony.com> - * @author Jordi Boggiano <j.boggiano@seld.be> - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array<string, array<string, int>> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array<string, array<int, string>> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array<string, string> - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array<string, array<string, string[]>> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array<string, string> - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array<string, string> - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array<string, bool> - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array<string, array<int, string>> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array<string, string> - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array<string, string> - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array<string, string> - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array<string, string> $classMap - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/apps/files_external/3rdparty/composer/InstalledVersions.php b/apps/files_external/3rdparty/composer/InstalledVersions.php deleted file mode 100644 index 51e734a774b..00000000000 --- a/apps/files_external/3rdparty/composer/InstalledVersions.php +++ /dev/null @@ -1,359 +0,0 @@ -<?php - -/* - * This file is part of Composer. - * - * (c) Nils Adermann <naderman@naderman.de> - * Jordi Boggiano <j.boggiano@seld.be> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list<string> - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list<string> - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ - $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array()) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/apps/files_external/3rdparty/composer/LICENSE b/apps/files_external/3rdparty/composer/LICENSE deleted file mode 100644 index f27399a042d..00000000000 --- a/apps/files_external/3rdparty/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php deleted file mode 100644 index 66b472bd422..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_classmap.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -// autoload_classmap.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Icewind\\SMB\\ACL' => $vendorDir . '/icewind/smb/src/ACL.php', - 'Icewind\\SMB\\AbstractServer' => $vendorDir . '/icewind/smb/src/AbstractServer.php', - 'Icewind\\SMB\\AbstractShare' => $vendorDir . '/icewind/smb/src/AbstractShare.php', - 'Icewind\\SMB\\AnonymousAuth' => $vendorDir . '/icewind/smb/src/AnonymousAuth.php', - 'Icewind\\SMB\\BasicAuth' => $vendorDir . '/icewind/smb/src/BasicAuth.php', - 'Icewind\\SMB\\Change' => $vendorDir . '/icewind/smb/src/Change.php', - 'Icewind\\SMB\\Exception\\AccessDeniedException' => $vendorDir . '/icewind/smb/src/Exception/AccessDeniedException.php', - 'Icewind\\SMB\\Exception\\AlreadyExistsException' => $vendorDir . '/icewind/smb/src/Exception/AlreadyExistsException.php', - 'Icewind\\SMB\\Exception\\AuthenticationException' => $vendorDir . '/icewind/smb/src/Exception/AuthenticationException.php', - 'Icewind\\SMB\\Exception\\ConnectException' => $vendorDir . '/icewind/smb/src/Exception/ConnectException.php', - 'Icewind\\SMB\\Exception\\ConnectionAbortedException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionAbortedException.php', - 'Icewind\\SMB\\Exception\\ConnectionException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionException.php', - 'Icewind\\SMB\\Exception\\ConnectionRefusedException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionRefusedException.php', - 'Icewind\\SMB\\Exception\\ConnectionResetException' => $vendorDir . '/icewind/smb/src/Exception/ConnectionResetException.php', - 'Icewind\\SMB\\Exception\\DependencyException' => $vendorDir . '/icewind/smb/src/Exception/DependencyException.php', - 'Icewind\\SMB\\Exception\\Exception' => $vendorDir . '/icewind/smb/src/Exception/Exception.php', - 'Icewind\\SMB\\Exception\\FileInUseException' => $vendorDir . '/icewind/smb/src/Exception/FileInUseException.php', - 'Icewind\\SMB\\Exception\\ForbiddenException' => $vendorDir . '/icewind/smb/src/Exception/ForbiddenException.php', - 'Icewind\\SMB\\Exception\\HostDownException' => $vendorDir . '/icewind/smb/src/Exception/HostDownException.php', - 'Icewind\\SMB\\Exception\\InvalidArgumentException' => $vendorDir . '/icewind/smb/src/Exception/InvalidArgumentException.php', - 'Icewind\\SMB\\Exception\\InvalidHostException' => $vendorDir . '/icewind/smb/src/Exception/InvalidHostException.php', - 'Icewind\\SMB\\Exception\\InvalidParameterException' => $vendorDir . '/icewind/smb/src/Exception/InvalidParameterException.php', - 'Icewind\\SMB\\Exception\\InvalidPathException' => $vendorDir . '/icewind/smb/src/Exception/InvalidPathException.php', - 'Icewind\\SMB\\Exception\\InvalidRequestException' => $vendorDir . '/icewind/smb/src/Exception/InvalidRequestException.php', - 'Icewind\\SMB\\Exception\\InvalidResourceException' => $vendorDir . '/icewind/smb/src/Exception/InvalidResourceException.php', - 'Icewind\\SMB\\Exception\\InvalidTypeException' => $vendorDir . '/icewind/smb/src/Exception/InvalidTypeException.php', - 'Icewind\\SMB\\Exception\\NoLoginServerException' => $vendorDir . '/icewind/smb/src/Exception/NoLoginServerException.php', - 'Icewind\\SMB\\Exception\\NoRouteToHostException' => $vendorDir . '/icewind/smb/src/Exception/NoRouteToHostException.php', - 'Icewind\\SMB\\Exception\\NotEmptyException' => $vendorDir . '/icewind/smb/src/Exception/NotEmptyException.php', - 'Icewind\\SMB\\Exception\\NotFoundException' => $vendorDir . '/icewind/smb/src/Exception/NotFoundException.php', - 'Icewind\\SMB\\Exception\\OutOfSpaceException' => $vendorDir . '/icewind/smb/src/Exception/OutOfSpaceException.php', - 'Icewind\\SMB\\Exception\\RevisionMismatchException' => $vendorDir . '/icewind/smb/src/Exception/RevisionMismatchException.php', - 'Icewind\\SMB\\Exception\\TimedOutException' => $vendorDir . '/icewind/smb/src/Exception/TimedOutException.php', - 'Icewind\\SMB\\IAuth' => $vendorDir . '/icewind/smb/src/IAuth.php', - 'Icewind\\SMB\\IFileInfo' => $vendorDir . '/icewind/smb/src/IFileInfo.php', - 'Icewind\\SMB\\INotifyHandler' => $vendorDir . '/icewind/smb/src/INotifyHandler.php', - 'Icewind\\SMB\\IOptions' => $vendorDir . '/icewind/smb/src/IOptions.php', - 'Icewind\\SMB\\IServer' => $vendorDir . '/icewind/smb/src/IServer.php', - 'Icewind\\SMB\\IShare' => $vendorDir . '/icewind/smb/src/IShare.php', - 'Icewind\\SMB\\ISystem' => $vendorDir . '/icewind/smb/src/ISystem.php', - 'Icewind\\SMB\\ITimeZoneProvider' => $vendorDir . '/icewind/smb/src/ITimeZoneProvider.php', - 'Icewind\\SMB\\KerberosApacheAuth' => $vendorDir . '/icewind/smb/src/KerberosApacheAuth.php', - 'Icewind\\SMB\\KerberosAuth' => $vendorDir . '/icewind/smb/src/KerberosAuth.php', - 'Icewind\\SMB\\Native\\NativeFileInfo' => $vendorDir . '/icewind/smb/src/Native/NativeFileInfo.php', - 'Icewind\\SMB\\Native\\NativeReadStream' => $vendorDir . '/icewind/smb/src/Native/NativeReadStream.php', - 'Icewind\\SMB\\Native\\NativeServer' => $vendorDir . '/icewind/smb/src/Native/NativeServer.php', - 'Icewind\\SMB\\Native\\NativeShare' => $vendorDir . '/icewind/smb/src/Native/NativeShare.php', - 'Icewind\\SMB\\Native\\NativeState' => $vendorDir . '/icewind/smb/src/Native/NativeState.php', - 'Icewind\\SMB\\Native\\NativeStream' => $vendorDir . '/icewind/smb/src/Native/NativeStream.php', - 'Icewind\\SMB\\Native\\NativeWriteStream' => $vendorDir . '/icewind/smb/src/Native/NativeWriteStream.php', - 'Icewind\\SMB\\Options' => $vendorDir . '/icewind/smb/src/Options.php', - 'Icewind\\SMB\\ServerFactory' => $vendorDir . '/icewind/smb/src/ServerFactory.php', - 'Icewind\\SMB\\StringBuffer' => $vendorDir . '/icewind/smb/src/StringBuffer.php', - 'Icewind\\SMB\\System' => $vendorDir . '/icewind/smb/src/System.php', - 'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php', - 'Icewind\\SMB\\Wrapped\\Connection' => $vendorDir . '/icewind/smb/src/Wrapped/Connection.php', - 'Icewind\\SMB\\Wrapped\\ErrorCodes' => $vendorDir . '/icewind/smb/src/Wrapped/ErrorCodes.php', - 'Icewind\\SMB\\Wrapped\\FileInfo' => $vendorDir . '/icewind/smb/src/Wrapped/FileInfo.php', - 'Icewind\\SMB\\Wrapped\\NotifyHandler' => $vendorDir . '/icewind/smb/src/Wrapped/NotifyHandler.php', - 'Icewind\\SMB\\Wrapped\\Parser' => $vendorDir . '/icewind/smb/src/Wrapped/Parser.php', - 'Icewind\\SMB\\Wrapped\\RawConnection' => $vendorDir . '/icewind/smb/src/Wrapped/RawConnection.php', - 'Icewind\\SMB\\Wrapped\\Server' => $vendorDir . '/icewind/smb/src/Wrapped/Server.php', - 'Icewind\\SMB\\Wrapped\\Share' => $vendorDir . '/icewind/smb/src/Wrapped/Share.php', - 'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php', - 'Icewind\\Streams\\CountWrapper' => $vendorDir . '/icewind/streams/src/CountWrapper.php', - 'Icewind\\Streams\\Directory' => $vendorDir . '/icewind/streams/src/Directory.php', - 'Icewind\\Streams\\DirectoryFilter' => $vendorDir . '/icewind/streams/src/DirectoryFilter.php', - 'Icewind\\Streams\\DirectoryWrapper' => $vendorDir . '/icewind/streams/src/DirectoryWrapper.php', - 'Icewind\\Streams\\File' => $vendorDir . '/icewind/streams/src/File.php', - 'Icewind\\Streams\\HashWrapper' => $vendorDir . '/icewind/streams/src/HashWrapper.php', - 'Icewind\\Streams\\IteratorDirectory' => $vendorDir . '/icewind/streams/src/IteratorDirectory.php', - 'Icewind\\Streams\\NullWrapper' => $vendorDir . '/icewind/streams/src/NullWrapper.php', - 'Icewind\\Streams\\Path' => $vendorDir . '/icewind/streams/src/Path.php', - 'Icewind\\Streams\\PathWrapper' => $vendorDir . '/icewind/streams/src/PathWrapper.php', - 'Icewind\\Streams\\ReadHashWrapper' => $vendorDir . '/icewind/streams/src/ReadHashWrapper.php', - 'Icewind\\Streams\\RetryWrapper' => $vendorDir . '/icewind/streams/src/RetryWrapper.php', - 'Icewind\\Streams\\SeekableWrapper' => $vendorDir . '/icewind/streams/src/SeekableWrapper.php', - 'Icewind\\Streams\\Url' => $vendorDir . '/icewind/streams/src/Url.php', - 'Icewind\\Streams\\UrlCallback' => $vendorDir . '/icewind/streams/src/UrlCallback.php', - 'Icewind\\Streams\\Wrapper' => $vendorDir . '/icewind/streams/src/Wrapper.php', - 'Icewind\\Streams\\WrapperHandler' => $vendorDir . '/icewind/streams/src/WrapperHandler.php', - 'Icewind\\Streams\\WriteHashWrapper' => $vendorDir . '/icewind/streams/src/WriteHashWrapper.php', -); diff --git a/apps/files_external/3rdparty/composer/autoload_namespaces.php b/apps/files_external/3rdparty/composer/autoload_namespaces.php deleted file mode 100644 index 3f5c9296251..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -// autoload_namespaces.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( -); diff --git a/apps/files_external/3rdparty/composer/autoload_psr4.php b/apps/files_external/3rdparty/composer/autoload_psr4.php deleted file mode 100644 index 6bed531ed31..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_psr4.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - -// autoload_psr4.php @generated by Composer - -$vendorDir = dirname(__DIR__); -$baseDir = $vendorDir; - -return array( - 'Icewind\\Streams\\' => array($vendorDir . '/icewind/streams/src'), - 'Icewind\\SMB\\' => array($vendorDir . '/icewind/smb/src'), -); diff --git a/apps/files_external/3rdparty/composer/autoload_real.php b/apps/files_external/3rdparty/composer/autoload_real.php deleted file mode 100644 index 5eccc1e1cf6..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_real.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -// autoload_real.php @generated by Composer - -class ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3 -{ - private static $loader; - - public static function loadClassLoader($class) - { - if ('Composer\Autoload\ClassLoader' === $class) { - require __DIR__ . '/ClassLoader.php'; - } - } - - /** - * @return \Composer\Autoload\ClassLoader - */ - public static function getLoader() - { - if (null !== self::$loader) { - return self::$loader; - } - - require __DIR__ . '/platform_check.php'; - - spl_autoload_register(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit98fe9b281934250b3a93f69a5ce843b3', 'loadClassLoader')); - - require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::getInitializer($loader)); - - $loader->setClassMapAuthoritative(true); - $loader->register(true); - - return $loader; - } -} diff --git a/apps/files_external/3rdparty/composer/autoload_static.php b/apps/files_external/3rdparty/composer/autoload_static.php deleted file mode 100644 index 1d309dcd6f1..00000000000 --- a/apps/files_external/3rdparty/composer/autoload_static.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -// autoload_static.php @generated by Composer - -namespace Composer\Autoload; - -class ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3 -{ - public static $prefixLengthsPsr4 = array ( - 'I' => - array ( - 'Icewind\\Streams\\' => 16, - 'Icewind\\SMB\\' => 12, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Icewind\\Streams\\' => - array ( - 0 => __DIR__ . '/..' . '/icewind/streams/src', - ), - 'Icewind\\SMB\\' => - array ( - 0 => __DIR__ . '/..' . '/icewind/smb/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Icewind\\SMB\\ACL' => __DIR__ . '/..' . '/icewind/smb/src/ACL.php', - 'Icewind\\SMB\\AbstractServer' => __DIR__ . '/..' . '/icewind/smb/src/AbstractServer.php', - 'Icewind\\SMB\\AbstractShare' => __DIR__ . '/..' . '/icewind/smb/src/AbstractShare.php', - 'Icewind\\SMB\\AnonymousAuth' => __DIR__ . '/..' . '/icewind/smb/src/AnonymousAuth.php', - 'Icewind\\SMB\\BasicAuth' => __DIR__ . '/..' . '/icewind/smb/src/BasicAuth.php', - 'Icewind\\SMB\\Change' => __DIR__ . '/..' . '/icewind/smb/src/Change.php', - 'Icewind\\SMB\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AccessDeniedException.php', - 'Icewind\\SMB\\Exception\\AlreadyExistsException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AlreadyExistsException.php', - 'Icewind\\SMB\\Exception\\AuthenticationException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/AuthenticationException.php', - 'Icewind\\SMB\\Exception\\ConnectException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectException.php', - 'Icewind\\SMB\\Exception\\ConnectionAbortedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionAbortedException.php', - 'Icewind\\SMB\\Exception\\ConnectionException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionException.php', - 'Icewind\\SMB\\Exception\\ConnectionRefusedException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionRefusedException.php', - 'Icewind\\SMB\\Exception\\ConnectionResetException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ConnectionResetException.php', - 'Icewind\\SMB\\Exception\\DependencyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/DependencyException.php', - 'Icewind\\SMB\\Exception\\Exception' => __DIR__ . '/..' . '/icewind/smb/src/Exception/Exception.php', - 'Icewind\\SMB\\Exception\\FileInUseException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/FileInUseException.php', - 'Icewind\\SMB\\Exception\\ForbiddenException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/ForbiddenException.php', - 'Icewind\\SMB\\Exception\\HostDownException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/HostDownException.php', - 'Icewind\\SMB\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidArgumentException.php', - 'Icewind\\SMB\\Exception\\InvalidHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidHostException.php', - 'Icewind\\SMB\\Exception\\InvalidParameterException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidParameterException.php', - 'Icewind\\SMB\\Exception\\InvalidPathException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidPathException.php', - 'Icewind\\SMB\\Exception\\InvalidRequestException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidRequestException.php', - 'Icewind\\SMB\\Exception\\InvalidResourceException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidResourceException.php', - 'Icewind\\SMB\\Exception\\InvalidTypeException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/InvalidTypeException.php', - 'Icewind\\SMB\\Exception\\NoLoginServerException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoLoginServerException.php', - 'Icewind\\SMB\\Exception\\NoRouteToHostException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NoRouteToHostException.php', - 'Icewind\\SMB\\Exception\\NotEmptyException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotEmptyException.php', - 'Icewind\\SMB\\Exception\\NotFoundException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/NotFoundException.php', - 'Icewind\\SMB\\Exception\\OutOfSpaceException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/OutOfSpaceException.php', - 'Icewind\\SMB\\Exception\\RevisionMismatchException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/RevisionMismatchException.php', - 'Icewind\\SMB\\Exception\\TimedOutException' => __DIR__ . '/..' . '/icewind/smb/src/Exception/TimedOutException.php', - 'Icewind\\SMB\\IAuth' => __DIR__ . '/..' . '/icewind/smb/src/IAuth.php', - 'Icewind\\SMB\\IFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/IFileInfo.php', - 'Icewind\\SMB\\INotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/INotifyHandler.php', - 'Icewind\\SMB\\IOptions' => __DIR__ . '/..' . '/icewind/smb/src/IOptions.php', - 'Icewind\\SMB\\IServer' => __DIR__ . '/..' . '/icewind/smb/src/IServer.php', - 'Icewind\\SMB\\IShare' => __DIR__ . '/..' . '/icewind/smb/src/IShare.php', - 'Icewind\\SMB\\ISystem' => __DIR__ . '/..' . '/icewind/smb/src/ISystem.php', - 'Icewind\\SMB\\ITimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/ITimeZoneProvider.php', - 'Icewind\\SMB\\KerberosApacheAuth' => __DIR__ . '/..' . '/icewind/smb/src/KerberosApacheAuth.php', - 'Icewind\\SMB\\KerberosAuth' => __DIR__ . '/..' . '/icewind/smb/src/KerberosAuth.php', - 'Icewind\\SMB\\Native\\NativeFileInfo' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeFileInfo.php', - 'Icewind\\SMB\\Native\\NativeReadStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeReadStream.php', - 'Icewind\\SMB\\Native\\NativeServer' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeServer.php', - 'Icewind\\SMB\\Native\\NativeShare' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeShare.php', - 'Icewind\\SMB\\Native\\NativeState' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeState.php', - 'Icewind\\SMB\\Native\\NativeStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeStream.php', - 'Icewind\\SMB\\Native\\NativeWriteStream' => __DIR__ . '/..' . '/icewind/smb/src/Native/NativeWriteStream.php', - 'Icewind\\SMB\\Options' => __DIR__ . '/..' . '/icewind/smb/src/Options.php', - 'Icewind\\SMB\\ServerFactory' => __DIR__ . '/..' . '/icewind/smb/src/ServerFactory.php', - 'Icewind\\SMB\\StringBuffer' => __DIR__ . '/..' . '/icewind/smb/src/StringBuffer.php', - 'Icewind\\SMB\\System' => __DIR__ . '/..' . '/icewind/smb/src/System.php', - 'Icewind\\SMB\\TimeZoneProvider' => __DIR__ . '/..' . '/icewind/smb/src/TimeZoneProvider.php', - 'Icewind\\SMB\\Wrapped\\Connection' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Connection.php', - 'Icewind\\SMB\\Wrapped\\ErrorCodes' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/ErrorCodes.php', - 'Icewind\\SMB\\Wrapped\\FileInfo' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/FileInfo.php', - 'Icewind\\SMB\\Wrapped\\NotifyHandler' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/NotifyHandler.php', - 'Icewind\\SMB\\Wrapped\\Parser' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Parser.php', - 'Icewind\\SMB\\Wrapped\\RawConnection' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/RawConnection.php', - 'Icewind\\SMB\\Wrapped\\Server' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Server.php', - 'Icewind\\SMB\\Wrapped\\Share' => __DIR__ . '/..' . '/icewind/smb/src/Wrapped/Share.php', - 'Icewind\\Streams\\CallbackWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CallbackWrapper.php', - 'Icewind\\Streams\\CountWrapper' => __DIR__ . '/..' . '/icewind/streams/src/CountWrapper.php', - 'Icewind\\Streams\\Directory' => __DIR__ . '/..' . '/icewind/streams/src/Directory.php', - 'Icewind\\Streams\\DirectoryFilter' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryFilter.php', - 'Icewind\\Streams\\DirectoryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/DirectoryWrapper.php', - 'Icewind\\Streams\\File' => __DIR__ . '/..' . '/icewind/streams/src/File.php', - 'Icewind\\Streams\\HashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/HashWrapper.php', - 'Icewind\\Streams\\IteratorDirectory' => __DIR__ . '/..' . '/icewind/streams/src/IteratorDirectory.php', - 'Icewind\\Streams\\NullWrapper' => __DIR__ . '/..' . '/icewind/streams/src/NullWrapper.php', - 'Icewind\\Streams\\Path' => __DIR__ . '/..' . '/icewind/streams/src/Path.php', - 'Icewind\\Streams\\PathWrapper' => __DIR__ . '/..' . '/icewind/streams/src/PathWrapper.php', - 'Icewind\\Streams\\ReadHashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/ReadHashWrapper.php', - 'Icewind\\Streams\\RetryWrapper' => __DIR__ . '/..' . '/icewind/streams/src/RetryWrapper.php', - 'Icewind\\Streams\\SeekableWrapper' => __DIR__ . '/..' . '/icewind/streams/src/SeekableWrapper.php', - 'Icewind\\Streams\\Url' => __DIR__ . '/..' . '/icewind/streams/src/Url.php', - 'Icewind\\Streams\\UrlCallback' => __DIR__ . '/..' . '/icewind/streams/src/UrlCallback.php', - 'Icewind\\Streams\\Wrapper' => __DIR__ . '/..' . '/icewind/streams/src/Wrapper.php', - 'Icewind\\Streams\\WrapperHandler' => __DIR__ . '/..' . '/icewind/streams/src/WrapperHandler.php', - 'Icewind\\Streams\\WriteHashWrapper' => __DIR__ . '/..' . '/icewind/streams/src/WriteHashWrapper.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit98fe9b281934250b3a93f69a5ce843b3::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json deleted file mode 100644 index 9b66e649715..00000000000 --- a/apps/files_external/3rdparty/composer/installed.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "packages": [ - { - "name": "icewind/smb", - "version": "v3.5.4", - "version_normalized": "3.5.4.0", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/SMB.git", - "reference": "76995aa11c14e39bccd0f2370ed63b2f8f623a6d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/SMB/zipball/76995aa11c14e39bccd0f2370ed63b2f8f623a6d", - "reference": "76995aa11c14e39bccd0f2370ed63b2f8f623a6d", - "shasum": "" - }, - "require": { - "icewind/streams": ">=0.7.3", - "php": ">=7.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "phpunit/phpunit": "^8.5|^9.3.8", - "psalm/phar": "^4.3" - }, - "time": "2022-05-30T15:18:19+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "php wrapper for smbclient and libsmbclient-php", - "support": { - "issues": "https://github.com/icewind1991/SMB/issues", - "source": "https://github.com/icewind1991/SMB/tree/v3.5.4" - }, - "install-path": "../icewind/smb" - }, - { - "name": "icewind/streams", - "version": "v0.7.7", - "version_normalized": "0.7.7.0", - "source": { - "type": "git", - "url": "https://github.com/icewind1991/Streams.git", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9" - }, - "time": "2023-03-16T14:52:25+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "description": "A set of generic stream wrappers", - "support": { - "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" - }, - "install-path": "../icewind/streams" - } - ], - "dev": true, - "dev-package-names": [] -} diff --git a/apps/files_external/3rdparty/composer/installed.php b/apps/files_external/3rdparty/composer/installed.php deleted file mode 100644 index 65684203f3f..00000000000 --- a/apps/files_external/3rdparty/composer/installed.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php return array( - 'root' => array( - 'name' => 'files_external/3rdparty', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - 'files_external/3rdparty' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'icewind/smb' => array( - 'pretty_version' => 'v3.5.4', - 'version' => '3.5.4.0', - 'reference' => '76995aa11c14e39bccd0f2370ed63b2f8f623a6d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../icewind/smb', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'icewind/streams' => array( - 'pretty_version' => 'v0.7.7', - 'version' => '0.7.7.0', - 'reference' => '64200fd7cfcc7f550c3c695c48d8fd8bba97fecb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../icewind/streams', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/apps/files_external/3rdparty/composer/platform_check.php b/apps/files_external/3rdparty/composer/platform_check.php deleted file mode 100644 index 589e9e770b9..00000000000 --- a/apps/files_external/3rdparty/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -// platform_check.php @generated by Composer - -$issues = array(); - -if (!(PHP_VERSION_ID >= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/apps/files_external/3rdparty/icewind/smb/.gitignore b/apps/files_external/3rdparty/icewind/smb/.gitignore deleted file mode 100644 index ff449e1b5d7..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.idea -vendor -composer.lock -.php_cs.cache -listen.php -test.php -*.cache
\ No newline at end of file diff --git a/apps/files_external/3rdparty/icewind/smb/.php_cs.dist b/apps/files_external/3rdparty/icewind/smb/.php_cs.dist deleted file mode 100644 index a2fdf19e802..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/.php_cs.dist +++ /dev/null @@ -1,15 +0,0 @@ -<?php -$finder = PhpCsFixer\Finder::create() - ->exclude('vendor') - ->in(__DIR__) -; -return PhpCsFixer\Config::create() - ->setRules([ - '@PSR2' => true, - 'array_syntax' => ['syntax' => 'short'], - 'braces' => ['position_after_functions_and_oop_constructs' => 'same'], - 'binary_operator_spaces' => ['align_double_arrow' => true, 'align_equals' => false], - ]) - ->setIndent("\t") - ->setFinder($finder) - ; diff --git a/apps/files_external/3rdparty/icewind/smb/LICENSE.txt b/apps/files_external/3rdparty/icewind/smb/LICENSE.txt deleted file mode 100644 index 16e3a1004ec..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/apps/files_external/3rdparty/icewind/smb/README.md b/apps/files_external/3rdparty/icewind/smb/README.md deleted file mode 100644 index fec1faefbad..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/README.md +++ /dev/null @@ -1,187 +0,0 @@ -SMB -=== - -[](https://github.com/icewind1991/SMB/actions/workflows/ci.yaml) -[](https://codecov.io/gh/icewind1991/SMB) - -PHP wrapper for `smbclient` and [`libsmbclient-php`](https://github.com/eduardok/libsmbclient-php) - -- Reuses a single `smbclient` instance for multiple requests -- Doesn't leak the password to the process list -- Simple 1-on-1 mapping of SMB commands -- A stream-based api to remove the need for temporary files -- Support for using libsmbclient directly trough [`libsmbclient-php`](https://github.com/eduardok/libsmbclient-php) - -Examples ----- - -### Connect to a share ### - -```php -<?php -use Icewind\SMB\ServerFactory; -use Icewind\SMB\BasicAuth; - -require('vendor/autoload.php'); - -$serverFactory = new ServerFactory(); -$auth = new BasicAuth('user', 'workgroup', 'password'); -$server = $serverFactory->createServer('localhost', $auth); - -$share = $server->getShare('test'); -``` - -The server factory will automatically pick between the `smbclient` and `libsmbclient-php` -based backend depending on what is available. - -### Using anonymous authentication ### - -```php -$serverFactory = new ServerFactory(); -$auth = new AnonymousAuth(); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Using kerberos authentication ### - -There are two ways of using kerberos to authenticate against the smb server: - -- Using a ticket from the php server -- Re-using a ticket send by the client - -### Using a server ticket - -Using a server ticket allows the web server to authenticate against the smb server using an existing machine account. - -The ticket needs to be available in the environment of the php process. - -```php -$serverFactory = new ServerFactory(); -$auth = new KerberosAuth(); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Re-using a client ticket - -By re-using a client ticket you can create a single sign-on setup where the user authenticates against -the web service using kerberos. And the web server can forward that ticket to the smb server, allowing it -to act on the behalf of the user without requiring the user to enter his passord. - -The setup for such a system is fairly involved and requires roughly the following this - -- The web server is authenticated against kerberos with a machine account -- Delegation is enabled for the web server's machine account -- Apache is setup to perform kerberos authentication and save the ticket in it's environment -- Php has the krb5 extension installed -- The client authenticates using a ticket with forwarding enabled - -```php -$serverFactory = new ServerFactory(); -$auth = new KerberosApacheAuth(); -$server = $serverFactory->createServer('localhost', $auth); -``` - -### Upload a file ### - -```php -$share->put($fileToUpload, 'example.txt'); -``` - -### Download a file ### - -```php -$share->get('example.txt', $target); -``` - -### List shares on the remote server ### - -```php -$shares = $server->listShares(); - -foreach ($shares as $share) { - echo $share->getName() . "\n"; -} -``` - -### List the content of a folder ### - -```php -$content = $share->dir('test'); - -foreach ($content as $info) { - echo $info->getName() . "\n"; - echo "\tsize :" . $info->getSize() . "\n"; -} -``` - -### Using read streams - -```php -$fh = $share->read('test.txt'); -echo fread($fh, 4086); -fclose($fh); -``` - -### Using write streams - -```php -$fh = $share->write('test.txt'); -fwrite($fh, 'bar'); -fclose($fh); -``` - -**Note**: write() will truncate your file to 0bytes. You may open a writeable stream with append() which will point -the cursor to the end of the file or create it if it does not exist yet. (append() is only compatible with libsmbclient-php) -```php -$fh = $share->append('test.txt'); -fwrite($fh, 'bar'); -fclose($fh); -``` - - -### Using notify - -```php -$share->notify('')->listen(function (\Icewind\SMB\Change $change) { - echo $change->getCode() . ': ' . $change->getPath() . "\n"; -}); -``` - -### Changing network timeouts - -```php -$options = new Options(); -$options->setTimeout(5); -$serverFactory = new ServerFactory($options); -``` - -### Setting protocol version - -```php -$options = new Options(); -$options->setMinProtocol(IOptions::PROTOCOL_SMB2); -$options->setMaxProtocol(IOptions::PROTOCOL_SMB3); -$serverFactory = new ServerFactory($options); -``` - -Note, setting the protocol version is not supported with php-smbclient version 1.0.1 or lower. - -### Customizing system integration - -The `smbclient` backend needs to get various information about the system it's running on to function -such as the paths of various binaries or the system timezone. -While the default logic for getting this information should work on most systems, it is possible to customize this behaviour. - -In order to customize the integration you provide a custom implementation of `ITimezoneProvider` and/or `ISystem` and pass them as arguments to the `ServerFactory`. - -## Testing SMB - -Use the following steps to check if the library can connect to your SMB share. - -1. Clone this repository or download the source as [zip](https://github.com/icewind1991/SMB/archive/master.zip) -2. Make sure [composer](https://getcomposer.org/) is installed -3. Run `composer install` in the root of the repository -4. Edit `example.php` with the relevant settings for your share. -5. Run `php example.php` - -If everything works correctly then the contents of the share should be outputted. diff --git a/apps/files_external/3rdparty/icewind/smb/composer.json b/apps/files_external/3rdparty/icewind/smb/composer.json deleted file mode 100644 index 6ab6100af71..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "icewind/smb", - "description": "php wrapper for smbclient and libsmbclient-php", - "license": "MIT", - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "require": { - "php": ">=7.2", - "icewind/streams": ">=0.7.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5|^9.3.8", - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.57", - "psalm/phar": "^4.3" - }, - "autoload": { - "psr-4": { - "Icewind\\SMB\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Icewind\\SMB\\Test\\": "tests/" - } - }, - "scripts": { - "lint": "parallel-lint --exclude src --exclude vendor --exclude target --exclude build .", - "cs:check": "php-cs-fixer fix --dry-run --diff", - "cs:fix": "php-cs-fixer fix", - "psalm": "psalm.phar" - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ACL.php b/apps/files_external/3rdparty/icewind/smb/src/ACL.php deleted file mode 100644 index 0b5b05a86af..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ACL.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php declare(strict_types=1); -/** - * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -class ACL { - const TYPE_ALLOW = 0; - const TYPE_DENY = 1; - - const MASK_READ = 0x0001; - const MASK_WRITE = 0x0002; - const MASK_EXECUTE = 0x00020; - const MASK_DELETE = 0x10000; - - const FLAG_OBJECT_INHERIT = 0x1; - const FLAG_CONTAINER_INHERIT = 0x2; - - /** @var int */ - private $type; - /** @var int */ - private $flags; - /** @var int */ - private $mask; - - public function __construct(int $type, int $flags, int $mask) { - $this->type = $type; - $this->flags = $flags; - $this->mask = $mask; - } - - /** - * Check if the acl allows a specific permissions - * - * Note that this does not take inherited acls into account - * - * @param int $mask one of the ACL::MASK_* constants - * @return bool - */ - public function allows(int $mask): bool { - return $this->type === self::TYPE_ALLOW && ($this->mask & $mask) === $mask; - } - - /** - * Check if the acl allows a specific permissions - * - * Note that this does not take inherited acls into account - * - * @param int $mask one of the ACL::MASK_* constants - * @return bool - */ - public function denies(int $mask): bool { - return $this->type === self::TYPE_DENY && ($this->mask & $mask) === $mask; - } - - public function getType(): int { - return $this->type; - } - - public function getFlags(): int { - return $this->flags; - } - - public function getMask(): int { - return $this->mask; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php b/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php deleted file mode 100644 index 810ca807d9b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AbstractServer.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -abstract class AbstractServer implements IServer { - const LOCALE = 'en_US.UTF-8'; - - /** @var string */ - protected $host; - - /** @var IAuth */ - protected $auth; - - /** @var ISystem */ - protected $system; - - /** @var ITimeZoneProvider */ - protected $timezoneProvider; - - /** @var IOptions */ - protected $options; - - /** - * @param string $host - * @param IAuth $auth - * @param ISystem $system - * @param ITimeZoneProvider $timeZoneProvider - * @param IOptions $options - */ - public function __construct(string $host, IAuth $auth, ISystem $system, ITimeZoneProvider $timeZoneProvider, IOptions $options) { - $this->host = $host; - $this->auth = $auth; - $this->system = $system; - $this->timezoneProvider = $timeZoneProvider; - $this->options = $options; - } - - public function getAuth(): IAuth { - return $this->auth; - } - - public function getHost(): string { - return $this->host; - } - - public function getTimeZone(): string { - return $this->timezoneProvider->get($this->host); - } - - public function getSystem(): ISystem { - return $this->system; - } - - public function getOptions(): IOptions { - return $this->options; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php b/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php deleted file mode 100644 index 454eb143e49..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AbstractShare.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -/** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\InvalidPathException; - -abstract class AbstractShare implements IShare { - /** @var string[] */ - private $forbiddenCharacters; - - public function __construct() { - $this->forbiddenCharacters = ['?', '<', '>', ':', '*', '|', '"', chr(0), "\n", "\r"]; - } - - /** - * @param string $path - * @throws InvalidPathException - */ - protected function verifyPath(string $path): void { - foreach ($this->forbiddenCharacters as $char) { - if (strpos($path, $char) !== false) { - throw new InvalidPathException('Invalid path, "' . $char . '" is not allowed'); - } - } - } - - /** - * @param string[] $charList - */ - public function setForbiddenChars(array $charList): void { - $this->forbiddenCharacters = $charList; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php b/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php deleted file mode 100644 index 302a249c8fa..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/AnonymousAuth.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -class AnonymousAuth implements IAuth { - public function getUsername(): ?string { - return null; - } - - public function getWorkgroup(): ?string { - return 'dummy'; - } - - public function getPassword(): ?string { - return null; - } - - public function getExtraCommandLineArguments(): string { - return '-N'; - } - - public function setExtraSmbClientOptions($smbClientState): void { - if (smbclient_option_set($smbClientState, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, true) === false) { - throw new Exception("Failed to set smbclient options for anonymous auth"); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php b/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php deleted file mode 100644 index 04004e6ebd8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/BasicAuth.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -class BasicAuth implements IAuth { - /** @var string */ - private $username; - /** @var string|null */ - private $workgroup; - /** @var string */ - private $password; - - public function __construct(string $username, ?string $workgroup, string $password) { - $this->username = $username; - $this->workgroup = $workgroup; - $this->password = $password; - } - - public function getUsername(): ?string { - return $this->username; - } - - public function getWorkgroup(): ?string { - return $this->workgroup; - } - - public function getPassword(): ?string { - return $this->password; - } - - public function getExtraCommandLineArguments(): string { - return ($this->workgroup) ? '-W ' . escapeshellarg($this->workgroup) : ''; - } - - public function setExtraSmbClientOptions($smbClientState): void { - // noop - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Change.php b/apps/files_external/3rdparty/icewind/smb/src/Change.php deleted file mode 100644 index 4d6ab49d2bb..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Change.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - * - */ - -namespace Icewind\SMB; - -class Change { - /** @var int */ - private $code; - /** @var string */ - private $path; - - public function __construct(int $code, string $path) { - $this->code = $code; - $this->path = $path; - } - - public function getCode(): int { - return $this->code; - } - - public function getPath(): string { - return $this->path; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php deleted file mode 100644 index adc42344b43..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AccessDeniedException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class AccessDeniedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php deleted file mode 100644 index aaa5226f795..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AlreadyExistsException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class AlreadyExistsException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php deleted file mode 100644 index 9626d795e34..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/AuthenticationException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class AuthenticationException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php deleted file mode 100644 index 9aa174ba5bd..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php deleted file mode 100644 index 59363ca7ba9..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionAbortedException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2020 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionAbortedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php deleted file mode 100644 index d27752e702b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php deleted file mode 100644 index ffebb4c8a51..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionRefusedException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionRefusedException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php deleted file mode 100644 index d5ac10d32dc..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ConnectionResetException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2020 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ConnectionResetException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php deleted file mode 100644 index 39735578798..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class DependencyException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php deleted file mode 100644 index e3e860b30d5..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/Exception.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -use Throwable; - -/** - * @psalm-consistent-constructor - */ -class Exception extends \Exception { - public function __construct(string $message = "", int $code = 0, Throwable $previous = null) { - parent::__construct($message, $code, $previous); - } - - /** - * @param string|null $path - * @param string|int|null $error - * @return Exception - */ - public static function unknown(?string $path, $error): Exception { - $message = 'Unknown error (' . (string)$error . ')'; - if ($path) { - $message .= ' for ' . $path; - } - - return new Exception($message, is_int($error) ? $error : 0); - } - - /** - * @param array<int|string, class-string<Exception>> $exceptionMap - * @param string|int|null $error - * @param string|null $path - * @return Exception - */ - public static function fromMap(array $exceptionMap, $error, ?string $path): Exception { - if (isset($exceptionMap[$error])) { - $exceptionClass = $exceptionMap[$error]; - if (is_numeric($error)) { - return new $exceptionClass($path, $error); - } else { - return new $exceptionClass($path); - } - } else { - return Exception::unknown($path, $error); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php deleted file mode 100644 index 4408d39e06e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/FileInUseException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class FileInUseException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php deleted file mode 100644 index 31c051893e8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/ForbiddenException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class ForbiddenException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php deleted file mode 100644 index 9ae762b6108..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/HostDownException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class HostDownException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php deleted file mode 100644 index a21d069d47f..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidArgumentException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php deleted file mode 100644 index 2358b7f338f..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidHostException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidHostException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php deleted file mode 100644 index 5ffbf4f3819..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidParameterException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidParameterException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php deleted file mode 100644 index 2b7859de155..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidPathException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidPathException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php deleted file mode 100644 index 1494de9efcb..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidRequestException.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidRequestException extends Exception { - /** - * @var string - */ - protected $path; - - public function __construct(string $path = "", int $code = 0, \Throwable $previous = null) { - $class = get_class($this); - $parts = explode('\\', $class); - $baseName = array_pop($parts); - parent::__construct('Invalid request for ' . $path . ' (' . $baseName . ')', $code, $previous); - $this->path = $path; - } - - /** - * @return string - */ - public function getPath() { - return $this->path; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php deleted file mode 100644 index b5fdb851cab..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidResourceException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidResourceException extends Exception { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php deleted file mode 100644 index 00da288b8a1..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/InvalidTypeException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class InvalidTypeException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php deleted file mode 100644 index 8f0c5539282..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoLoginServerException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class NoLoginServerException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php deleted file mode 100644 index 03daf36d610..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NoRouteToHostException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class NoRouteToHostException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php deleted file mode 100644 index 0e606d65ca3..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotEmptyException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class NotEmptyException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php deleted file mode 100644 index 29ea2d87c99..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/NotFoundException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class NotFoundException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php deleted file mode 100644 index 4c5517a1404..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/OutOfSpaceException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class OutOfSpaceException extends InvalidRequestException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php deleted file mode 100644 index 3c7c180bf93..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/RevisionMismatchException.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -use Throwable; - -class RevisionMismatchException extends Exception { - public function __construct(string $message = 'Protocol version mismatch', int $code = 0, Throwable $previous = null) { - parent::__construct($message, $code, $previous); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php deleted file mode 100644 index dd57c9b8ccc..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Exception/TimedOutException.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Exception; - -class TimedOutException extends ConnectException { -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IAuth.php b/apps/files_external/3rdparty/icewind/smb/src/IAuth.php deleted file mode 100644 index 9d4302dd4e8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IAuth.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -interface IAuth { - public function getUsername(): ?string; - - public function getWorkgroup(): ?string; - - public function getPassword(): ?string; - - /** - * Any extra command line option for smbclient that are required - * - * @return string - */ - public function getExtraCommandLineArguments(): string; - - /** - * Set any extra options for libsmbclient that are required - * - * @param resource $smbClientState - */ - public function setExtraSmbClientOptions($smbClientState): void; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php deleted file mode 100644 index 7e440c1420b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IFileInfo.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB; - -interface IFileInfo { - /* - * Mappings of the DOS mode bits, as returned by smbc_getxattr() when the - * attribute name "system.dos_attr.mode" (or "system.dos_attr.*" or - * "system.*") is specified. - */ - const MODE_READONLY = 0x01; - const MODE_HIDDEN = 0x02; - const MODE_SYSTEM = 0x04; - const MODE_VOLUME_ID = 0x08; - const MODE_DIRECTORY = 0x10; - const MODE_ARCHIVE = 0x20; - const MODE_NORMAL = 0x80; - - public function getPath(): string; - - public function getName(): string; - - public function getSize(): int; - - public function getMTime(): int; - - public function isDirectory(): bool; - - public function isReadOnly(): bool; - - public function isHidden(): bool; - - public function isSystem(): bool; - - public function isArchived(): bool; - - /** - * @return ACL[] - */ - public function getAcls(): array; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php deleted file mode 100644 index e964a15fa37..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - * - */ - -namespace Icewind\SMB; - -interface INotifyHandler { - // https://msdn.microsoft.com/en-us/library/dn392331.aspx - const NOTIFY_ADDED = 1; - const NOTIFY_REMOVED = 2; - const NOTIFY_MODIFIED = 3; - const NOTIFY_RENAMED_OLD = 4; - const NOTIFY_RENAMED_NEW = 5; - const NOTIFY_ADDED_STREAM = 6; - const NOTIFY_REMOVED_STREAM = 7; - const NOTIFY_MODIFIED_STREAM = 8; - const NOTIFY_REMOVED_BY_DELETE = 9; - - /** - * Get all changes detected since the start of the notify process or the last call to getChanges - * - * @return Change[] - */ - public function getChanges(): array; - - /** - * Listen actively to all incoming changes - * - * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated - * - * @param callable(Change):?bool $callback - */ - public function listen(callable $callback): void; - - /** - * Stop listening for changes - * - * Note that any pending changes will be discarded - */ - public function stop(): void; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IOptions.php b/apps/files_external/3rdparty/icewind/smb/src/IOptions.php deleted file mode 100644 index 4ab7b26c660..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IOptions.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -interface IOptions { - const PROTOCOL_NT1 = 'NT1'; - const PROTOCOL_SMB2 = 'SMB2'; - const PROTOCOL_SMB2_02 = 'SMB2_02'; - const PROTOCOL_SMB2_22 = 'SMB2_22'; - const PROTOCOL_SMB2_24 = 'SMB2_24'; - const PROTOCOL_SMB3 = 'SMB3'; - const PROTOCOL_SMB3_00 = 'SMB3_00'; - const PROTOCOL_SMB3_02 = 'SMB3_02'; - const PROTOCOL_SMB3_10 = 'SMB3_10'; - const PROTOCOL_SMB3_11 = 'SMB3_11'; - - public function getTimeout(): int; - - public function getMinProtocol(): ?string; - - public function getMaxProtocol(): ?string; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IServer.php b/apps/files_external/3rdparty/icewind/smb/src/IServer.php deleted file mode 100644 index c2f5a504bcf..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IServer.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -interface IServer { - public function getAuth(): IAuth; - - public function getHost(): string; - - /** - * @return \Icewind\SMB\IShare[] - * - * @throws \Icewind\SMB\Exception\AuthenticationException - * @throws \Icewind\SMB\Exception\InvalidHostException - */ - public function listShares(): array; - - public function getShare(string $name): IShare; - - public function getTimeZone(): string; - - public function getSystem(): ISystem; - - public function getOptions(): IOptions; - - public static function available(ISystem $system): bool; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/IShare.php b/apps/files_external/3rdparty/icewind/smb/src/IShare.php deleted file mode 100644 index 40213b93a99..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/IShare.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; - -interface IShare { - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string; - - /** - * Download a remote file - * - * @param string $source remove file - * @param string $target local file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function get(string $source, string $target): bool; - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remove file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool; - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source); - - /** - * Open a writable stream to a remote file - * Note: This method will truncate the file to 0bytes - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target); - - /** - * Open a writable stream to a remote file and set the cursor to the end of the file - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - * @throws InvalidRequestException - */ - public function append(string $target); - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool; - - /** - * Delete a file on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function del(string $path): bool; - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array; - - /** - * @param string $path - * @return IFileInfo - * - * @throws NotFoundException - */ - public function stat(string $path): IFileInfo; - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool; - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool; - - /** - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode); - - /** - * @param string $path - * @return INotifyHandler - */ - public function notify(string $path); - - /** - * Get the IServer instance for this share - * - * @return IServer - */ - public function getServer(): IServer; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ISystem.php b/apps/files_external/3rdparty/icewind/smb/src/ISystem.php deleted file mode 100644 index 6f06b8421c2..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ISystem.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -/** - * The `ISystem` interface provides a way to access system dependent information - * such as the availability and location of certain binaries. - */ -interface ISystem { - /** - * Get the path to a file descriptor of the current process - * - * @param int $num the file descriptor id - * @return string - */ - public function getFD(int $num): string; - - /** - * Get the full path to the `smbclient` binary of null if the binary is not available - * - * @return string|null - */ - public function getSmbclientPath(): ?string; - - /** - * Get the full path to the `net` binary of null if the binary is not available - * - * @return string|null - */ - public function getNetPath(): ?string; - - /** - * Get the full path to the `smbcacls` binary of null if the binary is not available - * - * @return string|null - */ - public function getSmbcAclsPath(): ?string; - - /** - * Get the full path to the `stdbuf` binary of null if the binary is not available - * - * @return string|null - */ - public function getStdBufPath(): ?string; - - /** - * Get the full path to the `date` binary of null if the binary is not available - * - * @return string|null - */ - public function getDatePath(): ?string; - - /** - * Whether or not the smbclient php extension is enabled - * - * @return bool - */ - public function libSmbclientAvailable(): bool; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php b/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php deleted file mode 100644 index d624bcec854..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ITimeZoneProvider.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -interface ITimeZoneProvider { - /** - * Get the timezone of the smb server - * - * @param string $host - * @return string - */ - public function get(string $host): string; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php b/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php deleted file mode 100644 index c49918be114..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/KerberosApacheAuth.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\Exception; - -/** - * Use existing kerberos ticket to authenticate and reuse the apache ticket cache (mod_auth_kerb) - */ -class KerberosApacheAuth extends KerberosAuth implements IAuth { - /** @var string */ - private $ticketPath = ""; - - /** @var bool */ - private $init = false; - - /** @var string|false */ - private $ticketName; - - public function __construct() { - $this->ticketName = getenv("KRB5CCNAME"); - } - - - /** - * Copy the ticket to a temporary location and use that ticket for authentication - * - * @return void - */ - public function copyTicket(): void { - if (!$this->checkTicket()) { - return; - } - $krb5 = new \KRB5CCache(); - $krb5->open($this->ticketName); - $tmpFilename = tempnam("/tmp", "krb5cc_php_"); - $tmpCacheFile = "FILE:" . $tmpFilename; - $krb5->save($tmpCacheFile); - $this->ticketPath = $tmpFilename; - $this->ticketName = $tmpCacheFile; - } - - /** - * Pass the ticket to smbclient by memory instead of path - * - * @return void - */ - public function passTicketFromMemory(): void { - if (!$this->checkTicket()) { - return; - } - $krb5 = new \KRB5CCache(); - $krb5->open($this->ticketName); - $this->ticketName = (string)$krb5->getName(); - } - - /** - * Check if a valid kerberos ticket is present - * - * @return bool - * @psalm-assert-if-true string $this->ticketName - */ - public function checkTicket(): bool { - //read apache kerberos ticket cache - if (!$this->ticketName) { - return false; - } - - $krb5 = new \KRB5CCache(); - $krb5->open($this->ticketName); - /** @psalm-suppress MixedArgument */ - return count($krb5->getEntries()) > 0; - } - - private function init(): void { - if ($this->init) { - return; - } - $this->init = true; - // inspired by https://git.typo3.org/TYPO3CMS/Extensions/fal_cifs.git - - if (!extension_loaded("krb5")) { - // https://pecl.php.net/package/krb5 - throw new DependencyException('Ensure php-krb5 is installed.'); - } - - //read apache kerberos ticket cache - if (!$this->checkTicket()) { - throw new Exception('No kerberos ticket cache environment variable (KRB5CCNAME) found.'); - } - - // note that even if the ticketname is the value we got from `getenv("KRB5CCNAME")` we still need to set the env variable ourselves - // this is because `getenv` also reads the variables passed from the SAPI (apache-php) and we need to set the variable in the OS's env - putenv("KRB5CCNAME=" . $this->ticketName); - } - - public function getExtraCommandLineArguments(): string { - $this->init(); - return parent::getExtraCommandLineArguments(); - } - - public function setExtraSmbClientOptions($smbClientState): void { - $this->init(); - try { - parent::setExtraSmbClientOptions($smbClientState); - } catch (Exception $e) { - // suppress - } - } - - public function __destruct() { - if (!empty($this->ticketPath) && file_exists($this->ticketPath) && is_file($this->ticketPath)) { - unlink($this->ticketPath); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php b/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php deleted file mode 100644 index 68fb74ff9ab..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/KerberosAuth.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -/** - * Use existing kerberos ticket to authenticate - */ -class KerberosAuth implements IAuth { - public function getUsername(): ?string { - return 'dummy'; - } - - public function getWorkgroup(): ?string { - return 'dummy'; - } - - public function getPassword(): ?string { - return null; - } - - public function getExtraCommandLineArguments(): string { - return '-k'; - } - - public function setExtraSmbClientOptions($smbClientState): void { - $success = (bool)smbclient_option_set($smbClientState, SMBCLIENT_OPT_USE_KERBEROS, true); - $success = $success && smbclient_option_set($smbClientState, SMBCLIENT_OPT_FALLBACK_AFTER_KERBEROS, false); - - if (!$success) { - throw new Exception("Failed to set smbclient options for kerberos auth"); - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php deleted file mode 100644 index 85fb0274ac1..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeFileInfo.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\IFileInfo; - -class NativeFileInfo implements IFileInfo { - /** @var string */ - protected $path; - /** @var string */ - protected $name; - /** @var NativeShare */ - protected $share; - /** @var array{"mode": int, "size": int, "write_time": int}|null */ - protected $attributeCache = null; - - public function __construct(NativeShare $share, string $path, string $name) { - $this->share = $share; - $this->path = $path; - $this->name = $name; - } - - public function getPath(): string { - return $this->path; - } - - public function getName(): string { - return $this->name; - } - - /** - * @return array{"mode": int, "size": int, "write_time": int} - */ - protected function stat(): array { - if (is_null($this->attributeCache)) { - $rawAttributes = explode(',', $this->share->getAttribute($this->path, 'system.dos_attr.*')); - $attributes = []; - foreach ($rawAttributes as $rawAttribute) { - list($name, $value) = explode(':', $rawAttribute); - $name = strtolower($name); - if ($name == 'mode') { - $attributes[$name] = (int)hexdec(substr($value, 2)); - } else { - $attributes[$name] = (int)$value; - } - } - if (!isset($attributes['mode'])) { - throw new Exception("Invalid attribute response"); - } - if (!isset($attributes['size'])) { - throw new Exception("Invalid attribute response"); - } - if (!isset($attributes['write_time'])) { - throw new Exception("Invalid attribute response"); - } - $this->attributeCache = $attributes; - } - return $this->attributeCache; - } - - public function getSize(): int { - $stat = $this->stat(); - return $stat['size']; - } - - public function getMTime(): int { - $stat = $this->stat(); - return $stat['write_time']; - } - - /** - * On "mode": - * - * different smbclient versions seem to return different mode values for 'system.dos_attr.mode' - * - * older versions return the dos permissions mask as defined in `IFileInfo::MODE_*` while - * newer versions return the equivalent unix permission mask. - * - * Since the unix mask doesn't contain the proper hidden/archive/system flags we have to assume them - * as false (except for `hidden` where we use the unix dotfile convention) - */ - - protected function getMode(): int { - $mode = $this->stat()['mode']; - - // Let us ignore the ATTR_NOT_CONTENT_INDEXED for now - $mode &= ~0x00002000; - - return $mode; - } - - public function isDirectory(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return ($mode & 0x4000 && !($mode & 0x8000)); // 0x4000: unix directory flag shares bits with 0xC000: socket - } else { - return (bool)($mode & IFileInfo::MODE_DIRECTORY); - } - } - - public function isReadOnly(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return !(bool)($mode & 0x80); // 0x80: owner write permissions - } else { - return (bool)($mode & IFileInfo::MODE_READONLY); - } - } - - public function isHidden(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return strlen($this->name) > 0 && $this->name[0] === '.'; - } else { - return (bool)($mode & IFileInfo::MODE_HIDDEN); - } - } - - public function isSystem(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return false; - } else { - return (bool)($mode & IFileInfo::MODE_SYSTEM); - } - } - - public function isArchived(): bool { - $mode = $this->getMode(); - if ($mode > 0x1000) { - return false; - } else { - return (bool)($mode & IFileInfo::MODE_ARCHIVE); - } - } - - /** - * @return ACL[] - */ - public function getAcls(): array { - $acls = []; - $attribute = $this->share->getAttribute($this->path, 'system.nt_sec_desc.acl.*+'); - - foreach (explode(',', $attribute) as $acl) { - list($user, $permissions) = explode(':', $acl, 2); - $user = trim($user, '\\'); - list($type, $flags, $mask) = explode('/', $permissions); - $mask = hexdec($mask); - - $acls[$user] = new ACL((int)$type, (int)$flags, (int)$mask); - } - - return $acls; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php deleted file mode 100644 index f39ec4db392..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeReadStream.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\StringBuffer; - -/** - * Stream optimized for read only usage - */ -class NativeReadStream extends NativeStream { - const CHUNK_SIZE = 1048576; // 1MB chunks - - /** @var StringBuffer */ - private $readBuffer; - - public function __construct() { - $this->readBuffer = new StringBuffer(); - } - - /** @var int */ - private $pos = 0; - - public function stream_open($path, $mode, $options, &$opened_path) { - return parent::stream_open($path, $mode, $options, $opened_path); - } - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @return resource - */ - public static function wrap(NativeState $state, $smbStream, string $mode, string $url) { - return parent::wrapClass($state, $smbStream, $mode, $url, NativeReadStream::class); - } - - public function stream_read($count) { - // php reads 8192 bytes at once - // however due to network latency etc, it's faster to read in larger chunks - // and buffer the result - if (!parent::stream_eof() && $this->readBuffer->remaining() < $count) { - $chunk = parent::stream_read(self::CHUNK_SIZE); - if ($chunk === false) { - return false; - } - $this->readBuffer->push($chunk); - } - - $result = $this->readBuffer->read($count); - - $read = strlen($result); - $this->pos += $read; - - return $result; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $result = parent::stream_seek($offset, $whence); - if ($result) { - $this->readBuffer->clear(); - $pos = parent::stream_tell(); - if ($pos === false) { - return false; - } - $this->pos = $pos; - } - return $result; - } - - public function stream_eof() { - return $this->readBuffer->remaining() <= 0 && parent::stream_eof(); - } - - public function stream_tell() { - return $this->pos; - } - - public function stream_write($data) { - return false; - } - - public function stream_truncate($size) { - return false; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php deleted file mode 100644 index 68b6c46ca2f..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeServer.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\AbstractServer; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\IAuth; -use Icewind\SMB\IOptions; -use Icewind\SMB\IShare; -use Icewind\SMB\ISystem; -use Icewind\SMB\ITimeZoneProvider; - -class NativeServer extends AbstractServer { - /** - * @var NativeState - */ - protected $state; - - public function __construct(string $host, IAuth $auth, ISystem $system, ITimeZoneProvider $timeZoneProvider, IOptions $options) { - parent::__construct($host, $auth, $system, $timeZoneProvider, $options); - $this->state = new NativeState(); - } - - protected function connect(): void { - $this->state->init($this->getAuth(), $this->getOptions()); - } - - /** - * @return IShare[] - * @throws AuthenticationException - * @throws InvalidHostException - */ - public function listShares(): array { - $this->connect(); - $shares = []; - $dh = $this->state->opendir('smb://' . $this->getHost()); - while ($share = $this->state->readdir($dh, '')) { - if ($share['type'] === 'file share') { - $shares[] = $this->getShare($share['name']); - } - } - $this->state->closedir($dh, ''); - return $shares; - } - - public function getShare(string $name): IShare { - return new NativeShare($this, $name); - } - - /** - * Check if the smbclient php extension is available - * - * @param ISystem $system - * @return bool - */ - public static function available(ISystem $system): bool { - return $system->libSmbclientAvailable(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php deleted file mode 100644 index 8c4eab2a60f..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeShare.php +++ /dev/null @@ -1,363 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\AbstractShare; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidPathException; -use Icewind\SMB\Exception\InvalidResourceException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\IFileInfo; -use Icewind\SMB\INotifyHandler; -use Icewind\SMB\IServer; -use Icewind\SMB\Wrapped\Server; -use Icewind\SMB\Wrapped\Share; - -class NativeShare extends AbstractShare { - /** - * @var IServer $server - */ - private $server; - - /** - * @var string $name - */ - private $name; - - /** @var NativeState|null $state */ - private $state = null; - - public function __construct(IServer $server, string $name) { - parent::__construct(); - $this->server = $server; - $this->name = $name; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - */ - protected function getState(): NativeState { - if ($this->state) { - return $this->state; - } - - $this->state = new NativeState(); - $this->state->init($this->server->getAuth(), $this->server->getOptions()); - return $this->state; - } - - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string { - return $this->name; - } - - private function buildUrl(string $path): string { - $this->verifyPath($path); - $url = sprintf('smb://%s/%s', $this->server->getHost(), $this->name); - if ($path) { - $path = trim($path, '/'); - $url .= '/'; - $url .= implode('/', array_map('rawurlencode', explode('/', $path))); - } - return $url; - } - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array { - $files = []; - - $dh = $this->getState()->opendir($this->buildUrl($path)); - while ($file = $this->getState()->readdir($dh, $path)) { - $name = $file['name']; - if ($name !== '.' and $name !== '..') { - $fullPath = $path . '/' . $name; - $files [] = new NativeFileInfo($this, $fullPath, $name); - } - } - - $this->getState()->closedir($dh, $path); - return $files; - } - - /** - * @param string $path - * @return IFileInfo - */ - public function stat(string $path): IFileInfo { - $info = new NativeFileInfo($this, $path, self::mb_basename($path)); - - // trigger attribute loading - $info->getSize(); - - return $info; - } - - /** - * Multibyte unicode safe version of basename() - * - * @param string $path - * @link http://php.net/manual/en/function.basename.php#121405 - * @return string - */ - protected static function mb_basename(string $path): string { - if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) { - return $matches[1]; - } elseif (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) { - return $matches[1]; - } - - return ''; - } - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool { - return $this->getState()->mkdir($this->buildUrl($path)); - } - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool { - return $this->getState()->rmdir($this->buildUrl($path)); - } - - /** - * Delete a file on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function del(string $path): bool { - return $this->getState()->unlink($this->buildUrl($path)); - } - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool { - return $this->getState()->rename($this->buildUrl($from), $this->buildUrl($to)); - } - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remove file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool { - $sourceHandle = fopen($source, 'rb'); - $targetUrl = $this->buildUrl($target); - - $targetHandle = $this->getState()->create($targetUrl); - - while ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) { - $this->getState()->write($targetHandle, $data, $targetUrl); - } - $this->getState()->close($targetHandle, $targetUrl); - return true; - } - - /** - * Download a remote file - * - * @param string $source remove file - * @param string $target local file - * @return bool - * - * @throws AuthenticationException - * @throws ConnectionException - * @throws InvalidHostException - * @throws InvalidPathException - * @throws InvalidResourceException - */ - public function get(string $source, string $target): bool { - if (!$target) { - throw new InvalidPathException('Invalid target path: Filename cannot be empty'); - } - - $sourceHandle = $this->getState()->open($this->buildUrl($source), 'r'); - - $targetHandle = @fopen($target, 'wb'); - if (!$targetHandle) { - $error = error_get_last(); - if (is_array($error)) { - $reason = $error['message']; - } else { - $reason = 'Unknown error'; - } - $this->getState()->close($sourceHandle, $this->buildUrl($source)); - throw new InvalidResourceException('Failed opening local file "' . $target . '" for writing: ' . $reason); - } - - while ($data = $this->getState()->read($sourceHandle, NativeReadStream::CHUNK_SIZE, $source)) { - fwrite($targetHandle, $data); - } - $this->getState()->close($sourceHandle, $this->buildUrl($source)); - return true; - } - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source) { - $url = $this->buildUrl($source); - $handle = $this->getState()->open($url, 'r'); - return NativeReadStream::wrap($this->getState(), $handle, 'r', $url); - } - - /** - * Open a writeable stream to a remote file - * Note: This method will truncate the file to 0bytes first - * - * @param string $target - * @return resource a writeable stream - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target) { - $url = $this->buildUrl($target); - $handle = $this->getState()->create($url); - return NativeWriteStream::wrap($this->getState(), $handle, 'w', $url); - } - - /** - * Open a writeable stream and set the cursor to the end of the stream - * - * @param string $target - * @return resource a writeable stream - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function append(string $target) { - $url = $this->buildUrl($target); - $handle = $this->getState()->open($url, "a+"); - return NativeWriteStream::wrap($this->getState(), $handle, "a", $url); - } - - /** - * Get extended attributes for the path - * - * @param string $path - * @param string $attribute attribute to get the info - * @return string the attribute value - */ - public function getAttribute(string $path, string $attribute): string { - return $this->getState()->getxattr($this->buildUrl($path), $attribute); - } - - /** - * Set extended attributes for the given path - * - * @param string $path - * @param string $attribute attribute to get the info - * @param string|int $value - * @return mixed the attribute value - */ - public function setAttribute(string $path, string $attribute, $value) { - if (is_int($value)) { - if ($attribute === 'system.dos_attr.mode') { - $value = '0x' . dechex($value); - } else { - throw new \InvalidArgumentException("Invalid value for attribute"); - } - } - - return $this->getState()->setxattr($this->buildUrl($path), $attribute, $value); - } - - /** - * Set DOS comaptible node mode - * - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode) { - return $this->setAttribute($path, 'system.dos_attr.mode', $mode); - } - - /** - * Start smb notify listener - * Note: This is a blocking call - * - * @param string $path - * @return INotifyHandler - */ - public function notify(string $path): INotifyHandler { - // php-smbclient does not support notify (https://github.com/eduardok/libsmbclient-php/issues/29) - // so we use the smbclient based backend for this - if (!Server::available($this->server->getSystem())) { - throw new DependencyException('smbclient not found in path for notify command'); - } - $share = new Share($this->server, $this->getName(), $this->server->getSystem()); - return $share->notify($path); - } - - public function getServer(): IServer { - return $this->server; - } - - public function __destruct() { - unset($this->state); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php deleted file mode 100644 index 088e6f733d1..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php +++ /dev/null @@ -1,377 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\ConnectionResetException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\ForbiddenException; -use Icewind\SMB\Exception\HostDownException; -use Icewind\SMB\Exception\InvalidArgumentException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\ConnectionAbortedException; -use Icewind\SMB\Exception\NoRouteToHostException; -use Icewind\SMB\Exception\NotEmptyException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\Exception\OutOfSpaceException; -use Icewind\SMB\Exception\TimedOutException; -use Icewind\SMB\IAuth; -use Icewind\SMB\IOptions; - -/** - * Low level wrapper for libsmbclient-php with error handling - */ -class NativeState { - /** @var resource|null */ - protected $state = null; - - /** @var bool */ - protected $handlerSet = false; - - /** @var bool */ - protected $connected = false; - - /** - * sync the garbage collection cycle - * __deconstruct() of KerberosAuth should not called too soon - * - * @var IAuth|null $auth - */ - protected $auth = null; - - // see error.h - const EXCEPTION_MAP = [ - 1 => ForbiddenException::class, - 2 => NotFoundException::class, - 13 => ForbiddenException::class, - 16 => FileInUseException::class, - 17 => AlreadyExistsException::class, - 20 => InvalidTypeException::class, - 21 => InvalidTypeException::class, - 22 => InvalidArgumentException::class, - 28 => OutOfSpaceException::class, - 39 => NotEmptyException::class, - 103 => ConnectionAbortedException::class, - 104 => ConnectionResetException::class, - 110 => TimedOutException::class, - 111 => ConnectionRefusedException::class, - 112 => HostDownException::class, - 113 => NoRouteToHostException::class - ]; - - protected function handleError(?string $path): void { - /** @var int $error */ - $error = smbclient_state_errno($this->state); - if ($error === 0) { - return; - } - throw Exception::fromMap(self::EXCEPTION_MAP, $error, $path); - } - - /** - * @param mixed $result - * @param string|null $uri - * @throws Exception - */ - protected function testResult($result, ?string $uri): void { - if ($result === false or $result === null) { - // smb://host/share/path - if (is_string($uri) && count(explode('/', $uri, 5)) > 4) { - list(, , , , $path) = explode('/', $uri, 5); - $path = '/' . $path; - } else { - $path = $uri; - } - $this->handleError($path); - } - } - - /** - * @param IAuth $auth - * @param IOptions $options - * @return bool - */ - public function init(IAuth $auth, IOptions $options) { - if ($this->connected) { - return true; - } - /** @var resource $state */ - $state = smbclient_state_new(); - $this->state = $state; - /** @psalm-suppress UnusedFunctionCall */ - smbclient_option_set($this->state, SMBCLIENT_OPT_AUTO_ANONYMOUS_LOGIN, false); - /** @psalm-suppress UnusedFunctionCall */ - smbclient_option_set($this->state, SMBCLIENT_OPT_TIMEOUT, $options->getTimeout() * 1000); - - if (function_exists('smbclient_client_protocols')) { - smbclient_client_protocols($this->state, $options->getMinProtocol(), $options->getMaxProtocol()); - } - - $auth->setExtraSmbClientOptions($this->state); - - // sync the garbage collection cycle - // __deconstruct() of KerberosAuth should not caled too soon - $this->auth = $auth; - - /** @var bool $result */ - $result = @smbclient_state_init($this->state, $auth->getWorkgroup(), $auth->getUsername(), $auth->getPassword()); - - $this->testResult($result, ''); - $this->connected = true; - return $result; - } - - /** - * @param string $uri - * @return resource - */ - public function opendir(string $uri) { - /** @var resource $result */ - $result = @smbclient_opendir($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $dir - * @param string $path - * @return array{"type": string, "comment": string, "name": string}|false - */ - public function readdir($dir, string $path) { - /** @var array{"type": string, "comment": string, "name": string}|false $result */ - $result = @smbclient_readdir($this->state, $dir); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $dir - * @param string $path - * @return bool - */ - public function closedir($dir, string $path): bool { - /** @var bool $result */ - $result = smbclient_closedir($this->state, $dir); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $old - * @param string $new - * @return bool - */ - public function rename(string $old, string $new): bool { - /** @var bool $result */ - $result = @smbclient_rename($this->state, $old, $this->state, $new); - - $this->testResult($result, $new); - return $result; - } - - /** - * @param string $uri - * @return bool - */ - public function unlink(string $uri): bool { - /** @var bool $result */ - $result = @smbclient_unlink($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param int $mask - * @return bool - */ - public function mkdir(string $uri, int $mask = 0777): bool { - /** @var bool $result */ - $result = @smbclient_mkdir($this->state, $uri, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @return bool - */ - public function rmdir(string $uri): bool { - /** @var bool $result */ - $result = @smbclient_rmdir($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @return array{"mtime": int, "size": int, "mode": int} - */ - public function stat(string $uri): array { - /** @var array{"mtime": int, "size": int, "mode": int} $result */ - $result = @smbclient_stat($this->state, $uri); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $file - * @param string $path - * @return array{"mtime": int, "size": int, "mode": int} - */ - public function fstat($file, string $path): array { - /** @var array{"mtime": int, "size": int, "mode": int} $result */ - $result = @smbclient_fstat($this->state, $file); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $uri - * @param string $mode - * @param int $mask - * @return resource - */ - public function open(string $uri, string $mode, int $mask = 0666) { - /** @var resource $result */ - $result = @smbclient_open($this->state, $uri, $mode, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param int $mask - * @return resource - */ - public function create(string $uri, int $mask = 0666) { - /** @var resource $result */ - $result = @smbclient_creat($this->state, $uri, $mask); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param resource $file - * @param int $bytes - * @param string $path - * @return string - */ - public function read($file, int $bytes, string $path): string { - /** @var string $result */ - $result = @smbclient_read($this->state, $file, $bytes); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param string $data - * @param string $path - * @param int|null $length - * @return int - */ - public function write($file, string $data, string $path, ?int $length = null): int { - /** @var int $result */ - $result = @smbclient_write($this->state, $file, $data, $length); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param int $offset - * @param int $whence SEEK_SET | SEEK_CUR | SEEK_END - * @param string|null $path - * @return int|false new file offset as measured from the start of the file on success. - */ - public function lseek($file, int $offset, int $whence = SEEK_SET, string $path = null) { - /** @var int|false $result */ - $result = @smbclient_lseek($this->state, $file, $offset, $whence); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param int $size - * @param string $path - * @return bool - */ - public function ftruncate($file, int $size, string $path): bool { - /** @var bool $result */ - $result = @smbclient_ftruncate($this->state, $file, $size); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param resource $file - * @param string $path - * @return bool - */ - public function close($file, string $path): bool { - /** @var bool $result */ - $result = @smbclient_close($this->state, $file); - - $this->testResult($result, $path); - return $result; - } - - /** - * @param string $uri - * @param string $key - * @return string - */ - public function getxattr(string $uri, string $key) { - /** @var string $result */ - $result = @smbclient_getxattr($this->state, $uri, $key); - - $this->testResult($result, $uri); - return $result; - } - - /** - * @param string $uri - * @param string $key - * @param string $value - * @param int $flags - * @return bool - */ - public function setxattr(string $uri, string $key, string $value, int $flags = 0) { - /** @var bool $result */ - $result = @smbclient_setxattr($this->state, $uri, $key, $value, $flags); - - $this->testResult($result, $uri); - return $result; - } - - public function __destruct() { - if ($this->connected) { - if (smbclient_state_free($this->state) === false) { - throw new Exception("Failed to free smb state"); - } - } - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php deleted file mode 100644 index 624ef829d74..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeStream.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\Streams\File; -use InvalidArgumentException; - -abstract class NativeStream implements File { - /** - * @var resource - * @psalm-suppress PropertyNotSetInConstructor - */ - public $context; - - /** - * @var NativeState - * @psalm-suppress PropertyNotSetInConstructor - */ - protected $state; - - /** - * @var resource - * @psalm-suppress PropertyNotSetInConstructor - */ - protected $handle; - - /** - * @var bool - */ - protected $eof = false; - - /** - * @var string - */ - protected $url = ''; - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @param class-string<NativeStream> $class - * @return resource - */ - protected static function wrapClass(NativeState $state, $smbStream, string $mode, string $url, string $class) { - if (stream_wrapper_register('nativesmb', $class) === false) { - throw new Exception("Failed to register stream wrapper"); - } - $context = stream_context_create([ - 'nativesmb' => [ - 'state' => $state, - 'handle' => $smbStream, - 'url' => $url - ] - ]); - $fh = fopen('nativesmb://', $mode, false, $context); - if (stream_wrapper_unregister('nativesmb') === false) { - throw new Exception("Failed to unregister stream wrapper"); - } - return $fh; - } - - public function stream_close() { - try { - return $this->state->close($this->handle, $this->url); - } catch (\Exception $e) { - return false; - } - } - - public function stream_eof() { - return $this->eof; - } - - public function stream_flush() { - return false; - } - - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = stream_context_get_options($this->context); - if (!isset($context['nativesmb']) || !is_array($context['nativesmb'])) { - throw new InvalidArgumentException("context not set"); - } - $state = $context['nativesmb']['state']; - if (!$state instanceof NativeState) { - throw new InvalidArgumentException("invalid context set"); - } - $this->state = $state; - $handle = $context['nativesmb']['handle']; - if (!is_resource($handle)) { - throw new InvalidArgumentException("invalid context set"); - } - $this->handle = $handle; - $url = $context['nativesmb']['url']; - if (!is_string($url)) { - throw new InvalidArgumentException("invalid context set"); - } - $this->url = $url; - return true; - } - - public function stream_read($count) { - $result = $this->state->read($this->handle, $count, $this->url); - if (strlen($result) < $count) { - $this->eof = true; - } - return $result; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $this->eof = false; - try { - return $this->state->lseek($this->handle, $offset, $whence, $this->url) !== false; - } catch (InvalidRequestException $e) { - return false; - } - } - - /** - * @return array{"mtime": int, "size": int, "mode": int}|false - */ - public function stream_stat() { - try { - return $this->state->stat($this->url); - } catch (Exception $e) { - return false; - } - } - - public function stream_tell() { - return $this->state->lseek($this->handle, 0, SEEK_CUR, $this->url); - } - - public function stream_write($data) { - return $this->state->write($this->handle, $data, $this->url); - } - - public function stream_truncate($size) { - return $this->state->ftruncate($this->handle, $size, $this->url); - } - - public function stream_set_option($option, $arg1, $arg2) { - return false; - } - - public function stream_lock($operation) { - return false; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php b/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php deleted file mode 100644 index 7c27499764c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Native/NativeWriteStream.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Native; - -use Icewind\SMB\StringBuffer; - -/** - * Stream optimized for write only usage - */ -class NativeWriteStream extends NativeStream { - const CHUNK_SIZE = 1048576; // 1MB chunks - - /** @var StringBuffer */ - private $writeBuffer; - - /** @var int */ - private $pos = 0; - - public function __construct() { - $this->writeBuffer = new StringBuffer(); - } - - public function stream_open($path, $mode, $options, &$opened_path): bool { - return parent::stream_open($path, $mode, $options, $opened_path); - } - - /** - * Wrap a stream from libsmbclient-php into a regular php stream - * - * @param NativeState $state - * @param resource $smbStream - * @param string $mode - * @param string $url - * @return resource - */ - public static function wrap(NativeState $state, $smbStream, string $mode, string $url) { - return parent::wrapClass($state, $smbStream, $mode, $url, NativeWriteStream::class); - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $this->flushWrite(); - $result = parent::stream_seek($offset, $whence); - if ($result) { - $pos = parent::stream_tell(); - if ($pos === false) { - return false; - } - $this->pos = $pos; - } - return $result; - } - - private function flushWrite(): void { - parent::stream_write($this->writeBuffer->flush()); - } - - public function stream_write($data) { - $written = $this->writeBuffer->push($data); - $this->pos += $written; - - if ($this->writeBuffer->remaining() >= self::CHUNK_SIZE) { - $this->flushWrite(); - } - - return $written; - } - - public function stream_close() { - try { - $this->flushWrite(); - $flushResult = true; - } catch (\Exception $e) { - $flushResult = false; - } - return parent::stream_close() && $flushResult; - } - - public function stream_tell() { - return $this->pos; - } - - public function stream_read($count) { - return false; - } - - public function stream_truncate($size) { - $this->flushWrite(); - $this->pos = $size; - return parent::stream_truncate($size); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Options.php b/apps/files_external/3rdparty/icewind/smb/src/Options.php deleted file mode 100644 index f590594b993..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Options.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -class Options implements IOptions { - /** @var int */ - private $timeout = 20; - - /** @var string|null */ - private $minProtocol; - /** @var string|null */ - private $maxProtocol; - - public function getTimeout(): int { - return $this->timeout; - } - - public function setTimeout(int $timeout): void { - $this->timeout = $timeout; - } - - public function getMinProtocol(): ?string { - return $this->minProtocol; - } - - public function setMinProtocol(?string $minProtocol): void { - $this->minProtocol = $minProtocol; - } - - public function getMaxProtocol(): ?string { - return $this->maxProtocol; - } - - public function setMaxProtocol(?string $maxProtocol): void { - $this->maxProtocol = $maxProtocol; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php b/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php deleted file mode 100644 index 4c579d06843..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/ServerFactory.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Native\NativeServer; -use Icewind\SMB\Wrapped\Server; - -class ServerFactory { - const BACKENDS = [ - NativeServer::class, - Server::class - ]; - - /** @var ISystem */ - private $system; - - /** @var IOptions */ - private $options; - - /** @var ITimeZoneProvider */ - private $timeZoneProvider; - - /** - * ServerFactory constructor. - * - * @param IOptions|null $options - * @param ISystem|null $system - * @param ITimeZoneProvider|null $timeZoneProvider - */ - public function __construct( - IOptions $options = null, - ISystem $system = null, - ITimeZoneProvider $timeZoneProvider = null - ) { - if (is_null($options)) { - $options = new Options(); - } - if (is_null($system)) { - $system = new System(); - } - if (is_null($timeZoneProvider)) { - $timeZoneProvider = new TimeZoneProvider($system); - } - $this->options = $options; - $this->system = $system; - $this->timeZoneProvider = $timeZoneProvider; - } - - - /** - * @param string $host - * @param IAuth $credentials - * @return IServer - * @throws DependencyException - */ - public function createServer(string $host, IAuth $credentials): IServer { - foreach (self::BACKENDS as $backend) { - if (call_user_func("$backend::available", $this->system)) { - return new $backend($host, $credentials, $this->system, $this->timeZoneProvider, $this->options); - } - } - - throw new DependencyException('No valid backend available, ensure smbclient is in the path or php-smbclient is installed'); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php b/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php deleted file mode 100644 index c1963df4847..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/StringBuffer.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -declare(strict_types=1); -/** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\SMB; - -class StringBuffer { - /** @var string */ - private $buffer = ""; - /** @var int */ - private $pos = 0; - - public function clear(): void { - $this->buffer = ""; - $this->pos = 0; - } - - public function push(string $data): int { - $this->buffer = $this->flush() . $data; - return strlen($data); - } - - public function remaining(): int { - return strlen($this->buffer) - $this->pos; - } - - public function read(int $count): string { - $chunk = substr($this->buffer, $this->pos, $count); - $this->pos += strlen($chunk); - return $chunk; - } - - public function flush(): string { - if ($this->pos === 0) { - $remaining = $this->buffer; - } else { - $remaining = substr($this->buffer, $this->pos); - } - - $this->clear(); - - return $remaining; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/System.php b/apps/files_external/3rdparty/icewind/smb/src/System.php deleted file mode 100644 index 96d1d7e9f98..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/System.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB; - -use Icewind\SMB\Exception\Exception; - -class System implements ISystem { - /** @var (string|null)[] */ - private $paths = []; - - /** - * Get the path to a file descriptor of the current process - * - * @param int $num the file descriptor id - * @return string - * @throws Exception - */ - public function getFD(int $num): string { - $folders = [ - '/proc/self/fd', - '/dev/fd' - ]; - foreach ($folders as $folder) { - if (file_exists($folder)) { - return $folder . '/' . $num; - } - } - throw new Exception('Cant find file descriptor path'); - } - - public function getSmbclientPath(): ?string { - return $this->getBinaryPath('smbclient'); - } - - public function getNetPath(): ?string { - return $this->getBinaryPath('net'); - } - - public function getSmbcAclsPath(): ?string { - return $this->getBinaryPath('smbcacls'); - } - - public function getStdBufPath(): ?string { - return $this->getBinaryPath('stdbuf'); - } - - public function getDatePath(): ?string { - return $this->getBinaryPath('date'); - } - - public function libSmbclientAvailable(): bool { - return function_exists('smbclient_state_new'); - } - - protected function getBinaryPath(string $binary): ?string { - if (!isset($this->paths[$binary])) { - $result = null; - $output = []; - exec("which $binary 2>&1", $output, $result); - - if ($result === 0 && isset($output[0])) { - $this->paths[$binary] = (string)$output[0]; - } else if (is_executable("/usr/bin/$binary")) { - $this->paths[$binary] = "/usr/bin/$binary"; - } else { - $this->paths[$binary] = null; - } - } - return $this->paths[$binary]; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php b/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php deleted file mode 100644 index 4cd3b65681c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/TimeZoneProvider.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB; - -class TimeZoneProvider implements ITimeZoneProvider { - /** - * @var string[] - */ - private $timeZones = []; - - /** - * @var ISystem - */ - private $system; - - /** - * @param ISystem $system - */ - public function __construct(ISystem $system) { - $this->system = $system; - } - - public function get(string $host): string { - if (!isset($this->timeZones[$host])) { - $timeZone = null; - $net = $this->system->getNetPath(); - // for local domain names we can assume same timezone - if ($net && $host && strpos($host, '.') !== false) { - $command = sprintf( - '%s time zone -S %s', - $net, - escapeshellarg($host) - ); - $timeZone = exec($command); - } - - if (!$timeZone) { - $date = $this->system->getDatePath(); - if ($date) { - $timeZone = exec($date . " +%z"); - } else { - $timeZone = date_default_timezone_get(); - } - } - $this->timeZones[$host] = $timeZone; - } - return $this->timeZones[$host]; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php deleted file mode 100644 index cf5cda3164c..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Connection.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Exception\AccessDeniedException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\NoLoginServerException; - -class Connection extends RawConnection { - const DELIMITER = 'smb:'; - const DELIMITER_LENGTH = 4; - - /** @var Parser */ - private $parser; - - /** - * @param string $command - * @param Parser $parser - * @param array<string, string> $env - */ - public function __construct(string $command, Parser $parser, array $env = []) { - parent::__construct($command, $env); - $this->parser = $parser; - } - - /** - * send input to smbclient - * - * @param string $input - */ - public function write(string $input) { - return parent::write($input . PHP_EOL); - } - - /** - * @throws ConnectException - */ - public function clearTillPrompt(): void { - $this->write(''); - do { - $promptLine = $this->readTillPrompt(); - if ($promptLine === false) { - break; - } - $this->parser->checkConnectionError($promptLine); - } while (!$this->isPrompt($promptLine)); - if ($this->write('') === false) { - throw new ConnectionRefusedException(); - } - $this->readTillPrompt(); - } - - /** - * get all unprocessed output from smbclient until the next prompt - * - * @return string[] - * @throws AuthenticationException - * @throws ConnectException - * @throws ConnectionException - * @throws InvalidHostException - * @throws NoLoginServerException - * @throws AccessDeniedException - */ - public function read(): array { - if (!$this->isValid()) { - throw new ConnectionException('Connection not valid'); - } - $output = $this->readTillPrompt(); - if ($output === false) { - $this->unknownError(false); - } - $output = explode("\n", $output); - // last line contains the prompt - array_pop($output); - return $output; - } - - private function isPrompt(string $line): bool { - return substr($line, 0, self::DELIMITER_LENGTH) === self::DELIMITER; - } - - /** - * @param string|bool $promptLine (optional) prompt line that might contain some info about the error - * @throws ConnectException - * @return no-return - */ - private function unknownError($promptLine = '') { - if ($promptLine) { //maybe we have some error we missed on the previous line - throw new ConnectException('Unknown error (' . $promptLine . ')'); - } else { - $error = $this->readError(); // maybe something on stderr - if ($error) { - throw new ConnectException('Unknown error (stderr: ' . $error . ')'); - } else { - throw new ConnectException('Unknown error'); - } - } - } - - public function close(bool $terminate = true): void { - if (get_resource_type($this->getInputStream()) === 'stream') { - // ignore any errors while trying to send the close command, the process might already be dead - @$this->write('close' . PHP_EOL); - } - $this->close_process($terminate); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php deleted file mode 100644 index 7df83b268d8..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/ErrorCodes.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -class ErrorCodes { - /** - * connection errors - */ - const LogonFailure = 'NT_STATUS_LOGON_FAILURE'; - const BadHostName = 'NT_STATUS_BAD_NETWORK_NAME'; - const Unsuccessful = 'NT_STATUS_UNSUCCESSFUL'; - const ConnectionRefused = 'NT_STATUS_CONNECTION_REFUSED'; - const NoLogonServers = 'NT_STATUS_NO_LOGON_SERVERS'; - - const PathNotFound = 'NT_STATUS_OBJECT_PATH_NOT_FOUND'; - const NoSuchFile = 'NT_STATUS_NO_SUCH_FILE'; - const ObjectNotFound = 'NT_STATUS_OBJECT_NAME_NOT_FOUND'; - const NameCollision = 'NT_STATUS_OBJECT_NAME_COLLISION'; - const AccessDenied = 'NT_STATUS_ACCESS_DENIED'; - const DirectoryNotEmpty = 'NT_STATUS_DIRECTORY_NOT_EMPTY'; - const FileIsADirectory = 'NT_STATUS_FILE_IS_A_DIRECTORY'; - const NotADirectory = 'NT_STATUS_NOT_A_DIRECTORY'; - const SharingViolation = 'NT_STATUS_SHARING_VIOLATION'; - const InvalidParameter = 'NT_STATUS_INVALID_PARAMETER'; - const RevisionMismatch = 'NT_STATUS_REVISION_MISMATCH'; -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php deleted file mode 100644 index de5a696df7b..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/FileInfo.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\ACL; -use Icewind\SMB\IFileInfo; - -class FileInfo implements IFileInfo { - /** @var string */ - protected $path; - /** @var string */ - protected $name; - /** @var int */ - protected $size; - /** @var int */ - protected $time; - /** @var int */ - protected $mode; - /** @var callable(): ACL[] */ - protected $aclCallback; - - /** - * @param string $path - * @param string $name - * @param int $size - * @param int $time - * @param int $mode - * @param callable(): ACL[] $aclCallback - */ - public function __construct(string $path, string $name, int $size, int $time, int $mode, callable $aclCallback) { - $this->path = $path; - $this->name = $name; - $this->size = $size; - $this->time = $time; - $this->mode = $mode; - $this->aclCallback = $aclCallback; - } - - /** - * @return string - */ - public function getPath(): string { - return $this->path; - } - - public function getName(): string { - return $this->name; - } - - public function getSize(): int { - return $this->size; - } - - public function getMTime(): int { - return $this->time; - } - - public function isDirectory(): bool { - return (bool)($this->mode & IFileInfo::MODE_DIRECTORY); - } - - public function isReadOnly(): bool { - return (bool)($this->mode & IFileInfo::MODE_READONLY); - } - - public function isHidden(): bool { - return (bool)($this->mode & IFileInfo::MODE_HIDDEN); - } - - public function isSystem(): bool { - return (bool)($this->mode & IFileInfo::MODE_SYSTEM); - } - - public function isArchived(): bool { - return (bool)($this->mode & IFileInfo::MODE_ARCHIVE); - } - - /** - * @return ACL[] - */ - public function getAcls(): array { - return ($this->aclCallback)(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php deleted file mode 100644 index ecb5bb1e3c1..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/NotifyHandler.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - * - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Change; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\RevisionMismatchException; -use Icewind\SMB\INotifyHandler; - -class NotifyHandler implements INotifyHandler { - /** @var Connection */ - private $connection; - - /** @var string */ - private $path; - - /** @var bool */ - private $listening = true; - - // see error.h - const EXCEPTION_MAP = [ - ErrorCodes::RevisionMismatch => RevisionMismatchException::class, - ]; - - /** - * @param Connection $connection - * @param string $path - */ - public function __construct(Connection $connection, string $path) { - $this->connection = $connection; - $this->path = $path; - } - - /** - * Get all changes detected since the start of the notify process or the last call to getChanges - * - * @return Change[] - */ - public function getChanges(): array { - if (!$this->listening) { - return []; - } - stream_set_blocking($this->connection->getOutputStream(), false); - $lines = []; - while (($line = $this->connection->readLine())) { - $this->checkForError($line); - $lines[] = $line; - } - stream_set_blocking($this->connection->getOutputStream(), true); - return array_values(array_filter(array_map([$this, 'parseChangeLine'], $lines))); - } - - /** - * Listen actively to all incoming changes - * - * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated - * - * @param callable(Change):?bool $callback - */ - public function listen(callable $callback): void { - if ($this->listening) { - while (true) { - $line = $this->connection->readLine(); - if ($line === false) { - break; - } - $this->checkForError($line); - $change = $this->parseChangeLine($line); - if ($change) { - $result = $callback($change); - if ($result === false) { - break; - } - } - }; - } - } - - private function parseChangeLine(string $line): ?Change { - $code = (int)substr($line, 0, 4); - if ($code === 0) { - return null; - } - $subPath = str_replace('\\', '/', substr($line, 5)); - if ($this->path === '') { - return new Change($code, $subPath); - } else { - return new Change($code, $this->path . '/' . $subPath); - } - } - - private function checkForError(string $line): void { - if (substr($line, 0, 16) === 'notify returned ') { - $error = substr($line, 16); - throw Exception::fromMap(array_merge(self::EXCEPTION_MAP, Parser::EXCEPTION_MAP), $error, 'Notify is not supported with the used smb version'); - } - } - - public function stop(): void { - $this->listening = false; - $this->connection->close(); - } - - public function __destruct() { - $this->stop(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php deleted file mode 100644 index 28cd871145e..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Parser.php +++ /dev/null @@ -1,277 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\AccessDeniedException; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidParameterException; -use Icewind\SMB\Exception\InvalidResourceException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NoLoginServerException; -use Icewind\SMB\Exception\NotEmptyException; -use Icewind\SMB\Exception\NotFoundException; - -class Parser { - const MSG_NOT_FOUND = 'Error opening local file '; - - /** - * @var string - */ - protected $timeZone; - - // see error.h - const EXCEPTION_MAP = [ - ErrorCodes::LogonFailure => AuthenticationException::class, - ErrorCodes::PathNotFound => NotFoundException::class, - ErrorCodes::ObjectNotFound => NotFoundException::class, - ErrorCodes::NoSuchFile => NotFoundException::class, - ErrorCodes::NameCollision => AlreadyExistsException::class, - ErrorCodes::AccessDenied => AccessDeniedException::class, - ErrorCodes::DirectoryNotEmpty => NotEmptyException::class, - ErrorCodes::FileIsADirectory => InvalidTypeException::class, - ErrorCodes::NotADirectory => InvalidTypeException::class, - ErrorCodes::SharingViolation => FileInUseException::class, - ErrorCodes::InvalidParameter => InvalidParameterException::class - ]; - - const MODE_STRINGS = [ - 'R' => FileInfo::MODE_READONLY, - 'H' => FileInfo::MODE_HIDDEN, - 'S' => FileInfo::MODE_SYSTEM, - 'D' => FileInfo::MODE_DIRECTORY, - 'A' => FileInfo::MODE_ARCHIVE, - 'N' => FileInfo::MODE_NORMAL - ]; - - /** - * @param string $timeZone - */ - public function __construct(string $timeZone) { - $this->timeZone = $timeZone; - } - - private function getErrorCode(string $line): ?string { - $parts = explode(' ', $line); - foreach ($parts as $part) { - if (substr($part, 0, 9) === 'NT_STATUS') { - return $part; - } - } - return null; - } - - /** - * @param string[] $output - * @param string $path - * @return no-return - * @throws Exception - * @throws InvalidResourceException - * @throws NotFoundException - */ - public function checkForError(array $output, string $path): void { - if (strpos($output[0], 'does not exist')) { - throw new NotFoundException($path); - } - $error = $this->getErrorCode($output[0]); - - if (substr($output[0], 0, strlen(self::MSG_NOT_FOUND)) === self::MSG_NOT_FOUND) { - $localPath = substr($output[0], strlen(self::MSG_NOT_FOUND)); - throw new InvalidResourceException('Failed opening local file "' . $localPath . '" for writing'); - } - - throw Exception::fromMap(self::EXCEPTION_MAP, $error, $path); - } - - /** - * check if the first line holds a connection failure - * - * @param string $line - * @throws AuthenticationException - * @throws InvalidHostException - * @throws NoLoginServerException - * @throws AccessDeniedException - */ - public function checkConnectionError(string $line): void { - $line = rtrim($line, ')'); - if (substr($line, -23) === ErrorCodes::LogonFailure) { - throw new AuthenticationException('Invalid login'); - } - if (substr($line, -26) === ErrorCodes::BadHostName) { - throw new InvalidHostException('Invalid hostname'); - } - if (substr($line, -22) === ErrorCodes::Unsuccessful) { - throw new InvalidHostException('Connection unsuccessful'); - } - if (substr($line, -28) === ErrorCodes::ConnectionRefused) { - throw new InvalidHostException('Connection refused'); - } - if (substr($line, -26) === ErrorCodes::NoLogonServers) { - throw new NoLoginServerException('No login server'); - } - if (substr($line, -23) === ErrorCodes::AccessDenied) { - throw new AccessDeniedException('Access denied'); - } - } - - public function parseMode(string $mode): int { - $result = 0; - foreach (self::MODE_STRINGS as $char => $val) { - if (strpos($mode, $char) !== false) { - $result |= $val; - } - } - return $result; - } - - /** - * @param string[] $output - * @return array{"mtime": int, "mode": int, "size": int} - * @throws Exception - */ - public function parseStat(array $output): array { - $data = []; - foreach ($output as $line) { - // A line = explode statement may not fill all array elements - // properly. May happen when accessing non Windows Fileservers - $words = explode(':', $line, 2); - $name = $words[0] ?? ''; - $value = $words[1] ?? ''; - $value = trim($value); - - if (!isset($data[$name])) { - $data[$name] = $value; - } - } - $attributeStart = strpos($data['attributes'], '('); - if ($attributeStart === false) { - throw new Exception("Malformed state response from server"); - } - return [ - 'mtime' => strtotime($data['write_time']), - 'mode' => hexdec(substr($data['attributes'], $attributeStart + 1, -1)), - 'size' => isset($data['stream']) ? (int)(explode(' ', $data['stream'])[1]) : 0 - ]; - } - - /** - * @param string[] $output - * @param string $basePath - * @param callable(string):ACL[] $aclCallback - * @return FileInfo[] - */ - public function parseDir(array $output, string $basePath, callable $aclCallback): array { - //last line is used space - array_pop($output); - $regex = '/^\s*(.*?)\s\s\s\s+(?:([NDHARSCndharsc]*)\s+)?([0-9]+)\s+(.*)$/'; - //2 spaces, filename, optional type, size, date - $content = []; - foreach ($output as $line) { - if (preg_match($regex, $line, $matches)) { - list(, $name, $mode, $size, $time) = $matches; - if ($name !== '.' and $name !== '..') { - $mode = $this->parseMode(strtoupper($mode)); - $time = strtotime($time . ' ' . $this->timeZone); - $path = $basePath . '/' . $name; - $content[] = new FileInfo($path, $name, (int)$size, $time, $mode, function () use ($aclCallback, $path): array { - return $aclCallback($path); - }); - } - } - } - return $content; - } - - /** - * @param string[] $output - * @return array<string, string> - */ - public function parseListShares(array $output): array { - $shareNames = []; - foreach ($output as $line) { - if (strpos($line, '|')) { - list($type, $name, $description) = explode('|', $line); - if (strtolower($type) === 'disk') { - $shareNames[$name] = $description; - } - } elseif (strpos($line, 'Disk')) { - // new output format - list($name, $description) = explode('Disk', $line); - $shareNames[trim($name)] = trim($description); - } - } - return $shareNames; - } - - /** - * @param string[] $rawAcls - * @return ACL[] - */ - public function parseACLs(array $rawAcls): array { - $acls = []; - foreach ($rawAcls as $acl) { - if (strpos($acl, ':') === false) { - continue; - } - [$type, $acl] = explode(':', $acl, 2); - if ($type !== 'ACL') { - continue; - } - [$user, $permissions] = explode(':', $acl, 2); - [$type, $flags, $mask] = explode('/', $permissions); - - $type = $type === 'ALLOWED' ? ACL::TYPE_ALLOW : ACL::TYPE_DENY; - - $flagsInt = 0; - foreach (explode('|', $flags) as $flagString) { - if ($flagString === 'OI') { - $flagsInt += ACL::FLAG_OBJECT_INHERIT; - } elseif ($flagString === 'CI') { - $flagsInt += ACL::FLAG_CONTAINER_INHERIT; - } - } - - if (substr($mask, 0, 2) === '0x') { - $maskInt = hexdec($mask); - } else { - $maskInt = 0; - foreach (explode('|', $mask) as $maskString) { - if ($maskString === 'R') { - $maskInt += ACL::MASK_READ; - } elseif ($maskString === 'W') { - $maskInt += ACL::MASK_WRITE; - } elseif ($maskString === 'X') { - $maskInt += ACL::MASK_EXECUTE; - } elseif ($maskString === 'D') { - $maskInt += ACL::MASK_DELETE; - } elseif ($maskString === 'READ') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE; - } elseif ($maskString === 'CHANGE') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE + ACL::MASK_WRITE + ACL::MASK_DELETE; - } elseif ($maskString === 'FULL') { - $maskInt += ACL::MASK_READ + ACL::MASK_EXECUTE + ACL::MASK_WRITE + ACL::MASK_DELETE; - } - } - } - - if (isset($acls[$user])) { - $existing = $acls[$user]; - $maskInt += $existing->getMask(); - } - $acls[$user] = new ACL($type, $flagsInt, $maskInt); - } - - ksort($acls); - - return $acls; - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php deleted file mode 100644 index 3d84528daa2..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/RawConnection.php +++ /dev/null @@ -1,250 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; - -class RawConnection { - /** - * @var string - */ - private $command; - - /** - * @var string[] - */ - private $env; - - /** - * @var resource[] $pipes - * - * $pipes[0] holds STDIN for smbclient - * $pipes[1] holds STDOUT for smbclient - * $pipes[3] holds the authfile for smbclient - * $pipes[4] holds the stream for writing files - * $pipes[5] holds the stream for reading files - */ - private $pipes = []; - - /** - * @var resource|null $process - */ - private $process; - - /** - * @var resource|null $authStream - */ - private $authStream = null; - - /** - * @param string $command - * @param array<string, string> $env - */ - public function __construct(string $command, array $env = []) { - $this->command = $command; - $this->env = $env; - } - - /** - * @throws ConnectException - * @psalm-assert resource $this->process - */ - public function connect(): void { - if (is_null($this->getAuthStream())) { - throw new ConnectException('Authentication not set before connecting'); - } - - $descriptorSpec = [ - 0 => ['pipe', 'r'], // child reads from stdin - 1 => ['pipe', 'w'], // child writes to stdout - 2 => ['pipe', 'w'], // child writes to stderr - 3 => $this->getAuthStream(), // child reads from fd#3 - 4 => ['pipe', 'r'], // child reads from fd#4 - 5 => ['pipe', 'w'] // child writes to fd#5 - ]; - - setlocale(LC_ALL, Server::LOCALE); - $env = array_merge($this->env, [ - 'CLI_FORCE_INTERACTIVE' => 'y', // Make sure the prompt is displayed - 'CLI_NO_READLINE' => 1, // Not all distros build smbclient with readline, disable it to get consistent behaviour - 'LC_ALL' => Server::LOCALE, - 'LANG' => Server::LOCALE, - 'COLUMNS' => 8192, // prevent smbclient from line-wrapping it's output - 'TZ' => 'UTC', - ]); - $this->process = proc_open($this->command, $descriptorSpec, $this->pipes, '/', $env); - if (!$this->isValid()) { - throw new ConnectionException(); - } - } - - /** - * check if the connection is still active - * - * @return bool - * @psalm-assert-if-true resource $this->process - */ - public function isValid(): bool { - if (is_resource($this->process)) { - $status = proc_get_status($this->process); - return $status['running']; - } else { - return false; - } - } - - /** - * send input to the process - * - * @param string $input - * @return int|bool - */ - public function write(string $input) { - $result = @fwrite($this->getInputStream(), $input); - fflush($this->getInputStream()); - return $result; - } - - /** - * read output till the next prompt - * - * @return string|false - */ - public function readTillPrompt() { - $output = ""; - do { - $chunk = $this->readLine('\> '); - if ($chunk === false) { - return false; - } - $output .= $chunk; - } while (strlen($chunk) == 4096 && strpos($chunk, "smb:") === false); - return $output; - } - - /** - * read a line of output - * - * @return string|false - */ - public function readLine(string $end = "\n") { - return stream_get_line($this->getOutputStream(), 4096, $end); - } - - /** - * read a line of output - * - * @return string|false - */ - public function readError() { - $line = stream_get_line($this->getErrorStream(), 4086); - return $line !== false ? trim($line) : false; - } - - /** - * get all output until the process closes - * - * @return string[] - */ - public function readAll(): array { - $output = []; - while ($line = $this->readLine()) { - $output[] = $line; - } - return $output; - } - - /** - * @return resource - */ - public function getInputStream() { - return $this->pipes[0]; - } - - /** - * @return resource - */ - public function getOutputStream() { - return $this->pipes[1]; - } - - /** - * @return resource - */ - public function getErrorStream() { - return $this->pipes[2]; - } - - /** - * @return resource|null - */ - public function getAuthStream() { - return $this->authStream; - } - - /** - * @return resource - */ - public function getFileInputStream() { - return $this->pipes[4]; - } - - /** - * @return resource - */ - public function getFileOutputStream() { - return $this->pipes[5]; - } - - /** - * @param string|null $user - * @param string|null $password - * @psalm-assert resource $this->authStream - */ - public function writeAuthentication(?string $user, ?string $password): void { - $auth = ($password === null) - ? "username=$user" - : "username=$user\npassword=$password\n"; - - $this->authStream = fopen('php://temp', 'w+'); - fwrite($this->authStream, $auth); - } - - /** - * @param bool $terminate - * @psalm-assert null $this->process - */ - public function close(bool $terminate = true): void { - $this->close_process($terminate); - } - - /** - * @param bool $terminate - * @psalm-assert null $this->process - */ - protected function close_process(bool $terminate = true): void { - if (!is_resource($this->process)) { - return; - } - if ($terminate) { - proc_terminate($this->process); - } - proc_close($this->process); - $this->process = null; - } - - public function reconnect(): void { - $this->close(); - $this->connect(); - } - - public function __destruct() { - $this->close(); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php deleted file mode 100644 index 159a51e91a2..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Server.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\AbstractServer; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\ConnectionRefusedException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\IShare; -use Icewind\SMB\ISystem; - -class Server extends AbstractServer { - /** - * Check if the smbclient php extension is available - * - * @param ISystem $system - * @return bool - */ - public static function available(ISystem $system): bool { - return $system->getSmbclientPath() !== null; - } - - private function getAuthFileArgument(): string { - if ($this->getAuth()->getUsername()) { - return '--authentication-file=' . $this->system->getFD(3); - } else { - return ''; - } - } - - /** - * @return IShare[] - * - * @throws AuthenticationException - * @throws InvalidHostException - * @throws ConnectException - */ - public function listShares(): array { - $maxProtocol = $this->options->getMaxProtocol(); - $minProtocol = $this->options->getMinProtocol(); - $smbClient = $this->system->getSmbclientPath(); - if ($smbClient === null) { - throw new Exception("Backend not available"); - } - $command = sprintf( - '%s %s %s %s %s -L %s', - $smbClient, - $this->getAuthFileArgument(), - $this->getAuth()->getExtraCommandLineArguments(), - $maxProtocol ? "--option='client max protocol=" . $maxProtocol . "'" : "", - $minProtocol ? "--option='client min protocol=" . $minProtocol . "'" : "", - escapeshellarg('//' . $this->getHost()) - ); - $connection = new RawConnection($command); - $connection->writeAuthentication($this->getAuth()->getUsername(), $this->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - - $parser = new Parser('UTC'); - - $output = $connection->readAll(); - if (isset($output[0])) { - $parser->checkConnectionError($output[0]); - } - - // sometimes we get an empty line first - if (count($output) < 2) { - $output = $connection->readAll(); - } - - if (isset($output[0])) { - $parser->checkConnectionError($output[0]); - } - if (count($output) === 0) { - throw new ConnectionRefusedException(); - } - - $shareNames = $parser->parseListShares($output); - - $shares = []; - foreach ($shareNames as $name => $_description) { - $shares[] = $this->getShare($name); - } - return $shares; - } - - /** - * @param string $name - * @return IShare - */ - public function getShare(string $name): IShare { - return new Share($this, $name, $this->system); - } -} diff --git a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php b/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php deleted file mode 100644 index 2df98c335d6..00000000000 --- a/apps/files_external/3rdparty/icewind/smb/src/Wrapped/Share.php +++ /dev/null @@ -1,554 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\SMB\Wrapped; - -use Icewind\SMB\AbstractShare; -use Icewind\SMB\ACL; -use Icewind\SMB\Exception\AlreadyExistsException; -use Icewind\SMB\Exception\AuthenticationException; -use Icewind\SMB\Exception\ConnectException; -use Icewind\SMB\Exception\ConnectionException; -use Icewind\SMB\Exception\DependencyException; -use Icewind\SMB\Exception\Exception; -use Icewind\SMB\Exception\FileInUseException; -use Icewind\SMB\Exception\InvalidHostException; -use Icewind\SMB\Exception\InvalidTypeException; -use Icewind\SMB\Exception\NotFoundException; -use Icewind\SMB\Exception\InvalidRequestException; -use Icewind\SMB\IFileInfo; -use Icewind\SMB\INotifyHandler; -use Icewind\SMB\IServer; -use Icewind\SMB\ISystem; -use Icewind\Streams\CallbackWrapper; -use Icewind\SMB\Native\NativeShare; -use Icewind\SMB\Native\NativeServer; - -class Share extends AbstractShare { - /** - * @var IServer $server - */ - private $server; - - /** - * @var string $name - */ - private $name; - - /** - * @var Connection|null $connection - */ - public $connection = null; - - /** - * @var Parser - */ - protected $parser; - - /** - * @var ISystem - */ - private $system; - - const MODE_MAP = [ - FileInfo::MODE_READONLY => 'r', - FileInfo::MODE_HIDDEN => 'h', - FileInfo::MODE_ARCHIVE => 'a', - FileInfo::MODE_SYSTEM => 's' - ]; - - const EXEC_CMD = 'exec'; - - /** - * @param IServer $server - * @param string $name - * @param ISystem $system - */ - public function __construct(IServer $server, string $name, ISystem $system) { - parent::__construct(); - $this->server = $server; - $this->name = $name; - $this->system = $system; - $this->parser = new Parser('UTC'); - } - - private function getAuthFileArgument(): string { - if ($this->server->getAuth()->getUsername()) { - return '--authentication-file=' . $this->system->getFD(3); - } else { - return ''; - } - } - - protected function getConnection(): Connection { - $maxProtocol = $this->server->getOptions()->getMaxProtocol(); - $minProtocol = $this->server->getOptions()->getMinProtocol(); - $smbClient = $this->system->getSmbclientPath(); - $stdBuf = $this->system->getStdBufPath(); - if ($smbClient === null) { - throw new Exception("Backend not available"); - } - $command = sprintf( - '%s %s%s -t %s %s %s %s %s %s', - self::EXEC_CMD, - $stdBuf ? $stdBuf . ' -o0 ' : '', - $smbClient, - $this->server->getOptions()->getTimeout(), - $this->getAuthFileArgument(), - $this->server->getAuth()->getExtraCommandLineArguments(), - $maxProtocol ? "--option='client max protocol=" . $maxProtocol . "'" : "", - $minProtocol ? "--option='client min protocol=" . $minProtocol . "'" : "", - escapeshellarg('//' . $this->server->getHost() . '/' . $this->name) - ); - $connection = new Connection($command, $this->parser); - $connection->writeAuthentication($this->server->getAuth()->getUsername(), $this->server->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - // some versions of smbclient add a help message in first of the first prompt - $connection->clearTillPrompt(); - return $connection; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - * @psalm-assert Connection $this->connection - */ - protected function connect(): Connection { - if ($this->connection and $this->connection->isValid()) { - return $this->connection; - } - $this->connection = $this->getConnection(); - return $this->connection; - } - - /** - * @throws ConnectionException - * @throws AuthenticationException - * @throws InvalidHostException - * @psalm-assert Connection $this->connection - */ - protected function reconnect(): void { - if ($this->connection === null) { - $this->connect(); - } else { - $this->connection->reconnect(); - if (!$this->connection->isValid()) { - throw new ConnectionException(); - } - } - } - - /** - * Get the name of the share - * - * @return string - */ - public function getName(): string { - return $this->name; - } - - protected function simpleCommand(string $command, string $path): bool { - $escapedPath = $this->escapePath($path); - $cmd = $command . ' ' . $escapedPath; - $output = $this->execute($cmd); - return $this->parseOutput($output, $path); - } - - /** - * List the content of a remote folder - * - * @param string $path - * @return IFileInfo[] - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function dir(string $path): array { - $escapedPath = $this->escapePath($path); - $output = $this->execute('cd ' . $escapedPath); - //check output for errors - $this->parseOutput($output, $path); - $output = $this->execute('dir'); - - $this->execute('cd /'); - - return $this->parser->parseDir($output, $path, function (string $path) { - return $this->getAcls($path); - }); - } - - /** - * @param string $path - * @return IFileInfo - */ - public function stat(string $path): IFileInfo { - // some windows server setups don't seem to like the allinfo command - // use the dir command instead to get the file info where possible - if ($path !== "" && $path !== "/") { - $parent = dirname($path); - $dir = $this->dir($parent); - $file = array_values(array_filter($dir, function (IFileInfo $info) use ($path) { - return $info->getPath() === $path; - })); - if ($file) { - return $file[0]; - } - } - - $escapedPath = $this->escapePath($path); - $output = $this->execute('allinfo ' . $escapedPath); - // Windows and non Windows Fileserver may respond different - // to the allinfo command for directories. If the result is a single - // line = error line, redo it with a different allinfo parameter - if ($escapedPath == '""' && count($output) < 2) { - $output = $this->execute('allinfo ' . '"."'); - } - if (count($output) < 3) { - $this->parseOutput($output, $path); - } - $stat = $this->parser->parseStat($output); - return new FileInfo($path, basename($path), $stat['size'], $stat['mtime'], $stat['mode'], function () use ($path) { - return $this->getAcls($path); - }); - } - - /** - * Create a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function mkdir(string $path): bool { - return $this->simpleCommand('mkdir', $path); - } - - /** - * Remove a folder on the share - * - * @param string $path - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function rmdir(string $path): bool { - return $this->simpleCommand('rmdir', $path); - } - - /** - * Delete a file on the share - * - * @param string $path - * @param bool $secondTry - * @return bool - * @throws InvalidTypeException - * @throws NotFoundException - * @throws \Exception - */ - public function del(string $path, bool $secondTry = false): bool { - //del return a file not found error when trying to delete a folder - //we catch it so we can check if $path doesn't exist or is of invalid type - try { - return $this->simpleCommand('del', $path); - } catch (NotFoundException $e) { - //no need to do anything with the result, we just check if this throws the not found error - try { - $this->simpleCommand('ls', $path); - } catch (NotFoundException $e2) { - throw $e; - } catch (\Exception $e2) { - throw new InvalidTypeException($path); - } - throw $e; - } catch (FileInUseException $e) { - if ($secondTry) { - throw $e; - } - $this->reconnect(); - return $this->del($path, true); - } - } - - /** - * Rename a remote file - * - * @param string $from - * @param string $to - * @return bool - * - * @throws NotFoundException - * @throws AlreadyExistsException - */ - public function rename(string $from, string $to): bool { - $path1 = $this->escapePath($from); - $path2 = $this->escapePath($to); - $output = $this->execute('rename ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $to); - } - - /** - * Upload a local file - * - * @param string $source local file - * @param string $target remove file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function put(string $source, string $target): bool { - $path1 = $this->escapeLocalPath($source); //first path is local, needs different escaping - $path2 = $this->escapePath($target); - $output = $this->execute('put ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $target); - } - - /** - * Download a remote file - * - * @param string $source remove file - * @param string $target local file - * @return bool - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function get(string $source, string $target): bool { - $path1 = $this->escapePath($source); - $path2 = $this->escapeLocalPath($target); //second path is local, needs different escaping - $output = $this->execute('get ' . $path1 . ' ' . $path2); - return $this->parseOutput($output, $source); - } - - /** - * Open a readable stream to a remote file - * - * @param string $source - * @return resource a read only stream with the contents of the remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function read(string $source) { - $source = $this->escapePath($source); - // since returned stream is closed by the caller we need to create a new instance - // since we can't re-use the same file descriptor over multiple calls - $connection = $this->getConnection(); - stream_set_blocking($connection->getOutputStream(), false); - - $connection->write('get ' . $source . ' ' . $this->system->getFD(5)); - $connection->write('exit'); - $fh = $connection->getFileOutputStream(); - $fh = CallbackWrapper::wrap($fh, function() use ($connection) { - $connection->write(''); - }); - if (!is_resource($fh)) { - throw new Exception("Failed to wrap file output"); - } - return $fh; - } - - /** - * Open a writable stream to a remote file - * - * @param string $target - * @return resource a write only stream to upload a remote file - * - * @throws NotFoundException - * @throws InvalidTypeException - */ - public function write(string $target) { - $target = $this->escapePath($target); - // since returned stream is closed by the caller we need to create a new instance - // since we can't re-use the same file descriptor over multiple calls - $connection = $this->getConnection(); - - $fh = $connection->getFileInputStream(); - $connection->write('put ' . $this->system->getFD(4) . ' ' . $target); - $connection->write('exit'); - - // use a close callback to ensure the upload is finished before continuing - // this also serves as a way to keep the connection in scope - $stream = CallbackWrapper::wrap($fh, function() use ($connection) { - $connection->write(''); - }, null, function () use ($connection) { - $connection->close(false); // dont terminate, give the upload some time - }); - if (is_resource($stream)) { - return $stream; - } else { - throw new InvalidRequestException($target); - } - } - - /** - * Append to stream - * Note: smbclient does not support this (Use php-libsmbclient) - * - * @param string $target - * - * @throws DependencyException - */ - public function append(string $target) { - throw new DependencyException('php-libsmbclient is required for append'); - } - - /** - * @param string $path - * @param int $mode a combination of FileInfo::MODE_READONLY, FileInfo::MODE_ARCHIVE, FileInfo::MODE_SYSTEM and FileInfo::MODE_HIDDEN, FileInfo::NORMAL - * @return mixed - */ - public function setMode(string $path, int $mode) { - $modeString = ''; - foreach (self::MODE_MAP as $modeByte => $string) { - if ($mode & $modeByte) { - $modeString .= $string; - } - } - $path = $this->escapePath($path); - - // first reset the mode to normal - $cmd = 'setmode ' . $path . ' -rsha'; - $output = $this->execute($cmd); - $this->parseOutput($output, $path); - - if ($mode !== FileInfo::MODE_NORMAL) { - // then set the modes we want - $cmd = 'setmode ' . $path . ' ' . $modeString; - $output = $this->execute($cmd); - return $this->parseOutput($output, $path); - } else { - return true; - } - } - - /** - * @param string $path - * @return INotifyHandler - * @throws ConnectionException - * @throws DependencyException - */ - public function notify(string $path): INotifyHandler { - if (!$this->system->getStdBufPath()) { //stdbuf is required to disable smbclient's output buffering - throw new DependencyException('stdbuf is required for usage of the notify command'); - } - $connection = $this->getConnection(); // use a fresh connection since the notify command blocks the process - $command = 'notify ' . $this->escapePath($path); - $connection->write($command . PHP_EOL); - return new NotifyHandler($connection, $path); - } - - /** - * @param string $command - * @return string[] - */ - protected function execute(string $command): array { - $this->connect()->write($command); - return $this->connect()->read(); - } - - /** - * check output for errors - * - * @param string[] $lines - * @param string $path - * - * @return bool - * @throws AlreadyExistsException - * @throws \Icewind\SMB\Exception\AccessDeniedException - * @throws \Icewind\SMB\Exception\NotEmptyException - * @throws InvalidTypeException - * @throws \Icewind\SMB\Exception\Exception - * @throws NotFoundException - */ - protected function parseOutput(array $lines, string $path = ''): bool { - if (count($lines) === 0) { - return true; - } else { - $this->parser->checkForError($lines, $path); - } - } - - /** - * @param string $string - * @return string - */ - protected function escape(string $string): string { - return escapeshellarg($string); - } - - /** - * @param string $path - * @return string - */ - protected function escapePath(string $path): string { - $this->verifyPath($path); - if ($path === '/') { - $path = ''; - } - $path = str_replace('/', '\\', $path); - $path = str_replace('"', '^"', $path); - $path = ltrim($path, '\\'); - return '"' . $path . '"'; - } - - /** - * @param string $path - * @return string - */ - protected function escapeLocalPath(string $path): string { - $path = str_replace('"', '\"', $path); - return '"' . $path . '"'; - } - - /** - * @param string $path - * @return ACL[] - * @throws ConnectionException - * @throws ConnectException - */ - protected function getAcls(string $path): array { - $commandPath = $this->system->getSmbcAclsPath(); - if (!$commandPath) { - return []; - } - - $command = sprintf( - '%s %s %s %s/%s %s', - $commandPath, - $this->getAuthFileArgument(), - $this->server->getAuth()->getExtraCommandLineArguments(), - escapeshellarg('//' . $this->server->getHost()), - escapeshellarg($this->name), - escapeshellarg($path) - ); - $connection = new RawConnection($command); - $connection->writeAuthentication($this->server->getAuth()->getUsername(), $this->server->getAuth()->getPassword()); - $connection->connect(); - if (!$connection->isValid()) { - throw new ConnectionException((string)$connection->readLine()); - } - - $rawAcls = $connection->readAll(); - return $this->parser->parseACLs($rawAcls); - } - - public function getServer(): IServer { - return $this->server; - } - - public function __destruct() { - unset($this->connection); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json b/apps/files_external/3rdparty/icewind/streams-dummy/composer.json deleted file mode 100644 index ad6a6a1b1c1..00000000000 --- a/apps/files_external/3rdparty/icewind/streams-dummy/composer.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "icewind/streams-dummy", - "provide": { - "icewind/streams": "0.2" - } -} - diff --git a/apps/files_external/3rdparty/icewind/streams/.gitignore b/apps/files_external/3rdparty/icewind/streams/.gitignore deleted file mode 100644 index a8fa5d4a955..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.idea -vendor -composer.lock -build -example.php -*.cache diff --git a/apps/files_external/3rdparty/icewind/streams/LICENCE b/apps/files_external/3rdparty/icewind/streams/LICENCE deleted file mode 100644 index a194b9117b8..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/LICENCE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Robin Appelman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/apps/files_external/3rdparty/icewind/streams/README.md b/apps/files_external/3rdparty/icewind/streams/README.md deleted file mode 100644 index 0dbafc9df0b..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Streams # - -[](https://github.com/icewind1991/Streams/actions/workflows/ci.yaml) -[](https://codecov.io/gh/icewind1991/Streams) - -Generic stream wrappers for php. - -## CallBackWrapper ## - -A `CallBackWrapper` can be used to register callbacks on read, write and closing of the stream, -it wraps an existing stream and can thus be used for any stream in php - -The callbacks are passed in the stream context along with the source stream -and can be any valid [php callable](http://php.net/manual/en/language.types.callable.php) - -### Example ### -```php -<?php - -use \Icewind\Streams\CallBackWrapper; - -require('vendor/autoload.php'); - -// get an existing stream to wrap -$source = fopen('php://temp', 'r+'); - -// register the callbacks -$stream = CallbackWrapper::wrap($source, - // read callback - function ($count) { - echo "read " . $count . "bytes\n"; - }, - // write callback - function ($data) { - echo "wrote '" . $data . "'\n"; - }, - // close callback - function () { - echo "stream closed\n"; - }); - -fwrite($stream, 'some dummy data'); - -rewind($stream); -fread($stream, 5); - -fclose($stream); -``` - -Note: due to php's internal stream buffering the `$count` passed to the read callback -will be equal to php's internal buffer size (8192 on default) an not the number of bytes -requested by `fopen()` diff --git a/apps/files_external/3rdparty/icewind/streams/composer.json b/apps/files_external/3rdparty/icewind/streams/composer.json deleted file mode 100644 index 2a148158fbc..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "icewind/streams", - "description": "A set of generic stream wrappers", - "license": "MIT", - "authors": [ - { - "name": "Robin Appelman", - "email": "icewind@owncloud.com" - } - ], - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^9", - "friendsofphp/php-cs-fixer": "^2", - "phpstan/phpstan": "^0.12" - }, - "autoload": { - "psr-4": { - "Icewind\\Streams\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Icewind\\Streams\\Tests\\": "tests/" - } - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php deleted file mode 100644 index bc5e4356cda..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php +++ /dev/null @@ -1,133 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for write, read and close - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * 'read' => function($count){} (optional) - * 'write' => function($data){} (optional) - * 'close' => function(){} (optional) - * 'readdir' => function(){} (optional) - * ] - * ] - * - * All callbacks are called after the operation is executed on the source stream - */ -class CallbackWrapper extends Wrapper { - /** - * @var callable|null - */ - protected $readCallback; - - /** - * @var callable|null - */ - protected $writeCallback; - - /** - * @var callable|null - */ - protected $closeCallback; - - /** - * @var callable|null - */ - protected $readDirCallBack; - - /** - * @var callable|null - */ - protected $preCloseCallback; - - /** - * Wraps a stream with the provided callbacks - * - * @param resource $source - * @param callable|null $read (optional) - * @param callable|null $write (optional) - * @param callable|null $close (optional) - * @param callable|null $readDir (optional) - * @param callable|null $preClose (optional) - * @return resource|false - * - */ - public static function wrap($source, $read = null, $write = null, $close = null, $readDir = null, $preClose = null) { - $context = [ - 'source' => $source, - 'read' => $read, - 'write' => $write, - 'close' => $close, - 'readDir' => $readDir, - 'preClose' => $preClose, - ]; - return self::wrapSource($source, $context); - } - - protected function open() { - $context = $this->loadContext(); - - $this->readCallback = $context['read']; - $this->writeCallback = $context['write']; - $this->closeCallback = $context['close']; - $this->readDirCallBack = $context['readDir']; - $this->preCloseCallback = $context['preClose']; - return true; - } - - public function dir_opendir($path, $options) { - return $this->open(); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - return $this->open(); - } - - public function stream_read($count) { - $result = parent::stream_read($count); - if (is_callable($this->readCallback)) { - call_user_func($this->readCallback, strlen($result)); - } - return $result; - } - - public function stream_write($data) { - $result = parent::stream_write($data); - if (is_callable($this->writeCallback)) { - call_user_func($this->writeCallback, $data); - } - return $result; - } - - public function stream_close() { - if (is_callable($this->preCloseCallback)) { - call_user_func($this->preCloseCallback, $this->source); - // prevent further calls by potential PHP 7 GC ghosts - $this->preCloseCallback = null; - } - $result = parent::stream_close(); - if (is_callable($this->closeCallback)) { - call_user_func($this->closeCallback); - // prevent further calls by potential PHP 7 GC ghosts - $this->closeCallback = null; - } - return $result; - } - - public function dir_readdir() { - $result = parent::dir_readdir(); - if (is_callable($this->readDirCallBack)) { - call_user_func($this->readDirCallBack); - } - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php deleted file mode 100644 index d5aee9c9c4b..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\Streams; - -/** - * Wrapper that counts the amount of data read and written - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * 'callback' => function($readCount, $writeCount){} - * ] - * ] - * - * The callback will be called when the stream is closed - */ -class CountWrapper extends Wrapper { - /** - * @var int - */ - protected $readCount = 0; - - /** - * @var int - */ - protected $writeCount = 0; - - /** - * @var callable - */ - protected $callback; - - /** - * Wraps a stream with the provided callbacks - * - * @param resource $source - * @param callable $callback - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source, $callback) { - if (!is_callable($callback)) { - throw new \InvalidArgumentException('Invalid or missing callback'); - } - return self::wrapSource($source, [ - 'source' => $source, - 'callback' => $callback - ]); - } - - protected function open() { - $context = $this->loadContext(); - $this->callback = $context['callback']; - return true; - } - - public function dir_opendir($path, $options) { - return $this->open(); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - return $this->open(); - } - - public function stream_read($count) { - $result = parent::stream_read($count); - $this->readCount += strlen($result); - return $result; - } - - public function stream_write($data) { - $result = parent::stream_write($data); - $this->writeCount += strlen($data); - return $result; - } - - public function stream_close() { - $result = parent::stream_close(); - call_user_func($this->callback, $this->readCount, $this->writeCount); - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Directory.php b/apps/files_external/3rdparty/icewind/streams/src/Directory.php deleted file mode 100644 index 912be76acfa..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Directory.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implements a directory - */ -interface Directory { - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options); - - /** - * @return string|bool - */ - public function dir_readdir(); - - /** - * @return bool - */ - public function dir_closedir(); - - /** - * @return bool - */ - public function dir_rewinddir(); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php deleted file mode 100644 index 6a896c04b08..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper allows filtering of directories - * - * The filter callback will be called for each entry in the folder - * when the callback return false the entry will be filtered out - */ -class DirectoryFilter extends DirectoryWrapper { - /** - * @var callable - */ - private $filter; - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $context = $this->loadContext(); - $this->filter = $context['filter']; - return true; - } - - /** - * @return string - */ - public function dir_readdir() { - $file = readdir($this->source); - $filter = $this->filter; - // keep reading until we have an accepted entry or we're at the end of the folder - while ($file !== false && $filter($file) === false) { - $file = readdir($this->source); - } - return $file; - } - - /** - * @param resource $source - * @param callable $filter - * @return resource|false - */ - public static function wrap($source, callable $filter) { - return self::wrapSource($source, [ - 'source' => $source, - 'filter' => $filter - ]); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php deleted file mode 100644 index ff47096d2d7..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** - * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -class DirectoryWrapper extends Wrapper implements Directory { - public function stream_open($path, $mode, $options, &$opened_path) { - return false; - } - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } - - /** - * @return string|false - */ - public function dir_readdir() { - return readdir($this->source); - } - - /** - * @return bool - */ - public function dir_closedir() { - closedir($this->source); - return true; - } - - /** - * @return bool - */ - public function dir_rewinddir() { - rewinddir($this->source); - return true; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/File.php b/apps/files_external/3rdparty/icewind/streams/src/File.php deleted file mode 100644 index 9662414a79e..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/File.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implements a file - */ -interface File { - /** - * @param string $path - * @param string $mode - * @param int $options - * @param string $opened_path - * @return bool - */ - public function stream_open($path, $mode, $options, &$opened_path); - - /** - * @param int $offset - * @param int $whence - * @return bool - */ - public function stream_seek($offset, $whence = SEEK_SET); - - /** - * @return int|false - */ - public function stream_tell(); - - /** - * @param int $count - * @return string|false - */ - public function stream_read($count); - - /** - * @param string $data - * @return int|false - */ - public function stream_write($data); - - /** - * @param int $option - * @param int $arg1 - * @param int $arg2 - * @return bool - */ - public function stream_set_option($option, $arg1, $arg2); - - /** - * @param int $size - * @return bool - */ - public function stream_truncate($size); - - /** - * @return array|false - */ - public function stream_stat(); - - /** - * @param int $operation - * @return bool - */ - public function stream_lock($operation); - - /** - * @return bool - */ - public function stream_flush(); - - /** - * @return bool - */ - public function stream_eof(); - - /** - * @return bool - */ - public function stream_close(); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php deleted file mode 100644 index 5e0163092e8..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\Streams; - -abstract class HashWrapper extends Wrapper { - - /** - * @var callable|null - */ - private $callback; - - /** - * @var resource|\HashContext - */ - private $hashContext; - - /** - * Wraps a stream to make it seekable - * - * @param resource $source - * @param string $hash - * @param callable $callback - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source, $hash, $callback) { - $context = [ - 'hash' => $hash, - 'callback' => $callback, - ]; - return self::wrapSource($source, $context); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = $this->loadContext(); - $this->callback = $context['callback']; - $this->hashContext = hash_init($context['hash']); - return true; - } - - protected function updateHash($data) { - hash_update($this->hashContext, $data); - } - - public function stream_close() { - $hash = hash_final($this->hashContext); - if ($this->hashContext !== false && is_callable($this->callback)) { - call_user_func($this->callback, $hash); - } - return parent::stream_close(); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php deleted file mode 100644 index 7c6bd515c1e..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Create a directory handle from an iterator or array - * - * The following options should be passed in the context when opening the stream - * [ - * 'dir' => [ - * 'array' => string[] - * 'iterator' => \Iterator - * ] - * ] - * - * Either 'array' or 'iterator' need to be set, if both are set, 'iterator' takes preference - */ -class IteratorDirectory extends WrapperHandler implements Directory { - /** - * @var resource - */ - public $context; - - /** - * @var \Iterator - */ - protected $iterator; - - /** - * Load the source from the stream context and return the context options - * - * @param string $name - * @return array - * @throws \BadMethodCallException - */ - protected function loadContext($name = null) { - $context = parent::loadContext($name); - if (isset($context['iterator'])) { - $this->iterator = $context['iterator']; - } elseif (isset($context['array'])) { - $this->iterator = new \ArrayIterator($context['array']); - } else { - throw new \BadMethodCallException('Invalid context, iterator or array not set'); - } - return $context; - } - - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } - - /** - * @return string|bool - */ - public function dir_readdir() { - if ($this->iterator->valid()) { - $result = $this->iterator->current(); - $this->iterator->next(); - return $result; - } else { - return false; - } - } - - /** - * @return bool - */ - public function dir_closedir() { - return true; - } - - /** - * @return bool - */ - public function dir_rewinddir() { - $this->iterator->rewind(); - return true; - } - - /** - * Creates a directory handle from the provided array or iterator - * - * @param \Iterator | array $source - * @return resource|false - * - * @throws \BadMethodCallException - */ - public static function wrap($source) { - if ($source instanceof \Iterator) { - $options = [ - 'iterator' => $source - ]; - } elseif (is_array($source)) { - $options = [ - 'array' => $source - ]; - } else { - throw new \BadMethodCallException('$source should be an Iterator or array'); - } - return self::wrapSource(self::NO_SOURCE_DIR, $options); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php deleted file mode 100644 index 92aef2c7a2d..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/NullWrapper.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Stream wrapper that does nothing, used for tests - */ -class NullWrapper extends Wrapper { - public static function wrap($source) { - return self::wrapSource($source); - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - return true; - } - - public function dir_opendir($path, $options) { - $this->loadContext(); - return true; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Path.php b/apps/files_external/3rdparty/icewind/streams/src/Path.php deleted file mode 100644 index 42d74a2ac1a..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Path.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * A string-like object that automatically registers a stream wrapper when used and removes the stream wrapper when no longer used - * - * Can optionally pass context options to the stream wrapper - */ -class Path { - - /** - * @var bool - */ - protected $registered = false; - - /** - * @var string - */ - protected $protocol; - - /** - * @var string - */ - protected $class; - - /** - * @var array - */ - protected $contextOptions; - - /** - * @param string $class - * @param array $contextOptions - */ - public function __construct($class, $contextOptions = []) { - $this->class = $class; - $this->contextOptions = $contextOptions; - } - - public function getProtocol() { - if (!$this->protocol) { - $this->protocol = 'auto' . uniqid(); - } - return $this->protocol; - } - - public function wrapPath($path) { - return $this->getProtocol() . '://' . $path; - } - - protected function register() { - if (!$this->registered) { - $this->appendDefaultContent($this->contextOptions); - stream_wrapper_register($this->getProtocol(), $this->class); - $this->registered = true; - } - } - - protected function unregister() { - stream_wrapper_unregister($this->getProtocol()); - $this->unsetDefaultContent($this->getProtocol()); - $this->registered = false; - } - - /** - * Add values to the default stream context - * - * @param array $values - */ - protected function appendDefaultContent($values) { - if (!is_array(current($values))) { - $values = [$this->getProtocol() => $values]; - } - $context = stream_context_get_default(); - $defaults = stream_context_get_options($context); - foreach ($values as $key => $value) { - $defaults[$key] = $value; - } - stream_context_set_default($defaults); - } - - /** - * Remove values from the default stream context - * - * @param string $key - */ - protected function unsetDefaultContent($key) { - $context = stream_context_get_default(); - $defaults = stream_context_get_options($context); - unset($defaults[$key]); - stream_context_set_default($defaults); - } - - public function __toString() { - $this->register(); - return $this->protocol . '://'; - } - - public function __destruct() { - $this->unregister(); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php deleted file mode 100644 index d9f3014c381..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/PathWrapper.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * A string-like object that maps to an existing stream when opened - */ -class PathWrapper extends NullWrapper { - /** - * @param resource $source - * @return Path|string - */ - public static function getPath($source) { - return new Path(NullWrapper::class, [ - NullWrapper::getProtocol() => ['source' => $source] - ]); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php deleted file mode 100644 index 16cf006ccf5..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/ReadHashWrapper.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\Streams; - -/** - * Wrapper that calculates the hash on the stream on read - * - * The stream and hash should be passed in when wrapping the stream. - * On close the callback will be called with the calculated checksum. - * - * For supported hashes see: http://php.net/manual/en/function.hash-algos.php - */ -class ReadHashWrapper extends HashWrapper { - public function stream_read($count) { - $data = parent::stream_read($count); - $this->updateHash($data); - return $data; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php deleted file mode 100644 index d4727aa96cd..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that retries reads/writes to remote streams that dont deliver/recieve all requested data at once - */ -class RetryWrapper extends Wrapper { - public static function wrap($source) { - return self::wrapSource($source); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - return true; - } - - public function stream_read($count) { - $result = parent::stream_read($count); - - $bytesReceived = strlen($result); - while (strlen($result) > 0 && $bytesReceived < $count && !$this->stream_eof()) { - $result .= parent::stream_read($count - $bytesReceived); - $bytesReceived = strlen($result); - } - - return $result; - } - - public function stream_write($data) { - $bytesToSend = strlen($data); - $bytesWritten = parent::stream_write($data); - $result = $bytesWritten; - - while ($bytesWritten > 0 && $result < $bytesToSend && !$this->stream_eof()) { - $dataLeft = substr($data, $result); - $bytesWritten = parent::stream_write($dataLeft); - $result += $bytesWritten; - } - - return $result; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php deleted file mode 100644 index f131e75308e..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/SeekableWrapper.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for write, read and close - * - * The following options should be passed in the context when opening the stream - * [ - * 'callback' => [ - * 'source' => resource - * ] - * ] - * - * All callbacks are called after the operation is executed on the source stream - */ -class SeekableWrapper extends Wrapper { - /** - * @var resource - */ - protected $cache; - - public static function wrap($source) { - return self::wrapSource($source); - } - - public function dir_opendir($path, $options) { - return false; - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $this->loadContext(); - $cache = fopen('php://temp', 'w+'); - if ($cache === false) { - return false; - } - $this->cache = $cache; - return true; - } - - protected function readTill($position) { - $current = ftell($this->source); - if ($position > $current) { - $data = parent::stream_read($position - $current); - $cachePosition = ftell($this->cache); - fseek($this->cache, $current); - fwrite($this->cache, $data); - fseek($this->cache, $cachePosition); - } - } - - public function stream_read($count) { - $current = ftell($this->cache); - $this->readTill($current + $count); - return fread($this->cache, $count); - } - - public function stream_seek($offset, $whence = SEEK_SET) { - if ($whence === SEEK_SET) { - $target = $offset; - } elseif ($whence === SEEK_CUR) { - $current = ftell($this->cache); - $target = $current + $offset; - } else { - return false; - } - $this->readTill($target); - return fseek($this->cache, $target) === 0; - } - - public function stream_tell() { - return ftell($this->cache); - } - - public function stream_eof() { - return parent::stream_eof() and (ftell($this->source) === ftell($this->cache)); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Url.php b/apps/files_external/3rdparty/icewind/streams/src/Url.php deleted file mode 100644 index 38cbbdd89b2..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Url.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Interface for stream wrappers that implement url functions such as unlink, stat - */ -interface Url { - /** - * @param string $path - * @param array $options - * @return bool - */ - public function dir_opendir($path, $options); - - /** - * @param string $path - * @param string $mode - * @param int $options - * @param string $opened_path - * @return bool - */ - public function stream_open($path, $mode, $options, &$opened_path); - - /** - * @param string $path - * @param int $mode - * @param int $options - * @return bool - */ - public function mkdir($path, $mode, $options); - - /** - * @param string $source - * @param string $target - * @return bool - */ - public function rename($source, $target); - - /** - * @param string $path - * @param int $options - * @return bool - */ - public function rmdir($path, $options); - - /** - * @param string $path - * @return bool - */ - public function unlink($path); - - /** - * @param string $path - * @param int $flags - * @return array|false - */ - public function url_stat($path, $flags); -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php b/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php deleted file mode 100644 index 09ba2aefee6..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/UrlCallback.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Wrapper that provides callbacks for url actions such as fopen, unlink, rename - * - * Usage: - * - * $path = UrlCallBack('/path/so/source', function(){ - * echo 'fopen'; - * }, function(){ - * echo 'opendir'; - * }, function(){ - * echo 'mkdir'; - * }, function(){ - * echo 'rename'; - * }, function(){ - * echo 'rmdir'; - * }, function(){ - * echo 'unlink'; - * }, function(){ - * echo 'stat'; - * }); - * - * mkdir($path); - * ... - * - * All callbacks are called after the operation is executed on the source stream - */ -class UrlCallback extends Wrapper implements Url { - - /** - * @param string $source - * @param callable $fopen - * @param callable $opendir - * @param callable $mkdir - * @param callable $rename - * @param callable $rmdir - * @param callable $unlink - * @param callable $stat - * @return \Icewind\Streams\Path - * - * @throws \BadMethodCallException - */ - public static function wrap( - $source, - $fopen = null, - $opendir = null, - $mkdir = null, - $rename = null, - $rmdir = null, - $unlink = null, - $stat = null - ) { - return new Path(static::class, [ - 'source' => $source, - 'fopen' => $fopen, - 'opendir' => $opendir, - 'mkdir' => $mkdir, - 'rename' => $rename, - 'rmdir' => $rmdir, - 'unlink' => $unlink, - 'stat' => $stat - ]); - } - - protected function loadUrlContext($url) { - list($protocol) = explode('://', $url); - $options = stream_context_get_options($this->context); - return $options[$protocol]; - } - - protected function callCallBack($context, $callback) { - if (is_callable($context[$callback])) { - call_user_func($context[$callback]); - } - } - - public function stream_open($path, $mode, $options, &$opened_path) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'fopen'); - $source = fopen($context['source'], $mode); - if ($source === false) { - return false; - } - $this->setSourceStream($source); - return true; - } - - public function dir_opendir($path, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'opendir'); - $source = opendir($context['source']); - if ($source === false) { - return false; - } - $this->setSourceStream($source); - return true; - } - - public function mkdir($path, $mode, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'mkdir'); - return mkdir($context['source'], $mode, ($options & STREAM_MKDIR_RECURSIVE) > 0); - } - - public function rmdir($path, $options) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'rmdir'); - return rmdir($context['source']); - } - - public function rename($source, $target) { - $context = $this->loadUrlContext($source); - $this->callCallBack($context, 'rename'); - list(, $target) = explode('://', $target); - return rename($context['source'], $target); - } - - public function unlink($path) { - $context = $this->loadUrlContext($path); - $this->callCallBack($context, 'unlink'); - return unlink($context['source']); - } - - public function url_stat($path, $flags) { - throw new \Exception('stat is not supported due to php bug 50526'); - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php deleted file mode 100644 index 5b6348afe4f..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Licensed under the MIT license: - * http://opensource.org/licenses/MIT - */ - -namespace Icewind\Streams; - -/** - * Base class for stream wrappers, wraps an existing stream - * - * This wrapper itself doesn't implement any functionality but is just a base class for other wrappers to extend - */ -abstract class Wrapper extends WrapperHandler implements File, Directory { - /** - * @var resource - */ - public $context; - - /** - * The wrapped stream - * - * @var resource - */ - protected $source; - - /** - * @param resource $source - */ - protected function setSourceStream($source) { - $this->source = $source; - } - - protected function loadContext($name = null) { - $context = parent::loadContext($name); - if (isset($context['source']) and is_resource($context['source'])) { - $this->setSourceStream($context['source']); - } else { - throw new \BadMethodCallException('Invalid context, source not set'); - } - return $context; - } - - public function stream_seek($offset, $whence = SEEK_SET) { - $result = fseek($this->source, $offset, $whence); - return $result == 0; - } - - public function stream_tell() { - return ftell($this->source); - } - - public function stream_read($count) { - return fread($this->source, $count); - } - - public function stream_write($data) { - return fwrite($this->source, $data); - } - - public function stream_set_option($option, $arg1, $arg2) { - switch ($option) { - case STREAM_OPTION_BLOCKING: - return stream_set_blocking($this->source, (bool)$arg1); - case STREAM_OPTION_READ_TIMEOUT: - return stream_set_timeout($this->source, $arg1, $arg2); - case STREAM_OPTION_WRITE_BUFFER: - return stream_set_write_buffer($this->source, $arg1) === 0; - } - return false; - } - - public function stream_truncate($size) { - return ftruncate($this->source, $size); - } - - public function stream_stat() { - return fstat($this->source); - } - - public function stream_lock($mode) { - return flock($this->source, $mode); - } - - public function stream_flush() { - return fflush($this->source); - } - - public function stream_eof() { - return feof($this->source); - } - - public function stream_close() { - if (is_resource($this->source)) { - return fclose($this->source); - } - } - - public function dir_readdir() { - return readdir($this->source); - } - - public function dir_closedir() { - closedir($this->source); - return true; - } - - public function dir_rewinddir() { - return rewind($this->source); - } - - public function getSource() { - return $this->source; - } - - /** - * Retrieves header/metadata from the source stream. - * - * This is equivalent to calling `stream_get_meta_data` on the source stream except nested stream wrappers are handled transparently - * - * @return array - */ - public function getMetaData(): array { - $meta = stream_get_meta_data($this->source); - while (isset($meta['wrapper_data']) && $meta['wrapper_data'] instanceof Wrapper) { - $meta = $meta['wrapper_data']->getMetaData(); - } - return $meta; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php deleted file mode 100644 index be408807ed3..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\Streams; - -class WrapperHandler { - /** @var resource $context */ - protected $context; - - const NO_SOURCE_DIR = 1; - - /** - * get the protocol name that is generated for the class - * @param string|null $class - * @return string - */ - public static function getProtocol($class = null) { - if ($class === null) { - $class = static::class; - } - - $parts = explode('\\', $class); - return strtolower(array_pop($parts)); - } - - private static function buildContext($protocol, $context, $source) { - if (is_array($context)) { - $context['source'] = $source; - return stream_context_create([$protocol => $context]); - } else { - return $context; - } - } - - /** - * @param resource|int $source - * @param resource|array $context - * @param string|null $protocol deprecated, protocol is now automatically generated - * @param string|null $class deprecated, class is now automatically generated - * @return resource|false - */ - protected static function wrapSource($source, $context = [], $protocol = null, $class = null, $mode = 'r+') { - if ($class === null) { - $class = static::class; - } - - if ($protocol === null) { - $protocol = self::getProtocol($class); - } - - $context = self::buildContext($protocol, $context, $source); - try { - stream_wrapper_register($protocol, $class); - if (self::isDirectoryHandle($source)) { - return opendir($protocol . '://', $context); - } else { - return fopen($protocol . '://', $mode, false, $context); - } - } finally { - stream_wrapper_unregister($protocol); - } - } - - protected static function isDirectoryHandle($resource) { - if ($resource === self::NO_SOURCE_DIR) { - return true; - } - if (!is_resource($resource)) { - throw new \BadMethodCallException('Invalid stream source'); - } - $meta = stream_get_meta_data($resource); - return $meta['stream_type'] === 'dir' || $meta['stream_type'] === 'user-space-dir'; - } - - /** - * Load the source from the stream context and return the context options - * - * @param string|null $name if not set, the generated protocol name is used - * @return array - * @throws \BadMethodCallException - */ - protected function loadContext($name = null) { - if ($name === null) { - $parts = explode('\\', static::class); - $name = strtolower(array_pop($parts)); - } - - $context = stream_context_get_options($this->context); - if (isset($context[$name])) { - $context = $context[$name]; - } else { - throw new \BadMethodCallException('Invalid context, "' . $name . '" options not set'); - } - return $context; - } -} diff --git a/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php deleted file mode 100644 index 279d9fd10e3..00000000000 --- a/apps/files_external/3rdparty/icewind/streams/src/WriteHashWrapper.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Icewind\Streams; - -/** - * Wrapper that calculates the hash on the stream on write - * - * The stream and hash should be passed in when wrapping the stream. - * On close the callback will be called with the calculated checksum. - * - * For supported hashes see: http://php.net/manual/en/function.hash-algos.php - */ -class WriteHashWrapper extends HashWrapper { - public function stream_write($data) { - $this->updateHash($data); - return parent::stream_write($data); - } -} diff --git a/apps/files_external/ajax/applicable.php b/apps/files_external/ajax/applicable.php index b0ecdfd934d..ece913ffc06 100644 --- a/apps/files_external/ajax/applicable.php +++ b/apps/files_external/ajax/applicable.php @@ -1,28 +1,13 @@ <?php + +use OCP\IGroupManager; +use OCP\IUserManager; +use OCP\Server; + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ \OC_JSON::checkAppEnabled('files_external'); \OC_JSON::callCheck(); @@ -43,12 +28,12 @@ if (isset($_GET['offset'])) { } $groups = []; -foreach (\OC::$server->getGroupManager()->search($pattern, $limit, $offset) as $group) { +foreach (Server::get(IGroupManager::class)->search($pattern, $limit, $offset) as $group) { $groups[$group->getGID()] = $group->getDisplayName(); } $users = []; -foreach (\OC::$server->getUserManager()->searchDisplayName($pattern, $limit, $offset) as $user) { +foreach (Server::get(IUserManager::class)->searchDisplayName($pattern, $limit, $offset) as $user) { $users[$user->getUID()] = $user->getDisplayName(); } diff --git a/apps/files_external/ajax/oauth2.php b/apps/files_external/ajax/oauth2.php index e61814cfb8f..d961d41ea6b 100644 --- a/apps/files_external/ajax/oauth2.php +++ b/apps/files_external/ajax/oauth2.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ \OC_JSON::checkAppEnabled('files_external'); \OC_JSON::checkLoggedIn(); diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index aed2e122ad0..e746f052619 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -1,4 +1,9 @@ <?xml version="1.0"?> +<!-- + - SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + - SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. + - SPDX-License-Identifier: AGPL-3.0-only +--> <info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd"> <id>files_external</id> @@ -9,7 +14,7 @@ This application enables administrators to configure connections to external sto External storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation. </description> - <version>1.22.0</version> + <version>1.24.0</version> <licence>agpl</licence> <author>Robin Appelman</author> <author>Michael Gapczynski</author> @@ -28,7 +33,7 @@ External storage can be configured using the GUI or at the command line. This se <bugs>https://github.com/nextcloud/server/issues</bugs> <dependencies> - <nextcloud min-version="30" max-version="30"/> + <nextcloud min-version="32" max-version="32"/> </dependencies> <background-jobs> @@ -48,6 +53,7 @@ External storage can be configured using the GUI or at the command line. This se <command>OCA\Files_External\Command\Verify</command> <command>OCA\Files_External\Command\Notify</command> <command>OCA\Files_External\Command\Scan</command> + <command>OCA\Files_External\Command\Dependencies</command> </commands> <settings> diff --git a/apps/files_external/appinfo/routes.php b/apps/files_external/appinfo/routes.php index 996c6aba0dc..5602e1c0d11 100644 --- a/apps/files_external/appinfo/routes.php +++ b/apps/files_external/appinfo/routes.php @@ -1,39 +1,15 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Ross Nicoll <jrn@jrn.me.uk> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ -$this->create('files_external_oauth1', 'apps/files_external/ajax/oauth1.php') - ->actionInclude('files_external/ajax/oauth1.php'); $this->create('files_external_oauth2', 'apps/files_external/ajax/oauth2.php') ->actionInclude('files_external/ajax/oauth2.php'); - $this->create('files_external_list_applicable', '/apps/files_external/applicable') ->actionInclude('files_external/ajax/applicable.php'); @@ -62,10 +38,5 @@ return [ 'url' => '/api/v1/mounts', 'verb' => 'GET', ], - [ - 'name' => 'Api#askNativeAuth', - 'url' => '/api/v1/auth', - 'verb' => 'GET', - ], ], ]; diff --git a/apps/files_external/composer/composer/autoload_classmap.php b/apps/files_external/composer/composer/autoload_classmap.php index 0b168b1170e..8ac551013bd 100644 --- a/apps/files_external/composer/composer/autoload_classmap.php +++ b/apps/files_external/composer/composer/autoload_classmap.php @@ -14,6 +14,7 @@ return array( 'OCA\\Files_External\\Command\\Config' => $baseDir . '/../lib/Command/Config.php', 'OCA\\Files_External\\Command\\Create' => $baseDir . '/../lib/Command/Create.php', 'OCA\\Files_External\\Command\\Delete' => $baseDir . '/../lib/Command/Delete.php', + 'OCA\\Files_External\\Command\\Dependencies' => $baseDir . '/../lib/Command/Dependencies.php', 'OCA\\Files_External\\Command\\Export' => $baseDir . '/../lib/Command/Export.php', 'OCA\\Files_External\\Command\\Import' => $baseDir . '/../lib/Command/Import.php', 'OCA\\Files_External\\Command\\ListCommand' => $baseDir . '/../lib/Command/ListCommand.php', @@ -22,6 +23,7 @@ return array( 'OCA\\Files_External\\Command\\Scan' => $baseDir . '/../lib/Command/Scan.php', 'OCA\\Files_External\\Command\\StorageAuthBase' => $baseDir . '/../lib/Command/StorageAuthBase.php', 'OCA\\Files_External\\Command\\Verify' => $baseDir . '/../lib/Command/Verify.php', + 'OCA\\Files_External\\ConfigLexicon' => $baseDir . '/../lib/ConfigLexicon.php', 'OCA\\Files_External\\Config\\ConfigAdapter' => $baseDir . '/../lib/Config/ConfigAdapter.php', 'OCA\\Files_External\\Config\\ExternalMountPoint' => $baseDir . '/../lib/Config/ExternalMountPoint.php', 'OCA\\Files_External\\Config\\IConfigHandler' => $baseDir . '/../lib/Config/IConfigHandler.php', @@ -41,7 +43,6 @@ return array( 'OCA\\Files_External\\Lib\\Auth\\IUserProvided' => $baseDir . '/../lib/Lib/Auth/IUserProvided.php', 'OCA\\Files_External\\Lib\\Auth\\InvalidAuth' => $baseDir . '/../lib/Lib/Auth/InvalidAuth.php', 'OCA\\Files_External\\Lib\\Auth\\NullMechanism' => $baseDir . '/../lib/Lib/Auth/NullMechanism.php', - 'OCA\\Files_External\\Lib\\Auth\\OAuth1\\OAuth1' => $baseDir . '/../lib/Lib/Auth/OAuth1/OAuth1.php', 'OCA\\Files_External\\Lib\\Auth\\OAuth2\\OAuth2' => $baseDir . '/../lib/Lib/Auth/OAuth2/OAuth2.php', 'OCA\\Files_External\\Lib\\Auth\\OpenStack\\OpenStackV2' => $baseDir . '/../lib/Lib/Auth/OpenStack/OpenStackV2.php', 'OCA\\Files_External\\Lib\\Auth\\OpenStack\\OpenStackV3' => $baseDir . '/../lib/Lib/Auth/OpenStack/OpenStackV3.php', @@ -96,6 +97,7 @@ return array( 'OCA\\Files_External\\Lib\\Storage\\SMB' => $baseDir . '/../lib/Lib/Storage/SMB.php', 'OCA\\Files_External\\Lib\\Storage\\StreamWrapper' => $baseDir . '/../lib/Lib/Storage/StreamWrapper.php', 'OCA\\Files_External\\Lib\\Storage\\Swift' => $baseDir . '/../lib/Lib/Storage/Swift.php', + 'OCA\\Files_External\\Lib\\Storage\\SystemBridge' => $baseDir . '/../lib/Lib/Storage/SystemBridge.php', 'OCA\\Files_External\\Lib\\VisibilityTrait' => $baseDir . '/../lib/Lib/VisibilityTrait.php', 'OCA\\Files_External\\Listener\\GroupDeletedListener' => $baseDir . '/../lib/Listener/GroupDeletedListener.php', 'OCA\\Files_External\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php', diff --git a/apps/files_external/composer/composer/autoload_static.php b/apps/files_external/composer/composer/autoload_static.php index 29e95ae968a..4468ce1b6bb 100644 --- a/apps/files_external/composer/composer/autoload_static.php +++ b/apps/files_external/composer/composer/autoload_static.php @@ -29,6 +29,7 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Command\\Config' => __DIR__ . '/..' . '/../lib/Command/Config.php', 'OCA\\Files_External\\Command\\Create' => __DIR__ . '/..' . '/../lib/Command/Create.php', 'OCA\\Files_External\\Command\\Delete' => __DIR__ . '/..' . '/../lib/Command/Delete.php', + 'OCA\\Files_External\\Command\\Dependencies' => __DIR__ . '/..' . '/../lib/Command/Dependencies.php', 'OCA\\Files_External\\Command\\Export' => __DIR__ . '/..' . '/../lib/Command/Export.php', 'OCA\\Files_External\\Command\\Import' => __DIR__ . '/..' . '/../lib/Command/Import.php', 'OCA\\Files_External\\Command\\ListCommand' => __DIR__ . '/..' . '/../lib/Command/ListCommand.php', @@ -37,6 +38,7 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Command\\Scan' => __DIR__ . '/..' . '/../lib/Command/Scan.php', 'OCA\\Files_External\\Command\\StorageAuthBase' => __DIR__ . '/..' . '/../lib/Command/StorageAuthBase.php', 'OCA\\Files_External\\Command\\Verify' => __DIR__ . '/..' . '/../lib/Command/Verify.php', + 'OCA\\Files_External\\ConfigLexicon' => __DIR__ . '/..' . '/../lib/ConfigLexicon.php', 'OCA\\Files_External\\Config\\ConfigAdapter' => __DIR__ . '/..' . '/../lib/Config/ConfigAdapter.php', 'OCA\\Files_External\\Config\\ExternalMountPoint' => __DIR__ . '/..' . '/../lib/Config/ExternalMountPoint.php', 'OCA\\Files_External\\Config\\IConfigHandler' => __DIR__ . '/..' . '/../lib/Config/IConfigHandler.php', @@ -56,7 +58,6 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Lib\\Auth\\IUserProvided' => __DIR__ . '/..' . '/../lib/Lib/Auth/IUserProvided.php', 'OCA\\Files_External\\Lib\\Auth\\InvalidAuth' => __DIR__ . '/..' . '/../lib/Lib/Auth/InvalidAuth.php', 'OCA\\Files_External\\Lib\\Auth\\NullMechanism' => __DIR__ . '/..' . '/../lib/Lib/Auth/NullMechanism.php', - 'OCA\\Files_External\\Lib\\Auth\\OAuth1\\OAuth1' => __DIR__ . '/..' . '/../lib/Lib/Auth/OAuth1/OAuth1.php', 'OCA\\Files_External\\Lib\\Auth\\OAuth2\\OAuth2' => __DIR__ . '/..' . '/../lib/Lib/Auth/OAuth2/OAuth2.php', 'OCA\\Files_External\\Lib\\Auth\\OpenStack\\OpenStackV2' => __DIR__ . '/..' . '/../lib/Lib/Auth/OpenStack/OpenStackV2.php', 'OCA\\Files_External\\Lib\\Auth\\OpenStack\\OpenStackV3' => __DIR__ . '/..' . '/../lib/Lib/Auth/OpenStack/OpenStackV3.php', @@ -111,6 +112,7 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Lib\\Storage\\SMB' => __DIR__ . '/..' . '/../lib/Lib/Storage/SMB.php', 'OCA\\Files_External\\Lib\\Storage\\StreamWrapper' => __DIR__ . '/..' . '/../lib/Lib/Storage/StreamWrapper.php', 'OCA\\Files_External\\Lib\\Storage\\Swift' => __DIR__ . '/..' . '/../lib/Lib/Storage/Swift.php', + 'OCA\\Files_External\\Lib\\Storage\\SystemBridge' => __DIR__ . '/..' . '/../lib/Lib/Storage/SystemBridge.php', 'OCA\\Files_External\\Lib\\VisibilityTrait' => __DIR__ . '/..' . '/../lib/Lib/VisibilityTrait.php', 'OCA\\Files_External\\Listener\\GroupDeletedListener' => __DIR__ . '/..' . '/../lib/Listener/GroupDeletedListener.php', 'OCA\\Files_External\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php', diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index 2d70ada6973..2542c8007e9 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -1 +1,4 @@ -#files_external{margin-bottom:0px}#externalStorage{margin:15px 0 20px 0}#externalStorage tr.externalStorageLoading>td{text-align:center}#externalStorage td>input:not(.applicableToAllUsers),#externalStorage td>select{width:100%}#externalStorage .popovermenu li>.menuitem{width:fit-content !important}#externalStorage td.status{display:table-cell;vertical-align:middle}#externalStorage td.status>span{display:inline-block;height:28px;width:28px;vertical-align:text-bottom;border-radius:50%;cursor:pointer}#externalStorage td.mountPoint,#externalStorage td.backend,#externalStorage td.authentication,#externalStorage td.configuration{min-width:160px;width:15%}#externalStorage td>img{padding-top:7px;opacity:.5}#externalStorage td>img:hover{padding-top:7px;cursor:pointer;opacity:1}#addMountPoint>td{border:none}#addMountPoint>td.applicable{visibility:hidden}#addMountPoint>td.hidden{visibility:hidden}#externalStorage td{height:50px}#externalStorage td.mountOptionsToggle,#externalStorage td.remove,#externalStorage td.save{position:relative;padding:0 !important;width:44px}#externalStorage td.mountOptionsToggle [class^=icon-],#externalStorage td.mountOptionsToggle [class*=" icon-"],#externalStorage td.remove [class^=icon-],#externalStorage td.remove [class*=" icon-"],#externalStorage td.save [class^=icon-],#externalStorage td.save [class*=" icon-"]{width:44px;height:44px;margin:3px;opacity:.5;padding:14px;vertical-align:text-bottom;cursor:pointer}#externalStorage td.mountOptionsToggle [class^=icon-]:hover,#externalStorage td.mountOptionsToggle [class*=" icon-"]:hover,#externalStorage td.remove [class^=icon-]:hover,#externalStorage td.remove [class*=" icon-"]:hover,#externalStorage td.save [class^=icon-]:hover,#externalStorage td.save [class*=" icon-"]:hover{opacity:1}#selectBackend{margin-left:-10px;width:150px}#externalStorage td.configuration,#externalStorage td.backend{white-space:normal}#externalStorage td.configuration>*{white-space:nowrap}#externalStorage td.configuration input.added{margin-right:6px}#externalStorage label>input[type=checkbox]{margin-right:3px}#externalStorage td.configuration label{width:100%;display:inline-flex;align-items:center}#externalStorage td.configuration input.disabled-success{background-color:rgba(134,255,110,.9)}#externalStorage td.applicable label{display:inline-flex;align-items:center}#externalStorage td.applicable div.chzn-container{position:relative;top:3px}#externalStorage .select2-container.applicableUsers{width:100% !important}#userMountingBackends{padding-left:25px}.files-external-select2 .select2-results .select2-result-label{height:32px;padding:3px}.files-external-select2 .select2-results .select2-result-label>span{display:block;position:relative}.files-external-select2 .select2-results .select2-result-label .avatardiv{display:inline-block}.files-external-select2 .select2-results .select2-result-label .avatardiv+span{position:absolute;top:5px;margin-left:10px}.files-external-select2 .select2-results .select2-result-label .avatardiv[data-type=group]+span{vertical-align:top;top:6px;position:absolute;max-width:80%;left:30px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#externalStorage .select2-container .select2-search-choice{display:flex}#externalStorage .select2-container .select2-search-choice .select2-search-choice-close{display:block;left:auto;position:relative;width:20px}#externalStorage .mountOptionsToggle .dropdown{width:auto}.nav-icon-external-storage{background-image:var(--icon-external-dark)}.global_credentials__personal{margin:10px auto;text-align:center;width:min(400px,100vw)}/*# sourceMappingURL=settings.css.map */ +/*! + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */#files_external{margin-bottom:0px}#externalStorage{margin:15px 0 20px 0}#externalStorage tr.externalStorageLoading>td{text-align:center}#externalStorage td{height:50px}#externalStorage td.mountOptionsToggle,#externalStorage td.remove,#externalStorage td.save{position:relative;padding:0 !important;width:44px}#externalStorage td.mountOptionsToggle [class^=icon-],#externalStorage td.mountOptionsToggle [class*=" icon-"],#externalStorage td.remove [class^=icon-],#externalStorage td.remove [class*=" icon-"],#externalStorage td.save [class^=icon-],#externalStorage td.save [class*=" icon-"]{width:44px;height:44px;margin:3px;opacity:.5;padding:14px;vertical-align:text-bottom;cursor:pointer}#externalStorage td.mountOptionsToggle [class^=icon-]:hover,#externalStorage td.mountOptionsToggle [class*=" icon-"]:hover,#externalStorage td.remove [class^=icon-]:hover,#externalStorage td.remove [class*=" icon-"]:hover,#externalStorage td.save [class^=icon-]:hover,#externalStorage td.save [class*=" icon-"]:hover{opacity:1}#externalStorage td.mountPoint,#externalStorage td.backend,#externalStorage td.authentication,#externalStorage td.configuration{min-width:160px;width:15%}#externalStorage td.status{display:table-cell;vertical-align:middle;width:43px}#externalStorage td.status>span{display:inline-block;height:28px;width:28px;vertical-align:text-bottom;border-radius:50%;cursor:pointer}#externalStorage td>input:not(.applicableToAllUsers),#externalStorage td>select{width:100%}#externalStorage td>img{padding-top:7px;opacity:.5}#externalStorage td>img:hover{cursor:pointer;opacity:1}#externalStorage .popovermenu li>.menuitem{width:fit-content !important}#addMountPoint>td{border:none}#addMountPoint>td.applicable{visibility:hidden}#addMountPoint>td.hidden{visibility:hidden}#selectBackend{margin-inline-start:-10px;width:150px}#externalStorage td.configuration,#externalStorage td.backend{white-space:normal}#externalStorage td.configuration>*{white-space:nowrap}#externalStorage td.configuration input.added{margin-inline-end:6px}#externalStorage label>input[type=checkbox]{margin-inline-end:3px}#externalStorage td.configuration label{width:100%;display:inline-flex;align-items:center}#externalStorage td.configuration input.disabled-success{background-color:rgba(134,255,110,.9)}#externalStorage td.applicable label{display:inline-flex;align-items:center}#externalStorage td.applicable div.chzn-container{position:relative;top:3px}#externalStorage .select2-container.applicableUsers{width:100% !important}#userMountingBackends{padding-inline-start:25px}.files-external-select2 .select2-results .select2-result-label{height:32px;padding:3px}.files-external-select2 .select2-results .select2-result-label>span{display:block;position:relative}.files-external-select2 .select2-results .select2-result-label .avatardiv{display:inline-block}.files-external-select2 .select2-results .select2-result-label .avatardiv+span{position:absolute;top:5px;margin-inline-start:10px}.files-external-select2 .select2-results .select2-result-label .avatardiv[data-type=group]+span{vertical-align:top;top:6px;position:absolute;max-width:80%;inset-inline-start:30px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#externalStorage .select2-container .select2-search-choice{display:flex}#externalStorage .select2-container .select2-search-choice .select2-search-choice-close{display:block;inset-inline-start:auto;position:relative;width:20px}#externalStorage .mountOptionsToggle .dropdown{width:auto}.nav-icon-external-storage{background-image:var(--icon-external-dark)}.global_credentials__personal{margin:10px auto;text-align:center;width:min(400px,100vw)}/*# sourceMappingURL=settings.css.map */ diff --git a/apps/files_external/css/settings.css.map b/apps/files_external/css/settings.css.map index c980ab3b126..8bbd1e75612 100644 --- a/apps/files_external/css/settings.css.map +++ b/apps/files_external/css/settings.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["settings.scss"],"names":[],"mappings":"AAAA,gBACC,kBAGD,iBACC,qBAEA,8CACC,kBAKD,gFACC,WAIF,2CACI,6BAGJ,2BAEC,mBACA,sBAGD,gCACC,qBACA,YACA,WACA,2BACA,kBACA,eAGA,gIACC,gBACA,UAGF,mDACA,uEACA,8BACA,+CACA,2CAEA,oBACC,YACA,2FAGC,kBACA,qBACA,WACA,yRAEC,WACA,YACA,WACA,WACA,aACA,2BACA,eACA,6TACC,UAMJ,eACC,kBACA,YAGD,8DAEC,mBAED,oCACC,mBAGD,8CACC,iBAGD,4CACC,iBAGD,wCACC,WACA,oBACA,mBAGD,yDACC,sCAGD,qCACC,oBACA,mBAGD,kDACC,kBACA,QAGD,oDACC,sBAGD,sBACC,kBAGD,+DACC,YACA,YAED,oEACC,cACA,kBAED,0EACC,qBAED,+EACC,kBACA,QACA,iBAED,gGACC,mBACA,QACA,kBACA,cACA,UACA,uBACA,mBACA,gBAGD,2DACC,aACA,wFACC,cACA,UACA,kBACA,WAIF,+CACC,WAGD,2BACC,2CAGD,8BACI,iBACA,kBACA","file":"settings.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["settings.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GAIA,gBACC,kBAGD,iBACC,qBAEA,8CACC,kBAGD,oBACC,YAEA,2FAGC,kBACA,qBACA,WACA,yRAEC,WACA,YACA,WACA,WACA,aACA,2BACA,eACA,6TACC,UAKH,gIAIC,gBACA,UAGD,2BAEC,mBACA,sBAEA,WAEA,gCACC,qBACA,YACA,WACA,2BACA,kBACA,eAIF,gFACC,WAGD,wBACC,gBACA,WAEA,8BACC,eACA,UAKH,2CACC,6BAIF,8BAEA,+CAEA,2CAEA,eACC,0BACA,YAGD,8DAEC,mBAGD,oCACC,mBAGD,8CACC,sBAGD,4CACC,sBAGD,wCACC,WACA,oBACA,mBAGD,yDACC,sCAGD,qCACC,oBACA,mBAGD,kDACC,kBACA,QAGD,oDACC,sBAGD,sBACC,0BAGD,+DACC,YACA,YAGD,oEACC,cACA,kBAGD,0EACC,qBAGD,+EACC,kBACA,QACA,yBAGD,gGACC,mBACA,QACA,kBACA,cACA,wBACA,uBACA,mBACA,gBAGD,2DACC,aACA,wFACC,cACA,wBACA,kBACA,WAIF,+CACC,WAGD,2BACC,2CAGD,8BACI,iBACA,kBACA","file":"settings.css"}
\ No newline at end of file diff --git a/apps/files_external/css/settings.css.map.license b/apps/files_external/css/settings.css.map.license new file mode 100644 index 00000000000..3e87d1c6a63 --- /dev/null +++ b/apps/files_external/css/settings.css.map.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/apps/files_external/css/settings.scss b/apps/files_external/css/settings.scss index 5acf373da73..f83c74a9122 100644 --- a/apps/files_external/css/settings.scss +++ b/apps/files_external/css/settings.scss @@ -1,3 +1,7 @@ +/*! + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ #files_external { margin-bottom: 0px; } @@ -8,70 +12,84 @@ tr.externalStorageLoading > td { text-align: center; } -} -#externalStorage td { - & > input:not(.applicableToAllUsers), & > select { - width: 100%; - } -} + td { + height: 50px; -#externalStorage .popovermenu li > .menuitem { - width: fit-content !important; -} + &.mountOptionsToggle, + &.remove, + &.save { + position: relative; + padding: 0 !important; + width: 44px; + [class^='icon-'], + [class*=' icon-'] { + width: 44px; + height: 44px; + margin: 3px; + opacity: 0.5; + padding: 14px; + vertical-align: text-bottom; + cursor: pointer; + &:hover { + opacity: 1; + } + } + } -#externalStorage td.status { - /* overwrite conflicting core styles */ - display: table-cell; - vertical-align: middle; -} + &.mountPoint, + &.backend, + &.authentication, + &.configuration { + min-width: 160px; + width: 15%; + } -#externalStorage td.status > span { - display: inline-block; - height: 28px; - width: 28px; - vertical-align: text-bottom; - border-radius: 50%; - cursor: pointer; -} -#externalStorage { - td.mountPoint, td.backend, td.authentication, td.configuration { - min-width: 160px; - width: 15%; - } -} -#externalStorage td>img { padding-top:7px; opacity: 0.5; } -#externalStorage td>img:hover { padding-top:7px; cursor:pointer; opacity: 1; } -#addMountPoint>td { border:none; } -#addMountPoint>td.applicable { visibility:hidden; } -#addMountPoint>td.hidden { visibility:hidden; } + &.status { + /* overwrite conflicting core styles */ + display: table-cell; + vertical-align: middle; + /* ensure width does not change even if internal span is not displayed */ + width: 43px; + + > span { + display: inline-block; + height: 28px; + width: 28px; + vertical-align: text-bottom; + border-radius: 50%; + cursor: pointer; + } + } -#externalStorage td { - height: 50px; - &.mountOptionsToggle, - &.remove, - &.save { - position: relative; - padding: 0 !important; - width: 44px; - [class^='icon-'], - [class*=' icon-'] { - width: 44px; - height: 44px; - margin: 3px; + > input:not(.applicableToAllUsers), & > select { + width: 100%; + } + + > img { + padding-top: 7px; opacity: 0.5; - padding: 14px; - vertical-align: text-bottom; - cursor: pointer; + &:hover { + cursor:pointer; opacity: 1; } } } + + .popovermenu li > .menuitem { + width: fit-content !important; + } } +#addMountPoint>td { border:none; } + +#addMountPoint>td.applicable { visibility:hidden; } + +#addMountPoint>td.hidden { visibility:hidden; } + #selectBackend { - margin-left: -10px; + margin-inline-start: -10px; width: 150px; } @@ -79,16 +97,17 @@ #externalStorage td.backend { white-space: normal; } + #externalStorage td.configuration > * { white-space: nowrap; } #externalStorage td.configuration input.added { - margin-right: 6px; + margin-inline-end: 6px; } #externalStorage label > input[type="checkbox"] { - margin-right: 3px; + margin-inline-end: 3px; } #externalStorage td.configuration label { @@ -116,31 +135,35 @@ } #userMountingBackends { - padding-left: 25px; + padding-inline-start: 25px; } .files-external-select2 .select2-results .select2-result-label { height: 32px; padding: 3px; } + .files-external-select2 .select2-results .select2-result-label > span { display: block; position: relative; } + .files-external-select2 .select2-results .select2-result-label .avatardiv { display:inline-block; } + .files-external-select2 .select2-results .select2-result-label .avatardiv + span { position: absolute; top: 5px; - margin-left: 10px; + margin-inline-start: 10px; } + .files-external-select2 .select2-results .select2-result-label .avatardiv[data-type="group"] + span { vertical-align: top; top: 6px; position: absolute; max-width: 80%; - left: 30px; + inset-inline-start: 30px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; @@ -150,7 +173,7 @@ display: flex; .select2-search-choice-close { display: block; - left: auto; + inset-inline-start: auto; position: relative; width: 20px; } diff --git a/apps/files_external/img/app-dark.svg b/apps/files_external/img/app-dark.svg index 3845f608193..a74c26b4499 100644 --- a/apps/files_external/img/app-dark.svg +++ b/apps/files_external/img/app-dark.svg @@ -1 +1 @@ -<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M14.903 3.237l4.76 4.515-7.14 6.772 4.76 4.514 7.142-6.772 4.762 4.515V3.237H14.904zM5.38 5.495C4.063 5.495 3 6.5 3 7.752V25.81c0 1.25 1.062 2.257 2.38 2.257h19.045c1.318 0 2.38-1.007 2.38-2.257v-6.772l-2.38-2.257v9.03H5.38V7.752h9.523l-2.38-2.258H5.38z"/></svg> +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M456-432h156.48q24.96 0 42.24-17.39Q672-466.77 672-491.89q0-25.11-17.42-42.61T612-552h-1q-4.83-30.72-27.99-51.36Q559.85-624 528-624q-26 0-45.98 12.96-19.99 12.96-30.46 35.04-28.54 1.92-48.05 22.56Q384-532.8 384-504q0 28.8 21 50.4 21 21.6 51 21.6ZM120-144q-29.7 0-50.85-21.15Q48-186.3 48-216v-504h72v504h633v72H120Zm144-144q-29.7 0-50.85-21.15Q192-330.3 192-360v-432q0-29.7 21.15-50.85Q234.3-864 264-864h168l96 96h264q30-1 51 20.44 21 21.45 21 51.56v336q0 29.7-21.15 50.85Q821.7-288 792-288H264Z"/></svg>
\ No newline at end of file diff --git a/apps/files_external/img/app.svg b/apps/files_external/img/app.svg index fe6f8fb56a5..2c63b8cad32 100644 --- a/apps/files_external/img/app.svg +++ b/apps/files_external/img/app.svg @@ -1 +1 @@ -<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M14.903 3.237l4.76 4.515-7.14 6.772 4.76 4.514 7.142-6.772 4.762 4.515V3.237H14.904zM5.38 5.495C4.063 5.495 3 6.5 3 7.752V25.81c0 1.25 1.062 2.257 2.38 2.257h19.045c1.318 0 2.38-1.007 2.38-2.257v-6.772l-2.38-2.257v9.03H5.38V7.752h9.523l-2.38-2.258H5.38z" fill="#fff"/></svg> +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#fff"><path d="M456-432h156.48q24.96 0 42.24-17.39Q672-466.77 672-491.89q0-25.11-17.42-42.61T612-552h-1q-4.83-30.72-27.99-51.36Q559.85-624 528-624q-26 0-45.98 12.96-19.99 12.96-30.46 35.04-28.54 1.92-48.05 22.56Q384-532.8 384-504q0 28.8 21 50.4 21 21.6 51 21.6ZM120-144q-29.7 0-50.85-21.15Q48-186.3 48-216v-504h72v504h633v72H120Zm144-144q-29.7 0-50.85-21.15Q192-330.3 192-360v-432q0-29.7 21.15-50.85Q234.3-864 264-864h168l96 96h264q30-1 51 20.44 21 21.45 21 51.56v336q0 29.7-21.15 50.85Q821.7-288 792-288H264Z"/></svg>
\ No newline at end of file diff --git a/apps/files_external/js/oauth1.js b/apps/files_external/js/oauth1.js deleted file mode 100644 index 0fee36077c6..00000000000 --- a/apps/files_external/js/oauth1.js +++ /dev/null @@ -1,82 +0,0 @@ -window.addEventListener('DOMContentLoaded', function() { - - function displayGranted($tr) { - $tr.find('.configuration input.auth-param').attr('disabled', 'disabled').addClass('disabled-success'); - } - - OCA.Files_External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) { - if (authMechanism === 'oauth1::oauth1') { - var config = $tr.find('.configuration'); - config.append($(document.createElement('input')) - .addClass('button auth-param') - .attr('type', 'button') - .attr('value', t('files_external', 'Grant access')) - .attr('name', 'oauth1_grant') - ); - - onCompletion.then(function() { - var configured = $tr.find('[data-parameter="configured"]'); - if ($(configured).val() == 'true') { - displayGranted($tr); - } else { - var app_key = $tr.find('.configuration [data-parameter="app_key"]').val(); - var app_secret = $tr.find('.configuration [data-parameter="app_secret"]').val(); - if (app_key != '' && app_secret != '') { - var pos = window.location.search.indexOf('oauth_token') + 12; - var token = $tr.find('.configuration [data-parameter="token"]'); - if (pos != -1 && window.location.search.substr(pos, $(token).val().length) == $(token).val()) { - var token_secret = $tr.find('.configuration [data-parameter="token_secret"]'); - var statusSpan = $tr.find('.status span'); - statusSpan.removeClass(); - statusSpan.addClass('waiting'); - $.post(OC.filePath('files_external', 'ajax', 'oauth1.php'), { step: 2, app_key: app_key, app_secret: app_secret, request_token: $(token).val(), request_token_secret: $(token_secret).val() }, function(result) { - if (result && result.status == 'success') { - $(token).val(result.access_token); - $(token_secret).val(result.access_token_secret); - $(configured).val('true'); - OCA.Files_External.Settings.mountConfig.saveStorageConfig($tr, function(status) { - if (status) { - displayGranted($tr); - } - }); - } else { - OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring OAuth1')); - } - }); - } - } - } - }); - } - }); - - $('#externalStorage').on('click', '[name="oauth1_grant"]', function(event) { - event.preventDefault(); - var tr = $(this).parent().parent(); - var app_key = $(this).parent().find('[data-parameter="app_key"]').val(); - var app_secret = $(this).parent().find('[data-parameter="app_secret"]').val(); - if (app_key != '' && app_secret != '') { - var configured = $(this).parent().find('[data-parameter="configured"]'); - var token = $(this).parent().find('[data-parameter="token"]'); - var token_secret = $(this).parent().find('[data-parameter="token_secret"]'); - $.post(OC.filePath('files_external', 'ajax', 'oauth1.php'), { step: 1, app_key: app_key, app_secret: app_secret, callback: location.protocol + '//' + location.host + location.pathname }, function(result) { - if (result && result.status == 'success') { - $(configured).val('false'); - $(token).val(result.data.request_token); - $(token_secret).val(result.data.request_token_secret); - OCA.Files_External.Settings.mountConfig.saveStorageConfig(tr, function() { - window.location = result.data.url; - }); - } else { - OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring OAuth1')); - } - }); - } else { - OC.dialogs.alert( - t('files_external', 'Please provide a valid app key and secret.'), - t('files_external', 'Error configuring OAuth1') - ); - } - }); - -}); diff --git a/apps/files_external/js/oauth2.js b/apps/files_external/js/oauth2.js index 086a95f038f..53309b477ee 100644 --- a/apps/files_external/js/oauth2.js +++ b/apps/files_external/js/oauth2.js @@ -1,3 +1,8 @@ +/** + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ window.addEventListener('DOMContentLoaded', function() { function displayGranted($tr) { diff --git a/apps/files_external/js/public_key.js b/apps/files_external/js/public_key.js index 7fa47f09f1b..8af5e6d4a49 100644 --- a/apps/files_external/js/public_key.js +++ b/apps/files_external/js/public_key.js @@ -1,3 +1,8 @@ +/** + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2015 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ window.addEventListener('DOMContentLoaded', function() { OCA.Files_External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) { diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js deleted file mode 100644 index 7bcf821f1ad..00000000000 --- a/apps/files_external/js/settings.js +++ /dev/null @@ -1,1510 +0,0 @@ -/* - * Copyright (c) 2014 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function(){ - -/** - * Returns the selection of applicable users in the given configuration row - * - * @param $row configuration row - * @return array array of user names - */ -function getSelection($row) { - var values = $row.find('.applicableUsers').select2('val'); - if (!values || values.length === 0) { - values = []; - } - return values; -} - -function getSelectedApplicable($row) { - var users = []; - var groups = []; - var multiselect = getSelection($row); - $.each(multiselect, function(index, value) { - // FIXME: don't rely on string parts to detect groups... - var pos = (value.indexOf)?value.indexOf('(group)'): -1; - if (pos !== -1) { - groups.push(value.substr(0, pos)); - } else { - users.push(value); - } - }); - - // FIXME: this should be done in the multiselect change event instead - $row.find('.applicable') - .data('applicable-groups', groups) - .data('applicable-users', users); - - return { users, groups }; -} - -function highlightBorder($element, highlight) { - $element.toggleClass('warning-input', highlight); - return highlight; -} - -function isInputValid($input) { - var optional = $input.hasClass('optional'); - switch ($input.attr('type')) { - case 'text': - case 'password': - if ($input.val() === '' && !optional) { - return false; - } - break; - } - return true; -} - -function highlightInput($input) { - switch ($input.attr('type')) { - case 'text': - case 'password': - return highlightBorder($input, !isInputValid($input)); - } -} - -/** - * Initialize select2 plugin on the given elements - * - * @param {Array<Object>} array of jQuery elements - * @param {number} userListLimit page size for result list - */ -function initApplicableUsersMultiselect($elements, userListLimit) { - var escapeHTML = function (text) { - return text.toString() - .split('&').join('&') - .split('<').join('<') - .split('>').join('>') - .split('"').join('"') - .split('\'').join('''); - }; - if (!$elements.length) { - return; - } - return $elements.select2({ - placeholder: t('files_external', 'Type to select account or group.'), - allowClear: true, - multiple: true, - toggleSelect: true, - dropdownCssClass: 'files-external-select2', - //minimumInputLength: 1, - ajax: { - url: OC.generateUrl('apps/files_external/applicable'), - dataType: 'json', - quietMillis: 100, - data: function (term, page) { // page is the one-based page number tracked by Select2 - return { - pattern: term, //search term - limit: userListLimit, // page size - offset: userListLimit*(page-1) // page number starts with 0 - }; - }, - results: function (data) { - if (data.status === 'success') { - - var results = []; - var userCount = 0; // users is an object - - // add groups - $.each(data.groups, function(gid, group) { - results.push({name:gid+'(group)', displayname:group, type:'group' }); - }); - // add users - $.each(data.users, function(id, user) { - userCount++; - results.push({name:id, displayname:user, type:'user' }); - }); - - - var more = (userCount >= userListLimit) || (data.groups.length >= userListLimit); - return {results: results, more: more}; - } else { - //FIXME add error handling - } - } - }, - initSelection: function(element, callback) { - var users = {}; - users['users'] = []; - var toSplit = element.val().split(","); - for (var i = 0; i < toSplit.length; i++) { - users['users'].push(toSplit[i]); - } - - $.ajax(OC.generateUrl('displaynames'), { - type: 'POST', - contentType: 'application/json', - data: JSON.stringify(users), - dataType: 'json' - }).done(function(data) { - var results = []; - if (data.status === 'success') { - $.each(data.users, function(user, displayname) { - if (displayname !== false) { - results.push({name:user, displayname:displayname, type:'user'}); - } - }); - callback(results); - } else { - //FIXME add error handling - } - }); - }, - id: function(element) { - return element.name; - }, - formatResult: function (element) { - var $result = $('<span><div class="avatardiv"></div><span>'+escapeHTML(element.displayname)+'</span></span>'); - var $div = $result.find('.avatardiv') - .attr('data-type', element.type) - .attr('data-name', element.name) - .attr('data-displayname', element.displayname); - if (element.type === 'group') { - var url = OC.imagePath('core','actions/group'); - $div.html('<img width="32" height="32" src="'+url+'">'); - } - return $result.get(0).outerHTML; - }, - formatSelection: function (element) { - if (element.type === 'group') { - return '<span title="'+escapeHTML(element.name)+'" class="group">'+escapeHTML(element.displayname+' '+t('files_external', '(Group)'))+'</span>'; - } else { - return '<span title="'+escapeHTML(element.name)+'" class="user">'+escapeHTML(element.displayname)+'</span>'; - } - }, - escapeMarkup: function (m) { return m; } // we escape the markup in formatResult and formatSelection - }).on('select2-loaded', function() { - $.each($('.avatardiv'), function(i, div) { - var $div = $(div); - if ($div.data('type') === 'user') { - $div.avatar($div.data('name'),32); - } - }); - }).on('change', function(event) { - highlightBorder($(event.target).closest('.applicableUsersContainer').find('.select2-choices'), !event.val.length); - }); -} - -/** - * @class OCA.Files_External.Settings.StorageConfig - * - * @classdesc External storage config - */ -var StorageConfig = function(id) { - this.id = id; - this.backendOptions = {}; -}; -// Keep this in sync with \OCA\Files_External\MountConfig::STATUS_* -StorageConfig.Status = { - IN_PROGRESS: -1, - SUCCESS: 0, - ERROR: 1, - INDETERMINATE: 2 -}; -StorageConfig.Visibility = { - NONE: 0, - PERSONAL: 1, - ADMIN: 2, - DEFAULT: 3 -}; -/** - * @memberof OCA.Files_External.Settings - */ -StorageConfig.prototype = { - _url: null, - - /** - * Storage id - * - * @type int - */ - id: null, - - /** - * Mount point - * - * @type string - */ - mountPoint: '', - - /** - * Backend - * - * @type string - */ - backend: null, - - /** - * Authentication mechanism - * - * @type string - */ - authMechanism: null, - - /** - * Backend-specific configuration - * - * @type Object.<string,object> - */ - backendOptions: null, - - /** - * Mount-specific options - * - * @type Object.<string,object> - */ - mountOptions: null, - - /** - * Creates or saves the storage. - * - * @param {Function} [options.success] success callback, receives result as argument - * @param {Function} [options.error] error callback - */ - save: function(options) { - var self = this; - var url = OC.generateUrl(this._url); - var method = 'POST'; - if (_.isNumber(this.id)) { - method = 'PUT'; - url = OC.generateUrl(this._url + '/{id}', {id: this.id}); - } - - $.ajax({ - type: method, - url: url, - contentType: 'application/json', - data: JSON.stringify(this.getData()), - success: function(result) { - self.id = result.id; - if (_.isFunction(options.success)) { - options.success(result); - } - }, - error: options.error - }); - }, - - /** - * Returns the data from this object - * - * @return {Array} JSON array of the data - */ - getData: function() { - var data = { - mountPoint: this.mountPoint, - backend: this.backend, - authMechanism: this.authMechanism, - backendOptions: this.backendOptions, - testOnly: true - }; - if (this.id) { - data.id = this.id; - } - if (this.mountOptions) { - data.mountOptions = this.mountOptions; - } - return data; - }, - - /** - * Recheck the storage - * - * @param {Function} [options.success] success callback, receives result as argument - * @param {Function} [options.error] error callback - */ - recheck: function(options) { - if (!_.isNumber(this.id)) { - if (_.isFunction(options.error)) { - options.error(); - } - return; - } - $.ajax({ - type: 'GET', - url: OC.generateUrl(this._url + '/{id}', {id: this.id}), - data: {'testOnly': true}, - success: options.success, - error: options.error - }); - }, - - /** - * Deletes the storage - * - * @param {Function} [options.success] success callback - * @param {Function} [options.error] error callback - */ - destroy: function(options) { - if (!_.isNumber(this.id)) { - // the storage hasn't even been created => success - if (_.isFunction(options.success)) { - options.success(); - } - return; - } - $.ajax({ - type: 'DELETE', - url: OC.generateUrl(this._url + '/{id}', {id: this.id}), - success: options.success, - error: options.error - }); - }, - - /** - * Validate this model - * - * @return {boolean} false if errors exist, true otherwise - */ - validate: function() { - if (this.mountPoint === '') { - return false; - } - if (!this.backend) { - return false; - } - if (this.errors) { - return false; - } - return true; - } -}; - -/** - * @class OCA.Files_External.Settings.GlobalStorageConfig - * @augments OCA.Files_External.Settings.StorageConfig - * - * @classdesc Global external storage config - */ -var GlobalStorageConfig = function(id) { - this.id = id; - this.applicableUsers = []; - this.applicableGroups = []; -}; -/** - * @memberOf OCA.Files_External.Settings - */ -GlobalStorageConfig.prototype = _.extend({}, StorageConfig.prototype, - /** @lends OCA.Files_External.Settings.GlobalStorageConfig.prototype */ { - _url: 'apps/files_external/globalstorages', - - /** - * Applicable users - * - * @type Array.<string> - */ - applicableUsers: null, - - /** - * Applicable groups - * - * @type Array.<string> - */ - applicableGroups: null, - - /** - * Storage priority - * - * @type int - */ - priority: null, - - /** - * Returns the data from this object - * - * @return {Array} JSON array of the data - */ - getData: function() { - var data = StorageConfig.prototype.getData.apply(this, arguments); - return _.extend(data, { - applicableUsers: this.applicableUsers, - applicableGroups: this.applicableGroups, - priority: this.priority, - }); - } -}); - -/** - * @class OCA.Files_External.Settings.UserStorageConfig - * @augments OCA.Files_External.Settings.StorageConfig - * - * @classdesc User external storage config - */ -var UserStorageConfig = function(id) { - this.id = id; -}; -UserStorageConfig.prototype = _.extend({}, StorageConfig.prototype, - /** @lends OCA.Files_External.Settings.UserStorageConfig.prototype */ { - _url: 'apps/files_external/userstorages' -}); - -/** - * @class OCA.Files_External.Settings.UserGlobalStorageConfig - * @augments OCA.Files_External.Settings.StorageConfig - * - * @classdesc User external storage config - */ -var UserGlobalStorageConfig = function (id) { - this.id = id; -}; -UserGlobalStorageConfig.prototype = _.extend({}, StorageConfig.prototype, - /** @lends OCA.Files_External.Settings.UserStorageConfig.prototype */ { - - _url: 'apps/files_external/userglobalstorages' -}); - -/** - * @class OCA.Files_External.Settings.MountOptionsDropdown - * - * @classdesc Dropdown for mount options - * - * @param {Object} $container container DOM object - */ -var MountOptionsDropdown = function() { -}; -/** - * @memberof OCA.Files_External.Settings - */ -MountOptionsDropdown.prototype = { - /** - * Dropdown element - * - * @var Object - */ - $el: null, - - /** - * Show dropdown - * - * @param {Object} $container container - * @param {Object} mountOptions mount options - * @param {Array} visibleOptions enabled mount options - */ - show: function($container, mountOptions, visibleOptions) { - if (MountOptionsDropdown._last) { - MountOptionsDropdown._last.hide(); - } - - var $el = $(OCA.Files_External.Templates.mountOptionsDropDown({ - mountOptionsEncodingLabel: t('files_external', 'Compatibility with Mac NFD encoding (slow)'), - mountOptionsEncryptLabel: t('files_external', 'Enable encryption'), - mountOptionsPreviewsLabel: t('files_external', 'Enable previews'), - mountOptionsSharingLabel: t('files_external', 'Enable sharing'), - mountOptionsFilesystemCheckLabel: t('files_external', 'Check for changes'), - mountOptionsFilesystemCheckOnce: t('files_external', 'Never'), - mountOptionsFilesystemCheckDA: t('files_external', 'Once every direct access'), - mountOptionsReadOnlyLabel: t('files_external', 'Read only'), - deleteLabel: t('files_external', 'Disconnect') - })); - this.$el = $el; - - var storage = $container[0].parentNode.className; - - this.setOptions(mountOptions, visibleOptions, storage); - - this.$el.appendTo($container); - MountOptionsDropdown._last = this; - - this.$el.trigger('show'); - }, - - hide: function() { - if (this.$el) { - this.$el.trigger('hide'); - this.$el.remove(); - this.$el = null; - MountOptionsDropdown._last = null; - } - }, - - /** - * Returns the mount options from the dropdown controls - * - * @return {Object} options mount options - */ - getOptions: function() { - var options = {}; - - this.$el.find('input, select').each(function() { - var $this = $(this); - var key = $this.attr('name'); - var value = null; - if ($this.attr('type') === 'checkbox') { - value = $this.prop('checked'); - } else { - value = $this.val(); - } - if ($this.attr('data-type') === 'int') { - value = parseInt(value, 10); - } - options[key] = value; - }); - return options; - }, - - /** - * Sets the mount options to the dropdown controls - * - * @param {Object} options mount options - * @param {Array} visibleOptions enabled mount options - */ - setOptions: function(options, visibleOptions, storage) { - if (storage === 'owncloud') { - var ind = visibleOptions.indexOf('encrypt'); - if (ind > 0) { - visibleOptions.splice(ind, 1); - } - } - var $el = this.$el; - _.each(options, function(value, key) { - var $optionEl = $el.find('input, select').filterAttr('name', key); - if ($optionEl.attr('type') === 'checkbox') { - if (_.isString(value)) { - value = (value === 'true'); - } - $optionEl.prop('checked', !!value); - } else { - $optionEl.val(value); - } - }); - $el.find('.optionRow').each(function(i, row){ - var $row = $(row); - var optionId = $row.find('input, select').attr('name'); - if (visibleOptions.indexOf(optionId) === -1 && !$row.hasClass('persistent')) { - $row.hide(); - } else { - $row.show(); - } - }); - } -}; - -/** - * @class OCA.Files_External.Settings.MountConfigListView - * - * @classdesc Mount configuration list view - * - * @param {Object} $el DOM object containing the list - * @param {Object} [options] - * @param {number} [options.userListLimit] page size in applicable users dropdown - */ -var MountConfigListView = function($el, options) { - this.initialize($el, options); -}; - -MountConfigListView.ParameterFlags = { - OPTIONAL: 1, - USER_PROVIDED: 2 -}; - -MountConfigListView.ParameterTypes = { - TEXT: 0, - BOOLEAN: 1, - PASSWORD: 2, - HIDDEN: 3 -}; - -/** - * @memberOf OCA.Files_External.Settings - */ -MountConfigListView.prototype = _.extend({ - - /** - * jQuery element containing the config list - * - * @type Object - */ - $el: null, - - /** - * Storage config class - * - * @type Class - */ - _storageConfigClass: null, - - /** - * Flag whether the list is about user storage configs (true) - * or global storage configs (false) - * - * @type bool - */ - _isPersonal: false, - - /** - * Page size in applicable users dropdown - * - * @type int - */ - _userListLimit: 30, - - /** - * List of supported backends - * - * @type Object.<string,Object> - */ - _allBackends: null, - - /** - * List of all supported authentication mechanisms - * - * @type Object.<string,Object> - */ - _allAuthMechanisms: null, - - _encryptionEnabled: false, - - /** - * @param {Object} $el DOM object containing the list - * @param {Object} [options] - * @param {number} [options.userListLimit] page size in applicable users dropdown - */ - initialize: function($el, options) { - var self = this; - this.$el = $el; - this._isPersonal = ($el.data('admin') !== true); - if (this._isPersonal) { - this._storageConfigClass = OCA.Files_External.Settings.UserStorageConfig; - } else { - this._storageConfigClass = OCA.Files_External.Settings.GlobalStorageConfig; - } - - if (options && !_.isUndefined(options.userListLimit)) { - this._userListLimit = options.userListLimit; - } - - this._encryptionEnabled = options.encryptionEnabled; - this._canCreateLocal = options.canCreateLocal; - - // read the backend config that was carefully crammed - // into the data-configurations attribute of the select - this._allBackends = this.$el.find('.selectBackend').data('configurations'); - this._allAuthMechanisms = this.$el.find('#addMountPoint .authentication').data('mechanisms'); - - this._initEvents(); - }, - - /** - * Custom JS event handlers - * Trigger callback for all existing configurations - */ - whenSelectBackend: function(callback) { - this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) { - var backend = $(tr).find('.backend').data('identifier'); - callback($(tr), backend); - }); - this.on('selectBackend', callback); - }, - whenSelectAuthMechanism: function(callback) { - var self = this; - this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) { - var authMechanism = $(tr).find('.selectAuthMechanism').val(); - callback($(tr), authMechanism, self._allAuthMechanisms[authMechanism]['scheme']); - }); - this.on('selectAuthMechanism', callback); - }, - - /** - * Initialize DOM event handlers - */ - _initEvents: function() { - var self = this; - - var onChangeHandler = _.bind(this._onChange, this); - //this.$el.on('input', 'td input', onChangeHandler); - this.$el.on('keyup', 'td input', onChangeHandler); - this.$el.on('paste', 'td input', onChangeHandler); - this.$el.on('change', 'td input:checkbox', onChangeHandler); - this.$el.on('change', '.applicable', onChangeHandler); - - this.$el.on('click', '.status>span', function() { - self.recheckStorageConfig($(this).closest('tr')); - }); - - this.$el.on('click', 'td.mountOptionsToggle .icon-delete', function() { - self.deleteStorageConfig($(this).closest('tr')); - }); - - this.$el.on('click', 'td.save>.icon-checkmark', function () { - self.saveStorageConfig($(this).closest('tr')); - }); - - this.$el.on('click', 'td.mountOptionsToggle>.icon-more', function() { - $(this).attr('aria-expanded', 'true'); - self._showMountOptionsDropdown($(this).closest('tr')); - }); - - this.$el.on('change', '.selectBackend', _.bind(this._onSelectBackend, this)); - this.$el.on('change', '.selectAuthMechanism', _.bind(this._onSelectAuthMechanism, this)); - - this.$el.on('change', '.applicableToAllUsers', _.bind(this._onChangeApplicableToAllUsers, this)); - }, - - _onChange: function(event) { - var self = this; - var $target = $(event.target); - if ($target.closest('.dropdown').length) { - // ignore dropdown events - return; - } - highlightInput($target); - var $tr = $target.closest('tr'); - this.updateStatus($tr, null); - }, - - _onSelectBackend: function(event) { - var $target = $(event.target); - var $tr = $target.closest('tr'); - - var storageConfig = new this._storageConfigClass(); - storageConfig.mountPoint = $tr.find('.mountPoint input').val(); - storageConfig.backend = $target.val(); - $tr.find('.mountPoint input').val(''); - - var onCompletion = jQuery.Deferred(); - $tr = this.newStorage(storageConfig, onCompletion); - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - onCompletion.resolve(); - - $tr.find('td.configuration').children().not('[type=hidden]').first().focus(); - this.saveStorageConfig($tr); - }, - - _onSelectAuthMechanism: function(event) { - var $target = $(event.target); - var $tr = $target.closest('tr'); - var authMechanism = $target.val(); - - var onCompletion = jQuery.Deferred(); - this.configureAuthMechanism($tr, authMechanism, onCompletion); - onCompletion.resolve(); - - this.saveStorageConfig($tr); - }, - - _onChangeApplicableToAllUsers: function(event) { - var $target = $(event.target); - var $tr = $target.closest('tr'); - var checked = $target.is(':checked'); - - $tr.find('.applicableUsersContainer').toggleClass('hidden', checked); - if (!checked) { - $tr.find('.applicableUsers').select2('val', '', true); - } - - this.saveStorageConfig($tr); - }, - - /** - * Configure the storage config with a new authentication mechanism - * - * @param {jQuery} $tr config row - * @param {string} authMechanism - * @param {jQuery.Deferred} onCompletion - */ - configureAuthMechanism: function($tr, authMechanism, onCompletion) { - var authMechanismConfiguration = this._allAuthMechanisms[authMechanism]; - var $td = $tr.find('td.configuration'); - $td.find('.auth-param').remove(); - - $.each(authMechanismConfiguration['configuration'], _.partial( - this.writeParameterInput, $td, _, _, ['auth-param'] - ).bind(this)); - - this.trigger('selectAuthMechanism', - $tr, authMechanism, authMechanismConfiguration['scheme'], onCompletion - ); - }, - - /** - * Create a config row for a new storage - * - * @param {StorageConfig} storageConfig storage config to pull values from - * @param {jQuery.Deferred} onCompletion - * @param {boolean} deferAppend - * @return {jQuery} created row - */ - newStorage: function(storageConfig, onCompletion, deferAppend) { - var mountPoint = storageConfig.mountPoint; - var backend = this._allBackends[storageConfig.backend]; - - if (!backend) { - backend = { - name: 'Unknown: ' + storageConfig.backend, - invalid: true - }; - } - - // FIXME: Replace with a proper Handlebar template - var $template = this.$el.find('tr#addMountPoint'); - var $tr = $template.clone(); - if (!deferAppend) { - $tr.insertBefore($template); - } - - $tr.data('storageConfig', storageConfig); - $tr.show(); - $tr.find('td.mountOptionsToggle, td.save, td.remove').removeClass('hidden'); - $tr.find('td').last().removeAttr('style'); - $tr.removeAttr('id'); - $tr.find('select#selectBackend'); - if (!deferAppend) { - initApplicableUsersMultiselect($tr.find('.applicableUsers'), this._userListLimit); - } - - if (storageConfig.id) { - $tr.data('id', storageConfig.id); - } - - $tr.find('.backend').text(backend.name); - if (mountPoint === '') { - mountPoint = this._suggestMountPoint(backend.name); - } - $tr.find('.mountPoint input').val(mountPoint); - $tr.addClass(backend.identifier); - $tr.find('.backend').data('identifier', backend.identifier); - - if (backend.invalid || (backend.identifier === 'local' && !this._canCreateLocal)) { - $tr.find('[name=mountPoint]').prop('disabled', true); - $tr.find('.applicable,.mountOptionsToggle').empty(); - $tr.find('.save').empty(); - if (backend.invalid) { - this.updateStatus($tr, false, 'Unknown backend: ' + backend.name); - } - return $tr; - } - - var selectAuthMechanism = $('<select class="selectAuthMechanism"></select>'); - var neededVisibility = (this._isPersonal) ? StorageConfig.Visibility.PERSONAL : StorageConfig.Visibility.ADMIN; - $.each(this._allAuthMechanisms, function(authIdentifier, authMechanism) { - if (backend.authSchemes[authMechanism.scheme] && (authMechanism.visibility & neededVisibility)) { - selectAuthMechanism.append( - $('<option value="'+authMechanism.identifier+'" data-scheme="'+authMechanism.scheme+'">'+authMechanism.name+'</option>') - ); - } - }); - if (storageConfig.authMechanism) { - selectAuthMechanism.val(storageConfig.authMechanism); - } else { - storageConfig.authMechanism = selectAuthMechanism.val(); - } - $tr.find('td.authentication').append(selectAuthMechanism); - - var $td = $tr.find('td.configuration'); - $.each(backend.configuration, _.partial(this.writeParameterInput, $td).bind(this)); - - this.trigger('selectBackend', $tr, backend.identifier, onCompletion); - this.configureAuthMechanism($tr, storageConfig.authMechanism, onCompletion); - - if (storageConfig.backendOptions) { - $td.find('input, select').each(function() { - var input = $(this); - var val = storageConfig.backendOptions[input.data('parameter')]; - if (val !== undefined) { - if(input.is('input:checkbox')) { - input.prop('checked', val); - } - input.val(storageConfig.backendOptions[input.data('parameter')]); - highlightInput(input); - } - }); - } - - var applicable = []; - if (storageConfig.applicableUsers) { - applicable = applicable.concat(storageConfig.applicableUsers); - } - if (storageConfig.applicableGroups) { - applicable = applicable.concat( - _.map(storageConfig.applicableGroups, function(group) { - return group+'(group)'; - }) - ); - } - if (applicable.length) { - $tr.find('.applicableUsers').val(applicable).trigger('change') - $tr.find('.applicableUsersContainer').removeClass('hidden'); - } else { - // applicable to all - $tr.find('.applicableUsersContainer').addClass('hidden'); - } - $tr.find('.applicableToAllUsers').prop('checked', !applicable.length); - - var priorityEl = $('<input type="hidden" class="priority" value="' + backend.priority + '" />'); - $tr.append(priorityEl); - - if (storageConfig.mountOptions) { - $tr.find('input.mountOptions').val(JSON.stringify(storageConfig.mountOptions)); - } else { - // FIXME default backend mount options - $tr.find('input.mountOptions').val(JSON.stringify({ - 'encrypt': true, - 'previews': true, - 'enable_sharing': false, - 'filesystem_check_changes': 1, - 'encoding_compatibility': false, - 'readonly': false, - })); - } - - return $tr; - }, - - /** - * Load storages into config rows - */ - loadStorages: function() { - var self = this; - - var onLoaded1 = $.Deferred(); - var onLoaded2 = $.Deferred(); - - this.$el.find('.externalStorageLoading').removeClass('hidden'); - $.when(onLoaded1, onLoaded2).always(() => { - self.$el.find('.externalStorageLoading').addClass('hidden'); - }) - - if (this._isPersonal) { - // load userglobal storages - $.ajax({ - type: 'GET', - url: OC.generateUrl('apps/files_external/userglobalstorages'), - data: {'testOnly' : true}, - contentType: 'application/json', - success: function(result) { - var onCompletion = jQuery.Deferred(); - var $rows = $(); - Object.values(result).forEach(function(storageParams) { - var storageConfig; - var isUserGlobal = storageParams.type === 'system' && self._isPersonal; - storageParams.mountPoint = storageParams.mountPoint.substr(1); // trim leading slash - if (isUserGlobal) { - storageConfig = new UserGlobalStorageConfig(); - } else { - storageConfig = new self._storageConfigClass(); - } - _.extend(storageConfig, storageParams); - var $tr = self.newStorage(storageConfig, onCompletion,true); - - // userglobal storages must be at the top of the list - $tr.detach(); - self.$el.prepend($tr); - - var $authentication = $tr.find('.authentication'); - $authentication.text($authentication.find('select option:selected').text()); - - // disable any other inputs - $tr.find('.mountOptionsToggle, .remove').empty(); - $tr.find('input:not(.user_provided), select:not(.user_provided)').attr('disabled', 'disabled'); - - if (isUserGlobal) { - $tr.find('.configuration').find(':not(.user_provided)').remove(); - } else { - // userglobal storages do not expose configuration data - $tr.find('.configuration').text(t('files_external', 'Admin defined')); - } - $rows = $rows.add($tr); - }); - initApplicableUsersMultiselect(self.$el.find('.applicableUsers'), this._userListLimit); - self.$el.find('tr#addMountPoint').before($rows); - var mainForm = $('#files_external'); - if (result.length === 0 && mainForm.attr('data-can-create') === 'false') { - mainForm.hide(); - $('a[href="#external-storage"]').parent().hide(); - $('.emptycontent').show(); - } - onCompletion.resolve(); - onLoaded1.resolve(); - } - }); - } else { - onLoaded1.resolve(); - } - - var url = this._storageConfigClass.prototype._url; - - $.ajax({ - type: 'GET', - url: OC.generateUrl(url), - contentType: 'application/json', - success: function(result) { - result = Object.values(result); - var onCompletion = jQuery.Deferred(); - var $rows = $(); - result.forEach(function(storageParams) { - storageParams.mountPoint = (storageParams.mountPoint === '/')? '/' : storageParams.mountPoint.substr(1); // trim leading slash - var storageConfig = new self._storageConfigClass(); - _.extend(storageConfig, storageParams); - var $tr = self.newStorage(storageConfig, onCompletion, true); - - // don't recheck config automatically when there are a large number of storages - if (result.length < 20) { - self.recheckStorageConfig($tr); - } else { - self.updateStatus($tr, StorageConfig.Status.INDETERMINATE, t('files_external', 'Automatic status checking is disabled due to the large number of configured storages, click to check status')); - } - $rows = $rows.add($tr); - }); - initApplicableUsersMultiselect($rows.find('.applicableUsers'), this._userListLimit); - self.$el.find('tr#addMountPoint').before($rows); - onCompletion.resolve(); - onLoaded2.resolve(); - } - }); - }, - - /** - * @param {jQuery} $td - * @param {string} parameter - * @param {string} placeholder - * @param {Array} classes - * @return {jQuery} newly created input - */ - writeParameterInput: function($td, parameter, placeholder, classes) { - var hasFlag = function(flag) { - return (placeholder.flags & flag) === flag; - }; - classes = $.isArray(classes) ? classes : []; - classes.push('added'); - if (hasFlag(MountConfigListView.ParameterFlags.OPTIONAL)) { - classes.push('optional'); - } - - if (hasFlag(MountConfigListView.ParameterFlags.USER_PROVIDED)) { - if (this._isPersonal) { - classes.push('user_provided'); - } else { - return; - } - } - - var newElement; - - var trimmedPlaceholder = placeholder.value; - if (placeholder.type === MountConfigListView.ParameterTypes.PASSWORD) { - newElement = $('<input type="password" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />'); - } else if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { - var checkboxId = _.uniqueId('checkbox_'); - newElement = $('<div><label><input type="checkbox" id="'+checkboxId+'" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />'+ trimmedPlaceholder+'</label></div>'); - } else if (placeholder.type === MountConfigListView.ParameterTypes.HIDDEN) { - newElement = $('<input type="hidden" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />'); - } else { - newElement = $('<input type="text" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />'); - } - - if (placeholder.defaultValue) { - if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { - newElement.find('input').prop('checked', placeholder.defaultValue); - } else { - newElement.val(placeholder.defaultValue); - } - } - - if (placeholder.tooltip) { - newElement.attr('title', placeholder.tooltip); - } - - highlightInput(newElement); - $td.append(newElement); - return newElement; - }, - - /** - * Gets the storage model from the given row - * - * @param $tr row element - * @return {OCA.Files_External.StorageConfig} storage model instance - */ - getStorageConfig: function($tr) { - var storageId = $tr.data('id'); - if (!storageId) { - // new entry - storageId = null; - } - - var storage = $tr.data('storageConfig'); - if (!storage) { - storage = new this._storageConfigClass(storageId); - } - storage.errors = null; - storage.mountPoint = $tr.find('.mountPoint input').val(); - storage.backend = $tr.find('.backend').data('identifier'); - storage.authMechanism = $tr.find('.selectAuthMechanism').val(); - - var classOptions = {}; - var configuration = $tr.find('.configuration input'); - var missingOptions = []; - $.each(configuration, function(index, input) { - var $input = $(input); - var parameter = $input.data('parameter'); - if ($input.attr('type') === 'button') { - return; - } - if (!isInputValid($input) && !$input.hasClass('optional')) { - missingOptions.push(parameter); - return; - } - if ($(input).is(':checkbox')) { - if ($(input).is(':checked')) { - classOptions[parameter] = true; - } else { - classOptions[parameter] = false; - } - } else { - classOptions[parameter] = $(input).val(); - } - }); - - storage.backendOptions = classOptions; - if (missingOptions.length) { - storage.errors = { - backendOptions: missingOptions - }; - } - - // gather selected users and groups - if (!this._isPersonal) { - var multiselect = getSelectedApplicable($tr); - var users = multiselect.users || []; - var groups = multiselect.groups || []; - var isApplicableToAllUsers = $tr.find('.applicableToAllUsers').is(':checked'); - - if (isApplicableToAllUsers) { - storage.applicableUsers = []; - storage.applicableGroups = []; - } else { - storage.applicableUsers = users; - storage.applicableGroups = groups; - - if (!storage.applicableUsers.length && !storage.applicableGroups.length) { - if (!storage.errors) { - storage.errors = {}; - } - storage.errors['requiredApplicable'] = true; - } - } - - storage.priority = parseInt($tr.find('input.priority').val() || '100', 10); - } - - var mountOptions = $tr.find('input.mountOptions').val(); - if (mountOptions) { - storage.mountOptions = JSON.parse(mountOptions); - } - - return storage; - }, - - /** - * Deletes the storage from the given tr - * - * @param $tr storage row - * @param Function callback callback to call after save - */ - deleteStorageConfig: function($tr) { - var self = this; - var configId = $tr.data('id'); - if (!_.isNumber(configId)) { - // deleting unsaved storage - $tr.remove(); - return; - } - var storage = new this._storageConfigClass(configId); - - OC.dialogs.confirm(t('files_external', 'Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.', { - storage: this.mountPoint - }), t('files_external', 'Delete storage?'), function(confirm) { - if (confirm) { - self.updateStatus($tr, StorageConfig.Status.IN_PROGRESS); - - storage.destroy({ - success: function () { - $tr.remove(); - }, - error: function () { - self.updateStatus($tr, StorageConfig.Status.ERROR); - } - }); - } - }); - }, - - /** - * Saves the storage from the given tr - * - * @param $tr storage row - * @param Function callback callback to call after save - * @param concurrentTimer only update if the timer matches this - */ - saveStorageConfig:function($tr, callback, concurrentTimer) { - var self = this; - var storage = this.getStorageConfig($tr); - if (!storage || !storage.validate()) { - return false; - } - - this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS); - storage.save({ - success: function(result) { - if (concurrentTimer === undefined - || $tr.data('save-timer') === concurrentTimer - ) { - self.updateStatus($tr, result.status); - $tr.data('id', result.id); - - if (_.isFunction(callback)) { - callback(storage); - } - } - }, - error: function() { - if (concurrentTimer === undefined - || $tr.data('save-timer') === concurrentTimer - ) { - self.updateStatus($tr, StorageConfig.Status.ERROR); - } - } - }); - }, - - /** - * Recheck storage availability - * - * @param {jQuery} $tr storage row - * @return {boolean} success - */ - recheckStorageConfig: function($tr) { - var self = this; - var storage = this.getStorageConfig($tr); - if (!storage.validate()) { - return false; - } - - this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS); - storage.recheck({ - success: function(result) { - self.updateStatus($tr, result.status, result.statusMessage); - }, - error: function() { - self.updateStatus($tr, StorageConfig.Status.ERROR); - } - }); - }, - - /** - * Update status display - * - * @param {jQuery} $tr - * @param {number} status - * @param {string} message - */ - updateStatus: function($tr, status, message) { - var $statusSpan = $tr.find('.status span'); - switch (status) { - case null: - // remove status - break; - case StorageConfig.Status.IN_PROGRESS: - $statusSpan.attr('class', 'icon-loading-small'); - break; - case StorageConfig.Status.SUCCESS: - $statusSpan.attr('class', 'success icon-checkmark-white'); - break; - case StorageConfig.Status.INDETERMINATE: - $statusSpan.attr('class', 'indeterminate icon-info-white'); - break; - default: - $statusSpan.attr('class', 'error icon-error-white'); - } - if (typeof message === 'string') { - $statusSpan.attr('title', message); - } - }, - - /** - * Suggest mount point name that doesn't conflict with the existing names in the list - * - * @param {string} defaultMountPoint default name - */ - _suggestMountPoint: function(defaultMountPoint) { - var $el = this.$el; - var pos = defaultMountPoint.indexOf('/'); - if (pos !== -1) { - defaultMountPoint = defaultMountPoint.substring(0, pos); - } - defaultMountPoint = defaultMountPoint.replace(/\s+/g, ''); - var i = 1; - var append = ''; - var match = true; - while (match && i < 20) { - match = false; - $el.find('tbody td.mountPoint input').each(function(index, mountPoint) { - if ($(mountPoint).val() === defaultMountPoint+append) { - match = true; - return false; - } - }); - if (match) { - append = i; - i++; - } else { - break; - } - } - return defaultMountPoint + append; - }, - - /** - * Toggles the mount options dropdown - * - * @param {Object} $tr configuration row - */ - _showMountOptionsDropdown: function($tr) { - var self = this; - var storage = this.getStorageConfig($tr); - var $toggle = $tr.find('.mountOptionsToggle'); - var dropDown = new MountOptionsDropdown(); - var visibleOptions = [ - 'previews', - 'filesystem_check_changes', - 'enable_sharing', - 'encoding_compatibility', - 'readonly', - 'delete' - ]; - if (this._encryptionEnabled) { - visibleOptions.push('encrypt'); - } - dropDown.show($toggle, storage.mountOptions || [], visibleOptions); - $('body').on('mouseup.mountOptionsDropdown', function(event) { - var $target = $(event.target); - if ($target.closest('.popovermenu').length) { - return; - } - dropDown.hide(); - }); - - dropDown.$el.on('hide', function() { - var mountOptions = dropDown.getOptions(); - $('body').off('mouseup.mountOptionsDropdown'); - $tr.find('input.mountOptions').val(JSON.stringify(mountOptions)); - $tr.find('td.mountOptionsToggle>.icon-more').attr('aria-expanded', 'false'); - self.saveStorageConfig($tr); - }); - } -}, OC.Backbone.Events); - -window.addEventListener('DOMContentLoaded', function() { - var enabled = $('#files_external').attr('data-encryption-enabled'); - var canCreateLocal = $('#files_external').attr('data-can-create-local'); - var encryptionEnabled = (enabled ==='true')? true: false; - var mountConfigListView = new MountConfigListView($('#externalStorage'), { - encryptionEnabled: encryptionEnabled, - canCreateLocal: (canCreateLocal === 'true') ? true: false, - }); - mountConfigListView.loadStorages(); - - // TODO: move this into its own View class - var $allowUserMounting = $('#allowUserMounting'); - $allowUserMounting.bind('change', function() { - OC.msg.startSaving('#userMountingMsg'); - if (this.checked) { - OCP.AppConfig.setValue('files_external', 'allow_user_mounting', 'yes'); - $('input[name="allowUserMountingBackends\\[\\]"]').prop('checked', true); - $('#userMountingBackends').removeClass('hidden'); - $('input[name="allowUserMountingBackends\\[\\]"]').eq(0).trigger('change'); - } else { - OCP.AppConfig.setValue('files_external', 'allow_user_mounting', 'no'); - $('#userMountingBackends').addClass('hidden'); - } - OC.msg.finishedSaving('#userMountingMsg', {status: 'success', data: {message: t('files_external', 'Saved')}}); - }); - - $('input[name="allowUserMountingBackends\\[\\]"]').bind('change', function() { - OC.msg.startSaving('#userMountingMsg'); - - var userMountingBackends = $('input[name="allowUserMountingBackends\\[\\]"]:checked').map(function(){ - return $(this).val(); - }).get(); - var deprecatedBackends = $('input[name="allowUserMountingBackends\\[\\]"][data-deprecate-to]').map(function(){ - if ($.inArray($(this).data('deprecate-to'), userMountingBackends) !== -1) { - return $(this).val(); - } - return null; - }).get(); - userMountingBackends = userMountingBackends.concat(deprecatedBackends); - - OCP.AppConfig.setValue('files_external', 'user_mounting_backends', userMountingBackends.join()); - OC.msg.finishedSaving('#userMountingMsg', {status: 'success', data: {message: t('files_external', 'Saved')}}); - - // disable allowUserMounting - if(userMountingBackends.length === 0) { - $allowUserMounting.prop('checked', false); - $allowUserMounting.trigger('change'); - - } - }); - - $('#global_credentials').on('submit', function() { - var $form = $(this); - var uid = $form.find('[name=uid]').val(); - var user = $form.find('[name=username]').val(); - var password = $form.find('[name=password]').val(); - var $submit = $form.find('[type=submit]'); - $submit.val(t('files_external', 'Saving …')); - $.ajax({ - type: 'POST', - contentType: 'application/json', - data: JSON.stringify({ - uid: uid, - user: user, - password: password - }), - url: OC.generateUrl('apps/files_external/globalcredentials'), - dataType: 'json', - success: function() { - $submit.val(t('files_external', 'Saved')); - setTimeout(function(){ - $submit.val(t('files_external', 'Save')); - }, 2500); - } - }); - return false; - }); - - // global instance - OCA.Files_External.Settings.mountConfig = mountConfigListView; - - /** - * Legacy - * - * @namespace - * @deprecated use OCA.Files_External.Settings.mountConfig instead - */ - OC.MountConfig = { - saveStorage: _.bind(mountConfigListView.saveStorageConfig, mountConfigListView) - }; -}); - -// export - -OCA.Files_External = OCA.Files_External || {}; -/** - * @namespace - */ -OCA.Files_External.Settings = OCA.Files_External.Settings || {}; - -OCA.Files_External.Settings.GlobalStorageConfig = GlobalStorageConfig; -OCA.Files_External.Settings.UserStorageConfig = UserStorageConfig; -OCA.Files_External.Settings.MountConfigListView = MountConfigListView; - -})(); diff --git a/apps/files_external/l10n/ar.js b/apps/files_external/l10n/ar.js index 84506455c82..893b19f791e 100644 --- a/apps/files_external/l10n/ar.js +++ b/apps/files_external/l10n/ar.js @@ -2,33 +2,15 @@ OC.L10N.register( "files_external", { "Grant access" : "منح إذن بالنفاذ", - "Error configuring OAuth1" : "خطأ في تكوين OAuth1", - "Please provide a valid app key and secret." : "يرجى توفير مفتاح للتطبيق وكلمة سر صالحين.", "Error configuring OAuth2" : "خطأ في تكوين OAuth2", "Generate keys" : "توليد المفاتيح", "Error generating key pair" : "خطأ في توليد زوج المفاتيح", - "Type to select account or group." : "أكتُب لاختيار حساب أو مجموعة.", - "(Group)" : "(مجموعة)", - "Compatibility with Mac NFD encoding (slow)" : "التوافق مع نظام التشفير Mac NFD (بطيء)", - "Enable encryption" : "تمكين التشفير", - "Enable previews" : "تمكين المعاينة", - "Enable sharing" : "تمكين المشاركة", - "Check for changes" : "التحقّق من وجود تغييرات", - "Never" : "إطلاقاً", - "Once every direct access" : "مرة واحدة لكل وصول مباشر", - "Read only" : "للقراءة فقط", - "Disconnect" : "قطع الاتصال", - "Admin defined" : "المُشرف تمّ تعريفه", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تمّ تعطيل الفحص التلقائي للحالة بسبب العدد الكبير من المخازن المُكوّنة configured storages. أُنقر للتحقق من الحالة.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "هل أنت متأكد أنك تريد قطع الاتصال بوحدة التخزين الخارجية هذه؟ سيتسبب ذلك في جعل وحدة التخزين هذه غير مُتاحة في نكست كلاود، و سيؤدي إلى منع الوصول إلى هذه الملفات والمجلدات عن أي عميل مزامنة مُتصلٍ حاليّاً، و لكنه لن يحذف أي ملفات أو مجلدات على وحدة التخزين الخارجية نفسها.", - "Delete storage?" : "حذف وحدة التخزين؟", - "Saved" : "حفظ", - "Saving …" : "جاري الحفظ…", - "Save" : "حفظ", + "You are not logged in" : "أنت لم تقم بتسجيل الدخول", + "Permission denied" : "تمّ رفض منح الإذن", "Forbidden to manage local mounts" : "ممنوع من إدارة المُمتطيات المحلّيّة local mounts", "Storage with ID \"%d\" not found" : "تعذّر العثور على وحدة التخزين ذات المُعرِّف \"%d\" ", "Invalid backend or authentication mechanism class" : "فئة آلية المصادقة authentication mechanism class أو الخلفية backend غير صالحة", - "Invalid mount point" : "نقطة امتطاء Mount point غير صالحة", + "Invalid mount point" : "نقطة التثبيت Mount point غير صالحة", "Objectstore forbidden" : "مخزن الكائنات Objectstore ممنوع", "Invalid storage backend \"%s\"" : "الواجهة الخلفية للتخزين Storage Backend غير صالحة \"%s\"", "Not permitted to use backend \"%s\"" : "غير مُخوّل باستخدام الخلفية backend ـ \"%s\"", @@ -37,30 +19,27 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "معاملات آلية المصادقة غير مكتملة", "Insufficient data: %s" : "البيانات غير كافية: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن الكتابة فيها لغير المشرفين", + "Storage with ID \"%d\" is not editable by non-admins" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن الكتابة فيها لمن لا يملك صلاحية مدير", "Access key" : "مفتاح المرور", "Secret key" : "المفتاح السّرّي", "Builtin" : "مُضمّن", "None" : "لا شيء", - "OAuth1" : "OAuth1", - "App key" : "مفتاح التطبيق", - "App secret" : "التطبيق السري", "OAuth2" : "OAuth2", "Client ID" : "مُعرِّف العميل", "Client secret" : "كلمة مرور العميل", "OpenStack v2" : "OpenStack v2", - "Login" : "الدخول", + "Login" : "تسجيل الدخول", "Password" : "كلمة المرور", "Tenant name" : "اسم المستأجر", - "Identity endpoint URL" : "عنوان URL للوحدة الطرفية للهوية Identity endpoint", + "Identity endpoint URL" : "عنوان URL للنقطة النهائية للهوية Identity endpoint", "OpenStack v3" : "OpenStack v3", "Domain" : "النطاق", "Rackspace" : "Rackspace", "API key" : "مفتاح واجهة برمجة التطبيقات API key", - "Global credentials" : "حيثيّات التعريف الشاملة Global credentials", + "Global credentials" : "بيانات تسجيل الدخول الشاملة", "Log-in credentials, save in database" : "حيثيّات الدخول؛ تُحفظ في قاعدة البيانات", "Login and password" : "الدخول و كلمة المرور", - "Log-in credentials, save in session" : "حيثيات الدخول، احفظها في الجلسة", + "Log-in credentials, save in session" : "متطلبات الدخول، احفظها في الجلسة", "Global credentials, manually entered" : "حيثيات الدخول الشاملة، يتم إدخالها يدويّاً", "Manually entered, store in database" : "يتمّ إدخالها يدويّاً، و تٌحفظ في قاعدة بيانات", "RSA public key" : "مفتاح RSA العمومي", @@ -72,7 +51,7 @@ OC.L10N.register( "Kerberos ticket" : "تذكرة \"كيربيروس\" Kerberos ticket", "Amazon S3" : "أمازون S3", "Bucket" : "الحزمة", - "Hostname" : "إسم الإستضافة", + "Hostname" : "اسم الإستضافة", "Port" : "المنفذ", "Region" : "المنطقة", "Storage Class" : "فئة وحدة التخزين", @@ -80,9 +59,10 @@ OC.L10N.register( "Enable Path Style" : "تمكين نمط المسار Path Style", "Legacy (v2) authentication" : "المصادقة القديمة (الإصدار 2) Legacy authentication", "Enable multipart copy" : "تمكين النسخ المُجزّأ", + "SSE-C encryption key" : "مفتاح تشفير SSE-C", "WebDAV" : "WebDAV", "URL" : "عنوان URL", - "Remote subfolder" : "مُجلّد فرعي قصي remote sunfolder", + "Remote subfolder" : "مُجلّد فرعي بعيد remote sunfolder", "Secure https://" : "آمن https://", "FTP" : "FTP", "Host" : "المضيف", @@ -92,82 +72,91 @@ OC.L10N.register( "Nextcloud" : "نيكست كلاود", "SFTP" : "SFTP", "Root" : "الجذر", - "SFTP with secret key login" : "STFP مع الدخول بمفتاح سرّي", + "SFTP with secret key login" : "STFP مع الدخول بمفتاح سري", "SMB/CIFS" : "SMB/CIFS", "Share" : "شارك", "Show hidden files" : "عرض الملفات المخفية", "Case sensitive file system" : "نظام الملفات حساس لحالة الأحرف الصغيرة و الكبيرة", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "تعطيله سوف يسمح باستعمال نظام ملفات غير حساس لحالة الأحرف الصغيرة و الكبيرة، لكن هذا سيترتب عليه تأثير سلبيٌّ في الأداء.", "Verify ACL access when listing files" : "تأكد من قائمة صلاحيات الوصول ACL عند سرد الملفات", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "فحص قائمة التحكم في الوصول ACL لكل ملف و مجلد داخل الدليل لغرض فلترة العناصر و تحديد الحسابات التي لا تملك إذونات للقراءة سيؤثر على سرعة أداء النظام", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "فحص قائمة التحكم في الوصول ACL لكل ملف و مجلد داخل الدليل لغرض تصفية العناصر و تحديد الحسابات التي لا تملك إذونات للقراءة سيؤثر على سرعة أداء النظام", "Timeout" : "إنتَهَى الوقت", "SMB/CIFS using OC login" : "SMB/CIFS باستعمال دخول نكست كلاود", "Login as share" : "تسجيل الدخول كمشاركة", "OpenStack Object Storage" : "كائنات التخزين لـ OpenStack", "Service name" : "اسم الخدمة", "Request timeout (seconds)" : "مُهلة تنفيذ الطلب (بالثواني)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم cURL في PHP. لذا، سيتعذّر امتطاء mounting ـ %s. رجاءً، أطلب من مشرفك تنصيبها.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم FTP في PH. لذا، سيتعذّر امتطاء mounting ـ %s . رجاءً، أطلب من مشرفك تنصيبها.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" لم يتمّ تنصيبها. لذا، سيتعذّر امتطاء mounting ـ %2$s. رجاءً، أطلب من مشرفك تنصيبها.", - "External storage" : "تخزين خارجي", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم cURL في PHP. لذا، سيتعذّر التثبيت mounting ـ %s. رجاءً، أطلب من مسؤول النظام تنصيبها.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم FTP في PH. لذا، سيتعذّر التثبيت mounting ـ %s . رجاءً، أطلب من مسؤول النظام تنصيبها.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" لم يتمّ تنصيبها. لذا، سيتعذّر التثبيت mounting ـ %2$s. رجاءً، أطلب من مسؤول النظام تنصيبها.", + "External storage" : "التخزين الخارجي", "External storage support" : "دعم التخزين الخارجي", "Adds basic external storage support" : "يُضيف دعماً أساسيّاً للتخزين الخارجي", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق المشرفين من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن للمشرفين اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات الامتطاء. \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", - "Enter missing credentials" : "أدخِل حيثيات الدخول الناقصة", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق مسؤول النظام من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن لمسؤول النظام اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات التثبيت . \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", + "Confirm" : "تأكيد", + "Storage credentials" : "بيانات تسجيل الدخول لوحدة التخزين", + "To access the storage, you need to provide the authentication credentials." : "للوصول إلى وحدة التخزين، تحتاج إلى إبراز حيثيات المصادقة الخاص بك.", + "Enter the storage login" : "التسجيل للدخول إلى وحدة التخزين", + "Enter the storage password" : "أدخِل كلمة المرور لوحدة التخزين", "Unable to update this external storage config. {statusMessage}" : "تعذّر تحديث تهيئة وحدة التخزين الخارجية هذه. {statusMessage}", "New configuration successfully saved" : "تمّ حفظ التهيئة الجديدة بنجاحٍ", + "Enter missing credentials" : "أدخِل حيثيات الدخول الناقصة", + "Credentials successfully set" : "تم تعيين حيثيّات الدخول بنجاحٍ", + "Error while setting credentials: {error}" : "حدث خطأ أثناء تعيين حيثيّات الدخول: {error}", + "Checking storage …" : "فحص التخزين ...", "There was an error with this external storage." : "هنالك خطأ في وحدة التخزين الخارجية هذه.", "We were unable to check the external storage {basename}" : "لم نستطع التحقق من وحدة التخزين الخارجية {basename}", "Examine this faulty external storage configuration" : "إفحَص التهيئة الخاطئة لوحدة التخزين الخارجية هذه", "Open in Files" : "إفتَح في \"الملفات\"", - "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "هنالك خطأ في وحدة التخزين الخارجية هذه. هل ترغب في مراجعة تهيئة نقطة الامتطاء mount point هذه في صفحة الإعدادات؟", - "External mount error" : "خطأ في الامتطاء الخارجي external mount", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "هنالك خطأ في وحدة التخزين الخارجية هذه. هل ترغب في مراجعة تهيئة نقطة التثبيت mount point هذه في صفحة الإعدادات؟", + "External mount error" : "خطأ في تثبيت التخزين الخارجي external mount", "List of external storage." : "قائمة التخزين الخارجي.", "There is no external storage configured. You can configure them in your Personal settings." : "لا توجد أي وحدة تخزين خارجية مهيأة. يمكنك تهيئتها في إعداداتك الشخصية.", - "There is no external storage configured and you don't have the permission to configure them." : "لا توجد أي وحدة تخزين خارجية مهيأة، و أنت لا تملك الحق في تهيئتها.", + "There is no external storage configured and you don't have the permission to configure them." : "لا توجد أي وحدة تخزين خارجية مهيأة، كما أنك لا تملك الصلاحية لتهيئتها.", "No external storage" : "لا توجد وحدات تخزين خارجية", "Storage type" : "نوع التخزين", "Unknown" : "غير معروف", "Scope" : "النطاق", "Personal" : "شخصي", "System" : "النظام", + "Type to select account or group." : "أكتُب لاختيار حساب أو مجموعة.", + "(Group)" : "(مجموعة)", + "Compatibility with Mac NFD encoding (slow)" : "التوافق مع نظام التشفير Mac NFD (بطيء)", + "Enable encryption" : "تمكين التشفير", + "Enable previews" : "تمكين المعاينة", + "Enable sharing" : "تمكين المشاركة", + "Check for changes" : "التحقّق من وجود تغييرات", + "Never" : "إطلاقاً", + "Once every direct access" : "مرة واحدة لكل وصول مباشر", + "Read only" : "للقراءة فقط", + "Disconnect" : "قطع الاتصال", + "Unknown backend: {backendName}" : "واجهة خلفية غير معروفة: {backendName}", + "Admin defined" : "المدير تمّ تعريفه", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تمّ تعطيل الفحص التلقائي للحالة بسبب العدد الكبير من المخازن المُكوّنة configured storages. أُنقر للتحقق من الحالة.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "هل أنت متأكد أنك تريد قطع الاتصال بوحدة التخزين الخارجية هذه؟ سيتسبب ذلك في جعل وحدة التخزين هذه غير مُتاحة في نكست كلاود، و سيؤدي إلى منع الوصول إلى هذه الملفات والمجلدات عن أي عميل مزامنة مُتصلٍ حاليّاً، و لكنه لن يحذف أي ملفات أو مجلدات على وحدة التخزين الخارجية نفسها.", + "Delete storage?" : "حذف وحدة التخزين؟", + "Click to recheck the configuration" : "أنقر لإعادة فحص التكوين", + "Saved" : "حفظ", + "Saving …" : "جاري الحفظ…", + "Save" : "حفظ", + "Failed to save global credentials" : "تعذّر حفظ حيثيّات الدخول الشاملة global credentials", + "Failed to save global credentials: {message}" : "تعذّر حفظ حيثيّات الدخول الشاملة: {message}", "No external storage configured or you don't have the permission to configure them" : "لم يتم تكوين أي وحدة تخزين خارجية أو أنك لا تملك الصلاحية لتكوينها", "Open documentation" : "فتح توثيق النظام", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "يُمكّنك التخزين الخارجي من امتطاء mount خدمات و أجهزة تخزين خارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك أيضاً السماح للأشخاص بامتطاء خدمات التخزين الخارجية الخاصة بهم.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "يمكنك تطبيق التخزين الخارجي من تثبيت خدمات و أجهزة تخزين خارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك أيضاً السماح للأشخاص بتثبيت خدمات التخزين الخارجية الخاصة بهم.", "Folder name" : "اسم المجلد", "Authentication" : "المصادقة", "Configuration" : "إعداد", "Available for" : "متاح لـ ", - "Click to recheck the configuration" : "أنقر لإعادة فحص التكوين", - "Add storage" : "أضِف وحدة تخزين", + "Add storage" : "إضافة وحدة تخزين", "All people" : "كُلَّ الأشخاص", "Advanced settings" : "إعدادات متقدمة", - "Allow people to mount external storage" : "السماح للأشخاص بامتطاء mount وحدات تخزين خارجية", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "حيثيّات الدخول الشاملة global credentials يُمكن استخدامها للتحقق من عدة وحدات تخزين خارجية لها نفس الحيثيّات.", - "Type to select user or group." : "أكتُب لاختيار مستخدم أو مجموعة", - "Empty response from the server" : "استجابة فارغة من الخادوم", - "Couldn't access. Please log out and in again to activate this mount point" : "تعذّر الوصول. يُرجى تسجيل الخروج ثم الدخول مرة أخرى لتفعيل نقطة الامتطاء mount point هذه", - "Couldn't get the information from the remote server: {code} {type}" : "تعذّر الحصول على المعلومات من remote server الخادوم القصِي: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "تعذّر الحصول على قائمة external mount points نقاط الامتطاء الخارجية: {type}", - "There was an error with message: " : "حدث خطأ في الرسالة: ", - "external-storage" : "تخزين خارجي external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "تعذر جلب قائمة \"نقاط امتطاء محرك أقراص شبكة وندوز\" Windows network drive mount points: استجابة فارغة من الخادوم", - "Please enter the credentials for the {mount} mount" : "يُرجى إدخال حيثيات الدخول لنقطة الامتطاء {mount} ", - "Username" : "إسم المستخدم", - "Credentials saved" : "تم حفظ بيانات الدخول", - "Credentials saving failed" : "فشل حفظ حيثيات الدخول", - "Credentials required" : "حيثيات الدخول لازمة", - "Storage with ID \"%d\" is not user editable" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن تعديلها من قِبل المستخدم", - "Username and password" : "اسم المستخدم و كلمة المرور", - "Global credentials, user entered" : "حيثيّات التعريف الشاملة Global credentials، يُدخِلُها المستخدم", - "User entered, store in database" : "المستخدم داخل. تخزين في قاعدة البيانات", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "تعطيله سيؤدي إلى السماح باستخدام نظام ملفات غير حساس لحالة الأحرف الصفيرة و الكبيرة، و لكن هذا سيؤثر في سرعة الأداء", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "التحقّق من قوائم صلاحيات الوصول ACL لكل ملف أو مجلد داخل دليل لغرض تصفية العناصر التي لا يمتلك المستخدم أذونات لقراءتها. مع العلم أن هذا سيؤثر على أداء النظام.", - "Username as share" : "اسم المستخدم كمُشاركةٍ", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق المشرفين من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن للمشرفين اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات الامتطاء. \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", - "Name" : "الاسم", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "تتيح لك وحدة التخزين الخارجية امتطاء mount خدمات وأجهزة التخزين الخارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك السماح كذلك للمستخدمين بامتطاء خدمات التخزين الخارجية الخاصة بهم.", - "All users" : "كُلّ المستخدمين", - "Allow users to mount external storage" : "السماح للمستخدمين بامتطاء mount وحدات تخزين خارجية" + "Allow people to mount external storage" : "السماح للأشخاص بثبيت وحدات تخزين خارجية", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "بيانات تسجيل الدخول الشاملة تستخدم للتحقق من عدة وحدات تخزين خارجية لها نفس بيانات تسجيل الدخول.", + "Error configuring OAuth1" : "خطأ في تكوين OAuth1", + "Please provide a valid app key and secret." : "يرجى توفير مفتاح للتطبيق وكلمة سر صالحين.", + "OAuth1" : "OAuth1", + "App key" : "مفتاح التطبيق", + "App secret" : "كلمة مرور التطبيق" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/files_external/l10n/ar.json b/apps/files_external/l10n/ar.json index c7bad51ed66..7bde5fbf7e1 100644 --- a/apps/files_external/l10n/ar.json +++ b/apps/files_external/l10n/ar.json @@ -1,32 +1,14 @@ { "translations": { "Grant access" : "منح إذن بالنفاذ", - "Error configuring OAuth1" : "خطأ في تكوين OAuth1", - "Please provide a valid app key and secret." : "يرجى توفير مفتاح للتطبيق وكلمة سر صالحين.", "Error configuring OAuth2" : "خطأ في تكوين OAuth2", "Generate keys" : "توليد المفاتيح", "Error generating key pair" : "خطأ في توليد زوج المفاتيح", - "Type to select account or group." : "أكتُب لاختيار حساب أو مجموعة.", - "(Group)" : "(مجموعة)", - "Compatibility with Mac NFD encoding (slow)" : "التوافق مع نظام التشفير Mac NFD (بطيء)", - "Enable encryption" : "تمكين التشفير", - "Enable previews" : "تمكين المعاينة", - "Enable sharing" : "تمكين المشاركة", - "Check for changes" : "التحقّق من وجود تغييرات", - "Never" : "إطلاقاً", - "Once every direct access" : "مرة واحدة لكل وصول مباشر", - "Read only" : "للقراءة فقط", - "Disconnect" : "قطع الاتصال", - "Admin defined" : "المُشرف تمّ تعريفه", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تمّ تعطيل الفحص التلقائي للحالة بسبب العدد الكبير من المخازن المُكوّنة configured storages. أُنقر للتحقق من الحالة.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "هل أنت متأكد أنك تريد قطع الاتصال بوحدة التخزين الخارجية هذه؟ سيتسبب ذلك في جعل وحدة التخزين هذه غير مُتاحة في نكست كلاود، و سيؤدي إلى منع الوصول إلى هذه الملفات والمجلدات عن أي عميل مزامنة مُتصلٍ حاليّاً، و لكنه لن يحذف أي ملفات أو مجلدات على وحدة التخزين الخارجية نفسها.", - "Delete storage?" : "حذف وحدة التخزين؟", - "Saved" : "حفظ", - "Saving …" : "جاري الحفظ…", - "Save" : "حفظ", + "You are not logged in" : "أنت لم تقم بتسجيل الدخول", + "Permission denied" : "تمّ رفض منح الإذن", "Forbidden to manage local mounts" : "ممنوع من إدارة المُمتطيات المحلّيّة local mounts", "Storage with ID \"%d\" not found" : "تعذّر العثور على وحدة التخزين ذات المُعرِّف \"%d\" ", "Invalid backend or authentication mechanism class" : "فئة آلية المصادقة authentication mechanism class أو الخلفية backend غير صالحة", - "Invalid mount point" : "نقطة امتطاء Mount point غير صالحة", + "Invalid mount point" : "نقطة التثبيت Mount point غير صالحة", "Objectstore forbidden" : "مخزن الكائنات Objectstore ممنوع", "Invalid storage backend \"%s\"" : "الواجهة الخلفية للتخزين Storage Backend غير صالحة \"%s\"", "Not permitted to use backend \"%s\"" : "غير مُخوّل باستخدام الخلفية backend ـ \"%s\"", @@ -35,30 +17,27 @@ "Unsatisfied authentication mechanism parameters" : "معاملات آلية المصادقة غير مكتملة", "Insufficient data: %s" : "البيانات غير كافية: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن الكتابة فيها لغير المشرفين", + "Storage with ID \"%d\" is not editable by non-admins" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن الكتابة فيها لمن لا يملك صلاحية مدير", "Access key" : "مفتاح المرور", "Secret key" : "المفتاح السّرّي", "Builtin" : "مُضمّن", "None" : "لا شيء", - "OAuth1" : "OAuth1", - "App key" : "مفتاح التطبيق", - "App secret" : "التطبيق السري", "OAuth2" : "OAuth2", "Client ID" : "مُعرِّف العميل", "Client secret" : "كلمة مرور العميل", "OpenStack v2" : "OpenStack v2", - "Login" : "الدخول", + "Login" : "تسجيل الدخول", "Password" : "كلمة المرور", "Tenant name" : "اسم المستأجر", - "Identity endpoint URL" : "عنوان URL للوحدة الطرفية للهوية Identity endpoint", + "Identity endpoint URL" : "عنوان URL للنقطة النهائية للهوية Identity endpoint", "OpenStack v3" : "OpenStack v3", "Domain" : "النطاق", "Rackspace" : "Rackspace", "API key" : "مفتاح واجهة برمجة التطبيقات API key", - "Global credentials" : "حيثيّات التعريف الشاملة Global credentials", + "Global credentials" : "بيانات تسجيل الدخول الشاملة", "Log-in credentials, save in database" : "حيثيّات الدخول؛ تُحفظ في قاعدة البيانات", "Login and password" : "الدخول و كلمة المرور", - "Log-in credentials, save in session" : "حيثيات الدخول، احفظها في الجلسة", + "Log-in credentials, save in session" : "متطلبات الدخول، احفظها في الجلسة", "Global credentials, manually entered" : "حيثيات الدخول الشاملة، يتم إدخالها يدويّاً", "Manually entered, store in database" : "يتمّ إدخالها يدويّاً، و تٌحفظ في قاعدة بيانات", "RSA public key" : "مفتاح RSA العمومي", @@ -70,7 +49,7 @@ "Kerberos ticket" : "تذكرة \"كيربيروس\" Kerberos ticket", "Amazon S3" : "أمازون S3", "Bucket" : "الحزمة", - "Hostname" : "إسم الإستضافة", + "Hostname" : "اسم الإستضافة", "Port" : "المنفذ", "Region" : "المنطقة", "Storage Class" : "فئة وحدة التخزين", @@ -78,9 +57,10 @@ "Enable Path Style" : "تمكين نمط المسار Path Style", "Legacy (v2) authentication" : "المصادقة القديمة (الإصدار 2) Legacy authentication", "Enable multipart copy" : "تمكين النسخ المُجزّأ", + "SSE-C encryption key" : "مفتاح تشفير SSE-C", "WebDAV" : "WebDAV", "URL" : "عنوان URL", - "Remote subfolder" : "مُجلّد فرعي قصي remote sunfolder", + "Remote subfolder" : "مُجلّد فرعي بعيد remote sunfolder", "Secure https://" : "آمن https://", "FTP" : "FTP", "Host" : "المضيف", @@ -90,82 +70,91 @@ "Nextcloud" : "نيكست كلاود", "SFTP" : "SFTP", "Root" : "الجذر", - "SFTP with secret key login" : "STFP مع الدخول بمفتاح سرّي", + "SFTP with secret key login" : "STFP مع الدخول بمفتاح سري", "SMB/CIFS" : "SMB/CIFS", "Share" : "شارك", "Show hidden files" : "عرض الملفات المخفية", "Case sensitive file system" : "نظام الملفات حساس لحالة الأحرف الصغيرة و الكبيرة", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "تعطيله سوف يسمح باستعمال نظام ملفات غير حساس لحالة الأحرف الصغيرة و الكبيرة، لكن هذا سيترتب عليه تأثير سلبيٌّ في الأداء.", "Verify ACL access when listing files" : "تأكد من قائمة صلاحيات الوصول ACL عند سرد الملفات", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "فحص قائمة التحكم في الوصول ACL لكل ملف و مجلد داخل الدليل لغرض فلترة العناصر و تحديد الحسابات التي لا تملك إذونات للقراءة سيؤثر على سرعة أداء النظام", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "فحص قائمة التحكم في الوصول ACL لكل ملف و مجلد داخل الدليل لغرض تصفية العناصر و تحديد الحسابات التي لا تملك إذونات للقراءة سيؤثر على سرعة أداء النظام", "Timeout" : "إنتَهَى الوقت", "SMB/CIFS using OC login" : "SMB/CIFS باستعمال دخول نكست كلاود", "Login as share" : "تسجيل الدخول كمشاركة", "OpenStack Object Storage" : "كائنات التخزين لـ OpenStack", "Service name" : "اسم الخدمة", "Request timeout (seconds)" : "مُهلة تنفيذ الطلب (بالثواني)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم cURL في PHP. لذا، سيتعذّر امتطاء mounting ـ %s. رجاءً، أطلب من مشرفك تنصيبها.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم FTP في PH. لذا، سيتعذّر امتطاء mounting ـ %s . رجاءً، أطلب من مشرفك تنصيبها.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" لم يتمّ تنصيبها. لذا، سيتعذّر امتطاء mounting ـ %2$s. رجاءً، أطلب من مشرفك تنصيبها.", - "External storage" : "تخزين خارجي", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم cURL في PHP. لذا، سيتعذّر التثبيت mounting ـ %s. رجاءً، أطلب من مسؤول النظام تنصيبها.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "لم يتم تمكين أو تنصيب دعم FTP في PH. لذا، سيتعذّر التثبيت mounting ـ %s . رجاءً، أطلب من مسؤول النظام تنصيبها.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" لم يتمّ تنصيبها. لذا، سيتعذّر التثبيت mounting ـ %2$s. رجاءً، أطلب من مسؤول النظام تنصيبها.", + "External storage" : "التخزين الخارجي", "External storage support" : "دعم التخزين الخارجي", "Adds basic external storage support" : "يُضيف دعماً أساسيّاً للتخزين الخارجي", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق المشرفين من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن للمشرفين اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات الامتطاء. \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", - "Enter missing credentials" : "أدخِل حيثيات الدخول الناقصة", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق مسؤول النظام من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن لمسؤول النظام اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات التثبيت . \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", + "Confirm" : "تأكيد", + "Storage credentials" : "بيانات تسجيل الدخول لوحدة التخزين", + "To access the storage, you need to provide the authentication credentials." : "للوصول إلى وحدة التخزين، تحتاج إلى إبراز حيثيات المصادقة الخاص بك.", + "Enter the storage login" : "التسجيل للدخول إلى وحدة التخزين", + "Enter the storage password" : "أدخِل كلمة المرور لوحدة التخزين", "Unable to update this external storage config. {statusMessage}" : "تعذّر تحديث تهيئة وحدة التخزين الخارجية هذه. {statusMessage}", "New configuration successfully saved" : "تمّ حفظ التهيئة الجديدة بنجاحٍ", + "Enter missing credentials" : "أدخِل حيثيات الدخول الناقصة", + "Credentials successfully set" : "تم تعيين حيثيّات الدخول بنجاحٍ", + "Error while setting credentials: {error}" : "حدث خطأ أثناء تعيين حيثيّات الدخول: {error}", + "Checking storage …" : "فحص التخزين ...", "There was an error with this external storage." : "هنالك خطأ في وحدة التخزين الخارجية هذه.", "We were unable to check the external storage {basename}" : "لم نستطع التحقق من وحدة التخزين الخارجية {basename}", "Examine this faulty external storage configuration" : "إفحَص التهيئة الخاطئة لوحدة التخزين الخارجية هذه", "Open in Files" : "إفتَح في \"الملفات\"", - "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "هنالك خطأ في وحدة التخزين الخارجية هذه. هل ترغب في مراجعة تهيئة نقطة الامتطاء mount point هذه في صفحة الإعدادات؟", - "External mount error" : "خطأ في الامتطاء الخارجي external mount", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "هنالك خطأ في وحدة التخزين الخارجية هذه. هل ترغب في مراجعة تهيئة نقطة التثبيت mount point هذه في صفحة الإعدادات؟", + "External mount error" : "خطأ في تثبيت التخزين الخارجي external mount", "List of external storage." : "قائمة التخزين الخارجي.", "There is no external storage configured. You can configure them in your Personal settings." : "لا توجد أي وحدة تخزين خارجية مهيأة. يمكنك تهيئتها في إعداداتك الشخصية.", - "There is no external storage configured and you don't have the permission to configure them." : "لا توجد أي وحدة تخزين خارجية مهيأة، و أنت لا تملك الحق في تهيئتها.", + "There is no external storage configured and you don't have the permission to configure them." : "لا توجد أي وحدة تخزين خارجية مهيأة، كما أنك لا تملك الصلاحية لتهيئتها.", "No external storage" : "لا توجد وحدات تخزين خارجية", "Storage type" : "نوع التخزين", "Unknown" : "غير معروف", "Scope" : "النطاق", "Personal" : "شخصي", "System" : "النظام", + "Type to select account or group." : "أكتُب لاختيار حساب أو مجموعة.", + "(Group)" : "(مجموعة)", + "Compatibility with Mac NFD encoding (slow)" : "التوافق مع نظام التشفير Mac NFD (بطيء)", + "Enable encryption" : "تمكين التشفير", + "Enable previews" : "تمكين المعاينة", + "Enable sharing" : "تمكين المشاركة", + "Check for changes" : "التحقّق من وجود تغييرات", + "Never" : "إطلاقاً", + "Once every direct access" : "مرة واحدة لكل وصول مباشر", + "Read only" : "للقراءة فقط", + "Disconnect" : "قطع الاتصال", + "Unknown backend: {backendName}" : "واجهة خلفية غير معروفة: {backendName}", + "Admin defined" : "المدير تمّ تعريفه", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تمّ تعطيل الفحص التلقائي للحالة بسبب العدد الكبير من المخازن المُكوّنة configured storages. أُنقر للتحقق من الحالة.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "هل أنت متأكد أنك تريد قطع الاتصال بوحدة التخزين الخارجية هذه؟ سيتسبب ذلك في جعل وحدة التخزين هذه غير مُتاحة في نكست كلاود، و سيؤدي إلى منع الوصول إلى هذه الملفات والمجلدات عن أي عميل مزامنة مُتصلٍ حاليّاً، و لكنه لن يحذف أي ملفات أو مجلدات على وحدة التخزين الخارجية نفسها.", + "Delete storage?" : "حذف وحدة التخزين؟", + "Click to recheck the configuration" : "أنقر لإعادة فحص التكوين", + "Saved" : "حفظ", + "Saving …" : "جاري الحفظ…", + "Save" : "حفظ", + "Failed to save global credentials" : "تعذّر حفظ حيثيّات الدخول الشاملة global credentials", + "Failed to save global credentials: {message}" : "تعذّر حفظ حيثيّات الدخول الشاملة: {message}", "No external storage configured or you don't have the permission to configure them" : "لم يتم تكوين أي وحدة تخزين خارجية أو أنك لا تملك الصلاحية لتكوينها", "Open documentation" : "فتح توثيق النظام", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "يُمكّنك التخزين الخارجي من امتطاء mount خدمات و أجهزة تخزين خارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك أيضاً السماح للأشخاص بامتطاء خدمات التخزين الخارجية الخاصة بهم.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "يمكنك تطبيق التخزين الخارجي من تثبيت خدمات و أجهزة تخزين خارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك أيضاً السماح للأشخاص بتثبيت خدمات التخزين الخارجية الخاصة بهم.", "Folder name" : "اسم المجلد", "Authentication" : "المصادقة", "Configuration" : "إعداد", "Available for" : "متاح لـ ", - "Click to recheck the configuration" : "أنقر لإعادة فحص التكوين", - "Add storage" : "أضِف وحدة تخزين", + "Add storage" : "إضافة وحدة تخزين", "All people" : "كُلَّ الأشخاص", "Advanced settings" : "إعدادات متقدمة", - "Allow people to mount external storage" : "السماح للأشخاص بامتطاء mount وحدات تخزين خارجية", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "حيثيّات الدخول الشاملة global credentials يُمكن استخدامها للتحقق من عدة وحدات تخزين خارجية لها نفس الحيثيّات.", - "Type to select user or group." : "أكتُب لاختيار مستخدم أو مجموعة", - "Empty response from the server" : "استجابة فارغة من الخادوم", - "Couldn't access. Please log out and in again to activate this mount point" : "تعذّر الوصول. يُرجى تسجيل الخروج ثم الدخول مرة أخرى لتفعيل نقطة الامتطاء mount point هذه", - "Couldn't get the information from the remote server: {code} {type}" : "تعذّر الحصول على المعلومات من remote server الخادوم القصِي: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "تعذّر الحصول على قائمة external mount points نقاط الامتطاء الخارجية: {type}", - "There was an error with message: " : "حدث خطأ في الرسالة: ", - "external-storage" : "تخزين خارجي external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "تعذر جلب قائمة \"نقاط امتطاء محرك أقراص شبكة وندوز\" Windows network drive mount points: استجابة فارغة من الخادوم", - "Please enter the credentials for the {mount} mount" : "يُرجى إدخال حيثيات الدخول لنقطة الامتطاء {mount} ", - "Username" : "إسم المستخدم", - "Credentials saved" : "تم حفظ بيانات الدخول", - "Credentials saving failed" : "فشل حفظ حيثيات الدخول", - "Credentials required" : "حيثيات الدخول لازمة", - "Storage with ID \"%d\" is not user editable" : "وحدة التخزين ذات المُعرِّف \"%d\" لا يمكن تعديلها من قِبل المستخدم", - "Username and password" : "اسم المستخدم و كلمة المرور", - "Global credentials, user entered" : "حيثيّات التعريف الشاملة Global credentials، يُدخِلُها المستخدم", - "User entered, store in database" : "المستخدم داخل. تخزين في قاعدة البيانات", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "تعطيله سيؤدي إلى السماح باستخدام نظام ملفات غير حساس لحالة الأحرف الصفيرة و الكبيرة، و لكن هذا سيؤثر في سرعة الأداء", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "التحقّق من قوائم صلاحيات الوصول ACL لكل ملف أو مجلد داخل دليل لغرض تصفية العناصر التي لا يمتلك المستخدم أذونات لقراءتها. مع العلم أن هذا سيؤثر على أداء النظام.", - "Username as share" : "اسم المستخدم كمُشاركةٍ", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "يُمكّن هذا التطبيق المشرفين من تكوين الاتصالات بمُوفّري التخزين الخارجي؛ مثل خوادم FTP، ومخازن عناصر S3 أو SWIFT، و خوادم نكست الأخرى، و خوادم WebDAV و غيرها. يمكن للمشرفين اختيار أنواع التخزين التي يرغبون في تمكينها، ويمكنهم إمطاء mountg مواقع التخزين هذه لمستخدمٍ أو لمجموعة مستخدمين أو للنظام بأكمله. سيرى المستخدمون مُجلّدًا جديدًا يظهر في دليل نكست كلاود الجذري الخاص بهم والذي يمكنهم الوصول إليه واستخدامه مثل أي مجلد آخر من نكست كلاود. \nتتيح وحدة التخزين الخارجية أيضًا للمستخدمين مشاركة الملفات المُخزّنة في هذه المواقع الخارجية. في هذه الحالة، يتم استخدام حيثيات الدخول لمالك الملف عندما يطلب المستلم الملف من وحدة التخزين الخارجية؛ ممّا يضمن إمكانية وصول المستلم إلى الملف المشترك. \nيمكن تكوين التخزين الخارجي عن طريق واجهة المستخدم الرسومية أو عن طريق سطر الأوامر. يوفر الخيار الثاني للمستخدم المتقدم مزيدًا من المرونة لتكوين ممتطيات mounts لوحدات التخزين الخارجية بالجملة و تحديد أولويات الامتطاء. \nللمزيد من المعلومات، أنظر في توثيق واجهة المستخدم الرسومية للتخزين الخارجي، و توثيق تكوين وحدة التخزين الخارجية لتطبيق الملفات Files .", - "Name" : "الاسم", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "تتيح لك وحدة التخزين الخارجية امتطاء mount خدمات وأجهزة التخزين الخارجية كأجهزة تخزين ثانوية لنكست كلاود. يمكنك السماح كذلك للمستخدمين بامتطاء خدمات التخزين الخارجية الخاصة بهم.", - "All users" : "كُلّ المستخدمين", - "Allow users to mount external storage" : "السماح للمستخدمين بامتطاء mount وحدات تخزين خارجية" + "Allow people to mount external storage" : "السماح للأشخاص بثبيت وحدات تخزين خارجية", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "بيانات تسجيل الدخول الشاملة تستخدم للتحقق من عدة وحدات تخزين خارجية لها نفس بيانات تسجيل الدخول.", + "Error configuring OAuth1" : "خطأ في تكوين OAuth1", + "Please provide a valid app key and secret." : "يرجى توفير مفتاح للتطبيق وكلمة سر صالحين.", + "OAuth1" : "OAuth1", + "App key" : "مفتاح التطبيق", + "App secret" : "كلمة مرور التطبيق" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ast.js b/apps/files_external/l10n/ast.js index b65fafe8921..be7ed079e4d 100644 --- a/apps/files_external/l10n/ast.js +++ b/apps/files_external/l10n/ast.js @@ -2,58 +2,61 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder l'accesu", - "Error configuring OAuth1" : "Hebo un error al configurar l'OAuth1", - "Please provide a valid app key and secret." : "Forni una clave y un secretu d'aplicación válidos.", "Error configuring OAuth2" : "Hebo un error al configurar l'OAuth2", "Generate keys" : "Xenerar les claves", "Error generating key pair" : "Hebo un error al xenerar el par de claves", - "Type to select account or group." : "Escribi pa seleicionar una cuenta o un grupu", - "(Group)" : "(Grupu)", - "Compatibility with Mac NFD encoding (slow)" : "Compatiblidá cola codificación NFD de Mac (opción lenta)", - "Enable encryption" : "Activar el cifráu", - "Enable previews" : "Activar les previsualizaciones", - "Enable sharing" : "Activar la compartición", - "Check for changes" : "Comprobar los cambeos", - "Never" : "Enxamás", - "Once every direct access" : "Una vegada cada accesu directu", - "Read only" : "Namás llectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Opción definida pola alministración", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación del estáu automática ta desactivada pola mor del númberu grande d'almacenamientos configuraos, cala pa comprobar l'estáu", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿De xuru que quies desconectar esti almacenamientu esternu? Esta aición va facer que l'almacenamientu dexe de tar disponible en Nextcloud y va facer que se desanicien los ficheros y carpetes en cualesquier veceru sincronizáu que tea conectáu mas nun se va desaniciar nengún ficheru nin carpeta del almacenamientu esternu.", - "Delete storage?" : "¿Quies desaniciar l'almacenamientu?", - "Saved" : "Guardóse", - "Saving …" : "Guardando…", - "Save" : "Guardar", + "Forbidden to manage local mounts" : "Prohíbese xestionar montaxes llocales", "Storage with ID \"%d\" not found" : "Nun s'atopó l'almacenamientu cola ID «%d»", + "Invalid backend or authentication mechanism class" : "El backend o la clas del mecanismu d'autienticación son inválidos", "Invalid mount point" : "El puntu de montaxe ye inválidu", + "Objectstore forbidden" : "Prohíbese l'Objectstore", + "Invalid storage backend \"%s\"" : "El backend d'almacenamientu «%s» ye inválidu", + "Not permitted to use backend \"%s\"" : "Nun se permite usar el backend «%s»", + "Not permitted to use authentication mechanism \"%s\"" : "Nun se permite usar el mecanismu d'autenticación «%s»", + "Unsatisfied backend parameters" : "Hai parámetros del backend que nun se satisfacen", + "Unsatisfied authentication mechanism parameters" : "Hai parámetros del mecanismu d'autenticación que nun se satisfacen", + "Insufficient data: %s" : "Nun hai abondos datos: %s", "%s" : "%s", "Storage with ID \"%d\" is not editable by non-admins" : "Les cuentes que nun son de l'alministración nun puen editar l'almacenamientu cola ID «%d»", "Access key" : "Clave d'accesu", "Secret key" : "Clave del secretu", + "Builtin" : "Integrada", "None" : "Nada", - "OAuth1" : "OAuth1", - "App key" : "Clave d'aplicación", - "App secret" : "Secretu d'aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID de veceru", "Client secret" : "Secretu de veceru", "OpenStack v2" : "OpenStack v2", "Login" : "Aniciar la sesión", "Password" : "Contraseña", + "Tenant name" : "Nome d'inquilín", + "Identity endpoint URL" : "URL del estremu de la identidá", "OpenStack v3" : "OpenStack v3", "Domain" : "Dominiu", "Rackspace" : "Rackspace", "API key" : "Clave de l'API", + "Global credentials" : "Credenciales globales", + "Log-in credentials, save in database" : "Credenciales p'aniciar la sesión, guardaes na base de datos", + "Login and password" : "Cuenta y contraseña", + "Log-in credentials, save in session" : "Credenciales p'aniciar la sesión, guardaes na sesión", + "Global credentials, manually entered" : "Credenciales globales, introducíes manualmente", + "Manually entered, store in database" : "Introducío manualmente, guardao na base de datos", "RSA public key" : "Clave pública RSA", "Public key" : "Clave pública", "RSA private key" : "Clave privada RSA", "Private key" : "Clave privada", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "L'equipu predetermináu de Kerberos, por defeutu ye «WORKGROUP»", + "Kerberos ticket Apache mode" : "Mou Apache de ticket de Kerberos", + "Kerberos ticket" : "Ticket de Kerberos", "Amazon S3" : "Amazon S3", + "Bucket" : "Bucket", "Hostname" : "Agospiador", "Port" : "Puertu", "Region" : "Rexón", + "Storage Class" : "Clas d'almacenamientu", + "Enable SSL" : "Activar el SSL", + "Enable Path Style" : "Activar l'estilu de caminos", "Legacy (v2) authentication" : "Activar l'autenticación heredada (v2)", + "Enable multipart copy" : "Activar la copia múltiple", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Socarpeta remota", @@ -66,19 +69,38 @@ OC.L10N.register( "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Raigañu", + "SFTP with secret key login" : "SFTP con cuenta de clave secreta", "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartir", "Show hidden files" : "Amosar los ficheros anubríos", "Case sensitive file system" : "Sistema de ficheros qu'estrema mayúscules y minúscules", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Al desactivar la opción, va permitise l'usu d'un sistema de ficheros sensible a mayúscules, más va amenorgar el rindimientu", + "Verify ACL access when listing files" : "Verificar l'accesu d'ACL al detectar ficheros", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprueba l'ACL de cada ficheru o carpeta d'un direutoriu pa peñerar los elementos pa los que la cuenta nun tien permisu de llectura, más amenorga'l rindimientu", + "Timeout" : "Escosa del tiempu d'espera", + "SMB/CIFS using OC login" : "SMB/CIFS con cuenta OC", + "Login as share" : "Aniciar la sesión como elementu compartíu", + "OpenStack Object Storage" : "Almacenamientu d'oxetos d'OpenStack", "Service name" : "Nome del serviciu", + "Request timeout (seconds)" : "Tiempu d'espera de les solicitúes (segundos)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "La compatibilidá de cURL en PHP nun ta activada o instalada. Nun ye posible montar «%s», Pidi a l'alministración del sistema que la instale.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "La compatibilidá de PHP en PHP nun ta activada o instalada. Nun ye posible montar «%s», Pidi a l'alministración del sistema que la instale.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "«%1$s» nun ya instaláu. El montaxe de «%2$s» nun ye posible. Pídi-y a l'alministración del sistema que lu instale.", "External storage" : "Almacenamientu esternu", + "External storage support" : "Compatibilidá con almacenamientos esternos", + "Adds basic external storage support" : "Amiesta compatibilidá básica p'almacenamientos esternos", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a l'alministración configurar les conexones a fornidores d'almacenamientu esternu, como sirvidores FTP, S3 o almacenes d'oxetos SWIFT, otros sirvidores Nextcloud, sirvidores WebDAV y munchos más. L'alministración pue escoyer los tipos d'almacenamientu qu'activa y pue montalos pa una cuenta, un grupu o tol sistema. Los usuarios van ver qu'apaez una carpeta neuva nel direutoriu raigañu de Nextcloud, al que puen acceder y usar como otra carpeta cualquiera. L'almacenamientu esternu tamién permite a les persones compartir ficheros atroxaos nestos llugares esternos. Nesos casos, úsense les credenciales del propietariu del ficheru cuando'l destinatariu solicita el ficheru del almacenamientu esternu, d'esti mou asegúrase de que'l destinatariu pue acceder al ficheru compartíu.\n\nPues configurar l'almacenamientu esternu cola GUI o la llinia de comandos. Esta postrer opción forne una alministración más flexible pa configurar grupos de montaxes d'almacenamientu esternu y configurar les prioridaes del montaxe. Tienes más información disponible na documentación de la GUI d'almacenamientos esternos y la documentación de los ficheros de configuración de los almacenamientos esternos.", + "Confirm" : "Confirmar", "Unable to update this external storage config. {statusMessage}" : "Nun ye posible anovar la configuración d'esti almacenamientu esternu. {statusMessage}", "New configuration successfully saved" : "La configuración nueva guardóse correutamente", + "Enter missing credentials" : "Instroduz les credenciales que falten", "There was an error with this external storage." : "Hebo un error con esti almacenamientu esternu.", + "We were unable to check the external storage {basename}" : "Nun fuimos a comprobar l'almacenamientu esternu «{basename}»", + "Examine this faulty external storage configuration" : "Esaminar esta configuración defectuosa del almacenamientu esternu", "Open in Files" : "Abrir en Ficheros", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Hebo un error con esti almacenamientu esternu. ¿Quies revisar la configuración d'esti puntu de montaxe na páxina de configuración?", "External mount error" : "Error del montaxe esternu", + "List of external storage." : "Llista del almacenamientu esternu.", "There is no external storage configured. You can configure them in your Personal settings." : "Nun hai nengún almacenamientu esternu configuráu. Pues configurar unu na configuración personal.", "There is no external storage configured and you don't have the permission to configure them." : "Nun hai nengún almacenamientu esternu configuráu y tampoco tienes permisu pa configuralos.", "No external storage" : "Nun hai nengún almacenamientu esternu", @@ -87,26 +109,41 @@ OC.L10N.register( "Scope" : "Ámbitu", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escribi pa seleicionar una cuenta o un grupu", + "(Group)" : "(Grupu)", + "Compatibility with Mac NFD encoding (slow)" : "Compatiblidá cola codificación NFD de Mac (opción lenta)", + "Enable encryption" : "Activar el cifráu", + "Enable previews" : "Activar les previsualizaciones", + "Enable sharing" : "Activar la compartición", + "Check for changes" : "Comprobar los cambeos", + "Never" : "Enxamás", + "Once every direct access" : "Una vegada cada accesu directu", + "Read only" : "Namás llectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Opción definida pola alministración", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación del estáu automática ta desactivada pola mor del númberu grande d'almacenamientos configuraos, cala pa comprobar l'estáu", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿De xuru que quies desconectar esti almacenamientu esternu? Esta aición va facer que l'almacenamientu dexe de tar disponible en Nextcloud y va facer que se desanicien los ficheros y carpetes en cualesquier veceru sincronizáu que tea conectáu mas nun se va desaniciar nengún ficheru nin carpeta del almacenamientu esternu.", + "Delete storage?" : "¿Quies desaniciar l'almacenamientu?", + "Click to recheck the configuration" : "Calca pa volver comprobar la configuración", + "Saved" : "Guardóse", + "Saving …" : "Guardando…", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "Nun se configuró nengún almacenamientu esternu y tampoco tienes permisu pa configuralos", "Open documentation" : "Abrir la documentación", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "L'almacenamientu esternu permítete montar servicios y preseos d'almacenamientu esternos como preseos d'almacenamientu esternu. Tamién pues permitir a otros que monten los sos servicios d'almacenamientu esternos.", "Folder name" : "Nome de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible pa", - "Click to recheck the configuration" : "Calca pa volver comprobar la configuración", "Add storage" : "Amestar un almacenamientu", "All people" : "Toles persones", "Advanced settings" : "Configuración avanzada", - "Type to select user or group." : "Escribir pa seleicionar un usuariu o grupu", - "Empty response from the server" : "Recibióse una rempuesta balera del sirvidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Nun se pudo acceder. Zarrar la sesión y volvi aniciala p'activar esti puntu de montaxe", - "Couldn't get the information from the remote server: {code} {type}" : "Nun se pudo consiguir la información del sirvidor remotu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nun se pudo consiguir la llista de puntos de montaxe esternos: {type}", - "There was an error with message: " : "Hebo un error col mensaxe:", - "Username" : "Nome d'usuariu", - "Username and password" : "Nome d'usuariu y contraseña", - "Name" : "Nome", - "All users" : "Tolos usuarios", - "Allow users to mount external storage" : "Permitir que los usuarios monten l'almacenamientu esternu" + "Allow people to mount external storage" : "Permitir a otros montar l'almacenamientu esternu", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Pues usar les credenciales globales p'autenticate en múltiples almacenamientos esternos que tengan les meses credenciales.", + "Error configuring OAuth1" : "Hebo un error al configurar l'OAuth1", + "Please provide a valid app key and secret." : "Forni una clave y un secretu d'aplicación válidos.", + "OAuth1" : "OAuth1", + "App key" : "Clave d'aplicación", + "App secret" : "Secretu d'aplicación" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/ast.json b/apps/files_external/l10n/ast.json index 2a4e413cd82..a77229c8c6a 100644 --- a/apps/files_external/l10n/ast.json +++ b/apps/files_external/l10n/ast.json @@ -1,57 +1,60 @@ { "translations": { "Grant access" : "Conceder l'accesu", - "Error configuring OAuth1" : "Hebo un error al configurar l'OAuth1", - "Please provide a valid app key and secret." : "Forni una clave y un secretu d'aplicación válidos.", "Error configuring OAuth2" : "Hebo un error al configurar l'OAuth2", "Generate keys" : "Xenerar les claves", "Error generating key pair" : "Hebo un error al xenerar el par de claves", - "Type to select account or group." : "Escribi pa seleicionar una cuenta o un grupu", - "(Group)" : "(Grupu)", - "Compatibility with Mac NFD encoding (slow)" : "Compatiblidá cola codificación NFD de Mac (opción lenta)", - "Enable encryption" : "Activar el cifráu", - "Enable previews" : "Activar les previsualizaciones", - "Enable sharing" : "Activar la compartición", - "Check for changes" : "Comprobar los cambeos", - "Never" : "Enxamás", - "Once every direct access" : "Una vegada cada accesu directu", - "Read only" : "Namás llectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Opción definida pola alministración", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación del estáu automática ta desactivada pola mor del númberu grande d'almacenamientos configuraos, cala pa comprobar l'estáu", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿De xuru que quies desconectar esti almacenamientu esternu? Esta aición va facer que l'almacenamientu dexe de tar disponible en Nextcloud y va facer que se desanicien los ficheros y carpetes en cualesquier veceru sincronizáu que tea conectáu mas nun se va desaniciar nengún ficheru nin carpeta del almacenamientu esternu.", - "Delete storage?" : "¿Quies desaniciar l'almacenamientu?", - "Saved" : "Guardóse", - "Saving …" : "Guardando…", - "Save" : "Guardar", + "Forbidden to manage local mounts" : "Prohíbese xestionar montaxes llocales", "Storage with ID \"%d\" not found" : "Nun s'atopó l'almacenamientu cola ID «%d»", + "Invalid backend or authentication mechanism class" : "El backend o la clas del mecanismu d'autienticación son inválidos", "Invalid mount point" : "El puntu de montaxe ye inválidu", + "Objectstore forbidden" : "Prohíbese l'Objectstore", + "Invalid storage backend \"%s\"" : "El backend d'almacenamientu «%s» ye inválidu", + "Not permitted to use backend \"%s\"" : "Nun se permite usar el backend «%s»", + "Not permitted to use authentication mechanism \"%s\"" : "Nun se permite usar el mecanismu d'autenticación «%s»", + "Unsatisfied backend parameters" : "Hai parámetros del backend que nun se satisfacen", + "Unsatisfied authentication mechanism parameters" : "Hai parámetros del mecanismu d'autenticación que nun se satisfacen", + "Insufficient data: %s" : "Nun hai abondos datos: %s", "%s" : "%s", "Storage with ID \"%d\" is not editable by non-admins" : "Les cuentes que nun son de l'alministración nun puen editar l'almacenamientu cola ID «%d»", "Access key" : "Clave d'accesu", "Secret key" : "Clave del secretu", + "Builtin" : "Integrada", "None" : "Nada", - "OAuth1" : "OAuth1", - "App key" : "Clave d'aplicación", - "App secret" : "Secretu d'aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID de veceru", "Client secret" : "Secretu de veceru", "OpenStack v2" : "OpenStack v2", "Login" : "Aniciar la sesión", "Password" : "Contraseña", + "Tenant name" : "Nome d'inquilín", + "Identity endpoint URL" : "URL del estremu de la identidá", "OpenStack v3" : "OpenStack v3", "Domain" : "Dominiu", "Rackspace" : "Rackspace", "API key" : "Clave de l'API", + "Global credentials" : "Credenciales globales", + "Log-in credentials, save in database" : "Credenciales p'aniciar la sesión, guardaes na base de datos", + "Login and password" : "Cuenta y contraseña", + "Log-in credentials, save in session" : "Credenciales p'aniciar la sesión, guardaes na sesión", + "Global credentials, manually entered" : "Credenciales globales, introducíes manualmente", + "Manually entered, store in database" : "Introducío manualmente, guardao na base de datos", "RSA public key" : "Clave pública RSA", "Public key" : "Clave pública", "RSA private key" : "Clave privada RSA", "Private key" : "Clave privada", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "L'equipu predetermináu de Kerberos, por defeutu ye «WORKGROUP»", + "Kerberos ticket Apache mode" : "Mou Apache de ticket de Kerberos", + "Kerberos ticket" : "Ticket de Kerberos", "Amazon S3" : "Amazon S3", + "Bucket" : "Bucket", "Hostname" : "Agospiador", "Port" : "Puertu", "Region" : "Rexón", + "Storage Class" : "Clas d'almacenamientu", + "Enable SSL" : "Activar el SSL", + "Enable Path Style" : "Activar l'estilu de caminos", "Legacy (v2) authentication" : "Activar l'autenticación heredada (v2)", + "Enable multipart copy" : "Activar la copia múltiple", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Socarpeta remota", @@ -64,19 +67,38 @@ "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Raigañu", + "SFTP with secret key login" : "SFTP con cuenta de clave secreta", "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartir", "Show hidden files" : "Amosar los ficheros anubríos", "Case sensitive file system" : "Sistema de ficheros qu'estrema mayúscules y minúscules", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Al desactivar la opción, va permitise l'usu d'un sistema de ficheros sensible a mayúscules, más va amenorgar el rindimientu", + "Verify ACL access when listing files" : "Verificar l'accesu d'ACL al detectar ficheros", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprueba l'ACL de cada ficheru o carpeta d'un direutoriu pa peñerar los elementos pa los que la cuenta nun tien permisu de llectura, más amenorga'l rindimientu", + "Timeout" : "Escosa del tiempu d'espera", + "SMB/CIFS using OC login" : "SMB/CIFS con cuenta OC", + "Login as share" : "Aniciar la sesión como elementu compartíu", + "OpenStack Object Storage" : "Almacenamientu d'oxetos d'OpenStack", "Service name" : "Nome del serviciu", + "Request timeout (seconds)" : "Tiempu d'espera de les solicitúes (segundos)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "La compatibilidá de cURL en PHP nun ta activada o instalada. Nun ye posible montar «%s», Pidi a l'alministración del sistema que la instale.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "La compatibilidá de PHP en PHP nun ta activada o instalada. Nun ye posible montar «%s», Pidi a l'alministración del sistema que la instale.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "«%1$s» nun ya instaláu. El montaxe de «%2$s» nun ye posible. Pídi-y a l'alministración del sistema que lu instale.", "External storage" : "Almacenamientu esternu", + "External storage support" : "Compatibilidá con almacenamientos esternos", + "Adds basic external storage support" : "Amiesta compatibilidá básica p'almacenamientos esternos", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a l'alministración configurar les conexones a fornidores d'almacenamientu esternu, como sirvidores FTP, S3 o almacenes d'oxetos SWIFT, otros sirvidores Nextcloud, sirvidores WebDAV y munchos más. L'alministración pue escoyer los tipos d'almacenamientu qu'activa y pue montalos pa una cuenta, un grupu o tol sistema. Los usuarios van ver qu'apaez una carpeta neuva nel direutoriu raigañu de Nextcloud, al que puen acceder y usar como otra carpeta cualquiera. L'almacenamientu esternu tamién permite a les persones compartir ficheros atroxaos nestos llugares esternos. Nesos casos, úsense les credenciales del propietariu del ficheru cuando'l destinatariu solicita el ficheru del almacenamientu esternu, d'esti mou asegúrase de que'l destinatariu pue acceder al ficheru compartíu.\n\nPues configurar l'almacenamientu esternu cola GUI o la llinia de comandos. Esta postrer opción forne una alministración más flexible pa configurar grupos de montaxes d'almacenamientu esternu y configurar les prioridaes del montaxe. Tienes más información disponible na documentación de la GUI d'almacenamientos esternos y la documentación de los ficheros de configuración de los almacenamientos esternos.", + "Confirm" : "Confirmar", "Unable to update this external storage config. {statusMessage}" : "Nun ye posible anovar la configuración d'esti almacenamientu esternu. {statusMessage}", "New configuration successfully saved" : "La configuración nueva guardóse correutamente", + "Enter missing credentials" : "Instroduz les credenciales que falten", "There was an error with this external storage." : "Hebo un error con esti almacenamientu esternu.", + "We were unable to check the external storage {basename}" : "Nun fuimos a comprobar l'almacenamientu esternu «{basename}»", + "Examine this faulty external storage configuration" : "Esaminar esta configuración defectuosa del almacenamientu esternu", "Open in Files" : "Abrir en Ficheros", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Hebo un error con esti almacenamientu esternu. ¿Quies revisar la configuración d'esti puntu de montaxe na páxina de configuración?", "External mount error" : "Error del montaxe esternu", + "List of external storage." : "Llista del almacenamientu esternu.", "There is no external storage configured. You can configure them in your Personal settings." : "Nun hai nengún almacenamientu esternu configuráu. Pues configurar unu na configuración personal.", "There is no external storage configured and you don't have the permission to configure them." : "Nun hai nengún almacenamientu esternu configuráu y tampoco tienes permisu pa configuralos.", "No external storage" : "Nun hai nengún almacenamientu esternu", @@ -85,26 +107,41 @@ "Scope" : "Ámbitu", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escribi pa seleicionar una cuenta o un grupu", + "(Group)" : "(Grupu)", + "Compatibility with Mac NFD encoding (slow)" : "Compatiblidá cola codificación NFD de Mac (opción lenta)", + "Enable encryption" : "Activar el cifráu", + "Enable previews" : "Activar les previsualizaciones", + "Enable sharing" : "Activar la compartición", + "Check for changes" : "Comprobar los cambeos", + "Never" : "Enxamás", + "Once every direct access" : "Una vegada cada accesu directu", + "Read only" : "Namás llectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Opción definida pola alministración", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación del estáu automática ta desactivada pola mor del númberu grande d'almacenamientos configuraos, cala pa comprobar l'estáu", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿De xuru que quies desconectar esti almacenamientu esternu? Esta aición va facer que l'almacenamientu dexe de tar disponible en Nextcloud y va facer que se desanicien los ficheros y carpetes en cualesquier veceru sincronizáu que tea conectáu mas nun se va desaniciar nengún ficheru nin carpeta del almacenamientu esternu.", + "Delete storage?" : "¿Quies desaniciar l'almacenamientu?", + "Click to recheck the configuration" : "Calca pa volver comprobar la configuración", + "Saved" : "Guardóse", + "Saving …" : "Guardando…", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "Nun se configuró nengún almacenamientu esternu y tampoco tienes permisu pa configuralos", "Open documentation" : "Abrir la documentación", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "L'almacenamientu esternu permítete montar servicios y preseos d'almacenamientu esternos como preseos d'almacenamientu esternu. Tamién pues permitir a otros que monten los sos servicios d'almacenamientu esternos.", "Folder name" : "Nome de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible pa", - "Click to recheck the configuration" : "Calca pa volver comprobar la configuración", "Add storage" : "Amestar un almacenamientu", "All people" : "Toles persones", "Advanced settings" : "Configuración avanzada", - "Type to select user or group." : "Escribir pa seleicionar un usuariu o grupu", - "Empty response from the server" : "Recibióse una rempuesta balera del sirvidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Nun se pudo acceder. Zarrar la sesión y volvi aniciala p'activar esti puntu de montaxe", - "Couldn't get the information from the remote server: {code} {type}" : "Nun se pudo consiguir la información del sirvidor remotu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nun se pudo consiguir la llista de puntos de montaxe esternos: {type}", - "There was an error with message: " : "Hebo un error col mensaxe:", - "Username" : "Nome d'usuariu", - "Username and password" : "Nome d'usuariu y contraseña", - "Name" : "Nome", - "All users" : "Tolos usuarios", - "Allow users to mount external storage" : "Permitir que los usuarios monten l'almacenamientu esternu" + "Allow people to mount external storage" : "Permitir a otros montar l'almacenamientu esternu", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Pues usar les credenciales globales p'autenticate en múltiples almacenamientos esternos que tengan les meses credenciales.", + "Error configuring OAuth1" : "Hebo un error al configurar l'OAuth1", + "Please provide a valid app key and secret." : "Forni una clave y un secretu d'aplicación válidos.", + "OAuth1" : "OAuth1", + "App key" : "Clave d'aplicación", + "App secret" : "Secretu d'aplicación" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/az.js b/apps/files_external/l10n/az.js deleted file mode 100644 index 324455d9dc8..00000000000 --- a/apps/files_external/l10n/az.js +++ /dev/null @@ -1,65 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Step 1 failed. Exception: %s" : "1-ci addım səhv oldu. İstisna: %s", - "Step 2 failed. Exception: %s" : "2-ci addım. İstisna: %s", - "External storage" : "Kənar informasıya daşıyıcısı", - "Personal" : "Şəxsi", - "System" : "Sistem", - "Grant access" : "Yetkinin verilməsi", - "Generate keys" : "Açarları generasiya et", - "Error generating key pair" : "Açar cütlüyünün generasiyası səhvi", - "All users. Type to select user or group." : "Sistem istifadəçiləri. Daxil edin ki, istifadəçi və ya qrupu seçəsiniz.", - "(group)" : "(qrup)", - "Saved" : "Saxlanıldı", - "Username" : "İstifadəçi adı", - "Password" : "Şifrə", - "Save" : "Saxla", - "Storage with id \"%i\" not found" : "\"%i\"-li depo tapılmadı", - "Invalid mount point" : "Yalnış mount nöqtəsi", - "Invalid storage backend \"%s\"" : "Yalnış depo arxasonu \"%s\"", - "None" : "Heç bir", - "App key" : "Proqram açarı", - "App secret" : "Proqram sirri", - "Client ID" : "Müştəri İD-s", - "Client secret" : "Müxtəri sirri", - "Public key" : "İctimai açar", - "Amazon S3" : "Amazon S3", - "Bucket" : "Vedrə", - "Hostname" : "Sahibadı", - "Port" : "Port", - "Region" : "Ərazi", - "Enable SSL" : "SSL-i işə sal", - "Enable Path Style" : "Ünvan stilini işə sal", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Uzaq altqovluğu", - "Secure https://" : "Təhlükəsiz https://", - "Dropbox" : "Dropbox", - "Host" : "Şəbəkədə ünvan", - "Secure ftps://" : "Təhlükəsiz ftps://", - "Local" : "Yerli", - "Location" : "Yerləşdiyiniz ünvan", - "Share" : "Yayımla", - "SMB / CIFS using OC login" : "OC login istifadə edir SMB / CIFS", - "Username as share" : "Paylaşım üçün istifadəçi adı", - "OpenStack Object Storage" : "OpenStack Obyekt Deposu", - "<b>Note:</b> " : "<b>Qeyd:</b> ", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> PHP-də cURL dəstəyi aktiv deyil və ya yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> PHP-də FTP dəstəyi aktiv deyil və ya yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> \"%s\" yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "No external storage configured" : "Kənar depo konfiq edilməyib", - "You can add external storages in the personal settings" : "Siz şəxsi quraşdırmalarınızda kənar depo əlavə edə bilərsiniz", - "Name" : "Ad", - "Storage type" : "Depo tipi", - "Scope" : "Həcm", - "External Storage" : "Kənar depo", - "Folder name" : "Qovluq adı", - "Configuration" : "Konfiqurasiya", - "Available for" : "Üçün mövcuddur", - "Add storage" : "Deponu əlavə et", - "Advanced settings" : "İrəliləmiş quraşdırmalar", - "Delete" : "Sil", - "Allow users to mount the following external storage" : "Göstərilən kənar deponun bərkidilməsi üçün istifadəçilərə izin ver" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/az.json b/apps/files_external/l10n/az.json deleted file mode 100644 index 962b0cdd244..00000000000 --- a/apps/files_external/l10n/az.json +++ /dev/null @@ -1,63 +0,0 @@ -{ "translations": { - "Step 1 failed. Exception: %s" : "1-ci addım səhv oldu. İstisna: %s", - "Step 2 failed. Exception: %s" : "2-ci addım. İstisna: %s", - "External storage" : "Kənar informasıya daşıyıcısı", - "Personal" : "Şəxsi", - "System" : "Sistem", - "Grant access" : "Yetkinin verilməsi", - "Generate keys" : "Açarları generasiya et", - "Error generating key pair" : "Açar cütlüyünün generasiyası səhvi", - "All users. Type to select user or group." : "Sistem istifadəçiləri. Daxil edin ki, istifadəçi və ya qrupu seçəsiniz.", - "(group)" : "(qrup)", - "Saved" : "Saxlanıldı", - "Username" : "İstifadəçi adı", - "Password" : "Şifrə", - "Save" : "Saxla", - "Storage with id \"%i\" not found" : "\"%i\"-li depo tapılmadı", - "Invalid mount point" : "Yalnış mount nöqtəsi", - "Invalid storage backend \"%s\"" : "Yalnış depo arxasonu \"%s\"", - "None" : "Heç bir", - "App key" : "Proqram açarı", - "App secret" : "Proqram sirri", - "Client ID" : "Müştəri İD-s", - "Client secret" : "Müxtəri sirri", - "Public key" : "İctimai açar", - "Amazon S3" : "Amazon S3", - "Bucket" : "Vedrə", - "Hostname" : "Sahibadı", - "Port" : "Port", - "Region" : "Ərazi", - "Enable SSL" : "SSL-i işə sal", - "Enable Path Style" : "Ünvan stilini işə sal", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Uzaq altqovluğu", - "Secure https://" : "Təhlükəsiz https://", - "Dropbox" : "Dropbox", - "Host" : "Şəbəkədə ünvan", - "Secure ftps://" : "Təhlükəsiz ftps://", - "Local" : "Yerli", - "Location" : "Yerləşdiyiniz ünvan", - "Share" : "Yayımla", - "SMB / CIFS using OC login" : "OC login istifadə edir SMB / CIFS", - "Username as share" : "Paylaşım üçün istifadəçi adı", - "OpenStack Object Storage" : "OpenStack Obyekt Deposu", - "<b>Note:</b> " : "<b>Qeyd:</b> ", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> PHP-də cURL dəstəyi aktiv deyil və ya yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> PHP-də FTP dəstəyi aktiv deyil və ya yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Qeyd:</b> \"%s\" yüklənməyib. %s -in birləşdirilməsi mümkün deyil. Xahiş edilir onun yüklənilməsi barəsində inzibatşınıza məlumat verəsiniz.", - "No external storage configured" : "Kənar depo konfiq edilməyib", - "You can add external storages in the personal settings" : "Siz şəxsi quraşdırmalarınızda kənar depo əlavə edə bilərsiniz", - "Name" : "Ad", - "Storage type" : "Depo tipi", - "Scope" : "Həcm", - "External Storage" : "Kənar depo", - "Folder name" : "Qovluq adı", - "Configuration" : "Konfiqurasiya", - "Available for" : "Üçün mövcuddur", - "Add storage" : "Deponu əlavə et", - "Advanced settings" : "İrəliləmiş quraşdırmalar", - "Delete" : "Sil", - "Allow users to mount the following external storage" : "Göstərilən kənar deponun bərkidilməsi üçün istifadəçilərə izin ver" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/bg.js b/apps/files_external/l10n/bg.js index 20d018ad4c6..3715372f7b2 100644 --- a/apps/files_external/l10n/bg.js +++ b/apps/files_external/l10n/bg.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Разреши достъпa", - "Error configuring OAuth1" : "Грешка при конфигурирането на OAuth1", - "Please provide a valid app key and secret." : "Моля да предоставете валиден ключ и тайна на приложението.", "Error configuring OAuth2" : "Грешка при конфигурирането на OAuth2", "Generate keys" : "Генериране на криптографски ключове", "Error generating key pair" : "Грешка при генериране на криптографски ключове", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Съвместимост с кодиране на Mac NFD (бавно)", - "Enable encryption" : "Включване на криптиране", - "Enable previews" : "Активиране на визуализациите", - "Enable sharing" : "Активиране на споделянето", - "Check for changes" : "Проверка за промени", - "Never" : "Никога", - "Once every direct access" : "Веднъж на всеки директен достъп", - "Read only" : "Само за четене", - "Disconnect" : "Прекъсване на връзката", - "Admin defined" : "Дефиниран от администратор", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматичната проверка на състоянието е деактивирана поради големия брой конфигурирани хранилища, щракнете, за проверка на състоянието", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Наистина ли искате да изключите това външно хранилище? Това ще направи хранилището недостъпно в Nextcloud и ще доведе до изтриване на тези файлове и папки на всеки синхронизиран клиент, който е свързан в момента, но няма да изтрие никакви файлове и папки от самото външно хранилище.", - "Delete storage?" : "Изтриване на хранилище?", - "Saved" : "Запазено", - "Saving …" : "Записване …", - "Save" : "Запис", "Forbidden to manage local mounts" : "Забрана за управление на локални монтажи", "Storage with ID \"%d\" not found" : "Хранилище с идентификатор \"%d\" не е намерено", "Invalid backend or authentication mechanism class" : "Невалиден сървър или клас на механизма за удостоверяване", @@ -40,9 +21,6 @@ OC.L10N.register( "Secret key" : "Секретен ключ", "Builtin" : "Вграден", "None" : "Няма", - "OAuth1" : "OAuth1", - "App key" : " Ключ на приложение", - "App secret" : "Тайна на приложение", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Тайна на клиент", @@ -102,45 +80,44 @@ OC.L10N.register( "External storage" : "Външно хранилище", "External storage support" : "Поддръжка на външно хранилище", "Adds basic external storage support" : "Добавя основна поддръжка за външно хранилище", + "Confirm" : "Потвърдете", "External mount error" : "Външна грешка при външно монтиране", "Storage type" : "Тип хранилище", "Unknown" : "Неизвестен", "Scope" : "Обхват", "Personal" : "Личен", - "System" : "Системен", + "System" : "Системна информация", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Съвместимост с кодиране на Mac NFD (бавно)", + "Enable encryption" : "Включване на криптиране", + "Enable previews" : "Активиране на визуализациите", + "Enable sharing" : "Активиране на споделянето", + "Check for changes" : "Проверка за промени", + "Never" : "Никога", + "Once every direct access" : "Веднъж на всеки директен достъп", + "Read only" : "Само за четене", + "Disconnect" : "Прекъсване на връзката", + "Admin defined" : "Дефиниран от администратор", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматичната проверка на състоянието е деактивирана поради големия брой конфигурирани хранилища, щракнете, за проверка на състоянието", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Наистина ли искате да изключите това външно хранилище? Това ще направи хранилището недостъпно в Nextcloud и ще доведе до изтриване на тези файлове и папки на всеки синхронизиран клиент, който е свързан в момента, но няма да изтрие никакви файлове и папки от самото външно хранилище.", + "Delete storage?" : "Изтриване на хранилище?", + "Click to recheck the configuration" : "Щракнете, за повторна проверка на конфигурацията", + "Saved" : "Запазено", + "Saving …" : "Записване …", + "Save" : "Запис", "No external storage configured or you don't have the permission to configure them" : "Няма конфигурирано външно хранилище или нямате право да го конфигурирате", "Open documentation" : "Отвори документацията", "Folder name" : "Име на папката", "Authentication" : "Удостоверяване", "Configuration" : "Настройки", "Available for" : "Достъпно за", - "Click to recheck the configuration" : "Щракнете, за повторна проверка на конфигурацията", "Add storage" : "Добави хранилище", "Advanced settings" : "Допълнителни настройки", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобалните идентификационни данни могат да се използват за удостоверяване с множество външни хранилища, които имат едни и същи идентификационни данни.", - "Type to select user or group." : "Въвеждане за избор на потребител или група.", - "Empty response from the server" : "Празен отговор от сървъра", - "Couldn't access. Please log out and in again to activate this mount point" : "Няма достъп. Моля да излезте и влезте отново, за да активирате тази точка на монтиране", - "Couldn't get the information from the remote server: {code} {type}" : "Не можах да получа информацията от отдалечения сървър: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не можах да получа списъка с външни точки за монтиране: {type}", - "There was an error with message: " : "Възникна грешка при съобщението:", - "external-storage" : "външно хранилище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не можа да се извлече списък с точки за монтиране на мрежово устройство на Windows: Празен отговор от сървъра", - "Please enter the credentials for the {mount} mount" : "Моля да въведете идентификационни данни за монтирането {mount}", - "Username" : "Потребител", - "Credentials saved" : "Запазване на идентификационни данни", - "Credentials saving failed" : "Неуспешно запазване на идентификационни данни", - "Credentials required" : "Нужни са идентификационни данни", - "Storage with ID \"%d\" is not user editable" : "Хранилище сидентификатор \"%d\" не може да се редактира от потребител", - "Username and password" : "Потребител и парола", - "Global credentials, user entered" : "Глобални идентификационни данни, въведен потребител", - "User entered, store in database" : "Въведен потребител, съхранява се в базата данни", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Проверете ACL на всеки файл или папка в дадена директория, за да филтрирате елементи, при които потребителят няма права за четене и ще получи наказание за производителност", - "Username as share" : "Потребителско име като споделена папка", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Това приложение позволява на администраторите да конфигурират връзки с външни доставчици на хранилище, като FTP сървъри, S3 или SWIFT хранилища на обекти, други Nextcloud сървъри, WebDAV сървъри и др. Администраторите могат да избират кои типове хранилища да активират и могат да монтират тези места за съхранение за потребител, група или цялата система. Потребителите ще видят, че в основната им директория Nextcloud се появява нова папка, до която те имат достъп и използват като всяка друга папка в Nextcloud. Външното хранилище също така позволява на потребителите да споделят файлове, съхранявани в тези външни местоположения. В тези случаи идентификационните данни за собственика на файла се използват, когато получателят поиска файла от външно хранилище, като по този начин се гарантира, че получателят има достъп до споделения файл.\n\nВъншното хранилище може да бъде конфигурирано с помощта на GUI или в командния ред. Тази втора опция предоставя на напредналия потребител по-голяма гъвкавост за конфигуриране на групови външни монтирания за съхранение и задаване на приоритети за монтиране. Повече информация е налична в документацията за GUI на външното хранилище и документацията за конфигурационния файл на външното хранилище.", - "Name" : "Име", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Външното хранилище ви позволява да монтирате външни услуги и хранилища, както и вторични устройства за съхранение на Nextcloud. Можете също така да позволите на потреби телите да монтират свои собствени външни услуги за съхранение.", - "All users" : "Всички потребители", - "Allow users to mount external storage" : "Разреши на потребителите да монтират външни хранилища" + "Error configuring OAuth1" : "Грешка при конфигурирането на OAuth1", + "Please provide a valid app key and secret." : "Моля да предоставете валиден ключ и тайна на приложението.", + "OAuth1" : "OAuth1", + "App key" : " Ключ на приложение", + "App secret" : "Тайна на приложение" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/bg.json b/apps/files_external/l10n/bg.json index c781dfe45b5..a68193cfed9 100644 --- a/apps/files_external/l10n/bg.json +++ b/apps/files_external/l10n/bg.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Разреши достъпa", - "Error configuring OAuth1" : "Грешка при конфигурирането на OAuth1", - "Please provide a valid app key and secret." : "Моля да предоставете валиден ключ и тайна на приложението.", "Error configuring OAuth2" : "Грешка при конфигурирането на OAuth2", "Generate keys" : "Генериране на криптографски ключове", "Error generating key pair" : "Грешка при генериране на криптографски ключове", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Съвместимост с кодиране на Mac NFD (бавно)", - "Enable encryption" : "Включване на криптиране", - "Enable previews" : "Активиране на визуализациите", - "Enable sharing" : "Активиране на споделянето", - "Check for changes" : "Проверка за промени", - "Never" : "Никога", - "Once every direct access" : "Веднъж на всеки директен достъп", - "Read only" : "Само за четене", - "Disconnect" : "Прекъсване на връзката", - "Admin defined" : "Дефиниран от администратор", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматичната проверка на състоянието е деактивирана поради големия брой конфигурирани хранилища, щракнете, за проверка на състоянието", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Наистина ли искате да изключите това външно хранилище? Това ще направи хранилището недостъпно в Nextcloud и ще доведе до изтриване на тези файлове и папки на всеки синхронизиран клиент, който е свързан в момента, но няма да изтрие никакви файлове и папки от самото външно хранилище.", - "Delete storage?" : "Изтриване на хранилище?", - "Saved" : "Запазено", - "Saving …" : "Записване …", - "Save" : "Запис", "Forbidden to manage local mounts" : "Забрана за управление на локални монтажи", "Storage with ID \"%d\" not found" : "Хранилище с идентификатор \"%d\" не е намерено", "Invalid backend or authentication mechanism class" : "Невалиден сървър или клас на механизма за удостоверяване", @@ -38,9 +19,6 @@ "Secret key" : "Секретен ключ", "Builtin" : "Вграден", "None" : "Няма", - "OAuth1" : "OAuth1", - "App key" : " Ключ на приложение", - "App secret" : "Тайна на приложение", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Тайна на клиент", @@ -100,45 +78,44 @@ "External storage" : "Външно хранилище", "External storage support" : "Поддръжка на външно хранилище", "Adds basic external storage support" : "Добавя основна поддръжка за външно хранилище", + "Confirm" : "Потвърдете", "External mount error" : "Външна грешка при външно монтиране", "Storage type" : "Тип хранилище", "Unknown" : "Неизвестен", "Scope" : "Обхват", "Personal" : "Личен", - "System" : "Системен", + "System" : "Системна информация", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Съвместимост с кодиране на Mac NFD (бавно)", + "Enable encryption" : "Включване на криптиране", + "Enable previews" : "Активиране на визуализациите", + "Enable sharing" : "Активиране на споделянето", + "Check for changes" : "Проверка за промени", + "Never" : "Никога", + "Once every direct access" : "Веднъж на всеки директен достъп", + "Read only" : "Само за четене", + "Disconnect" : "Прекъсване на връзката", + "Admin defined" : "Дефиниран от администратор", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматичната проверка на състоянието е деактивирана поради големия брой конфигурирани хранилища, щракнете, за проверка на състоянието", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Наистина ли искате да изключите това външно хранилище? Това ще направи хранилището недостъпно в Nextcloud и ще доведе до изтриване на тези файлове и папки на всеки синхронизиран клиент, който е свързан в момента, но няма да изтрие никакви файлове и папки от самото външно хранилище.", + "Delete storage?" : "Изтриване на хранилище?", + "Click to recheck the configuration" : "Щракнете, за повторна проверка на конфигурацията", + "Saved" : "Запазено", + "Saving …" : "Записване …", + "Save" : "Запис", "No external storage configured or you don't have the permission to configure them" : "Няма конфигурирано външно хранилище или нямате право да го конфигурирате", "Open documentation" : "Отвори документацията", "Folder name" : "Име на папката", "Authentication" : "Удостоверяване", "Configuration" : "Настройки", "Available for" : "Достъпно за", - "Click to recheck the configuration" : "Щракнете, за повторна проверка на конфигурацията", "Add storage" : "Добави хранилище", "Advanced settings" : "Допълнителни настройки", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобалните идентификационни данни могат да се използват за удостоверяване с множество външни хранилища, които имат едни и същи идентификационни данни.", - "Type to select user or group." : "Въвеждане за избор на потребител или група.", - "Empty response from the server" : "Празен отговор от сървъра", - "Couldn't access. Please log out and in again to activate this mount point" : "Няма достъп. Моля да излезте и влезте отново, за да активирате тази точка на монтиране", - "Couldn't get the information from the remote server: {code} {type}" : "Не можах да получа информацията от отдалечения сървър: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не можах да получа списъка с външни точки за монтиране: {type}", - "There was an error with message: " : "Възникна грешка при съобщението:", - "external-storage" : "външно хранилище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не можа да се извлече списък с точки за монтиране на мрежово устройство на Windows: Празен отговор от сървъра", - "Please enter the credentials for the {mount} mount" : "Моля да въведете идентификационни данни за монтирането {mount}", - "Username" : "Потребител", - "Credentials saved" : "Запазване на идентификационни данни", - "Credentials saving failed" : "Неуспешно запазване на идентификационни данни", - "Credentials required" : "Нужни са идентификационни данни", - "Storage with ID \"%d\" is not user editable" : "Хранилище сидентификатор \"%d\" не може да се редактира от потребител", - "Username and password" : "Потребител и парола", - "Global credentials, user entered" : "Глобални идентификационни данни, въведен потребител", - "User entered, store in database" : "Въведен потребител, съхранява се в базата данни", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Проверете ACL на всеки файл или папка в дадена директория, за да филтрирате елементи, при които потребителят няма права за четене и ще получи наказание за производителност", - "Username as share" : "Потребителско име като споделена папка", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Това приложение позволява на администраторите да конфигурират връзки с външни доставчици на хранилище, като FTP сървъри, S3 или SWIFT хранилища на обекти, други Nextcloud сървъри, WebDAV сървъри и др. Администраторите могат да избират кои типове хранилища да активират и могат да монтират тези места за съхранение за потребител, група или цялата система. Потребителите ще видят, че в основната им директория Nextcloud се появява нова папка, до която те имат достъп и използват като всяка друга папка в Nextcloud. Външното хранилище също така позволява на потребителите да споделят файлове, съхранявани в тези външни местоположения. В тези случаи идентификационните данни за собственика на файла се използват, когато получателят поиска файла от външно хранилище, като по този начин се гарантира, че получателят има достъп до споделения файл.\n\nВъншното хранилище може да бъде конфигурирано с помощта на GUI или в командния ред. Тази втора опция предоставя на напредналия потребител по-голяма гъвкавост за конфигуриране на групови външни монтирания за съхранение и задаване на приоритети за монтиране. Повече информация е налична в документацията за GUI на външното хранилище и документацията за конфигурационния файл на външното хранилище.", - "Name" : "Име", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Външното хранилище ви позволява да монтирате външни услуги и хранилища, както и вторични устройства за съхранение на Nextcloud. Можете също така да позволите на потреби телите да монтират свои собствени външни услуги за съхранение.", - "All users" : "Всички потребители", - "Allow users to mount external storage" : "Разреши на потребителите да монтират външни хранилища" + "Error configuring OAuth1" : "Грешка при конфигурирането на OAuth1", + "Please provide a valid app key and secret." : "Моля да предоставете валиден ключ и тайна на приложението.", + "OAuth1" : "OAuth1", + "App key" : " Ключ на приложение", + "App secret" : "Тайна на приложение" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/bn_BD.js b/apps/files_external/l10n/bn_BD.js deleted file mode 100644 index 4d99e32ffdd..00000000000 --- a/apps/files_external/l10n/bn_BD.js +++ /dev/null @@ -1,39 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Step 1 failed. Exception: %s" : "প্রথম ধাপ ব্যার্থ। ব্যতিক্রম: %s", - "External storage" : "বাহ্যিক সংরক্ষণাগার", - "Personal" : "ব্যক্তিগত", - "Grant access" : "অধিগমনের অনুমতি প্রদান কর", - "(group)" : "(গোষ্ঠি)", - "Saved" : "সংরক্ষণ করা হলো", - "Username" : "ব্যবহারকারী", - "Password" : "কূটশব্দ", - "Save" : "সংরক্ষণ", - "None" : "কোনটিই নয়", - "App key" : "অ্যাপ কি", - "App secret" : "অ্যাপ সিক্রেট", - "Client ID" : "ক্লায়েন্ট পরিচিতি", - "Amazon S3" : "আমাজন S3", - "Bucket" : "বালতি", - "Hostname" : "হোস্টনেম", - "Port" : "পোর্ট", - "Region" : "এলাকা", - "Enable SSL" : "SSL সক্রিয় কর", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "হোস্ট", - "Secure ftps://" : "ftps:// অর্জন কর", - "Local" : "স্থানীয়", - "Location" : "অবস্থান", - "ownCloud" : "ওউনক্লাউড", - "Root" : "শেকড়", - "Share" : "ভাগাভাগি কর", - "<b>Note:</b> " : "<b>দ্রষ্টব্য:</b> ", - "Name" : "রাম", - "External Storage" : "বাহ্যিক সংরক্ষণাগার", - "Folder name" : "ফোলডারের নাম", - "Configuration" : "কনফিগারেসন", - "Delete" : "মুছে" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/bn_BD.json b/apps/files_external/l10n/bn_BD.json deleted file mode 100644 index d7035b0737f..00000000000 --- a/apps/files_external/l10n/bn_BD.json +++ /dev/null @@ -1,37 +0,0 @@ -{ "translations": { - "Step 1 failed. Exception: %s" : "প্রথম ধাপ ব্যার্থ। ব্যতিক্রম: %s", - "External storage" : "বাহ্যিক সংরক্ষণাগার", - "Personal" : "ব্যক্তিগত", - "Grant access" : "অধিগমনের অনুমতি প্রদান কর", - "(group)" : "(গোষ্ঠি)", - "Saved" : "সংরক্ষণ করা হলো", - "Username" : "ব্যবহারকারী", - "Password" : "কূটশব্দ", - "Save" : "সংরক্ষণ", - "None" : "কোনটিই নয়", - "App key" : "অ্যাপ কি", - "App secret" : "অ্যাপ সিক্রেট", - "Client ID" : "ক্লায়েন্ট পরিচিতি", - "Amazon S3" : "আমাজন S3", - "Bucket" : "বালতি", - "Hostname" : "হোস্টনেম", - "Port" : "পোর্ট", - "Region" : "এলাকা", - "Enable SSL" : "SSL সক্রিয় কর", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "হোস্ট", - "Secure ftps://" : "ftps:// অর্জন কর", - "Local" : "স্থানীয়", - "Location" : "অবস্থান", - "ownCloud" : "ওউনক্লাউড", - "Root" : "শেকড়", - "Share" : "ভাগাভাগি কর", - "<b>Note:</b> " : "<b>দ্রষ্টব্য:</b> ", - "Name" : "রাম", - "External Storage" : "বাহ্যিক সংরক্ষণাগার", - "Folder name" : "ফোলডারের নাম", - "Configuration" : "কনফিগারেসন", - "Delete" : "মুছে" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/bs.js b/apps/files_external/l10n/bs.js deleted file mode 100644 index dd90e5eeb36..00000000000 --- a/apps/files_external/l10n/bs.js +++ /dev/null @@ -1,19 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Osobno", - "Saved" : "Spremljeno", - "Username" : "Korisničko ime", - "Password" : "Lozinka", - "Save" : "Spremi", - "None" : "Ništa", - "Port" : "Priključak", - "WebDAV" : "WebDAV", - "Local" : "Lokalno", - "Location" : "Lokacija", - "ownCloud" : "OwnCloud", - "Share" : "Podijeli", - "Name" : "Ime", - "Delete" : "Izbriši" -}, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_external/l10n/bs.json b/apps/files_external/l10n/bs.json deleted file mode 100644 index 815a60f1996..00000000000 --- a/apps/files_external/l10n/bs.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "translations": { - "Personal" : "Osobno", - "Saved" : "Spremljeno", - "Username" : "Korisničko ime", - "Password" : "Lozinka", - "Save" : "Spremi", - "None" : "Ništa", - "Port" : "Priključak", - "WebDAV" : "WebDAV", - "Local" : "Lokalno", - "Location" : "Lokacija", - "ownCloud" : "OwnCloud", - "Share" : "Podijeli", - "Name" : "Ime", - "Delete" : "Izbriši" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js index 5f51db413f2..57c98ac32a5 100644 --- a/apps/files_external/l10n/ca.js +++ b/apps/files_external/l10n/ca.js @@ -2,49 +2,28 @@ OC.L10N.register( "files_external", { "Grant access" : "Concedeix accés", - "Error configuring OAuth1" : "S'ha produït un error en configurar l'OAuth1", - "Please provide a valid app key and secret." : "Proporcioneu una clau d'aplicació i un secret vàlids.", "Error configuring OAuth2" : "S'ha produït un error en configurar l'OAuth2", "Generate keys" : "Genera les claus", "Error generating key pair" : "S'ha produït un error en generar el parell de claus", - "Type to select account or group." : "Escriviu per a seleccionar un compte o grup.", - "(Group)" : "(grup)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", - "Enable encryption" : "Habilita el xifratge", - "Enable previews" : "Habilita les previsualitzacions", - "Enable sharing" : "Habilita l'ús compartit", - "Check for changes" : "Comprova si hi ha canvis", - "Never" : "Mai", - "Once every direct access" : "Una vegada cada accés directe", - "Read only" : "Només lectura", - "Disconnect" : "Desconnecta", - "Admin defined" : "S'ha definit l'administrador", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats; feu clic per a comprovar l'estat", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest emmagatzematge extern? Això farà que l'emmagatzematge no estigui disponible en el Nextcloud i provocarà la supressió d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitzi, però no se suprimirà cap fitxer ni carpeta en l'emmagatzematge extern en si.", - "Delete storage?" : "Voleu suprimir l'emmagatzematge?", - "Saved" : "S'ha desat", - "Saving …" : "S'està desant…", - "Save" : "Desa", + "You are not logged in" : "No heu iniciat la sessió", + "Permission denied" : "S'ha denegat el permís", "Forbidden to manage local mounts" : "Està prohibit gestionar muntatges locals", "Storage with ID \"%d\" not found" : "No s'ha trobat l'emmagatzematge amb l'ID «%d»", "Invalid backend or authentication mechanism class" : "La classe de rerefons o de mecanisme d'autenticació no és vàlida", "Invalid mount point" : "El punt de muntatge no és vàlid", "Objectstore forbidden" : "ObjectStore prohibit", - "Invalid storage backend \"%s\"" : "El rerefons d'emmagatzematge «%s» no és vàlid", - "Not permitted to use backend \"%s\"" : "No es permet l'ús del rerefons «%s»", - "Not permitted to use authentication mechanism \"%s\"" : "No es permet l'ús del mecanisme d'autenticació «%s»", + "Invalid storage backend \"%s\"" : "El rerefons d'emmagatzematge \"%s\" no és vàlid", + "Not permitted to use backend \"%s\"" : "No es permet l'ús del rerefons \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "No es permet l'ús del mecanisme d'autenticació \"%s\"", "Unsatisfied backend parameters" : "Falten paràmetres del rerefons", "Unsatisfied authentication mechanism parameters" : "Falten paràmetres del mecanisme d'autenticació", "Insufficient data: %s" : "Dades insuficients: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "L'emmagatzematge amb l'ID «%d» no és editable per comptes no administradors", + "Storage with ID \"%d\" is not editable by non-admins" : "L'emmagatzematge amb l'ID \"%d\" no és editable per comptes no administradors", "Access key" : "Clau d'accés", "Secret key" : "Clau secreta", "Builtin" : "Integrat", "None" : "Cap", - "OAuth1" : "OAuth1", - "App key" : "Clau d'aplicació", - "App secret" : "Secret d'aplicació", "OAuth2" : "OAuth2", "Client ID" : "ID del client", "Client secret" : "Secret del client", @@ -80,13 +59,14 @@ OC.L10N.register( "Enable Path Style" : "Habilita l'estil de camí", "Legacy (v2) authentication" : "Autenticació antiga (v2)", "Enable multipart copy" : "Habilita la còpia de diverses parts", + "SSE-C encryption key" : "Clau de xifratge SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcarpeta remota", - "Secure https://" : "https:// segur", + "Secure https://" : "Protocol segur https://", "FTP" : "FTP", "Host" : "Servidor", - "Secure ftps://" : "ftps:// segur", + "Secure ftps://" : "Protocol segur ftps://", "Local" : "Local", "Location" : "Ubicació", "Nextcloud" : "Nextcloud", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "Compatibilitat amb emmagatzematge extern", "Adds basic external storage support" : "Afegeix compatibilitat bàsica amb emmagatzematge extern", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aquesta aplicació permet als administradors configurar les connexions amb proveïdors d'emmagatzematge externs, com ara servidors FTP, magatzems d'objectes S3 o SWIFT, altres servidors del Nextcloud, servidors WebDAV i molt més. L'administració pot triar quins tipus d'emmagatzematge permet i pot muntar aquestes ubicacions d'emmagatzematge per a un compte, un grup o tot el sistema. Els usuaris veuran que apareixerà una nova carpeta en la carpeta arrel del Nextcloud, que podran obrir i utilitzar com qualsevol altra carpeta del Nextcloud. L'emmagatzematge extern també permet a les persones compartir fitxers emmagatzemats en aquestes ubicacions externes. En aquests casos, s'utilitzen les credencials del propietari del fitxer quan el destinatari sol·licita el fitxer des d'un emmagatzematge extern, de manera que es garanteix que el destinatari pot accedir al fitxer compartit.\n\nL'emmagatzematge extern es pot configurar mitjançant la interfície gràfica d'usuari o des de la línia d'ordres. Aquesta segona opció proporciona a l'administració més flexibilitat per a configurar muntatges d'emmagatzematge extern en massa i establir prioritats de muntatge. Podeu obtenir més informació en la documentació de la GUI d'emmagatzematge extern i la documentació del fitxer de configuració de l'emmagatzematge extern.", - "Enter missing credentials" : "Introdueix les credencials que falten", + "Confirm" : "Confirma", + "Storage credentials" : "Credencials d'emmagatzematge", + "To access the storage, you need to provide the authentication credentials." : "Per accedir a l'emmagatzematge, heu de proporcionar les credencials d'autenticació.", + "Enter the storage login" : "Introduïu l'inici de sessió d'emmagatzematge", + "Enter the storage password" : "Introduïu la contrasenya d'emmagatzematge", "Unable to update this external storage config. {statusMessage}" : "No s'ha pogut actualitzar la configuració d'aquest emmagatzematge extern. {statusMessage}", "New configuration successfully saved" : "La configuració nova s'ha desat correctament", + "Enter missing credentials" : "Introdueix les credencials que falten", + "Credentials successfully set" : "S'han establert correctament les credencials", + "Error while setting credentials: {error}" : "Error en parametritzar les credencials: {error}", + "Checking storage …" : "S'està comprovant l'emmagatzematge …", "There was an error with this external storage." : "S'ha produït un error amb aquest emmagatzematge extern.", "We were unable to check the external storage {basename}" : "No s'ha pogut comprovar l'emmagatzematge extern {basename}", "Examine this faulty external storage configuration" : "Examina la configuració d'aquest emmagatzematge extern amb errors", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Abast", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escriviu per a seleccionar un compte o grup.", + "(Group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", + "Enable encryption" : "Habilita el xifratge", + "Enable previews" : "Habilita les previsualitzacions", + "Enable sharing" : "Habilita l'ús compartit", + "Check for changes" : "Comprova si hi ha canvis", + "Never" : "Mai", + "Once every direct access" : "Una vegada cada accés directe", + "Read only" : "Només lectura", + "Disconnect" : "Desconnecta", + "Unknown backend: {backendName}" : "Backend desconegut: {backendName}", + "Admin defined" : "S'ha definit l'administrador", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats; feu clic per a comprovar l'estat", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest emmagatzematge extern? Això farà que l'emmagatzematge no estigui disponible en el Nextcloud i provocarà la supressió d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitzi, però no se suprimirà cap fitxer ni carpeta en l'emmagatzematge extern en si.", + "Delete storage?" : "Voleu suprimir l'emmagatzematge?", + "Click to recheck the configuration" : "Feu clic per a tornar a comprovar la configuració", + "Saved" : "S'ha desat", + "Saving …" : "S'està desant…", + "Save" : "Desa", + "Failed to save global credentials" : "No s'han pogut desar les credencials globals", + "Failed to save global credentials: {message}" : "No s'han pogut desar les credencials globals: {message}", "No external storage configured or you don't have the permission to configure them" : "No hi ha cap emmagatzematge extern configurat o no teniu permís per a configurar-lo", "Open documentation" : "Obre la documentació", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "L'emmagatzematge extern us permet muntar serveis i dispositius d'emmagatzematge externs com a dispositius d'emmagatzematge secundaris del Nextcloud. També podeu permetre que les persones muntin els seus propis serveis d'emmagatzematge extern.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Autenticació", "Configuration" : "Configuració", "Available for" : "Disponibilitat", - "Click to recheck the configuration" : "Feu clic per a tornar a comprovar la configuració", "Add storage" : "Afegeix un emmagatzematge", "All people" : "Tothom", "Advanced settings" : "Paràmetres avançats", "Allow people to mount external storage" : "Permet que les persones muntin emmagatzematge extern", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les credencials globals es poden utilitzar per a autenticar-se amb diversos emmagatzematges externs que tinguin les mateixes credencials.", - "Type to select user or group." : "Escriviu per a seleccionar un usuari o grup.", - "Empty response from the server" : "El servidor ha enviat una resposta buida", - "Couldn't access. Please log out and in again to activate this mount point" : "No s'ha pogut accedir. Tanqueu la sessió i torneu a iniciar-la per a activar aquest punt de muntatge", - "Couldn't get the information from the remote server: {code} {type}" : "No s'ha pogut obtenir la informació del servidor remot: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No s'ha pogut obtenir la llista de punts de muntatge externs: {type}", - "There was an error with message: " : "S'ha produït un error amb el missatge: ", - "external-storage" : "emmagatzematge-extern", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No s'ha pogut obtenir la llista de punts de muntatge de la unitat de xarxa del Windows: el servidor ha enviat una resposta buida", - "Please enter the credentials for the {mount} mount" : "Introduïu les credencials per al muntatge {mount}", - "Username" : "Nom d'usuari", - "Credentials saved" : "S'han desat les credencials", - "Credentials saving failed" : "S'ha produït un error en desar les credencials", - "Credentials required" : "Calen credencials", - "Storage with ID \"%d\" is not user editable" : "L'emmagatzematge amb l'ID «%d» no és editable per l'usuari", - "Username and password" : "Nom d'usuari i contrasenya", - "Global credentials, user entered" : "Credencials globals, introduïdes per l'usuari", - "User entered, store in database" : "Introduït per l'usuari, emmagatzemat en la base de dades", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Si ho inhabiliteu, podreu utilitzar un sistema de fitxers sense distinció entre majúscules i minúscules, però amb una penalització de rendiment", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprova els ACL de cada fitxer o carpeta d'una carpeta per a filtrar els elements per als quals l'usuari no té permís de lectura; provoca una disminució del rendiment", - "Username as share" : "Nom d'usuari com a element compartit", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aquesta aplicació permet als administradors configurar les connexions amb proveïdors d'emmagatzematge externs, com ara servidors FTP, magatzems d'objectes S3 o SWIFT, altres servidors del Nextcloud, servidors WebDAV i molt més. Els administradors poden triar quins tipus d'emmagatzematge permeten i poden muntar aquestes ubicacions d'emmagatzematge per a un usuari, un grup o tot el sistema. Els usuaris veuran que apareixerà una nova carpeta en la carpeta arrel del Nextcloud, que podran obrir i utilitzar com qualsevol altra carpeta del Nextcloud. L'emmagatzematge extern també permet als usuaris compartir fitxers emmagatzemats en aquestes ubicacions externes. En aquests casos, s'utilitzen les credencials del propietari del fitxer quan el destinatari sol·licita el fitxer des d'un emmagatzematge extern, de manera que es garanteix que el destinatari pot accedir al fitxer compartit.\n\nL'emmagatzematge extern es pot configurar mitjançant la interfície gràfica d'usuari o des de la línia d'ordres. Aquesta segona opció proporciona als usuaris avançats més flexibilitat per a configurar muntatges d'emmagatzematge extern en massa i establir prioritats de muntatge. Podeu obtenir més informació en la documentació de la GUI d'emmagatzematge extern i la documentació del fitxer de configuració de l'emmagatzematge extern.", - "Name" : "Nom", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "L'emmagatzematge extern us permet muntar serveis i dispositius d'emmagatzematge externs com a dispositius d'emmagatzematge secundaris del Nextcloud. També podeu permetre que els usuaris muntin els seus propis serveis d'emmagatzematge extern.", - "All users" : "Tots els usuaris", - "Allow users to mount external storage" : "Permet que els usuaris muntin emmagatzematge extern" + "Error configuring OAuth1" : "S'ha produït un error en configurar l'OAuth1", + "Please provide a valid app key and secret." : "Proporcioneu una clau d'aplicació i un secret vàlids.", + "OAuth1" : "OAuth1", + "App key" : "Clau d'aplicació", + "App secret" : "Secret d'aplicació" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json index 20eabf26437..7f24e45dab3 100644 --- a/apps/files_external/l10n/ca.json +++ b/apps/files_external/l10n/ca.json @@ -1,48 +1,27 @@ { "translations": { "Grant access" : "Concedeix accés", - "Error configuring OAuth1" : "S'ha produït un error en configurar l'OAuth1", - "Please provide a valid app key and secret." : "Proporcioneu una clau d'aplicació i un secret vàlids.", "Error configuring OAuth2" : "S'ha produït un error en configurar l'OAuth2", "Generate keys" : "Genera les claus", "Error generating key pair" : "S'ha produït un error en generar el parell de claus", - "Type to select account or group." : "Escriviu per a seleccionar un compte o grup.", - "(Group)" : "(grup)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", - "Enable encryption" : "Habilita el xifratge", - "Enable previews" : "Habilita les previsualitzacions", - "Enable sharing" : "Habilita l'ús compartit", - "Check for changes" : "Comprova si hi ha canvis", - "Never" : "Mai", - "Once every direct access" : "Una vegada cada accés directe", - "Read only" : "Només lectura", - "Disconnect" : "Desconnecta", - "Admin defined" : "S'ha definit l'administrador", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats; feu clic per a comprovar l'estat", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest emmagatzematge extern? Això farà que l'emmagatzematge no estigui disponible en el Nextcloud i provocarà la supressió d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitzi, però no se suprimirà cap fitxer ni carpeta en l'emmagatzematge extern en si.", - "Delete storage?" : "Voleu suprimir l'emmagatzematge?", - "Saved" : "S'ha desat", - "Saving …" : "S'està desant…", - "Save" : "Desa", + "You are not logged in" : "No heu iniciat la sessió", + "Permission denied" : "S'ha denegat el permís", "Forbidden to manage local mounts" : "Està prohibit gestionar muntatges locals", "Storage with ID \"%d\" not found" : "No s'ha trobat l'emmagatzematge amb l'ID «%d»", "Invalid backend or authentication mechanism class" : "La classe de rerefons o de mecanisme d'autenticació no és vàlida", "Invalid mount point" : "El punt de muntatge no és vàlid", "Objectstore forbidden" : "ObjectStore prohibit", - "Invalid storage backend \"%s\"" : "El rerefons d'emmagatzematge «%s» no és vàlid", - "Not permitted to use backend \"%s\"" : "No es permet l'ús del rerefons «%s»", - "Not permitted to use authentication mechanism \"%s\"" : "No es permet l'ús del mecanisme d'autenticació «%s»", + "Invalid storage backend \"%s\"" : "El rerefons d'emmagatzematge \"%s\" no és vàlid", + "Not permitted to use backend \"%s\"" : "No es permet l'ús del rerefons \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "No es permet l'ús del mecanisme d'autenticació \"%s\"", "Unsatisfied backend parameters" : "Falten paràmetres del rerefons", "Unsatisfied authentication mechanism parameters" : "Falten paràmetres del mecanisme d'autenticació", "Insufficient data: %s" : "Dades insuficients: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "L'emmagatzematge amb l'ID «%d» no és editable per comptes no administradors", + "Storage with ID \"%d\" is not editable by non-admins" : "L'emmagatzematge amb l'ID \"%d\" no és editable per comptes no administradors", "Access key" : "Clau d'accés", "Secret key" : "Clau secreta", "Builtin" : "Integrat", "None" : "Cap", - "OAuth1" : "OAuth1", - "App key" : "Clau d'aplicació", - "App secret" : "Secret d'aplicació", "OAuth2" : "OAuth2", "Client ID" : "ID del client", "Client secret" : "Secret del client", @@ -78,13 +57,14 @@ "Enable Path Style" : "Habilita l'estil de camí", "Legacy (v2) authentication" : "Autenticació antiga (v2)", "Enable multipart copy" : "Habilita la còpia de diverses parts", + "SSE-C encryption key" : "Clau de xifratge SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcarpeta remota", - "Secure https://" : "https:// segur", + "Secure https://" : "Protocol segur https://", "FTP" : "FTP", "Host" : "Servidor", - "Secure ftps://" : "ftps:// segur", + "Secure ftps://" : "Protocol segur ftps://", "Local" : "Local", "Location" : "Ubicació", "Nextcloud" : "Nextcloud", @@ -111,9 +91,17 @@ "External storage support" : "Compatibilitat amb emmagatzematge extern", "Adds basic external storage support" : "Afegeix compatibilitat bàsica amb emmagatzematge extern", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aquesta aplicació permet als administradors configurar les connexions amb proveïdors d'emmagatzematge externs, com ara servidors FTP, magatzems d'objectes S3 o SWIFT, altres servidors del Nextcloud, servidors WebDAV i molt més. L'administració pot triar quins tipus d'emmagatzematge permet i pot muntar aquestes ubicacions d'emmagatzematge per a un compte, un grup o tot el sistema. Els usuaris veuran que apareixerà una nova carpeta en la carpeta arrel del Nextcloud, que podran obrir i utilitzar com qualsevol altra carpeta del Nextcloud. L'emmagatzematge extern també permet a les persones compartir fitxers emmagatzemats en aquestes ubicacions externes. En aquests casos, s'utilitzen les credencials del propietari del fitxer quan el destinatari sol·licita el fitxer des d'un emmagatzematge extern, de manera que es garanteix que el destinatari pot accedir al fitxer compartit.\n\nL'emmagatzematge extern es pot configurar mitjançant la interfície gràfica d'usuari o des de la línia d'ordres. Aquesta segona opció proporciona a l'administració més flexibilitat per a configurar muntatges d'emmagatzematge extern en massa i establir prioritats de muntatge. Podeu obtenir més informació en la documentació de la GUI d'emmagatzematge extern i la documentació del fitxer de configuració de l'emmagatzematge extern.", - "Enter missing credentials" : "Introdueix les credencials que falten", + "Confirm" : "Confirma", + "Storage credentials" : "Credencials d'emmagatzematge", + "To access the storage, you need to provide the authentication credentials." : "Per accedir a l'emmagatzematge, heu de proporcionar les credencials d'autenticació.", + "Enter the storage login" : "Introduïu l'inici de sessió d'emmagatzematge", + "Enter the storage password" : "Introduïu la contrasenya d'emmagatzematge", "Unable to update this external storage config. {statusMessage}" : "No s'ha pogut actualitzar la configuració d'aquest emmagatzematge extern. {statusMessage}", "New configuration successfully saved" : "La configuració nova s'ha desat correctament", + "Enter missing credentials" : "Introdueix les credencials que falten", + "Credentials successfully set" : "S'han establert correctament les credencials", + "Error while setting credentials: {error}" : "Error en parametritzar les credencials: {error}", + "Checking storage …" : "S'està comprovant l'emmagatzematge …", "There was an error with this external storage." : "S'ha produït un error amb aquest emmagatzematge extern.", "We were unable to check the external storage {basename}" : "No s'ha pogut comprovar l'emmagatzematge extern {basename}", "Examine this faulty external storage configuration" : "Examina la configuració d'aquest emmagatzematge extern amb errors", @@ -129,6 +117,28 @@ "Scope" : "Abast", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escriviu per a seleccionar un compte o grup.", + "(Group)" : "(grup)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilitat amb la codificació de Mac NFD (lent)", + "Enable encryption" : "Habilita el xifratge", + "Enable previews" : "Habilita les previsualitzacions", + "Enable sharing" : "Habilita l'ús compartit", + "Check for changes" : "Comprova si hi ha canvis", + "Never" : "Mai", + "Once every direct access" : "Una vegada cada accés directe", + "Read only" : "Només lectura", + "Disconnect" : "Desconnecta", + "Unknown backend: {backendName}" : "Backend desconegut: {backendName}", + "Admin defined" : "S'ha definit l'administrador", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats; feu clic per a comprovar l'estat", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Segur que voleu desconnectar aquest emmagatzematge extern? Això farà que l'emmagatzematge no estigui disponible en el Nextcloud i provocarà la supressió d'aquests fitxers i carpetes en qualsevol client que s'hi sincronitzi, però no se suprimirà cap fitxer ni carpeta en l'emmagatzematge extern en si.", + "Delete storage?" : "Voleu suprimir l'emmagatzematge?", + "Click to recheck the configuration" : "Feu clic per a tornar a comprovar la configuració", + "Saved" : "S'ha desat", + "Saving …" : "S'està desant…", + "Save" : "Desa", + "Failed to save global credentials" : "No s'han pogut desar les credencials globals", + "Failed to save global credentials: {message}" : "No s'han pogut desar les credencials globals: {message}", "No external storage configured or you don't have the permission to configure them" : "No hi ha cap emmagatzematge extern configurat o no teniu permís per a configurar-lo", "Open documentation" : "Obre la documentació", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "L'emmagatzematge extern us permet muntar serveis i dispositius d'emmagatzematge externs com a dispositius d'emmagatzematge secundaris del Nextcloud. També podeu permetre que les persones muntin els seus propis serveis d'emmagatzematge extern.", @@ -136,36 +146,15 @@ "Authentication" : "Autenticació", "Configuration" : "Configuració", "Available for" : "Disponibilitat", - "Click to recheck the configuration" : "Feu clic per a tornar a comprovar la configuració", "Add storage" : "Afegeix un emmagatzematge", "All people" : "Tothom", "Advanced settings" : "Paràmetres avançats", "Allow people to mount external storage" : "Permet que les persones muntin emmagatzematge extern", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les credencials globals es poden utilitzar per a autenticar-se amb diversos emmagatzematges externs que tinguin les mateixes credencials.", - "Type to select user or group." : "Escriviu per a seleccionar un usuari o grup.", - "Empty response from the server" : "El servidor ha enviat una resposta buida", - "Couldn't access. Please log out and in again to activate this mount point" : "No s'ha pogut accedir. Tanqueu la sessió i torneu a iniciar-la per a activar aquest punt de muntatge", - "Couldn't get the information from the remote server: {code} {type}" : "No s'ha pogut obtenir la informació del servidor remot: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No s'ha pogut obtenir la llista de punts de muntatge externs: {type}", - "There was an error with message: " : "S'ha produït un error amb el missatge: ", - "external-storage" : "emmagatzematge-extern", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No s'ha pogut obtenir la llista de punts de muntatge de la unitat de xarxa del Windows: el servidor ha enviat una resposta buida", - "Please enter the credentials for the {mount} mount" : "Introduïu les credencials per al muntatge {mount}", - "Username" : "Nom d'usuari", - "Credentials saved" : "S'han desat les credencials", - "Credentials saving failed" : "S'ha produït un error en desar les credencials", - "Credentials required" : "Calen credencials", - "Storage with ID \"%d\" is not user editable" : "L'emmagatzematge amb l'ID «%d» no és editable per l'usuari", - "Username and password" : "Nom d'usuari i contrasenya", - "Global credentials, user entered" : "Credencials globals, introduïdes per l'usuari", - "User entered, store in database" : "Introduït per l'usuari, emmagatzemat en la base de dades", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Si ho inhabiliteu, podreu utilitzar un sistema de fitxers sense distinció entre majúscules i minúscules, però amb una penalització de rendiment", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprova els ACL de cada fitxer o carpeta d'una carpeta per a filtrar els elements per als quals l'usuari no té permís de lectura; provoca una disminució del rendiment", - "Username as share" : "Nom d'usuari com a element compartit", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aquesta aplicació permet als administradors configurar les connexions amb proveïdors d'emmagatzematge externs, com ara servidors FTP, magatzems d'objectes S3 o SWIFT, altres servidors del Nextcloud, servidors WebDAV i molt més. Els administradors poden triar quins tipus d'emmagatzematge permeten i poden muntar aquestes ubicacions d'emmagatzematge per a un usuari, un grup o tot el sistema. Els usuaris veuran que apareixerà una nova carpeta en la carpeta arrel del Nextcloud, que podran obrir i utilitzar com qualsevol altra carpeta del Nextcloud. L'emmagatzematge extern també permet als usuaris compartir fitxers emmagatzemats en aquestes ubicacions externes. En aquests casos, s'utilitzen les credencials del propietari del fitxer quan el destinatari sol·licita el fitxer des d'un emmagatzematge extern, de manera que es garanteix que el destinatari pot accedir al fitxer compartit.\n\nL'emmagatzematge extern es pot configurar mitjançant la interfície gràfica d'usuari o des de la línia d'ordres. Aquesta segona opció proporciona als usuaris avançats més flexibilitat per a configurar muntatges d'emmagatzematge extern en massa i establir prioritats de muntatge. Podeu obtenir més informació en la documentació de la GUI d'emmagatzematge extern i la documentació del fitxer de configuració de l'emmagatzematge extern.", - "Name" : "Nom", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "L'emmagatzematge extern us permet muntar serveis i dispositius d'emmagatzematge externs com a dispositius d'emmagatzematge secundaris del Nextcloud. També podeu permetre que els usuaris muntin els seus propis serveis d'emmagatzematge extern.", - "All users" : "Tots els usuaris", - "Allow users to mount external storage" : "Permet que els usuaris muntin emmagatzematge extern" + "Error configuring OAuth1" : "S'ha produït un error en configurar l'OAuth1", + "Please provide a valid app key and secret." : "Proporcioneu una clau d'aplicació i un secret vàlids.", + "OAuth1" : "OAuth1", + "App key" : "Clau d'aplicació", + "App secret" : "Secret d'aplicació" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js index 1aab7dcb7df..b9ff4205bed 100644 --- a/apps/files_external/l10n/cs.js +++ b/apps/files_external/l10n/cs.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Udělit přístup", - "Error configuring OAuth1" : "Chyba při nastavování OAuth1", - "Please provide a valid app key and secret." : "Zadejte platný klíč aplikace a tajné heslo.", "Error configuring OAuth2" : "Chyba při nastavování OAuth2", "Generate keys" : "Vytvořit klíče", "Error generating key pair" : "Chyba při vytváření páru klíčů", - "Type to select account or group." : "Uživatele či skupinu vyberete psaním.", - "(Group)" : "(Skupina)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)", - "Enable encryption" : "Šifrovat", - "Enable previews" : "Zapnout náhledy", - "Enable sharing" : "Povolit sdílení", - "Check for changes" : "Zkontrolovat změny", - "Never" : "Nikdy", - "Once every direct access" : "Jednou pro každý přímý přístup", - "Read only" : "Pouze pro čtení", - "Disconnect" : "Odpojit", - "Admin defined" : "Nastaveno správcem", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatické zjišťování stavu je vypnuté z důvodu velkého počtu nastavených úložišť – pokud chcete stav zjistit jednorázově, klikněte", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Opravdu chcete toto externí úložiště odpojit? Způsobí že toto úložiště nebude k dispozici v Nextcloud a povede to ke smazání těchto souborů a složek na jakémkoli synchronizačním klientovi, který je v tuto chvíli připojen, ale nesmaže žádné soubory a složky na externím úložišti jako takovém.", - "Delete storage?" : "Odstranit úložiště?", - "Saved" : "Uloženo", - "Saving …" : "Ukládání…", - "Save" : "Uložit", + "You are not logged in" : "Nejste přihlášení", + "Permission denied" : "Oprávnění zamítnuto", "Forbidden to manage local mounts" : "Odepřeno spravovat místní připojení (mount)", "Storage with ID \"%d\" not found" : "Úložiště s identifikátorem „%d“ nebylo nalezeno", "Invalid backend or authentication mechanism class" : "Neplatná podpůrná vrstva nebo třída ověřovacího mechanismu", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Tajný klíč", "Builtin" : "Vestavěné", "None" : "Žádné", - "OAuth1" : "OAuth1", - "App key" : "Klíč aplikace", - "App secret" : "Tajemství aplikace", "OAuth2" : "OAuth2", "Client ID" : "Identif. klienta", "Client secret" : "Klientské tajemství", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Povolit Path Style", "Legacy (v2) authentication" : "Starší (v2) ověřování", "Enable multipart copy" : "Povolit kopii o více částech", + "SSE-C encryption key" : "klíč šifrování SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Federovaná podsložka", @@ -112,10 +92,18 @@ OC.L10N.register( "External storage" : "Externí úložiště", "External storage support" : "Podpora pro externí úložiště", "Adds basic external storage support" : "Přidá základní podporu externí úložiště", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům konfigurovat připojení k externím poskytovatelům úložišť, jako jsou servery FTP, úložiště objektů S3 nebo SWIFT, jiné servery Nextcloud, servery WebDAV a další. Správa může vybrat, které typy úložišť povolí, a může tato úložiště připojit pro účet, skupinu nebo celý systém. Uživatelům se v kořenovém adresáři služby Nextcloud objeví nová složka, ke které mohou přistupovat a používat ji jako jakoukoli jinou složku Nextcloudu. Externí úložiště také umožňuje lidem sdílet soubory uložené v těchto externích umístěních. V těchto případech se při žádosti příjemce o soubor z externího úložiště použijí přihlašovací údaje vlastníka souboru, čímž je zajištěno, že příjemce bude mít ke sdílenému souboru přístup.\n\nExterní úložiště lze konfigurovat pomocí grafického uživatelského rozhraní nebo příkazového řádku. Tato druhá možnost poskytuje správci větší flexibilitu při konfiguraci hromadného připojování externího úložiště a nastavení priorit připojení. Další informace jsou k dispozici v dokumentaci ke grafickému rozhraní externího úložiště a v dokumentaci ke konfiguračnímu souboru externího úložiště.", - "Enter missing credentials" : "Zadejte chybějící přihlašovací údaje", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům nastavovat připojení k externím poskytovatelům úložišť, jako jsou servery FTP, úložiště objektů S3 nebo SWIFT, jiné servery Nextcloud, servery WebDAV a další. Správa může vybrat, které typy úložišť povolí, a může tato úložiště připojit pro účet, skupinu nebo celý systém. Uživatelům se v kořenovém adresáři služby Nextcloud objeví nová složka, ke které mohou přistupovat a používat ji jako jakoukoli jinou složku Nextcloudu. Externí úložiště také umožňuje lidem sdílet soubory uložené v těchto externích umístěních. V těchto případech se při žádosti příjemce o soubor z externího úložiště použijí přihlašovací údaje vlastníka souboru, čímž je zajištěno, že příjemce bude mít ke sdílenému souboru přístup.\n\nExterní úložiště lze nastavovat pomocí grafického uživatelského rozhraní nebo příkazového řádku. Tato druhá možnost poskytuje správci větší flexibilitu při konfiguraci hromadného připojování externího úložiště a nastavení priorit připojení. Další informace jsou k dispozici v dokumentaci ke grafickému rozhraní externího úložiště a v dokumentaci k souboru s nastaveními externího úložiště.", + "Confirm" : "Potvrdit", + "Storage credentials" : "Přihlašovací údaje k úložišti", + "To access the storage, you need to provide the authentication credentials." : "Abyste mohli přistupovat k úložišti, je třeba poskytnout ověřovací přihlašovací údaje.", + "Enter the storage login" : "Zadejte přihlašovací jméno k úložiti", + "Enter the storage password" : "Zadejte heslo k úložišti", "Unable to update this external storage config. {statusMessage}" : "Nedaří se zaktualizovat nastavení pro externí úložiště. {statusMessage}", "New configuration successfully saved" : "Nové nastavení úspěšně uloženo", + "Enter missing credentials" : "Zadejte chybějící přihlašovací údaje", + "Credentials successfully set" : "Přihlašovací údaje úspěšně nastaveny", + "Error while setting credentials: {error}" : "Chyba při nastavování přihlašovacích údajů: {error}", + "Checking storage …" : "Kontrola úložiště…", "There was an error with this external storage." : "U tohoto externího úložiště došlo k chybě.", "We were unable to check the external storage {basename}" : "Nepodařilo se zkontrolovat externí úložiště {basename}", "Examine this faulty external storage configuration" : "Prozkoumejte nastavení tohoto vadného externího úložiště", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Rozsah", "Personal" : "Osobní", "System" : "Systémové", + "Type to select account or group." : "Uživatele či skupinu vyberete psaním.", + "(Group)" : "(Skupina)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)", + "Enable encryption" : "Šifrovat", + "Enable previews" : "Zapnout náhledy", + "Enable sharing" : "Povolit sdílení", + "Check for changes" : "Zkontrolovat změny", + "Never" : "Nikdy", + "Once every direct access" : "Jednou pro každý přímý přístup", + "Read only" : "Pouze pro čtení", + "Disconnect" : "Odpojit", + "Unknown backend: {backendName}" : "Neznámá podpůrná vrstva: {backendName}", + "Admin defined" : "Nastaveno správcem", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatické zjišťování stavu je vypnuté z důvodu velkého počtu nastavených úložišť – pokud chcete stav zjistit jednorázově, klikněte", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Opravdu chcete toto externí úložiště odpojit? Způsobí že toto úložiště nebude k dispozici v Nextcloud a povede to ke smazání těchto souborů a složek na jakémkoli synchronizačním klientovi, který je v tuto chvíli připojen, ale nesmaže žádné soubory a složky na externím úložišti jako takovém.", + "Delete storage?" : "Odstranit úložiště?", + "Click to recheck the configuration" : "Klikněte pro opětovnou kontrolu nastavení", + "Saved" : "Uloženo", + "Saving …" : "Ukládání…", + "Save" : "Uložit", + "Failed to save global credentials" : "Nepodařilo se uložit globální přihlašovací údaje", + "Failed to save global credentials: {message}" : "Nepodařilo se uložit globální přihlašovací údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Není nastavené žádné externí úložiště nebo nemáte oprávnění taková nastavovat", "Open documentation" : "Otevřít dokumentaci", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externí úložiště umožňuje připojit externí úložné služby a zařízení jako sekundární úložná zařízení Nextcloud. Můžete také povolit lidem připojit jejich vlastní externí úložné služby.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Ověření", "Configuration" : "Nastavení", "Available for" : "Dostupné pro", - "Click to recheck the configuration" : "Klikněte pro opětovnou kontrolu nastavení", "Add storage" : "Přidat úložiště", - "All people" : "Všichni lidi", + "All people" : "Všichni lidé", "Advanced settings" : "Pokročilá nastavení", "Allow people to mount external storage" : "Povolit lidem připojovat externí úložiště", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globální přihlašovací údaje je možné použít pro ověření se vůči vícero externím úložištím, která mají stejné přihlašovací údaje.", - "Type to select user or group." : "Uživatele či skupinu vyberete psaním.", - "Empty response from the server" : "Prázdná odpověď ze serveru", - "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se odhlaste a znovu přihlaste", - "Couldn't get the information from the remote server: {code} {type}" : "Nedaří se obdržet informaci ze vzdáleného serveru: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nepodařilo se získat seznam vzdálených přípojných bodů: {type}", - "There was an error with message: " : "Došlo k chybě s tímto hlášením:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nepodařilo se obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", - "Please enter the credentials for the {mount} mount" : "Zadejte přihlašovací údaje k přípojnému bodu {mount}", - "Username" : "Uživatelské jméno", - "Credentials saved" : "Přihlašovací údaje uloženy", - "Credentials saving failed" : "Uložení přihlašovacích údajů se nezdařilo", - "Credentials required" : "Vyžadovány přihlašovací údaje", - "Storage with ID \"%d\" is not user editable" : "Úložiště s identifikátorem „%d“ není uživatelsky upravitelné", - "Username and password" : "Uživatelské jméno a heslo", - "Global credentials, user entered" : "Globální přihlašovací údaje, zadané uživatelem", - "User entered, store in database" : "Uživatel zadán, uložit v databázi", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Vypnutí tohoto umožní používat souborový systém, rozlišující VELKÁ/malá písmena, ale za cenu snížení výkonu", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrola ACL seznamů každého souboru či podsložky uvnitř složky pro vyfiltrování položek, ke kterým uživatel nemá oprávnění pro čtení, poznamená výkon", - "Username as share" : "Uživatelské jméno jako sdílená složka", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, jiné Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Externí úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nExterní úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k externím úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro externí úložiště.", - "Name" : "Název", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externí úložiště umožňuje připojit úložiště externích služeb a zařízení jako vedlejší úložná zařízení pro Nextcloud. Je také možné umožnit uživatelům připojovat jejich vlastní externí úložiště.", - "All users" : "Všichni uživatelé", - "Allow users to mount external storage" : "Povolit uživatelům připojení externího úložiště" + "Error configuring OAuth1" : "Chyba při nastavování OAuth1", + "Please provide a valid app key and secret." : "Zadejte platný klíč aplikace a tajné heslo.", + "OAuth1" : "OAuth1", + "App key" : "Klíč aplikace", + "App secret" : "Tajemství aplikace" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json index b0b04feb07f..54a28c4f89d 100644 --- a/apps/files_external/l10n/cs.json +++ b/apps/files_external/l10n/cs.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Udělit přístup", - "Error configuring OAuth1" : "Chyba při nastavování OAuth1", - "Please provide a valid app key and secret." : "Zadejte platný klíč aplikace a tajné heslo.", "Error configuring OAuth2" : "Chyba při nastavování OAuth2", "Generate keys" : "Vytvořit klíče", "Error generating key pair" : "Chyba při vytváření páru klíčů", - "Type to select account or group." : "Uživatele či skupinu vyberete psaním.", - "(Group)" : "(Skupina)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)", - "Enable encryption" : "Šifrovat", - "Enable previews" : "Zapnout náhledy", - "Enable sharing" : "Povolit sdílení", - "Check for changes" : "Zkontrolovat změny", - "Never" : "Nikdy", - "Once every direct access" : "Jednou pro každý přímý přístup", - "Read only" : "Pouze pro čtení", - "Disconnect" : "Odpojit", - "Admin defined" : "Nastaveno správcem", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatické zjišťování stavu je vypnuté z důvodu velkého počtu nastavených úložišť – pokud chcete stav zjistit jednorázově, klikněte", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Opravdu chcete toto externí úložiště odpojit? Způsobí že toto úložiště nebude k dispozici v Nextcloud a povede to ke smazání těchto souborů a složek na jakémkoli synchronizačním klientovi, který je v tuto chvíli připojen, ale nesmaže žádné soubory a složky na externím úložišti jako takovém.", - "Delete storage?" : "Odstranit úložiště?", - "Saved" : "Uloženo", - "Saving …" : "Ukládání…", - "Save" : "Uložit", + "You are not logged in" : "Nejste přihlášení", + "Permission denied" : "Oprávnění zamítnuto", "Forbidden to manage local mounts" : "Odepřeno spravovat místní připojení (mount)", "Storage with ID \"%d\" not found" : "Úložiště s identifikátorem „%d“ nebylo nalezeno", "Invalid backend or authentication mechanism class" : "Neplatná podpůrná vrstva nebo třída ověřovacího mechanismu", @@ -40,9 +22,6 @@ "Secret key" : "Tajný klíč", "Builtin" : "Vestavěné", "None" : "Žádné", - "OAuth1" : "OAuth1", - "App key" : "Klíč aplikace", - "App secret" : "Tajemství aplikace", "OAuth2" : "OAuth2", "Client ID" : "Identif. klienta", "Client secret" : "Klientské tajemství", @@ -78,6 +57,7 @@ "Enable Path Style" : "Povolit Path Style", "Legacy (v2) authentication" : "Starší (v2) ověřování", "Enable multipart copy" : "Povolit kopii o více částech", + "SSE-C encryption key" : "klíč šifrování SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Federovaná podsložka", @@ -110,10 +90,18 @@ "External storage" : "Externí úložiště", "External storage support" : "Podpora pro externí úložiště", "Adds basic external storage support" : "Přidá základní podporu externí úložiště", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům konfigurovat připojení k externím poskytovatelům úložišť, jako jsou servery FTP, úložiště objektů S3 nebo SWIFT, jiné servery Nextcloud, servery WebDAV a další. Správa může vybrat, které typy úložišť povolí, a může tato úložiště připojit pro účet, skupinu nebo celý systém. Uživatelům se v kořenovém adresáři služby Nextcloud objeví nová složka, ke které mohou přistupovat a používat ji jako jakoukoli jinou složku Nextcloudu. Externí úložiště také umožňuje lidem sdílet soubory uložené v těchto externích umístěních. V těchto případech se při žádosti příjemce o soubor z externího úložiště použijí přihlašovací údaje vlastníka souboru, čímž je zajištěno, že příjemce bude mít ke sdílenému souboru přístup.\n\nExterní úložiště lze konfigurovat pomocí grafického uživatelského rozhraní nebo příkazového řádku. Tato druhá možnost poskytuje správci větší flexibilitu při konfiguraci hromadného připojování externího úložiště a nastavení priorit připojení. Další informace jsou k dispozici v dokumentaci ke grafickému rozhraní externího úložiště a v dokumentaci ke konfiguračnímu souboru externího úložiště.", - "Enter missing credentials" : "Zadejte chybějící přihlašovací údaje", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům nastavovat připojení k externím poskytovatelům úložišť, jako jsou servery FTP, úložiště objektů S3 nebo SWIFT, jiné servery Nextcloud, servery WebDAV a další. Správa může vybrat, které typy úložišť povolí, a může tato úložiště připojit pro účet, skupinu nebo celý systém. Uživatelům se v kořenovém adresáři služby Nextcloud objeví nová složka, ke které mohou přistupovat a používat ji jako jakoukoli jinou složku Nextcloudu. Externí úložiště také umožňuje lidem sdílet soubory uložené v těchto externích umístěních. V těchto případech se při žádosti příjemce o soubor z externího úložiště použijí přihlašovací údaje vlastníka souboru, čímž je zajištěno, že příjemce bude mít ke sdílenému souboru přístup.\n\nExterní úložiště lze nastavovat pomocí grafického uživatelského rozhraní nebo příkazového řádku. Tato druhá možnost poskytuje správci větší flexibilitu při konfiguraci hromadného připojování externího úložiště a nastavení priorit připojení. Další informace jsou k dispozici v dokumentaci ke grafickému rozhraní externího úložiště a v dokumentaci k souboru s nastaveními externího úložiště.", + "Confirm" : "Potvrdit", + "Storage credentials" : "Přihlašovací údaje k úložišti", + "To access the storage, you need to provide the authentication credentials." : "Abyste mohli přistupovat k úložišti, je třeba poskytnout ověřovací přihlašovací údaje.", + "Enter the storage login" : "Zadejte přihlašovací jméno k úložiti", + "Enter the storage password" : "Zadejte heslo k úložišti", "Unable to update this external storage config. {statusMessage}" : "Nedaří se zaktualizovat nastavení pro externí úložiště. {statusMessage}", "New configuration successfully saved" : "Nové nastavení úspěšně uloženo", + "Enter missing credentials" : "Zadejte chybějící přihlašovací údaje", + "Credentials successfully set" : "Přihlašovací údaje úspěšně nastaveny", + "Error while setting credentials: {error}" : "Chyba při nastavování přihlašovacích údajů: {error}", + "Checking storage …" : "Kontrola úložiště…", "There was an error with this external storage." : "U tohoto externího úložiště došlo k chybě.", "We were unable to check the external storage {basename}" : "Nepodařilo se zkontrolovat externí úložiště {basename}", "Examine this faulty external storage configuration" : "Prozkoumejte nastavení tohoto vadného externího úložiště", @@ -129,6 +117,28 @@ "Scope" : "Rozsah", "Personal" : "Osobní", "System" : "Systémové", + "Type to select account or group." : "Uživatele či skupinu vyberete psaním.", + "(Group)" : "(Skupina)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD kódováním (pomalé)", + "Enable encryption" : "Šifrovat", + "Enable previews" : "Zapnout náhledy", + "Enable sharing" : "Povolit sdílení", + "Check for changes" : "Zkontrolovat změny", + "Never" : "Nikdy", + "Once every direct access" : "Jednou pro každý přímý přístup", + "Read only" : "Pouze pro čtení", + "Disconnect" : "Odpojit", + "Unknown backend: {backendName}" : "Neznámá podpůrná vrstva: {backendName}", + "Admin defined" : "Nastaveno správcem", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatické zjišťování stavu je vypnuté z důvodu velkého počtu nastavených úložišť – pokud chcete stav zjistit jednorázově, klikněte", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Opravdu chcete toto externí úložiště odpojit? Způsobí že toto úložiště nebude k dispozici v Nextcloud a povede to ke smazání těchto souborů a složek na jakémkoli synchronizačním klientovi, který je v tuto chvíli připojen, ale nesmaže žádné soubory a složky na externím úložišti jako takovém.", + "Delete storage?" : "Odstranit úložiště?", + "Click to recheck the configuration" : "Klikněte pro opětovnou kontrolu nastavení", + "Saved" : "Uloženo", + "Saving …" : "Ukládání…", + "Save" : "Uložit", + "Failed to save global credentials" : "Nepodařilo se uložit globální přihlašovací údaje", + "Failed to save global credentials: {message}" : "Nepodařilo se uložit globální přihlašovací údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Není nastavené žádné externí úložiště nebo nemáte oprávnění taková nastavovat", "Open documentation" : "Otevřít dokumentaci", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externí úložiště umožňuje připojit externí úložné služby a zařízení jako sekundární úložná zařízení Nextcloud. Můžete také povolit lidem připojit jejich vlastní externí úložné služby.", @@ -136,36 +146,15 @@ "Authentication" : "Ověření", "Configuration" : "Nastavení", "Available for" : "Dostupné pro", - "Click to recheck the configuration" : "Klikněte pro opětovnou kontrolu nastavení", "Add storage" : "Přidat úložiště", - "All people" : "Všichni lidi", + "All people" : "Všichni lidé", "Advanced settings" : "Pokročilá nastavení", "Allow people to mount external storage" : "Povolit lidem připojovat externí úložiště", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globální přihlašovací údaje je možné použít pro ověření se vůči vícero externím úložištím, která mají stejné přihlašovací údaje.", - "Type to select user or group." : "Uživatele či skupinu vyberete psaním.", - "Empty response from the server" : "Prázdná odpověď ze serveru", - "Couldn't access. Please log out and in again to activate this mount point" : "Nelze připojit. Pro aktivaci tohoto přípojného bodu se odhlaste a znovu přihlaste", - "Couldn't get the information from the remote server: {code} {type}" : "Nedaří se obdržet informaci ze vzdáleného serveru: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nepodařilo se získat seznam vzdálených přípojných bodů: {type}", - "There was an error with message: " : "Došlo k chybě s tímto hlášením:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nepodařilo se obdržet seznam síťových úložišť systému Windows: prázdná odpověď serveru", - "Please enter the credentials for the {mount} mount" : "Zadejte přihlašovací údaje k přípojnému bodu {mount}", - "Username" : "Uživatelské jméno", - "Credentials saved" : "Přihlašovací údaje uloženy", - "Credentials saving failed" : "Uložení přihlašovacích údajů se nezdařilo", - "Credentials required" : "Vyžadovány přihlašovací údaje", - "Storage with ID \"%d\" is not user editable" : "Úložiště s identifikátorem „%d“ není uživatelsky upravitelné", - "Username and password" : "Uživatelské jméno a heslo", - "Global credentials, user entered" : "Globální přihlašovací údaje, zadané uživatelem", - "User entered, store in database" : "Uživatel zadán, uložit v databázi", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Vypnutí tohoto umožní používat souborový systém, rozlišující VELKÁ/malá písmena, ale za cenu snížení výkonu", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrola ACL seznamů každého souboru či podsložky uvnitř složky pro vyfiltrování položek, ke kterým uživatel nemá oprávnění pro čtení, poznamená výkon", - "Username as share" : "Uživatelské jméno jako sdílená složka", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tato aplikace umožňuje správcům nastavit propojení na poskytovatele vnějších úložišť, jako například FTP servery, S3 nebo SWIFT objektová úložiště, Google Drive, Dropbox, jiné Nextcloud servery, WebDAV servery a další. Správci mohou zvolit které typy úložiště zapnout a mohou je připojit pro uživatele, skupinu nebo celý systém. Uživatelé uvidí novou složku v jejich kořenové Nextcloud složce, do které mohou přistupovat a používat jako kteroukoli jinou Nextcloud složku. Externí úložiště také umožňuje uživatelům sdílet na něm uložené soubory. V takových případech jsou použity přihlašovací údaje vlastníka souboru když si příjemce vyžádá soubor z vnějšího úložiště, čímž je zajištěno že příjemce může přistupovat ke sdílenému souboru.\n\nExterní úložiště je možné nastavit pomocí webového rozhraní nebo z příkazového řádku. Tato druhá možnost poskytuje pokročilému uživateli více přizpůsobivosti pro nastavování vícero připojení vnějších úložišť a nastavení priorit připojování. Další informace jsou k dispozici v dokumentaci k externím úložištím ve webovém rozhraní a dokumentaci k souboru s nastaveními pro externí úložiště.", - "Name" : "Název", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externí úložiště umožňuje připojit úložiště externích služeb a zařízení jako vedlejší úložná zařízení pro Nextcloud. Je také možné umožnit uživatelům připojovat jejich vlastní externí úložiště.", - "All users" : "Všichni uživatelé", - "Allow users to mount external storage" : "Povolit uživatelům připojení externího úložiště" + "Error configuring OAuth1" : "Chyba při nastavování OAuth1", + "Please provide a valid app key and secret." : "Zadejte platný klíč aplikace a tajné heslo.", + "OAuth1" : "OAuth1", + "App key" : "Klíč aplikace", + "App secret" : "Tajemství aplikace" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/cy_GB.js b/apps/files_external/l10n/cy_GB.js deleted file mode 100644 index 6faf7f87fae..00000000000 --- a/apps/files_external/l10n/cy_GB.js +++ /dev/null @@ -1,16 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Personol", - "Username" : "Enw defnyddiwr", - "Password" : "Cyfrinair", - "Save" : "Cadw", - "None" : "Dim", - "URL" : "URL", - "Location" : "Lleoliad", - "ownCloud" : "ownCloud", - "Share" : "Rhannu", - "Name" : "Enw", - "Delete" : "Dileu" -}, -"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); diff --git a/apps/files_external/l10n/cy_GB.json b/apps/files_external/l10n/cy_GB.json deleted file mode 100644 index acc75b9afbb..00000000000 --- a/apps/files_external/l10n/cy_GB.json +++ /dev/null @@ -1,14 +0,0 @@ -{ "translations": { - "Personal" : "Personol", - "Username" : "Enw defnyddiwr", - "Password" : "Cyfrinair", - "Save" : "Cadw", - "None" : "Dim", - "URL" : "URL", - "Location" : "Lleoliad", - "ownCloud" : "ownCloud", - "Share" : "Rhannu", - "Name" : "Enw", - "Delete" : "Dileu" -},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js index 3ece80342cc..066ce7ee834 100644 --- a/apps/files_external/l10n/da.js +++ b/apps/files_external/l10n/da.js @@ -2,33 +2,15 @@ OC.L10N.register( "files_external", { "Grant access" : "Godkend adgang", - "Error configuring OAuth1" : "Fejl under konfiguration af OAuth1", - "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", "Error configuring OAuth2" : "Fejl under konfiguration af OAuth2", "Generate keys" : "Opret nøgler.", "Error generating key pair" : "Fejl under oprettelse af nøglepar", - "Type to select account or group." : "Indtast for at vælge konto eller gruppe.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", - "Enable encryption" : "Slå kryptering til", - "Enable previews" : "Slå forhåndsvisninger til", - "Enable sharing" : "Slå deling til", - "Check for changes" : "Tjek for ændringer", - "Never" : "Aldrig", - "Once every direct access" : "Kun ved hver direkte tilgang", - "Read only" : "Skrivebeskyttet", - "Disconnect" : "Frakobl", - "Admin defined" : "Bestemt af administrator", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontrol er deaktiveret på grund af det store antal konfigurerede lager, klik for at kontrollere status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på, at du vil frakoble dette eksterne lager? Det vil gøre lageret utilgængeligt i Nextcloud og vil føre til en sletning af disse filer og mapper på enhver synkroniseringsklient, der i øjeblikket er tilsluttet, men vil ikke slette nogen filer og mapper på selve det eksterne lager.", - "Delete storage?" : "Slet lager?", - "Saved" : "Gemt", - "Saving …" : "Gemmer…", - "Save" : "Gem", + "You are not logged in" : "Du er ikke logget på", + "Permission denied" : "Tilladelse nægtet", "Forbidden to manage local mounts" : "Forbudt at administrere lokale mounts", "Storage with ID \"%d\" not found" : "Lagring med ID \"%d\" ikke fundet", "Invalid backend or authentication mechanism class" : "Ugyldig backend eller klasse for godkendelsesmekanisme", - "Invalid mount point" : "Fokert monteringspunkt", + "Invalid mount point" : "Ugyldigt monteringspunkt", "Objectstore forbidden" : "Objectstore er forbudt", "Invalid storage backend \"%s\"" : "Forkert lager til backend \"%s\"en", "Not permitted to use backend \"%s\"" : "Ikke tilladt at bruge backend \"%s\"", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Hemmelig nøgle", "Builtin" : "Indbygget", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "App-nøgle", - "App secret" : "App-hemmelighed", "OAuth2" : "OAuth2", "Client ID" : "Klient-ID", "Client secret" : "Klient hemmelighed", @@ -57,11 +36,11 @@ OC.L10N.register( "Domain" : "Domæne", "Rackspace" : "Hyldeplads", "API key" : "API nøgle", - "Global credentials" : "Globale brugeroplysninger", - "Log-in credentials, save in database" : "Log-in brugeroplysninger, gem i database", - "Login and password" : "Login og password", - "Log-in credentials, save in session" : "Log-in brugeroplysninger, gem i session", - "Global credentials, manually entered" : "Globale brugeroplysninger, indtastet manuelt", + "Global credentials" : "Globale legitimationsoplysninger", + "Log-in credentials, save in database" : "Log på legitimationsoplysninger, gem i database", + "Login and password" : "Login og adgangskode", + "Log-in credentials, save in session" : "Log på legitimationsoplysninger, gem i session", + "Global credentials, manually entered" : "Globale legitimationsoplysninger, indtastet manuelt", "Manually entered, store in database" : "Manuelt indtastet, gem i databasen", "RSA public key" : "RSA offentlig nøgle", "Public key" : "Offentlig nøgle", @@ -76,10 +55,11 @@ OC.L10N.register( "Port" : "Port", "Region" : "Region", "Storage Class" : "Lagringsklassificering", - "Enable SSL" : "Aktivér SSL", - "Enable Path Style" : "Aktivér stil for sti", + "Enable SSL" : "Aktiver SSL", + "Enable Path Style" : "Aktiver stil for sti", "Legacy (v2) authentication" : "Ældre (v2) godkendelse", "Enable multipart copy" : "Aktiver flerdelt kopi", + "SSE-C encryption key" : "SSE-C krypteringsnøgle", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Fjernundermappe", @@ -112,10 +92,18 @@ OC.L10N.register( "External storage" : "Eksternt lager", "External storage support" : "Eksternt lager undersøttelse", "Adds basic external storage support" : "Tilføjer grundlæggende ekstern lagerunderstøttelse", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administration kan vælge, hvilke typer lager der skal aktiveres og kan montere disse lagerplaceringer for en konto, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også folk mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysningerne for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver administrationen mere fleksibilitet til at konfigurere bulk eksterne lagermonteringer og indstilling af monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", - "Enter missing credentials" : "Indtast manglende oplysninger", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administration kan vælge, hvilke typer lager der skal aktiveres og kan montere disse lagerplaceringer for en konto, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også folk mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysninger for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver administrationen mere fleksibilitet til at konfigurere bulk eksterne lagermonteringer og indstilling af monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", + "Confirm" : "Bekræft", + "Storage credentials" : "Lagringslegitimationsoplysninger", + "To access the storage, you need to provide the authentication credentials." : "For at tilgå lageret, så skal du angive godkendelseslegitimationsoplysninger.", + "Enter the storage login" : "Angiv et lagrings log på", + "Enter the storage password" : "Angiv lagringsadgangskoden", "Unable to update this external storage config. {statusMessage}" : "Er ikke i stand til at opdaterer konfigurationen af dette eksterne lager. {statusMessage}", "New configuration successfully saved" : "Den nye konfiguration er gemt", + "Enter missing credentials" : "angiv manglende legitimationsoplysninger", + "Credentials successfully set" : "Legitimationsoplysningerne er angivet", + "Error while setting credentials: {error}" : "Fejl under indstilling af legitimationsoplysninger: {error}", + "Checking storage …" : "Kontrollerer lager ...", "There was an error with this external storage." : "Der er en fejl med dette eksterne lager.", "We were unable to check the external storage {basename}" : "Det var ikke muligt at kontrollerer det eksterne lager {basename}", "Examine this faulty external storage configuration" : "Gennemgå fejl konfiguration af eksternt lager ", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Anvendelsesområde", "Personal" : "Personligt", "System" : "System", + "Type to select account or group." : "Indtast for at vælge konto eller gruppe.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", + "Enable encryption" : "Slå kryptering til", + "Enable previews" : "Slå forhåndsvisninger til", + "Enable sharing" : "Slå deling til", + "Check for changes" : "Tjek for ændringer", + "Never" : "Aldrig", + "Once every direct access" : "Kun ved hver direkte tilgang", + "Read only" : "Skrivebeskyttet", + "Disconnect" : "Frakobl", + "Unknown backend: {backendName}" : "Ukendt backend: {backendName}", + "Admin defined" : "Bestemt af administrator", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontrol er deaktiveret på grund af det store antal konfigurerede lager, klik for at kontrollere status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på, at du vil frakoble dette eksterne lager? Det vil gøre lageret utilgængeligt i Nextcloud og vil føre til en sletning af disse filer og mapper på enhver synkroniseringsklient, der i øjeblikket er tilsluttet, men vil ikke slette nogen filer og mapper på selve det eksterne lager.", + "Delete storage?" : "Slet lager?", + "Click to recheck the configuration" : "Klik for at kontrollere konfigurationen igen", + "Saved" : "Gemt", + "Saving …" : "Gemmer…", + "Save" : "Gem", + "Failed to save global credentials" : "Kunne ikke gemme globale legitimationsoplysninger", + "Failed to save global credentials: {message}" : "Kunne ikke gemme globale legitimationsoplysninger: {message}", "No external storage configured or you don't have the permission to configure them" : "Intet eksternt lager er konfigureret eller du har ikke tilladelse til at konfigurerer et.", "Open documentation" : "Åbn dokumentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Ekstern lagring giver dig mulighed for at montere eksterne lagringstjenester og -enheder som sekundære Nextcloud-lagringsenheder. Du kan også tillade folk at installere deres egne eksterne lagertjenester.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Godkendelse", "Configuration" : "Opsætning", "Available for" : "Tilgængelig for", - "Click to recheck the configuration" : "Klik for at kontrollere konfigurationen igen", "Add storage" : "Tilføj lager", "All people" : "Alle personer", "Advanced settings" : "Avancerede indstillinger", "Allow people to mount external storage" : "Tillad personer at montere eksternt lager", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale legitimationsoplysninger kan bruges til at godkende med flere eksterne lager, der har de samme legitimationsoplysninger.", - "Type to select user or group." : "Indtast for at vælge bruger eller gruppe.", - "Empty response from the server" : "Svar fra serveren uden data", - "Couldn't access. Please log out and in again to activate this mount point" : "Kunne ikke forbinde. Log venligst ud og ind igen for at aktivere dette mount point.", - "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få information fra fjern serveren: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kunne ikke få listen over eksterne mount points: {type}", - "There was an error with message: " : "Der var et problem med beskeden:", - "external-storage" : "Eksternt lager", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kunne ikke få listen over Windows netværk drive mount points: Tomt svar fra serveren", - "Please enter the credentials for the {mount} mount" : "Indtast venligst brugeroplysningerne for {mount} mount", - "Username" : "Brugernavn", - "Credentials saved" : "Brugeroplysninger gemt", - "Credentials saving failed" : "Det mislykkedes at gemme brugeroplysninger.", - "Credentials required" : "Kræver brugeroplysninger ", - "Storage with ID \"%d\" is not user editable" : "Lageret med id \"%d\" kan ikke redigeres af bruger", - "Username and password" : "Brugernavn og kodeord", - "Global credentials, user entered" : "Globale brugeroplysninger, angivet af bruger", - "User entered, store in database" : "Bruger indtastet, gem i database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Deaktivering vil tillade at bruge et fil system, der ikke skelner mellem store og små bogstaver, men kan give en reduktion i systemets ydeevne.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Tjek ACL'erne for hver fil eller mappe i en mappe for at bortfiltrere elementer, hvor brugeren ikke har læsetilladelser, kommer med en præstationsstraf", - "Username as share" : "Brugernavn som deling", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administratorer kan vælge, hvilke lagertyper der skal aktiveres og kan montere disse lagerplaceringer for en bruger, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også brugere mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysningerne for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver den avancerede bruger mere fleksibilitet til at konfigurere bulk eksterne lagerbeslag og indstille monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", - "Name" : "Navn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstern lagring giver dig mulighed for at montere eksterne lagringstjenester og -enheder som sekundære Nextcloud-lagringsenheder. Du kan også tillade brugere at montere deres egne eksterne lagertjenester.", - "All users" : "Alle brugere", - "Allow users to mount external storage" : "Tillad brugere at montere eksternt lager" + "Error configuring OAuth1" : "Fejl under konfiguration af OAuth1", + "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", + "OAuth1" : "OAuth1", + "App key" : "App-nøgle", + "App secret" : "App-hemmelighed" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json index 59b5ebb7412..9762e7dcb48 100644 --- a/apps/files_external/l10n/da.json +++ b/apps/files_external/l10n/da.json @@ -1,32 +1,14 @@ { "translations": { "Grant access" : "Godkend adgang", - "Error configuring OAuth1" : "Fejl under konfiguration af OAuth1", - "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", "Error configuring OAuth2" : "Fejl under konfiguration af OAuth2", "Generate keys" : "Opret nøgler.", "Error generating key pair" : "Fejl under oprettelse af nøglepar", - "Type to select account or group." : "Indtast for at vælge konto eller gruppe.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", - "Enable encryption" : "Slå kryptering til", - "Enable previews" : "Slå forhåndsvisninger til", - "Enable sharing" : "Slå deling til", - "Check for changes" : "Tjek for ændringer", - "Never" : "Aldrig", - "Once every direct access" : "Kun ved hver direkte tilgang", - "Read only" : "Skrivebeskyttet", - "Disconnect" : "Frakobl", - "Admin defined" : "Bestemt af administrator", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontrol er deaktiveret på grund af det store antal konfigurerede lager, klik for at kontrollere status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på, at du vil frakoble dette eksterne lager? Det vil gøre lageret utilgængeligt i Nextcloud og vil føre til en sletning af disse filer og mapper på enhver synkroniseringsklient, der i øjeblikket er tilsluttet, men vil ikke slette nogen filer og mapper på selve det eksterne lager.", - "Delete storage?" : "Slet lager?", - "Saved" : "Gemt", - "Saving …" : "Gemmer…", - "Save" : "Gem", + "You are not logged in" : "Du er ikke logget på", + "Permission denied" : "Tilladelse nægtet", "Forbidden to manage local mounts" : "Forbudt at administrere lokale mounts", "Storage with ID \"%d\" not found" : "Lagring med ID \"%d\" ikke fundet", "Invalid backend or authentication mechanism class" : "Ugyldig backend eller klasse for godkendelsesmekanisme", - "Invalid mount point" : "Fokert monteringspunkt", + "Invalid mount point" : "Ugyldigt monteringspunkt", "Objectstore forbidden" : "Objectstore er forbudt", "Invalid storage backend \"%s\"" : "Forkert lager til backend \"%s\"en", "Not permitted to use backend \"%s\"" : "Ikke tilladt at bruge backend \"%s\"", @@ -40,9 +22,6 @@ "Secret key" : "Hemmelig nøgle", "Builtin" : "Indbygget", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "App-nøgle", - "App secret" : "App-hemmelighed", "OAuth2" : "OAuth2", "Client ID" : "Klient-ID", "Client secret" : "Klient hemmelighed", @@ -55,11 +34,11 @@ "Domain" : "Domæne", "Rackspace" : "Hyldeplads", "API key" : "API nøgle", - "Global credentials" : "Globale brugeroplysninger", - "Log-in credentials, save in database" : "Log-in brugeroplysninger, gem i database", - "Login and password" : "Login og password", - "Log-in credentials, save in session" : "Log-in brugeroplysninger, gem i session", - "Global credentials, manually entered" : "Globale brugeroplysninger, indtastet manuelt", + "Global credentials" : "Globale legitimationsoplysninger", + "Log-in credentials, save in database" : "Log på legitimationsoplysninger, gem i database", + "Login and password" : "Login og adgangskode", + "Log-in credentials, save in session" : "Log på legitimationsoplysninger, gem i session", + "Global credentials, manually entered" : "Globale legitimationsoplysninger, indtastet manuelt", "Manually entered, store in database" : "Manuelt indtastet, gem i databasen", "RSA public key" : "RSA offentlig nøgle", "Public key" : "Offentlig nøgle", @@ -74,10 +53,11 @@ "Port" : "Port", "Region" : "Region", "Storage Class" : "Lagringsklassificering", - "Enable SSL" : "Aktivér SSL", - "Enable Path Style" : "Aktivér stil for sti", + "Enable SSL" : "Aktiver SSL", + "Enable Path Style" : "Aktiver stil for sti", "Legacy (v2) authentication" : "Ældre (v2) godkendelse", "Enable multipart copy" : "Aktiver flerdelt kopi", + "SSE-C encryption key" : "SSE-C krypteringsnøgle", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Fjernundermappe", @@ -110,10 +90,18 @@ "External storage" : "Eksternt lager", "External storage support" : "Eksternt lager undersøttelse", "Adds basic external storage support" : "Tilføjer grundlæggende ekstern lagerunderstøttelse", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administration kan vælge, hvilke typer lager der skal aktiveres og kan montere disse lagerplaceringer for en konto, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også folk mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysningerne for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver administrationen mere fleksibilitet til at konfigurere bulk eksterne lagermonteringer og indstilling af monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", - "Enter missing credentials" : "Indtast manglende oplysninger", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administration kan vælge, hvilke typer lager der skal aktiveres og kan montere disse lagerplaceringer for en konto, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også folk mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysninger for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver administrationen mere fleksibilitet til at konfigurere bulk eksterne lagermonteringer og indstilling af monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", + "Confirm" : "Bekræft", + "Storage credentials" : "Lagringslegitimationsoplysninger", + "To access the storage, you need to provide the authentication credentials." : "For at tilgå lageret, så skal du angive godkendelseslegitimationsoplysninger.", + "Enter the storage login" : "Angiv et lagrings log på", + "Enter the storage password" : "Angiv lagringsadgangskoden", "Unable to update this external storage config. {statusMessage}" : "Er ikke i stand til at opdaterer konfigurationen af dette eksterne lager. {statusMessage}", "New configuration successfully saved" : "Den nye konfiguration er gemt", + "Enter missing credentials" : "angiv manglende legitimationsoplysninger", + "Credentials successfully set" : "Legitimationsoplysningerne er angivet", + "Error while setting credentials: {error}" : "Fejl under indstilling af legitimationsoplysninger: {error}", + "Checking storage …" : "Kontrollerer lager ...", "There was an error with this external storage." : "Der er en fejl med dette eksterne lager.", "We were unable to check the external storage {basename}" : "Det var ikke muligt at kontrollerer det eksterne lager {basename}", "Examine this faulty external storage configuration" : "Gennemgå fejl konfiguration af eksternt lager ", @@ -129,6 +117,28 @@ "Scope" : "Anvendelsesområde", "Personal" : "Personligt", "System" : "System", + "Type to select account or group." : "Indtast for at vælge konto eller gruppe.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD encoding (langsom)", + "Enable encryption" : "Slå kryptering til", + "Enable previews" : "Slå forhåndsvisninger til", + "Enable sharing" : "Slå deling til", + "Check for changes" : "Tjek for ændringer", + "Never" : "Aldrig", + "Once every direct access" : "Kun ved hver direkte tilgang", + "Read only" : "Skrivebeskyttet", + "Disconnect" : "Frakobl", + "Unknown backend: {backendName}" : "Ukendt backend: {backendName}", + "Admin defined" : "Bestemt af administrator", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontrol er deaktiveret på grund af det store antal konfigurerede lager, klik for at kontrollere status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på, at du vil frakoble dette eksterne lager? Det vil gøre lageret utilgængeligt i Nextcloud og vil føre til en sletning af disse filer og mapper på enhver synkroniseringsklient, der i øjeblikket er tilsluttet, men vil ikke slette nogen filer og mapper på selve det eksterne lager.", + "Delete storage?" : "Slet lager?", + "Click to recheck the configuration" : "Klik for at kontrollere konfigurationen igen", + "Saved" : "Gemt", + "Saving …" : "Gemmer…", + "Save" : "Gem", + "Failed to save global credentials" : "Kunne ikke gemme globale legitimationsoplysninger", + "Failed to save global credentials: {message}" : "Kunne ikke gemme globale legitimationsoplysninger: {message}", "No external storage configured or you don't have the permission to configure them" : "Intet eksternt lager er konfigureret eller du har ikke tilladelse til at konfigurerer et.", "Open documentation" : "Åbn dokumentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Ekstern lagring giver dig mulighed for at montere eksterne lagringstjenester og -enheder som sekundære Nextcloud-lagringsenheder. Du kan også tillade folk at installere deres egne eksterne lagertjenester.", @@ -136,36 +146,15 @@ "Authentication" : "Godkendelse", "Configuration" : "Opsætning", "Available for" : "Tilgængelig for", - "Click to recheck the configuration" : "Klik for at kontrollere konfigurationen igen", "Add storage" : "Tilføj lager", "All people" : "Alle personer", "Advanced settings" : "Avancerede indstillinger", "Allow people to mount external storage" : "Tillad personer at montere eksternt lager", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale legitimationsoplysninger kan bruges til at godkende med flere eksterne lager, der har de samme legitimationsoplysninger.", - "Type to select user or group." : "Indtast for at vælge bruger eller gruppe.", - "Empty response from the server" : "Svar fra serveren uden data", - "Couldn't access. Please log out and in again to activate this mount point" : "Kunne ikke forbinde. Log venligst ud og ind igen for at aktivere dette mount point.", - "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få information fra fjern serveren: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kunne ikke få listen over eksterne mount points: {type}", - "There was an error with message: " : "Der var et problem med beskeden:", - "external-storage" : "Eksternt lager", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kunne ikke få listen over Windows netværk drive mount points: Tomt svar fra serveren", - "Please enter the credentials for the {mount} mount" : "Indtast venligst brugeroplysningerne for {mount} mount", - "Username" : "Brugernavn", - "Credentials saved" : "Brugeroplysninger gemt", - "Credentials saving failed" : "Det mislykkedes at gemme brugeroplysninger.", - "Credentials required" : "Kræver brugeroplysninger ", - "Storage with ID \"%d\" is not user editable" : "Lageret med id \"%d\" kan ikke redigeres af bruger", - "Username and password" : "Brugernavn og kodeord", - "Global credentials, user entered" : "Globale brugeroplysninger, angivet af bruger", - "User entered, store in database" : "Bruger indtastet, gem i database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Deaktivering vil tillade at bruge et fil system, der ikke skelner mellem store og små bogstaver, men kan give en reduktion i systemets ydeevne.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Tjek ACL'erne for hver fil eller mappe i en mappe for at bortfiltrere elementer, hvor brugeren ikke har læsetilladelser, kommer med en præstationsstraf", - "Username as share" : "Brugernavn som deling", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikation gør det muligt for administratorer at konfigurere forbindelser til eksterne lagerudbydere, såsom FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mere. Administratorer kan vælge, hvilke lagertyper der skal aktiveres og kan montere disse lagerplaceringer for en bruger, en gruppe eller hele systemet. Brugere vil se en ny mappe vises i deres rod-Nextcloud-mappe, som de kan få adgang til og bruge som enhver anden Nextcloud-mappe. Ekstern lagring giver også brugere mulighed for at dele filer gemt på disse eksterne steder. I disse tilfælde bruges legitimationsoplysningerne for ejeren af filen, når modtageren anmoder om filen fra eksternt lager, hvorved det sikres, at modtageren kan få adgang til den delte fil.\n\nEksternt lager kan konfigureres ved hjælp af GUI eller på kommandolinjen. Denne anden mulighed giver den avancerede bruger mere fleksibilitet til at konfigurere bulk eksterne lagerbeslag og indstille monteringsprioriteter. Flere oplysninger er tilgængelige i dokumentationen til eksternt lager GUI og dokumentationen til ekstern lagerkonfigurationsfil.", - "Name" : "Navn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstern lagring giver dig mulighed for at montere eksterne lagringstjenester og -enheder som sekundære Nextcloud-lagringsenheder. Du kan også tillade brugere at montere deres egne eksterne lagertjenester.", - "All users" : "Alle brugere", - "Allow users to mount external storage" : "Tillad brugere at montere eksternt lager" + "Error configuring OAuth1" : "Fejl under konfiguration af OAuth1", + "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", + "OAuth1" : "OAuth1", + "App key" : "App-nøgle", + "App secret" : "App-hemmelighed" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index ae0cfa563af..ec5ddc8f4aa 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -2,52 +2,33 @@ OC.L10N.register( "files_external", { "Grant access" : "Zugriff gewähren", - "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Enable encryption" : "Verschlüsselung aktivieren", - "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Teilen aktivieren", - "Check for changes" : "Auf Änderungen prüfen", - "Never" : "Nie", - "Once every direct access" : "Einmal bei jedem Direktzugriff", - "Read only" : "Schreibgeschützt", - "Disconnect" : "Trennen", - "Admin defined" : "Vom Administrator festgelegt", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicke hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", - "Delete storage?" : "Speicher löschen?", - "Saved" : "Gespeichert", - "Saving …" : "Speichern …", - "Save" : "Speichern", + "You are not logged in" : "Du bist nicht angemeldet", + "Permission denied" : "Zugriff verweigert", "Forbidden to manage local mounts" : "Das Verwalten lokaler Laufwerke ist nicht erlaubt", - "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", + "Storage with ID \"%d\" not found" : "Der Speicher mit der ID \"%d\" wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", - "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend \"%s\"", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend- Parameter", "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Speicher mit der ID \"%d\" kann nur von der Administration bearbeitet werden.", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", - "OAuth1" : "OAuth1", - "App key" : "App-Schlüssel", - "App secret" : "Geheime Zeichenkette der App", "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Clients", "OpenStack v2" : "OpenStack v2", - "Login" : "Anmelden", + "Login" : "Anmeldename", "Password" : "Passwort", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", @@ -57,12 +38,15 @@ OC.L10N.register( "API key" : "API-Schlüssel", "Global credentials" : "Globale Anmeldeinformationen", "Log-in credentials, save in database" : "Anmeldedaten in Datenbank speichern", + "Login and password" : "Anmeldename und Passwort", "Log-in credentials, save in session" : "Anmeldedaten in Sitzung speichern", + "Global credentials, manually entered" : "Globale Anmeldeinformationen, manuell eingegeben", + "Manually entered, store in database" : "Manuell eingegeben, in Datenbank speichern", "RSA public key" : "RSA öffentlicher Schlüssel", "Public key" : "Öffentlicher Schlüssel", "RSA private key" : "Privater RSA-Schlüssel", "Private key" : "Privater Schlüssel", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig „WORKGROUP“", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos-Ticket Apache-Modus", "Kerberos ticket" : "Kerberos-Ticket", "Amazon S3" : "Amazon S3", @@ -74,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "SSL aktivieren", "Enable Path Style" : "Pfad-Stil aktivieren", "Legacy (v2) authentication" : "Legacy-Authentifizierung (V2)", + "Enable multipart copy" : "Multipart-Kopieren aktivieren", + "SSE-C encryption key" : "SSE-C-Schlüssel", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", @@ -93,69 +79,84 @@ OC.L10N.register( "Case sensitive file system" : "Groß- und Kleinschreibung beachtendes Dateisystem", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Die Deaktivierung ermöglicht die Verwendung eines Dateisystems, bei dem die Groß- und Kleinschreibung keine Rolle spielt, bringt jedoch Leistungseinbußen mit sich.", "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die das Konto keine Leseberechtigungen hat. Dies führt zu Leistungseinbußen.", "Timeout" : "Zeitüberschreitung", "SMB/CIFS using OC login" : "SMB/CIFS mit OC-Anmeldung", + "Login as share" : "Als Freigabe anmelden", "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende dich zur Installation an den Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte zur Installation an die Systemadministration wenden.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte bezüglich der Aktivierung oder Installation an die Administration wenden.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte zur Installation an die Administration wenden.", "External storage" : "Externer Speicher", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", - "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Nutzende sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen findest du in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", + "Confirm" : "Bestätigen", + "Storage credentials" : "Speicheranmeldeinformationen", + "To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen die Authentifizierungsdaten angegeben werden.", + "Enter the storage login" : "Speicher-Login eingeben", + "Enter the storage password" : "Speicher-Passwort eingeben", "Unable to update this external storage config. {statusMessage}" : "Diese externe Speicherkonfiguration konnte nicht aktualisiert werden. {statusMessage}", "New configuration successfully saved" : "Neue Konfiguration gespeichert", + "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "Credentials successfully set" : "Anmeldeinformationen festgelegt", + "Error while setting credentials: {error}" : "Fehler beim Festlegen der Anmeldeinformationen: {error}", + "Checking storage …" : "Prüfe Speicher …", "There was an error with this external storage." : "Mit diesem externen Speicher ist ein Fehler aufgetreten.", "We were unable to check the external storage {basename}" : "Der externe Speicher {basename} konnte nicht geprüft werden", - "Examine this faulty external storage configuration" : "Prüfe diese fehlerhafte externe Speicherkonfiguration", + "Examine this faulty external storage configuration" : "Diese fehlerhafte externe Speicherkonfiguration prüfen", "Open in Files" : "In App \"Dateien\" öffnen", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Bei diesem externen Speicher ist ein Fehler aufgetreten. Möchtest du die Mount-Punkt-Konfiguration auf der Einstellungsseite überprüfen?", "External mount error" : "Fehler beim Einbinden des externen Speichers", "List of external storage." : "Liste der externen Speicher.", "There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Du kannst diese in deinen persönlichen Einstellungen konfigurieren.", - "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und du hast nicht die Berechtigung, einen solchen einzurichten.", + "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, einen solchen einzurichten.", "No external storage" : "Kein externer Speicher", "Storage type" : "Speichertyp", "Unknown" : "Unbekannt", "Scope" : "Anwendungsbereich", "Personal" : "Persönlich", "System" : "System", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.", + "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem Direktzugriff", + "Read only" : "Schreibgeschützt", + "Disconnect" : "Trennen", + "Unknown backend: {backendName}" : "Unbekanntes Backend: {backendName}", + "Admin defined" : "Von der Administration festgelegt", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert. Hier klicken, um den Status zu prüfen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Delete storage?" : "Speicher löschen?", + "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", + "Saved" : "Gespeichert", + "Saving …" : "Speichern …", + "Save" : "Speichern", + "Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden", + "Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, diesen einzurichten.", "Open documentation" : "Dokumentation öffnen", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", - "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", "Add storage" : "Speicher hinzufügen", + "All people" : "Alle Personen", "Advanced settings" : "Erweiterte Einstellungen", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden.", - "Type to select user or group." : "Eingabe, um Benutzer oder Gruppe auszuwählen.", - "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", - "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", - "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", - "external-storage" : "Externer Speicher", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} Speicher an", - "Username" : "Benutzername", - "Credentials saved" : "Anmeldeinformationen gespeichert", - "Credentials saving failed" : "Speichern der Anmeldeinformationen fehlgeschlagen", - "Credentials required" : "Anmeldeinformationen benötigt", - "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", - "Username and password" : "Benutzername und Passwort", - "Global credentials, user entered" : "Globale Anmeldeinformationen, vom Benutzer eingegeben", - "User entered, store in database" : "Benutzer eingetragen, in Datenbank gespeichert", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wenn du dies deaktivieren, kannst du ein Dateisystem verwenden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, es geht jedoch mit Leistungseinbußen einher.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen", - "Username as share" : "Benutzername als Freigabe", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Die App Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", - "All users" : "Alle Benutzer", - "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden" + "Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", + "OAuth1" : "OAuth1", + "App key" : "App-Schlüssel", + "App secret" : "Geheime Zeichenkette der App" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index 9d96b3897c9..a8787b43be2 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -1,51 +1,32 @@ { "translations": { "Grant access" : "Zugriff gewähren", - "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Enable encryption" : "Verschlüsselung aktivieren", - "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Teilen aktivieren", - "Check for changes" : "Auf Änderungen prüfen", - "Never" : "Nie", - "Once every direct access" : "Einmal bei jedem Direktzugriff", - "Read only" : "Schreibgeschützt", - "Disconnect" : "Trennen", - "Admin defined" : "Vom Administrator festgelegt", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicke hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", - "Delete storage?" : "Speicher löschen?", - "Saved" : "Gespeichert", - "Saving …" : "Speichern …", - "Save" : "Speichern", + "You are not logged in" : "Du bist nicht angemeldet", + "Permission denied" : "Zugriff verweigert", "Forbidden to manage local mounts" : "Das Verwalten lokaler Laufwerke ist nicht erlaubt", - "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", + "Storage with ID \"%d\" not found" : "Der Speicher mit der ID \"%d\" wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", - "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend \"%s\"", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend- Parameter", "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus-Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Speicher mit der ID \"%d\" kann nur von der Administration bearbeitet werden.", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", - "OAuth1" : "OAuth1", - "App key" : "App-Schlüssel", - "App secret" : "Geheime Zeichenkette der App", "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Clients", "OpenStack v2" : "OpenStack v2", - "Login" : "Anmelden", + "Login" : "Anmeldename", "Password" : "Passwort", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", @@ -55,12 +36,15 @@ "API key" : "API-Schlüssel", "Global credentials" : "Globale Anmeldeinformationen", "Log-in credentials, save in database" : "Anmeldedaten in Datenbank speichern", + "Login and password" : "Anmeldename und Passwort", "Log-in credentials, save in session" : "Anmeldedaten in Sitzung speichern", + "Global credentials, manually entered" : "Globale Anmeldeinformationen, manuell eingegeben", + "Manually entered, store in database" : "Manuell eingegeben, in Datenbank speichern", "RSA public key" : "RSA öffentlicher Schlüssel", "Public key" : "Öffentlicher Schlüssel", "RSA private key" : "Privater RSA-Schlüssel", "Private key" : "Privater Schlüssel", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig „WORKGROUP“", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos-Ticket Apache-Modus", "Kerberos ticket" : "Kerberos-Ticket", "Amazon S3" : "Amazon S3", @@ -72,6 +56,8 @@ "Enable SSL" : "SSL aktivieren", "Enable Path Style" : "Pfad-Stil aktivieren", "Legacy (v2) authentication" : "Legacy-Authentifizierung (V2)", + "Enable multipart copy" : "Multipart-Kopieren aktivieren", + "SSE-C encryption key" : "SSE-C-Schlüssel", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", @@ -91,69 +77,84 @@ "Case sensitive file system" : "Groß- und Kleinschreibung beachtendes Dateisystem", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Die Deaktivierung ermöglicht die Verwendung eines Dateisystems, bei dem die Groß- und Kleinschreibung keine Rolle spielt, bringt jedoch Leistungseinbußen mit sich.", "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die das Konto keine Leseberechtigungen hat. Dies führt zu Leistungseinbußen.", "Timeout" : "Zeitüberschreitung", "SMB/CIFS using OC login" : "SMB/CIFS mit OC-Anmeldung", + "Login as share" : "Als Freigabe anmelden", "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende dich zur Installation an den Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte zur Installation an die Systemadministration wenden.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte bezüglich der Aktivierung oder Installation an die Administration wenden.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte zur Installation an die Administration wenden.", "External storage" : "Externer Speicher", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", - "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Nutzende sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen findest du in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", + "Confirm" : "Bestätigen", + "Storage credentials" : "Speicheranmeldeinformationen", + "To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen die Authentifizierungsdaten angegeben werden.", + "Enter the storage login" : "Speicher-Login eingeben", + "Enter the storage password" : "Speicher-Passwort eingeben", "Unable to update this external storage config. {statusMessage}" : "Diese externe Speicherkonfiguration konnte nicht aktualisiert werden. {statusMessage}", "New configuration successfully saved" : "Neue Konfiguration gespeichert", + "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "Credentials successfully set" : "Anmeldeinformationen festgelegt", + "Error while setting credentials: {error}" : "Fehler beim Festlegen der Anmeldeinformationen: {error}", + "Checking storage …" : "Prüfe Speicher …", "There was an error with this external storage." : "Mit diesem externen Speicher ist ein Fehler aufgetreten.", "We were unable to check the external storage {basename}" : "Der externe Speicher {basename} konnte nicht geprüft werden", - "Examine this faulty external storage configuration" : "Prüfe diese fehlerhafte externe Speicherkonfiguration", + "Examine this faulty external storage configuration" : "Diese fehlerhafte externe Speicherkonfiguration prüfen", "Open in Files" : "In App \"Dateien\" öffnen", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Bei diesem externen Speicher ist ein Fehler aufgetreten. Möchtest du die Mount-Punkt-Konfiguration auf der Einstellungsseite überprüfen?", "External mount error" : "Fehler beim Einbinden des externen Speichers", "List of external storage." : "Liste der externen Speicher.", "There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Du kannst diese in deinen persönlichen Einstellungen konfigurieren.", - "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und du hast nicht die Berechtigung, einen solchen einzurichten.", + "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, einen solchen einzurichten.", "No external storage" : "Kein externer Speicher", "Storage type" : "Speichertyp", "Unknown" : "Unbekannt", "Scope" : "Anwendungsbereich", "Personal" : "Persönlich", "System" : "System", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.", + "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem Direktzugriff", + "Read only" : "Schreibgeschützt", + "Disconnect" : "Trennen", + "Unknown backend: {backendName}" : "Unbekanntes Backend: {backendName}", + "Admin defined" : "Von der Administration festgelegt", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert. Hier klicken, um den Status zu prüfen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Delete storage?" : "Speicher löschen?", + "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", + "Saved" : "Gespeichert", + "Saving …" : "Speichern …", + "Save" : "Speichern", + "Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden", + "Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, diesen einzurichten.", "Open documentation" : "Dokumentation öffnen", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", - "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", "Add storage" : "Speicher hinzufügen", + "All people" : "Alle Personen", "Advanced settings" : "Erweiterte Einstellungen", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden.", - "Type to select user or group." : "Eingabe, um Benutzer oder Gruppe auszuwählen.", - "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte abmelden und erneut anmelden, um diesen Endpunkt zu aktivieren.", - "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Die Liste der externen Endpunkte konnte nicht empfangen werden: {type}", - "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", - "external-storage" : "Externer Speicher", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Please enter the credentials for the {mount} mount" : "Bitte gib die Anmeldeinformationen für den {mount} Speicher an", - "Username" : "Benutzername", - "Credentials saved" : "Anmeldeinformationen gespeichert", - "Credentials saving failed" : "Speichern der Anmeldeinformationen fehlgeschlagen", - "Credentials required" : "Anmeldeinformationen benötigt", - "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", - "Username and password" : "Benutzername und Passwort", - "Global credentials, user entered" : "Globale Anmeldeinformationen, vom Benutzer eingegeben", - "User entered, store in database" : "Benutzer eingetragen, in Datenbank gespeichert", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wenn du dies deaktivieren, kannst du ein Dateisystem verwenden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, es geht jedoch mit Leistungseinbußen einher.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen", - "Username as share" : "Benutzername als Freigabe", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Die App Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", - "All users" : "Alle Benutzer", - "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden" + "Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", + "OAuth1" : "OAuth1", + "App key" : "App-Schlüssel", + "App secret" : "Geheime Zeichenkette der App" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js index c46745132ad..fde6e801e60 100644 --- a/apps/files_external/l10n/de_DE.js +++ b/apps/files_external/l10n/de_DE.js @@ -2,35 +2,17 @@ OC.L10N.register( "files_external", { "Grant access" : "Zugriff gestatten", - "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", - "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Enable encryption" : "Verschlüsselung aktivieren", - "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Teilen aktivieren", - "Check for changes" : "Auf Änderungen prüfen", - "Never" : "Nie", - "Once every direct access" : "Einmal bei jedem Direktzugriff", - "Read only" : "Schreibgeschützt", - "Disconnect" : "Trennen", - "Admin defined" : "Vom Administrator festgelegt", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Statusprüfung ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicken Sie hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchten Sie diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", - "Delete storage?" : "Speicher löschen?", - "Saved" : "Gespeichert", - "Saving …" : "Speichere …", - "Save" : "Speichern", + "You are not logged in" : "Sie sind nicht angemeldet", + "Permission denied" : "Zugriff verweigert", "Forbidden to manage local mounts" : "Das Verwalten lokaler Laufwerke ist nicht erlaubt", "Storage with ID \"%d\" not found" : "Der Speicher mit ID \"1 %d\" nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", - "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend \"%s\"", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend-Parameter", @@ -42,14 +24,11 @@ OC.L10N.register( "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", - "OAuth1" : "OAuth1", - "App key" : "App-Schlüssel", - "App secret" : "Geheime Zeichenkette der App", "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Clients", "OpenStack v2" : "OpenStack v2", - "Login" : "Anmelden", + "Login" : "Anmeldename", "Password" : "Passwort", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", @@ -65,9 +44,9 @@ OC.L10N.register( "Manually entered, store in database" : "Manuell eingegeben, in Datenbank speichern", "RSA public key" : "RSA öffentlicher Schlüssel", "Public key" : "Öffentlicher Schlüssel", - "RSA private key" : "Privater RSA-Schlüssel", + "RSA private key" : "RSA privater Schlüssel", "Private key" : "Privater Schlüssel", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig „WORKGROUP“", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos-Ticket Apache-Modus", "Kerberos ticket" : "Kerberos-Ticket", "Amazon S3" : "Amazon S3", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Pfadstil aktivieren", "Legacy (v2) authentication" : "Legacy-Authentifizierung (V2)", "Enable multipart copy" : "Multipart-Kopieren aktivieren", + "SSE-C encryption key" : "SSE-C-Schlüssel", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", @@ -94,7 +74,7 @@ OC.L10N.register( "Root" : "Root", "SFTP with secret key login" : "SFTP mit der Anmeldung über einen geheimen Schlüssel", "SMB/CIFS" : "SMB/CIFS", - "Share" : "Share", + "Share" : "Teilen", "Show hidden files" : "Versteckte Dateien anzeigen", "Case sensitive file system" : "Groß- und Kleinschreibung beachtendes Dateisystem", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Die Deaktivierung ermöglicht die Verwendung eines Dateisystems, bei dem die Groß- und Kleinschreibung keine Rolle spielt, bringt jedoch Leistungseinbußen mit sich.", @@ -106,16 +86,24 @@ OC.L10N.register( "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihre Administration.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihre Administration.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihre Administration.", "External storage" : "Externer Speicher", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es Administratoren, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", - "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", + "Confirm" : "Bestätigen", + "Storage credentials" : "Speicheranmeldeinformationen", + "To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen Sie die Authentifizierungsdaten angeben.", + "Enter the storage login" : "Speicher-Login eingeben", + "Enter the storage password" : "Speicher-Passwort eingeben", "Unable to update this external storage config. {statusMessage}" : "Diese externe Speicherkonfiguration konnte nicht aktualisiert werden. {statusMessage}", "New configuration successfully saved" : "Neue Konfiguration gespeichert", + "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "Credentials successfully set" : "Anmeldeinformationen festgelegt", + "Error while setting credentials: {error}" : "Fehler beim Festlegen der Anmeldeinformationen: {error}", + "Checking storage …" : "Prüfe Speicher…", "There was an error with this external storage." : "Mit diesem externen Speicher ist ein Fehler aufgetreten.", "We were unable to check the external storage {basename}" : "Der externe Speicher {basename} konnte nicht geprüft werden", "Examine this faulty external storage configuration" : "Prüfen Sie diese fehlerhafte externe Speicherkonfiguration", @@ -124,50 +112,51 @@ OC.L10N.register( "External mount error" : "Fehler beim Einbinden des externen Speichers", "List of external storage." : "Liste der externen Speicher.", "There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.", - "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben nicht die Berechtigung, einen solchen einzurichten.", + "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben keine Berechtigung, einen solchen einzurichten.", "No external storage" : "Kein externer Speicher", "Storage type" : "Speichertyp", "Unknown" : "Unbekannt", "Scope" : "Anwendungsbereich", "Personal" : "Persönlich", "System" : "System", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung diesen einzurichten", + "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem Direktzugriff", + "Read only" : "Schreibgeschützt", + "Disconnect" : "Trennen", + "Unknown backend: {backendName}" : "Unbekanntes Backend: {backendName}", + "Admin defined" : "Von der Administration festgelegt", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Statusprüfung ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicken Sie hier, um den Status zu prüfen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchten Sie diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Delete storage?" : "Speicher löschen?", + "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", + "Saved" : "Gespeichert", + "Saving …" : "Speichere …", + "Save" : "Speichern", + "Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden", + "Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung, diesen einzurichten.", "Open documentation" : "Dokumentation öffnen", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", - "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", "Add storage" : "Speicher hinzufügen", "All people" : "Alle Personen", "Advanced settings" : "Erweiterte Einstellungen", "Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Zugangsdaten können für die Authentifizierung für mehrere externe Speicher verwendet werden, solange sie identische Zugangsdaten benötigen.", - "Type to select user or group." : "Eingabe, um Benutzer oder Gruppe auszuwählen.", - "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", - "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", - "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", - "external-storage" : "Externer Speicher", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Anmeldeinformationen für den {mount} Speicher an", - "Username" : "Benutzername", - "Credentials saved" : "Zugangsdaten gespeichert", - "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", - "Credentials required" : "Zugangsdaten benötigt", - "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" kann nicht vom Benutzer bearbeitet werden", - "Username and password" : "Benutzername und Passwort", - "Global credentials, user entered" : "Globale Anmeldeinformationen, vom Benutzer eingegeben", - "User entered, store in database" : "Vom Benutzer eingegeben (in Datenbank gespeichert)", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wenn Sie dies deaktivieren, können Sie ein Dateisystem verwenden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, es geht jedoch mit Leistungseinbußen einher", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen", - "Username as share" : "Benutzername als Freigabe", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Servern, S3 oder SWIFT object stores, anderen Nextcloud-Servern, WebDAV-Servern usw. herzustellen. Administratoren können auswählen, welche Arten von Speicherorten zulässig sind, und können diese Speicherorte für Benutzer, Gruppen oder das gesamte System einbinden. Benutzer sehen dann einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglicht es den Benutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Benutzern, einfacher mehrere Einhängepunkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der Dokumentation für Externen Speicher in der grafischen Oberfläche und der Dokumentationsdatei für die Konfiguration von Externem Speicher abgerufen werden.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.", - "All users" : "Alle Benutzer", - "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden" + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", + "OAuth1" : "OAuth1", + "App key" : "App-Schlüssel", + "App secret" : "Geheime Zeichenkette der App" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json index 86f1f9d0524..137b6a82ddd 100644 --- a/apps/files_external/l10n/de_DE.json +++ b/apps/files_external/l10n/de_DE.json @@ -1,34 +1,16 @@ { "translations": { "Grant access" : "Zugriff gestatten", - "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", - "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", "Error configuring OAuth2" : "Fehler beim Konfigurieren von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", - "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", - "Enable encryption" : "Verschlüsselung aktivieren", - "Enable previews" : "Vorschau aktivieren", - "Enable sharing" : "Teilen aktivieren", - "Check for changes" : "Auf Änderungen prüfen", - "Never" : "Nie", - "Once every direct access" : "Einmal bei jedem Direktzugriff", - "Read only" : "Schreibgeschützt", - "Disconnect" : "Trennen", - "Admin defined" : "Vom Administrator festgelegt", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Statusprüfung ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicken Sie hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchten Sie diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", - "Delete storage?" : "Speicher löschen?", - "Saved" : "Gespeichert", - "Saving …" : "Speichere …", - "Save" : "Speichern", + "You are not logged in" : "Sie sind nicht angemeldet", + "Permission denied" : "Zugriff verweigert", "Forbidden to manage local mounts" : "Das Verwalten lokaler Laufwerke ist nicht erlaubt", "Storage with ID \"%d\" not found" : "Der Speicher mit ID \"1 %d\" nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger Einbindungspunkt", "Objectstore forbidden" : "Objekt nicht erlaubt", - "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend „%s“", + "Invalid storage backend \"%s\"" : "Ungültiges Speicher-Backend \"%s\"", "Not permitted to use backend \"%s\"" : "Es ist nicht zulässig Backend \"%s\" zu verwenden", "Not permitted to use authentication mechanism \"%s\"" : "Es ist nicht zulässig Authentifizierungsmechanismus \"%s\" zu verwenden", "Unsatisfied backend parameters" : "Unbefriedigende Backend-Parameter", @@ -40,14 +22,11 @@ "Secret key" : "Geheimer Schlüssel", "Builtin" : "Eingebaut", "None" : "Keine", - "OAuth1" : "OAuth1", - "App key" : "App-Schlüssel", - "App secret" : "Geheime Zeichenkette der App", "OAuth2" : "OAuth2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Clients", "OpenStack v2" : "OpenStack v2", - "Login" : "Anmelden", + "Login" : "Anmeldename", "Password" : "Passwort", "Tenant name" : "Name des Mieters", "Identity endpoint URL" : "Identität Endpunkt-URL", @@ -63,9 +42,9 @@ "Manually entered, store in database" : "Manuell eingegeben, in Datenbank speichern", "RSA public key" : "RSA öffentlicher Schlüssel", "Public key" : "Öffentlicher Schlüssel", - "RSA private key" : "Privater RSA-Schlüssel", + "RSA private key" : "RSA privater Schlüssel", "Private key" : "Privater Schlüssel", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig „WORKGROUP“", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos-Standard-Realm, standardmäßig \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos-Ticket Apache-Modus", "Kerberos ticket" : "Kerberos-Ticket", "Amazon S3" : "Amazon S3", @@ -78,6 +57,7 @@ "Enable Path Style" : "Pfadstil aktivieren", "Legacy (v2) authentication" : "Legacy-Authentifizierung (V2)", "Enable multipart copy" : "Multipart-Kopieren aktivieren", + "SSE-C encryption key" : "SSE-C-Schlüssel", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Entfernter Unterordner", @@ -92,7 +72,7 @@ "Root" : "Root", "SFTP with secret key login" : "SFTP mit der Anmeldung über einen geheimen Schlüssel", "SMB/CIFS" : "SMB/CIFS", - "Share" : "Share", + "Share" : "Teilen", "Show hidden files" : "Versteckte Dateien anzeigen", "Case sensitive file system" : "Groß- und Kleinschreibung beachtendes Dateisystem", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Die Deaktivierung ermöglicht die Verwendung eines Dateisystems, bei dem die Groß- und Kleinschreibung keine Rolle spielt, bringt jedoch Leistungseinbußen mit sich.", @@ -104,16 +84,24 @@ "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihre Administration.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihre Administration.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihre Administration.", "External storage" : "Externer Speicher", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es Administratoren, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", - "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Diese Anwendung ermöglicht es der Administration, Verbindungen zu externen Speicheranbietern wie FTP-Servern, S3- oder SWIFT-Objektspeichern, anderen Nextcloud-Servern, WebDAV-Servern und weiteren zu konfigurieren. Die Administration kann auswählen, welche Arten von Speicherorten aktiviert werden sollen, und kann diese Speicherorte für ein Konto, eine Gruppe oder das gesamte System einbinden. Benutzer sehen einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen und ihn verwenden können. Externer Speicher ermöglicht es Personen auch, Dateien, die in diesen externen Speicherorten gespeichert sind, freizugeben. In diesen Fällen werden die Anmeldeinformationen des Dateibesitzers verwendet, wenn der Empfänger die Datei aus dem externen Speicher anfordert, um sicherzustellen, dass der Empfänger auf die freigegebene Datei zugreifen kann.\n\nExterner Speicher kann über die grafische Benutzeroberfläche oder über die Befehlszeile konfiguriert werden. Diese zweite Option bietet der Administration mehr Flexibilität bei der Konfiguration von Massenspeicher-Einhängepunkten und der Festlegung von Einhängeprioritäten. Weitere Informationen finden Sie in der Dokumentation zur externen Speicher-GUI und der Dokumentation zur externen Speicher-Konfigurationsdatei.", + "Confirm" : "Bestätigen", + "Storage credentials" : "Speicheranmeldeinformationen", + "To access the storage, you need to provide the authentication credentials." : "Um auf den Speicher zuzugreifen, müssen Sie die Authentifizierungsdaten angeben.", + "Enter the storage login" : "Speicher-Login eingeben", + "Enter the storage password" : "Speicher-Passwort eingeben", "Unable to update this external storage config. {statusMessage}" : "Diese externe Speicherkonfiguration konnte nicht aktualisiert werden. {statusMessage}", "New configuration successfully saved" : "Neue Konfiguration gespeichert", + "Enter missing credentials" : "Fehlende Anmeldeinformationen eingeben", + "Credentials successfully set" : "Anmeldeinformationen festgelegt", + "Error while setting credentials: {error}" : "Fehler beim Festlegen der Anmeldeinformationen: {error}", + "Checking storage …" : "Prüfe Speicher…", "There was an error with this external storage." : "Mit diesem externen Speicher ist ein Fehler aufgetreten.", "We were unable to check the external storage {basename}" : "Der externe Speicher {basename} konnte nicht geprüft werden", "Examine this faulty external storage configuration" : "Prüfen Sie diese fehlerhafte externe Speicherkonfiguration", @@ -122,50 +110,51 @@ "External mount error" : "Fehler beim Einbinden des externen Speichers", "List of external storage." : "Liste der externen Speicher.", "There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.", - "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben nicht die Berechtigung, einen solchen einzurichten.", + "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben keine Berechtigung, einen solchen einzurichten.", "No external storage" : "Kein externer Speicher", "Storage type" : "Speichertyp", "Unknown" : "Unbekannt", "Scope" : "Anwendungsbereich", "Personal" : "Persönlich", "System" : "System", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung diesen einzurichten", + "Type to select account or group." : "Tippen, um ein Konto oder eine Gruppe auszuwählen.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilität mit MAC NFD-Kodierung (langsam)", + "Enable encryption" : "Verschlüsselung aktivieren", + "Enable previews" : "Vorschau aktivieren", + "Enable sharing" : "Teilen aktivieren", + "Check for changes" : "Auf Änderungen prüfen", + "Never" : "Nie", + "Once every direct access" : "Einmal bei jedem Direktzugriff", + "Read only" : "Schreibgeschützt", + "Disconnect" : "Trennen", + "Unknown backend: {backendName}" : "Unbekanntes Backend: {backendName}", + "Admin defined" : "Von der Administration festgelegt", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Statusprüfung ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicken Sie hier, um den Status zu prüfen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchten Sie diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Delete storage?" : "Speicher löschen?", + "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", + "Saved" : "Gespeichert", + "Saving …" : "Speichere …", + "Save" : "Speichern", + "Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden", + "Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung, diesen einzurichten.", "Open documentation" : "Dokumentation öffnen", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", - "Click to recheck the configuration" : "Hier klicken, um die Konfiguration erneut zu prüfen", "Add storage" : "Speicher hinzufügen", "All people" : "Alle Personen", "Advanced settings" : "Erweiterte Einstellungen", "Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Zugangsdaten können für die Authentifizierung für mehrere externe Speicher verwendet werden, solange sie identische Zugangsdaten benötigen.", - "Type to select user or group." : "Eingabe, um Benutzer oder Gruppe auszuwählen.", - "Empty response from the server" : "Leere Antwort vom Server erhalten", - "Couldn't access. Please log out and in again to activate this mount point" : "Zugriff nicht möglich. Bitte melden Sie sich ab und wieder an, um diesen Endpunkt zu aktivieren.", - "Couldn't get the information from the remote server: {code} {type}" : "Konnte die Information vom entfernten Server nicht abrufen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Konnte die Liste von externen Speichern nicht laden: {type}", - "There was an error with message: " : "Es ist ein Fehler mit folgender Meldung aufgetreten:", - "external-storage" : "Externer Speicher", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Es konnte keine Liste der Windows-Netzlaufwerke empfangen werden: Leere Antwort vom Server", - "Please enter the credentials for the {mount} mount" : "Bitte geben Sie die Anmeldeinformationen für den {mount} Speicher an", - "Username" : "Benutzername", - "Credentials saved" : "Zugangsdaten gespeichert", - "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", - "Credentials required" : "Zugangsdaten benötigt", - "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" kann nicht vom Benutzer bearbeitet werden", - "Username and password" : "Benutzername und Passwort", - "Global credentials, user entered" : "Globale Anmeldeinformationen, vom Benutzer eingegeben", - "User entered, store in database" : "Vom Benutzer eingegeben (in Datenbank gespeichert)", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wenn Sie dies deaktivieren, können Sie ein Dateisystem verwenden, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, es geht jedoch mit Leistungseinbußen einher", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen", - "Username as share" : "Benutzername als Freigabe", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Servern, S3 oder SWIFT object stores, anderen Nextcloud-Servern, WebDAV-Servern usw. herzustellen. Administratoren können auswählen, welche Arten von Speicherorten zulässig sind, und können diese Speicherorte für Benutzer, Gruppen oder das gesamte System einbinden. Benutzer sehen dann einen neuen Ordner in ihrem Nextcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglicht es den Benutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Benutzern, einfacher mehrere Einhängepunkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der Dokumentation für Externen Speicher in der grafischen Oberfläche und der Dokumentationsdatei für die Konfiguration von Externem Speicher abgerufen werden.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden eigene externe Speicherdienste einzubinden.", - "All users" : "Alle Benutzer", - "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden" + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben.", + "Error configuring OAuth1" : "Fehler beim Konfigurieren von OAuth1", + "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel (App-Key) mit Sicherheitsschlüssel (Secret) eingeben.", + "OAuth1" : "OAuth1", + "App key" : "App-Schlüssel", + "App secret" : "Geheime Zeichenkette der App" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index 7d3cd84c264..0edbee1a36e 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Παροχή πρόσβασης", - "Error configuring OAuth1" : "Σφάλμα ρύθμισης του OAuth1", - "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", "Error configuring OAuth2" : "Σφάλμα ρύθμισης του OAuth2", "Generate keys" : "Δημιουργία κλειδιών", "Error generating key pair" : "Σφάλμα κατά τη δημιουργία ζεύγους κλειδιών", - "(Group)" : "(Ομάδα)", - "Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ", - "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", - "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων", - "Enable sharing" : "Ενεργοποίηση διαμοιρασμού", - "Check for changes" : "Έλεγχος για αλλαγές", - "Never" : "Ποτέ", - "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", - "Read only" : "Μόνο για ανάγνωση", - "Disconnect" : "Αποσύνδεση", - "Admin defined" : "Ορίσθηκε διαχειριστής ", - "Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;", - "Saved" : "Αποθηκεύτηκαν", - "Saving …" : "Αποθηκεύεται ...", - "Save" : "Αποθήκευση", "Storage with ID \"%d\" not found" : "Αποθηκευτικός χώρος με ID \"%d\" δεν βρέθηκε ", "Invalid backend or authentication mechanism class" : "Μη έγκυρη κλάση συστήματος ή μηχανισμού πιστοποίησης", "Invalid mount point" : "Μη έγκυρο σημείο προσάρτησης", @@ -37,9 +20,6 @@ OC.L10N.register( "Secret key" : "Μυστικό κλειδί", "Builtin" : "Builtin", "None" : "Τίποτα", - "OAuth1" : "OAuth1", - "App key" : "Κλειδί εφαρμογής", - "App secret" : "Μυστικό εφαρμογής", "OAuth2" : "OAuth2", "Client ID" : "ID πελάτη", "Client secret" : "Μυστικό πελάτη", @@ -94,6 +74,7 @@ OC.L10N.register( "External storage" : "Εξωτερικός αποθηκευτικός χώρος", "External storage support" : "Υποστήριξη εξωτερικού αποθηκευτικού χώρου", "Adds basic external storage support" : "Προσθέτει βασική υποστήριξη εξωτερικού αποθηκευτικού χώρου", + "Confirm" : "Επιβεβαίωση", "Open in Files" : "Άνοιγμα στα Αρχεία", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", "Storage type" : "Τύπος αποθηκευτικού χώρου", @@ -101,38 +82,35 @@ OC.L10N.register( "Scope" : "Εύρος", "Personal" : "Προσωπικός", "System" : "Συστήματος", + "(Group)" : "(Ομάδα)", + "Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ", + "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", + "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων", + "Enable sharing" : "Ενεργοποίηση διαμοιρασμού", + "Check for changes" : "Έλεγχος για αλλαγές", + "Never" : "Ποτέ", + "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", + "Read only" : "Μόνο για ανάγνωση", + "Disconnect" : "Αποσύνδεση", + "Admin defined" : "Ορίσθηκε διαχειριστής ", + "Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;", + "Click to recheck the configuration" : "Κλίκ για επανέλεγχο ρυθμίσεων", + "Saved" : "Αποθηκεύτηκαν", + "Saving …" : "Αποθηκεύεται ...", + "Save" : "Αποθήκευση", "No external storage configured or you don't have the permission to configure them" : "Δεν έχει ρυθμιστεί καμία εξωτερική αποθήκευση ή δεν έχετε δικαιώματα ρύθμισης", "Open documentation" : "Άνοιγμα τεκμηρίωσης", "Folder name" : "Όνομα φακέλου", "Authentication" : "Πιστοποίηση", "Configuration" : "Ρυθμίσεις", "Available for" : "Διαθέσιμο για", - "Click to recheck the configuration" : "Κλίκ για επανέλεγχο ρυθμίσεων", "Add storage" : "Προσθήκη αποθηκευτικού χώρου", "Advanced settings" : "Ρυθμίσεις για προχωρημένους", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Τα δημόσια διαπιστευτήρια μπορούν να χρησιμοποιηθούν για τον έλεγχο ταυτότητας με διάφορους εξωτερικούς χώρους αποθήκευσης με ίδια διαπιστευτήρια.", - "Empty response from the server" : "Κενή απάντηση από τον διακομιστή", - "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης", - "Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}", - "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", - "external-storage" : "Εξωτερικός-αποθηκευτικός-χώρος", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή", - "Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση", - "Username" : "Όνομα χρήστη", - "Credentials saved" : "Τα διαπιστευτήρια αποθηκεύτηκαν", - "Credentials saving failed" : "Αποτυχία αποθήκευσης διαπιστευτηρίων", - "Credentials required" : "Απαιτούνται διαπιστευτήρια ", - "Storage with ID \"%d\" is not user editable" : "Αποθηκευτικός χώρος με ID \"%d\" δεν είναι επεξεργάσιμος από τον χρήστη ", - "Username and password" : "Όνομα χρήστη και κωδικός πρόσβασης", - "Global credentials, user entered" : "Δημόσια διαπιστευτήρια, καταχωρήθηκαν από τον χρήστη", - "User entered, store in database" : "Χρήστης εισήχθη, τοποθετήστε στην βάση δεδομένων", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Ελέγξτε τα ACL κάθε αρχείου ή φακέλου μέσα σε έναν κατάλογο για να φιλτράρετε στοιχεία όπου ο χρήστης δεν έχει δικαιώματα ανάγνωσης, με καθυστέρηση στις επιδόσεις", - "Username as share" : "Όνομα χρήστη ως διαμοιραζόμενος φάκελος", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Η εφαρμογή επιτρέπει στους διαχειριστές να διαμορφώνουν συνδέσεις σε εξωτερικούς παρόχους αποθηκευτικού χώρου, όπως διακομιστές FTP, S3 ή SWIFT, άλλοι διακομιστές Nextcloud, διακομιστές WebDAV και πολλά άλλα. Οι διαχειριστές μπορούν να επιλέξουν τους τύπους αποθήκευσης που επιτρέπουν και μπορούν να προσαρτήσουν αυτές τις θέσεις αποθήκευσης για έναν χρήστη, μια ομάδα ή ολόκληρο το σύστημα. Οι χρήστες θα εμφανίσουν έναν νέο φάκελο στον κεντρικό τους κατάλογο Nextcloud, τον οποίο μπορούν να έχουν πρόσβαση και να χρησιμοποιήσουν όπως και κάθε άλλο φάκελο Nextcloud. Η εξωτερική αποθήκευση επιτρέπει επίσης στους χρήστες να μοιράζονται αρχεία που είναι αποθηκευμένα σε αυτές τις εξωτερικές τοποθεσίες. Σε αυτές τις περιπτώσεις, τα διαπιστευτήρια του κατόχου του αρχείου χρησιμοποιούνται όταν ο παραλήπτης ζητά το αρχείο από εξωτερικό αποθηκευτικό χώρο, εξασφαλίζοντας έτσι ότι ο παραλήπτης μπορεί να έχει πρόσβαση στο κοινόχρηστο αρχείο.\n\nΗ εξωτερική αποθήκευση μπορεί να ρυθμιστεί χρησιμοποιώντας το GUI ή στη γραμμή εντολών. Αυτή η δεύτερη επιλογή παρέχει στον προχωρημένο χρήστη περισσότερη ευελιξία για τη διαμόρφωση των μαζικών εξωτερικών χώρων αποθήκευσης και τη ρύθμιση των προτεραιοτήτων αποθήκευσης. Περισσότερες πληροφορίες διατίθενται στην τεκμηρίωση GUI του εξωτερικού χώρου αποθήκευσης και στην τεκμηρίωση του αρχείου διαμόρφωσης εξωτερικής αποθήκευσης.", - "Name" : "Όνομα", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ο εξωτερικός χώρος αποθήκευσης σάς επιτρέπει να συνδέσετε εξωτερικές υπηρεσίες και συσκευές αποθήκευσης ως δευτερεύουσες συσκευές αποθήκευσης Nextcloud. Μπορείτε επίσης να επιτρέψετε στους χρήστες να εγκαταστήσουν τις δικές τους υπηρεσίες εξωτερικής αποθήκευσης.", - "All users" : "'Ολοι οι χρήστες", - "Allow users to mount external storage" : "Να επιτρέπεται στους χρήστες η σύνδεση εξωτερικού αποθηκευτικού χώρου" + "Error configuring OAuth1" : "Σφάλμα ρύθμισης του OAuth1", + "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", + "OAuth1" : "OAuth1", + "App key" : "Κλειδί εφαρμογής", + "App secret" : "Μυστικό εφαρμογής" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index 1bea7dc5893..d0a1f419861 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Παροχή πρόσβασης", - "Error configuring OAuth1" : "Σφάλμα ρύθμισης του OAuth1", - "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", "Error configuring OAuth2" : "Σφάλμα ρύθμισης του OAuth2", "Generate keys" : "Δημιουργία κλειδιών", "Error generating key pair" : "Σφάλμα κατά τη δημιουργία ζεύγους κλειδιών", - "(Group)" : "(Ομάδα)", - "Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ", - "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", - "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων", - "Enable sharing" : "Ενεργοποίηση διαμοιρασμού", - "Check for changes" : "Έλεγχος για αλλαγές", - "Never" : "Ποτέ", - "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", - "Read only" : "Μόνο για ανάγνωση", - "Disconnect" : "Αποσύνδεση", - "Admin defined" : "Ορίσθηκε διαχειριστής ", - "Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;", - "Saved" : "Αποθηκεύτηκαν", - "Saving …" : "Αποθηκεύεται ...", - "Save" : "Αποθήκευση", "Storage with ID \"%d\" not found" : "Αποθηκευτικός χώρος με ID \"%d\" δεν βρέθηκε ", "Invalid backend or authentication mechanism class" : "Μη έγκυρη κλάση συστήματος ή μηχανισμού πιστοποίησης", "Invalid mount point" : "Μη έγκυρο σημείο προσάρτησης", @@ -35,9 +18,6 @@ "Secret key" : "Μυστικό κλειδί", "Builtin" : "Builtin", "None" : "Τίποτα", - "OAuth1" : "OAuth1", - "App key" : "Κλειδί εφαρμογής", - "App secret" : "Μυστικό εφαρμογής", "OAuth2" : "OAuth2", "Client ID" : "ID πελάτη", "Client secret" : "Μυστικό πελάτη", @@ -92,6 +72,7 @@ "External storage" : "Εξωτερικός αποθηκευτικός χώρος", "External storage support" : "Υποστήριξη εξωτερικού αποθηκευτικού χώρου", "Adds basic external storage support" : "Προσθέτει βασική υποστήριξη εξωτερικού αποθηκευτικού χώρου", + "Confirm" : "Επιβεβαίωση", "Open in Files" : "Άνοιγμα στα Αρχεία", "External mount error" : "Σφάλμα εξωτερικής προσάρτησης", "Storage type" : "Τύπος αποθηκευτικού χώρου", @@ -99,38 +80,35 @@ "Scope" : "Εύρος", "Personal" : "Προσωπικός", "System" : "Συστήματος", + "(Group)" : "(Ομάδα)", + "Compatibility with Mac NFD encoding (slow)" : "Συμβατότητα με Mac NFD κωδικόποιηση (αργό) ", + "Enable encryption" : "Ενεργοποίηση κρυπτογράφησης", + "Enable previews" : "Ενεργοποίηση προεπισκοπήσεων", + "Enable sharing" : "Ενεργοποίηση διαμοιρασμού", + "Check for changes" : "Έλεγχος για αλλαγές", + "Never" : "Ποτέ", + "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", + "Read only" : "Μόνο για ανάγνωση", + "Disconnect" : "Αποσύνδεση", + "Admin defined" : "Ορίσθηκε διαχειριστής ", + "Delete storage?" : "Διαγραφή αποθηκευτικού χώρου;", + "Click to recheck the configuration" : "Κλίκ για επανέλεγχο ρυθμίσεων", + "Saved" : "Αποθηκεύτηκαν", + "Saving …" : "Αποθηκεύεται ...", + "Save" : "Αποθήκευση", "No external storage configured or you don't have the permission to configure them" : "Δεν έχει ρυθμιστεί καμία εξωτερική αποθήκευση ή δεν έχετε δικαιώματα ρύθμισης", "Open documentation" : "Άνοιγμα τεκμηρίωσης", "Folder name" : "Όνομα φακέλου", "Authentication" : "Πιστοποίηση", "Configuration" : "Ρυθμίσεις", "Available for" : "Διαθέσιμο για", - "Click to recheck the configuration" : "Κλίκ για επανέλεγχο ρυθμίσεων", "Add storage" : "Προσθήκη αποθηκευτικού χώρου", "Advanced settings" : "Ρυθμίσεις για προχωρημένους", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Τα δημόσια διαπιστευτήρια μπορούν να χρησιμοποιηθούν για τον έλεγχο ταυτότητας με διάφορους εξωτερικούς χώρους αποθήκευσης με ίδια διαπιστευτήρια.", - "Empty response from the server" : "Κενή απάντηση από τον διακομιστή", - "Couldn't access. Please log out and in again to activate this mount point" : "Αδυναμία πρόσβασης. Παρακαλούμε αποσυνδεθείτε και συνδεθείτε ξανά για ενεργοποίηση του σημείου προσάρτησης", - "Couldn't get the information from the remote server: {code} {type}" : "Δεν μπορέσαμε να πάρουμε πληροφορίες απο τον απομακρυσμένο εξυπηρετητή: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Δεν μπορέσαμε να πάρουμε την λίστα εξωτερικών σημείων προσάρτησης: {type}", - "There was an error with message: " : "Υπήρξε σφάλμα στο μήνυμα:", - "external-storage" : "Εξωτερικός-αποθηκευτικός-χώρος", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Αδυναμία λήψης της λίστας των σημείων προσάρτησης δικτύων Windows: Κενή απάντηση από τον διακομιστή", - "Please enter the credentials for the {mount} mount" : "Παρακαλούμε βάλτε τα διαπιστευτήρια για την {mount} προσάρτηση", - "Username" : "Όνομα χρήστη", - "Credentials saved" : "Τα διαπιστευτήρια αποθηκεύτηκαν", - "Credentials saving failed" : "Αποτυχία αποθήκευσης διαπιστευτηρίων", - "Credentials required" : "Απαιτούνται διαπιστευτήρια ", - "Storage with ID \"%d\" is not user editable" : "Αποθηκευτικός χώρος με ID \"%d\" δεν είναι επεξεργάσιμος από τον χρήστη ", - "Username and password" : "Όνομα χρήστη και κωδικός πρόσβασης", - "Global credentials, user entered" : "Δημόσια διαπιστευτήρια, καταχωρήθηκαν από τον χρήστη", - "User entered, store in database" : "Χρήστης εισήχθη, τοποθετήστε στην βάση δεδομένων", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Ελέγξτε τα ACL κάθε αρχείου ή φακέλου μέσα σε έναν κατάλογο για να φιλτράρετε στοιχεία όπου ο χρήστης δεν έχει δικαιώματα ανάγνωσης, με καθυστέρηση στις επιδόσεις", - "Username as share" : "Όνομα χρήστη ως διαμοιραζόμενος φάκελος", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Η εφαρμογή επιτρέπει στους διαχειριστές να διαμορφώνουν συνδέσεις σε εξωτερικούς παρόχους αποθηκευτικού χώρου, όπως διακομιστές FTP, S3 ή SWIFT, άλλοι διακομιστές Nextcloud, διακομιστές WebDAV και πολλά άλλα. Οι διαχειριστές μπορούν να επιλέξουν τους τύπους αποθήκευσης που επιτρέπουν και μπορούν να προσαρτήσουν αυτές τις θέσεις αποθήκευσης για έναν χρήστη, μια ομάδα ή ολόκληρο το σύστημα. Οι χρήστες θα εμφανίσουν έναν νέο φάκελο στον κεντρικό τους κατάλογο Nextcloud, τον οποίο μπορούν να έχουν πρόσβαση και να χρησιμοποιήσουν όπως και κάθε άλλο φάκελο Nextcloud. Η εξωτερική αποθήκευση επιτρέπει επίσης στους χρήστες να μοιράζονται αρχεία που είναι αποθηκευμένα σε αυτές τις εξωτερικές τοποθεσίες. Σε αυτές τις περιπτώσεις, τα διαπιστευτήρια του κατόχου του αρχείου χρησιμοποιούνται όταν ο παραλήπτης ζητά το αρχείο από εξωτερικό αποθηκευτικό χώρο, εξασφαλίζοντας έτσι ότι ο παραλήπτης μπορεί να έχει πρόσβαση στο κοινόχρηστο αρχείο.\n\nΗ εξωτερική αποθήκευση μπορεί να ρυθμιστεί χρησιμοποιώντας το GUI ή στη γραμμή εντολών. Αυτή η δεύτερη επιλογή παρέχει στον προχωρημένο χρήστη περισσότερη ευελιξία για τη διαμόρφωση των μαζικών εξωτερικών χώρων αποθήκευσης και τη ρύθμιση των προτεραιοτήτων αποθήκευσης. Περισσότερες πληροφορίες διατίθενται στην τεκμηρίωση GUI του εξωτερικού χώρου αποθήκευσης και στην τεκμηρίωση του αρχείου διαμόρφωσης εξωτερικής αποθήκευσης.", - "Name" : "Όνομα", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ο εξωτερικός χώρος αποθήκευσης σάς επιτρέπει να συνδέσετε εξωτερικές υπηρεσίες και συσκευές αποθήκευσης ως δευτερεύουσες συσκευές αποθήκευσης Nextcloud. Μπορείτε επίσης να επιτρέψετε στους χρήστες να εγκαταστήσουν τις δικές τους υπηρεσίες εξωτερικής αποθήκευσης.", - "All users" : "'Ολοι οι χρήστες", - "Allow users to mount external storage" : "Να επιτρέπεται στους χρήστες η σύνδεση εξωτερικού αποθηκευτικού χώρου" + "Error configuring OAuth1" : "Σφάλμα ρύθμισης του OAuth1", + "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", + "OAuth1" : "OAuth1", + "App key" : "Κλειδί εφαρμογής", + "App secret" : "Μυστικό εφαρμογής" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js index 36d5aa9a5bd..a00bba8a579 100644 --- a/apps/files_external/l10n/en_GB.js +++ b/apps/files_external/l10n/en_GB.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Grant access", - "Error configuring OAuth1" : "Error configuring OAuth1", - "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Error configuring OAuth2" : "Error configuring OAuth2", "Generate keys" : "Generate keys", "Error generating key pair" : "Error generating key pair", - "Type to select account or group." : "Type to select account or group.", - "(Group)" : "(Group)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", - "Enable encryption" : "Enable encryption", - "Enable previews" : "Enable previews", - "Enable sharing" : "Enable sharing", - "Check for changes" : "Check for changes", - "Never" : "Never", - "Once every direct access" : "Once every direct access", - "Read only" : "Read only", - "Disconnect" : "Disconnect", - "Admin defined" : "Admin defined", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "Delete storage?", - "Saved" : "Saved", - "Saving …" : "Saving …", - "Save" : "Save", + "You are not logged in" : "You are not logged in", + "Permission denied" : "Permission denied", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "Storage with ID \"%d\" not found", "Invalid backend or authentication mechanism class" : "Invalid backend or authentication mechanism class", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Secret key", "Builtin" : "Builtin", "None" : "None", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Enable Path Style", "Legacy (v2) authentication" : "Legacy (v2) authentication", "Enable multipart copy" : "Enable multipart copy", + "SSE-C encryption key" : "SSE-C encryption key", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Remote subfolder", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "External storage support", "Adds basic external storage support" : "Adds basic external storage support", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "Confirm", + "Storage credentials" : "Storage credentials", + "To access the storage, you need to provide the authentication credentials." : "To access the storage, you need to provide the authentication credentials.", + "Enter the storage login" : "Enter the storage login", + "Enter the storage password" : "Enter the storage password", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", + "Credentials successfully set" : "Credentials successfully set", + "Error while setting credentials: {error}" : "Error while setting credentials: {error}", + "Checking storage …" : "Checking storage …", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Scope", "Personal" : "Personal", "System" : "System", + "Type to select account or group." : "Type to select account or group.", + "(Group)" : "(Group)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", + "Enable encryption" : "Enable encryption", + "Enable previews" : "Enable previews", + "Enable sharing" : "Enable sharing", + "Check for changes" : "Check for changes", + "Never" : "Never", + "Once every direct access" : "Once every direct access", + "Read only" : "Read only", + "Disconnect" : "Disconnect", + "Unknown backend: {backendName}" : "Unknown backend: {backendName}", + "Admin defined" : "Admin defined", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "Delete storage?", + "Click to recheck the configuration" : "Click to recheck the configuration", + "Saved" : "Saved", + "Saving …" : "Saving …", + "Save" : "Save", + "Failed to save global credentials" : "Failed to save global credentials", + "Failed to save global credentials: {message}" : "Failed to save global credentials: {message}", "No external storage configured or you don't have the permission to configure them" : "No external storage configured or you don't have the permission to configure them", "Open documentation" : "Open documentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", - "Click to recheck the configuration" : "Click to recheck the configuration", "Add storage" : "Add storage", "All people" : "All people", "Advanced settings" : "Advanced settings", "Allow people to mount external storage" : "Allow people to mount external storage", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Global credentials can be used to authenticate with multiple external storages that have the same credentials.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", - "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", - "There was an error with message: " : "There was an error with message: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", - "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", - "Username" : "Username", - "Credentials saved" : "Credentials saved", - "Credentials saving failed" : "Credentials saving failed", - "Credentials required" : "Credentials required", - "Storage with ID \"%d\" is not user editable" : "Storage with ID \"%d\" is not user editable", - "Username and password" : "Username and password", - "Global credentials, user entered" : "Global credentials, user entered", - "User entered, store in database" : "User entered, store in database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disabling it will allow to use a case insentive file system, but comes with a performance penalty", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "Username as share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services.", - "All users" : "All users", - "Allow users to mount external storage" : "Allow users to mount external storage" + "Error configuring OAuth1" : "Error configuring OAuth1", + "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json index 044244dbd83..768380c4759 100644 --- a/apps/files_external/l10n/en_GB.json +++ b/apps/files_external/l10n/en_GB.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Grant access", - "Error configuring OAuth1" : "Error configuring OAuth1", - "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Error configuring OAuth2" : "Error configuring OAuth2", "Generate keys" : "Generate keys", "Error generating key pair" : "Error generating key pair", - "Type to select account or group." : "Type to select account or group.", - "(Group)" : "(Group)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", - "Enable encryption" : "Enable encryption", - "Enable previews" : "Enable previews", - "Enable sharing" : "Enable sharing", - "Check for changes" : "Check for changes", - "Never" : "Never", - "Once every direct access" : "Once every direct access", - "Read only" : "Read only", - "Disconnect" : "Disconnect", - "Admin defined" : "Admin defined", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "Delete storage?", - "Saved" : "Saved", - "Saving …" : "Saving …", - "Save" : "Save", + "You are not logged in" : "You are not logged in", + "Permission denied" : "Permission denied", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "Storage with ID \"%d\" not found", "Invalid backend or authentication mechanism class" : "Invalid backend or authentication mechanism class", @@ -40,9 +22,6 @@ "Secret key" : "Secret key", "Builtin" : "Builtin", "None" : "None", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -78,6 +57,7 @@ "Enable Path Style" : "Enable Path Style", "Legacy (v2) authentication" : "Legacy (v2) authentication", "Enable multipart copy" : "Enable multipart copy", + "SSE-C encryption key" : "SSE-C encryption key", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Remote subfolder", @@ -111,9 +91,17 @@ "External storage support" : "External storage support", "Adds basic external storage support" : "Adds basic external storage support", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "Confirm", + "Storage credentials" : "Storage credentials", + "To access the storage, you need to provide the authentication credentials." : "To access the storage, you need to provide the authentication credentials.", + "Enter the storage login" : "Enter the storage login", + "Enter the storage password" : "Enter the storage password", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", + "Credentials successfully set" : "Credentials successfully set", + "Error while setting credentials: {error}" : "Error while setting credentials: {error}", + "Checking storage …" : "Checking storage …", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -129,6 +117,28 @@ "Scope" : "Scope", "Personal" : "Personal", "System" : "System", + "Type to select account or group." : "Type to select account or group.", + "(Group)" : "(Group)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", + "Enable encryption" : "Enable encryption", + "Enable previews" : "Enable previews", + "Enable sharing" : "Enable sharing", + "Check for changes" : "Check for changes", + "Never" : "Never", + "Once every direct access" : "Once every direct access", + "Read only" : "Read only", + "Disconnect" : "Disconnect", + "Unknown backend: {backendName}" : "Unknown backend: {backendName}", + "Admin defined" : "Admin defined", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "Delete storage?", + "Click to recheck the configuration" : "Click to recheck the configuration", + "Saved" : "Saved", + "Saving …" : "Saving …", + "Save" : "Save", + "Failed to save global credentials" : "Failed to save global credentials", + "Failed to save global credentials: {message}" : "Failed to save global credentials: {message}", "No external storage configured or you don't have the permission to configure them" : "No external storage configured or you don't have the permission to configure them", "Open documentation" : "Open documentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services.", @@ -136,36 +146,15 @@ "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", - "Click to recheck the configuration" : "Click to recheck the configuration", "Add storage" : "Add storage", "All people" : "All people", "Advanced settings" : "Advanced settings", "Allow people to mount external storage" : "Allow people to mount external storage", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Global credentials can be used to authenticate with multiple external storages that have the same credentials.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", - "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", - "There was an error with message: " : "There was an error with message: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", - "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", - "Username" : "Username", - "Credentials saved" : "Credentials saved", - "Credentials saving failed" : "Credentials saving failed", - "Credentials required" : "Credentials required", - "Storage with ID \"%d\" is not user editable" : "Storage with ID \"%d\" is not user editable", - "Username and password" : "Username and password", - "Global credentials, user entered" : "Global credentials, user entered", - "User entered, store in database" : "User entered, store in database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disabling it will allow to use a case insentive file system, but comes with a performance penalty", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "Username as share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services.", - "All users" : "All users", - "Allow users to mount external storage" : "Allow users to mount external storage" + "Error configuring OAuth1" : "Error configuring OAuth1", + "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/eo.js b/apps/files_external/l10n/eo.js index e3cb46a0e9d..4735d0e901b 100644 --- a/apps/files_external/l10n/eo.js +++ b/apps/files_external/l10n/eo.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Doni alirpermeson", - "Error configuring OAuth1" : "Eraro dum agordo de OAuth1", - "Please provide a valid app key and secret." : "Bv. doni validan aplikaĵan ŝlosilon kaj sekreton.", "Error configuring OAuth2" : "Eraro dum agordo de OAuth2", "Generate keys" : "Generi ŝlosilojn", "Error generating key pair" : "Eraro dum generado de ŝlosila paro", - "(Group)" : "(grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Kongrueco kun Makintoŝa „NFD“ signara kodoprezento (malrapide)", - "Enable encryption" : "Ŝalti ĉifradon", - "Enable previews" : "Ŝalti antaŭrigardojn", - "Enable sharing" : "Ŝalti kunhavigadon", - "Check for changes" : "Serĉi la modifojn", - "Never" : "Neniam", - "Once every direct access" : "Unufoje okaze de senpera aliro", - "Read only" : "Nurlega", - "Disconnect" : "Malkonekti", - "Admin defined" : "Difinita de administranto", - "Delete storage?" : "Ĉu forigi konservejon?", - "Saved" : "Konservita", - "Saving …" : "Konservado...", - "Save" : "Konservi", "Storage with ID \"%d\" not found" : "Konservejo kun identigilo „%d“ ne trovita", "Invalid backend or authentication mechanism class" : "Nevalida interna tipo aŭ aŭtentiga klaso", "Invalid mount point" : "Nevalida surmetingo", @@ -37,9 +20,6 @@ OC.L10N.register( "Secret key" : "Sekreta ŝlosilo", "Builtin" : "Interne instalita", "None" : "Nenio", - "OAuth1" : "OAuth1", - "App key" : "Aplikaĵa ŝlosilo", - "App secret" : "Aplikaĵosekreto", "OAuth2" : "OAuth2", "Client ID" : "Klientidentigilo", "Client secret" : "Klientosekreto", @@ -93,42 +73,42 @@ OC.L10N.register( "External storage" : "Ekstera konservejo", "External storage support" : "Subteno de ekstera konservejo", "Adds basic external storage support" : "Aldonas bazan subtenon por ekstera konservejo", + "Confirm" : "Konfirmi", "External mount error" : "Eraro de surmetingo ekstera", "Storage type" : "Konserveja tipo", "Unknown" : "Nekonata", "Scope" : "Amplekso", "Personal" : "Persona", "System" : "Sistemo", + "(Group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Kongrueco kun Makintoŝa „NFD“ signara kodoprezento (malrapide)", + "Enable encryption" : "Ŝalti ĉifradon", + "Enable previews" : "Ŝalti antaŭrigardojn", + "Enable sharing" : "Ŝalti kunhavigadon", + "Check for changes" : "Serĉi la modifojn", + "Never" : "Neniam", + "Once every direct access" : "Unufoje okaze de senpera aliro", + "Read only" : "Nurlega", + "Disconnect" : "Malkonekti", + "Admin defined" : "Difinita de administranto", + "Delete storage?" : "Ĉu forigi konservejon?", + "Click to recheck the configuration" : "Alklaku por rekontroli la agordon", + "Saved" : "Konservita", + "Saving …" : "Konservado...", + "Save" : "Konservi", "No external storage configured or you don't have the permission to configure them" : "Neniu ekstera konservejo agordita, aŭ vi ne rajtas agordi ĝin.", "Open documentation" : "Malfermi la dokumentaron", "Folder name" : "Dosierujnomo", "Authentication" : "Aŭtentigo", "Configuration" : "Agordo", "Available for" : "Disponebla por", - "Click to recheck the configuration" : "Alklaku por rekontroli la agordon", "Add storage" : "Aldoni konservejon", "Advanced settings" : "Altanivela agordo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Ĝeneralaj akreditiloj utilas, kiam pluraj eksteraj konservejoj kunuzas la samajn akreditilojn.", - "Empty response from the server" : "Malplena respondo el la servilo", - "Couldn't access. Please log out and in again to activate this mount point" : "Aliro ne eblis. Bv. elsaluti kaj re-ensaluti por aktivigi tiun surmetingon", - "Couldn't get the information from the remote server: {code} {type}" : "Ne eblis havi informojn el la fora servilo: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ne eblis havi listojn de eksteraj surmetingoj: {type}", - "There was an error with message: " : "Estis eraro kun la jena mesaĝo:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ne eblis ricevi liston de surmetingoj el Windows-retdisko: malplena respondo el la servilo", - "Please enter the credentials for the {mount} mount" : "Bv. entajpi la akreditilojn de la surmetingo {mount}", - "Username" : "Uzantnomo", - "Credentials saved" : "Akreditiloj konservitaj", - "Credentials saving failed" : "Konservo de akreditiloj malsukcesis", - "Credentials required" : "Akreditiloj bezonataj", - "Storage with ID \"%d\" is not user editable" : "Konservejo kun identigilo „%d“ ne estas modifebla de uzantoj", - "Username and password" : "Uzantnomo kaj pasvorto", - "Global credentials, user entered" : "Ĝeneralaj akreditiloj, tajpitaj de la uzanto", - "User entered, store in database" : "Entajpita de uzanto, konservi en datumbazo", - "Username as share" : "Uzantonmo kiel kunhavo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tiu aplikaĵo ebligas al administranto agordi konektojn al eksteraj konservejoj, kiel FTP-serviloj, S3- aŭ SWIFT-objektkonservejoj, aliaj Nextcloud-serviloj, WebDAV-serviloj, kaj pli. Administranto ebligas certajn tipojn de konservejo kaj povas surmeti ilin por iu uzanto, iu grupo aŭ ĉiuj. Uzantoj vidos novan dosierujon, kiuj aperos en la radiko de ilia Nextcloud. Ekstera konservejo ankaŭ ebligas al uzantoj kunhavigi dosierojn konservitajn ene. Tiuokaze, akreditiloj de la dosierposedanto uziĝas, kiam la ricevanto petas la dosieron el la ekstera konservejo, por certigi, ke la ricevanto povas aliri la kunhavigitan dosieron.\n\nEkstera konservejo agordiĝas per grafika fasado aŭ komandlinie. Tiu lasta opcio estas pli fleksa por spertulo: amasa agordo de surmetingoj kaj de surmetingaj prioritatoj. Pli da informoj disponeblas en la dokumentaro pri ekstera konservejo.", - "Name" : "Nomo", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstera konservejo ebligas al vi surmeti servojn de ekstera konservejo kaj aparatojn, kiel kromajn konservejojn. Vi povas ankaŭ permesi al uzantoj surmeti ilian proprajn eksterajn konservejojn.", - "Allow users to mount external storage" : "Permesi al uzantoj surmeti eksteran konservejon" + "Error configuring OAuth1" : "Eraro dum agordo de OAuth1", + "Please provide a valid app key and secret." : "Bv. doni validan aplikaĵan ŝlosilon kaj sekreton.", + "OAuth1" : "OAuth1", + "App key" : "Aplikaĵa ŝlosilo", + "App secret" : "Aplikaĵosekreto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/eo.json b/apps/files_external/l10n/eo.json index 85875ec456a..6c8ddd27dda 100644 --- a/apps/files_external/l10n/eo.json +++ b/apps/files_external/l10n/eo.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Doni alirpermeson", - "Error configuring OAuth1" : "Eraro dum agordo de OAuth1", - "Please provide a valid app key and secret." : "Bv. doni validan aplikaĵan ŝlosilon kaj sekreton.", "Error configuring OAuth2" : "Eraro dum agordo de OAuth2", "Generate keys" : "Generi ŝlosilojn", "Error generating key pair" : "Eraro dum generado de ŝlosila paro", - "(Group)" : "(grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Kongrueco kun Makintoŝa „NFD“ signara kodoprezento (malrapide)", - "Enable encryption" : "Ŝalti ĉifradon", - "Enable previews" : "Ŝalti antaŭrigardojn", - "Enable sharing" : "Ŝalti kunhavigadon", - "Check for changes" : "Serĉi la modifojn", - "Never" : "Neniam", - "Once every direct access" : "Unufoje okaze de senpera aliro", - "Read only" : "Nurlega", - "Disconnect" : "Malkonekti", - "Admin defined" : "Difinita de administranto", - "Delete storage?" : "Ĉu forigi konservejon?", - "Saved" : "Konservita", - "Saving …" : "Konservado...", - "Save" : "Konservi", "Storage with ID \"%d\" not found" : "Konservejo kun identigilo „%d“ ne trovita", "Invalid backend or authentication mechanism class" : "Nevalida interna tipo aŭ aŭtentiga klaso", "Invalid mount point" : "Nevalida surmetingo", @@ -35,9 +18,6 @@ "Secret key" : "Sekreta ŝlosilo", "Builtin" : "Interne instalita", "None" : "Nenio", - "OAuth1" : "OAuth1", - "App key" : "Aplikaĵa ŝlosilo", - "App secret" : "Aplikaĵosekreto", "OAuth2" : "OAuth2", "Client ID" : "Klientidentigilo", "Client secret" : "Klientosekreto", @@ -91,42 +71,42 @@ "External storage" : "Ekstera konservejo", "External storage support" : "Subteno de ekstera konservejo", "Adds basic external storage support" : "Aldonas bazan subtenon por ekstera konservejo", + "Confirm" : "Konfirmi", "External mount error" : "Eraro de surmetingo ekstera", "Storage type" : "Konserveja tipo", "Unknown" : "Nekonata", "Scope" : "Amplekso", "Personal" : "Persona", "System" : "Sistemo", + "(Group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Kongrueco kun Makintoŝa „NFD“ signara kodoprezento (malrapide)", + "Enable encryption" : "Ŝalti ĉifradon", + "Enable previews" : "Ŝalti antaŭrigardojn", + "Enable sharing" : "Ŝalti kunhavigadon", + "Check for changes" : "Serĉi la modifojn", + "Never" : "Neniam", + "Once every direct access" : "Unufoje okaze de senpera aliro", + "Read only" : "Nurlega", + "Disconnect" : "Malkonekti", + "Admin defined" : "Difinita de administranto", + "Delete storage?" : "Ĉu forigi konservejon?", + "Click to recheck the configuration" : "Alklaku por rekontroli la agordon", + "Saved" : "Konservita", + "Saving …" : "Konservado...", + "Save" : "Konservi", "No external storage configured or you don't have the permission to configure them" : "Neniu ekstera konservejo agordita, aŭ vi ne rajtas agordi ĝin.", "Open documentation" : "Malfermi la dokumentaron", "Folder name" : "Dosierujnomo", "Authentication" : "Aŭtentigo", "Configuration" : "Agordo", "Available for" : "Disponebla por", - "Click to recheck the configuration" : "Alklaku por rekontroli la agordon", "Add storage" : "Aldoni konservejon", "Advanced settings" : "Altanivela agordo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Ĝeneralaj akreditiloj utilas, kiam pluraj eksteraj konservejoj kunuzas la samajn akreditilojn.", - "Empty response from the server" : "Malplena respondo el la servilo", - "Couldn't access. Please log out and in again to activate this mount point" : "Aliro ne eblis. Bv. elsaluti kaj re-ensaluti por aktivigi tiun surmetingon", - "Couldn't get the information from the remote server: {code} {type}" : "Ne eblis havi informojn el la fora servilo: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ne eblis havi listojn de eksteraj surmetingoj: {type}", - "There was an error with message: " : "Estis eraro kun la jena mesaĝo:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ne eblis ricevi liston de surmetingoj el Windows-retdisko: malplena respondo el la servilo", - "Please enter the credentials for the {mount} mount" : "Bv. entajpi la akreditilojn de la surmetingo {mount}", - "Username" : "Uzantnomo", - "Credentials saved" : "Akreditiloj konservitaj", - "Credentials saving failed" : "Konservo de akreditiloj malsukcesis", - "Credentials required" : "Akreditiloj bezonataj", - "Storage with ID \"%d\" is not user editable" : "Konservejo kun identigilo „%d“ ne estas modifebla de uzantoj", - "Username and password" : "Uzantnomo kaj pasvorto", - "Global credentials, user entered" : "Ĝeneralaj akreditiloj, tajpitaj de la uzanto", - "User entered, store in database" : "Entajpita de uzanto, konservi en datumbazo", - "Username as share" : "Uzantonmo kiel kunhavo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Tiu aplikaĵo ebligas al administranto agordi konektojn al eksteraj konservejoj, kiel FTP-serviloj, S3- aŭ SWIFT-objektkonservejoj, aliaj Nextcloud-serviloj, WebDAV-serviloj, kaj pli. Administranto ebligas certajn tipojn de konservejo kaj povas surmeti ilin por iu uzanto, iu grupo aŭ ĉiuj. Uzantoj vidos novan dosierujon, kiuj aperos en la radiko de ilia Nextcloud. Ekstera konservejo ankaŭ ebligas al uzantoj kunhavigi dosierojn konservitajn ene. Tiuokaze, akreditiloj de la dosierposedanto uziĝas, kiam la ricevanto petas la dosieron el la ekstera konservejo, por certigi, ke la ricevanto povas aliri la kunhavigitan dosieron.\n\nEkstera konservejo agordiĝas per grafika fasado aŭ komandlinie. Tiu lasta opcio estas pli fleksa por spertulo: amasa agordo de surmetingoj kaj de surmetingaj prioritatoj. Pli da informoj disponeblas en la dokumentaro pri ekstera konservejo.", - "Name" : "Nomo", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstera konservejo ebligas al vi surmeti servojn de ekstera konservejo kaj aparatojn, kiel kromajn konservejojn. Vi povas ankaŭ permesi al uzantoj surmeti ilian proprajn eksterajn konservejojn.", - "Allow users to mount external storage" : "Permesi al uzantoj surmeti eksteran konservejon" + "Error configuring OAuth1" : "Eraro dum agordo de OAuth1", + "Please provide a valid app key and secret." : "Bv. doni validan aplikaĵan ŝlosilon kaj sekreton.", + "OAuth1" : "OAuth1", + "App key" : "Aplikaĵa ŝlosilo", + "App secret" : "Aplikaĵosekreto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index 64240734f0d..b2cadf37609 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Error configuring OAuth2" : "Error al configurar OAuth2", "Generate keys" : "Generar claves", "Error generating key pair" : "Error al generar el par de claves", - "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", - "Enable encryption" : "Habilitar cifrado", - "Enable previews" : "Habilitar previsualizaciones", - "Enable sharing" : "Habilitar el uso compartido", - "Check for changes" : "Comprobar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez en cada acceso", - "Read only" : "Solo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Admin definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación automática del estado está desactivada debido al gran número de almacenes configurados, haga clic para comprobar el estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y provocará la eliminación de estos archivos y carpetas en cualquier cliente de sincronización que esté conectado en ese momento, pero no eliminará ningún archivo ni carpeta en el propio almacenamiento externo.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Guardando…", - "Save" : "Guardar", + "You are not logged in" : "No ha iniciado sesión.", + "Permission denied" : "Permiso denegado", "Forbidden to manage local mounts" : "Prohibido gestionar montajes locales", "Storage with ID \"%d\" not found" : "No se ha encontrado el almacenamiento con ID \"%d\"", "Invalid backend or authentication mechanism class" : "Sistema o mecanismo de autentificación inválido", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Clave secreta", "Builtin" : "Incorporado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "App principal", - "App secret" : "App secreta", "OAuth2" : "OAuth2", "Client ID" : "ID de Cliente", "Client secret" : "Cliente secreto", @@ -59,7 +38,7 @@ OC.L10N.register( "API key" : "Clave de la API", "Global credentials" : "Credenciales globales", "Log-in credentials, save in database" : "Credenciales de inicio de sesión, salvar en la base de datos", - "Login and password" : "Inicio de sesión e contrasinal", + "Login and password" : "Inicio de sesión y contraseña", "Log-in credentials, save in session" : "Credenciales de login, guardar en la sesión", "Global credentials, manually entered" : "Credenciais globais, introducidas de forma manual", "Manually entered, store in database" : "Introducido manualmente, almacenar na base de datos", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Habilitar Estilo de Ruta", "Legacy (v2) authentication" : "Autenticación heredada (v2)", "Enable multipart copy" : "Activa a copia multiparte", + "SSE-C encryption key" : "Llave de cifrado SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcarpeta remota", @@ -99,7 +79,7 @@ OC.L10N.register( "Case sensitive file system" : "Sistema de archivos sensible a mayúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desactivarlo permitirá utilizar un sistema de archivos insensible a mayúsculas y minúsculas, pero conlleva una penalización en el rendimiento.", "Verify ACL access when listing files" : "Verificar acceso ACL al listar archivos", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobe as ACL de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, inclúe unha penalización de rendemento", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique las ACL de cada archivo o carpeta dentro de un directorio para filtrar elementos donde la cuenta no tiene permisos de lectura, lo que conlleva una penalización de rendimiento.", "Timeout" : "Se agotó el tiempo", "SMB/CIFS using OC login" : "SMB/CIFS con inicio de sesión OC", "Login as share" : "Inicia sesión como compartir", @@ -112,10 +92,18 @@ OC.L10N.register( "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Añade soporte básico de almacenamiento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite aos administradores configurar conexións con provedores de almacenamento externos, como servidores FTP, almacéns de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e moito máis. A administración pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e usar como calquera outro cartafol de Nextcloud. O almacenamento externo tamén permite que as persoas compartan ficheiros almacenados nestas localizacións externas. Nestes casos, as credenciais do propietario do ficheiro utilízanse cando o destinatario solicita o ficheiro desde o almacenamento externo, garantindo así que o destinatario poida acceder ao ficheiro compartido.\n\nO almacenamento externo pódese configurar mediante a GUI ou na liña de comandos. Esta segunda opción proporciona á administración máis flexibilidade para configurar montaxes de almacenamento externo masivo e establecer prioridades de montaxe. Hai máis información dispoñible na documentación da GUI de almacenamento externo e na documentación do ficheiro de configuración de almacenamento externo.", - "Enter missing credentials" : "Introduzca las credenciales requeridas", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones con proveedores de almacenamiento externos, como servidores FTP, almacenes de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y mucho más. La administración puede escoger qué tipos de almacenamiento activar y puede montar estas localizaciones de almacenamiento para una cuenta, un grupo o todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud. Pueden acceder a ella o usarla como cualquiera otra carpeta. El almacenamiento externo también permite que las personas compartan ficheros almacenados en estas localizaciones externas. En estos casos, se utilizan las credenciales del propietario cuando el destinatario solicita el fichero desde el almacenamiento externo, garantizando así que el destinatario pueda acceder al fichero compartido.\n\nSe puede configurar el almacenamiento externo mediante la GUI o la línea de comandos. Esta segunda opción proporciona al administrador más flexibilidad para configurar montajes de almacenamiento externo masivo y establecer prioridades de montaje. Hay más información disponible en la documentación de la GUI del almacenamiento externo y en la documentación del fichero de configuración del almacenamiento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciales de almacenamiento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder al almacenamiento, debe proporcionar las credenciales de autenticación.", + "Enter the storage login" : "Ingrese el inicio de sesión de almacenamiento", + "Enter the storage password" : "Ingrese la contraseña de almacenamiento", "Unable to update this external storage config. {statusMessage}" : "No fue posible actualizar la configuración de este almacenamiento externo {statusMessage}", - "New configuration successfully saved" : "La nueva configuración se guardó exitósamente", + "New configuration successfully saved" : "La nueva configuración se ha guardado con éxito", + "Enter missing credentials" : "Introduzca las credenciales requeridas", + "Credentials successfully set" : "Se han establecido las credenciales exitosamente", + "Error while setting credentials: {error}" : "Error al establecer credenciales: {error}", + "Checking storage …" : "Comprobando el almacenamiento …", "There was an error with this external storage." : "Se presentó un problema con este almacenamiento externo.", "We were unable to check the external storage {basename}" : "No nos fue posible chequear el almacenamiento externo {basename}", "Examine this faulty external storage configuration" : "Examinar la configuración de este almacenamiento externo con fallas", @@ -131,43 +119,44 @@ OC.L10N.register( "Scope" : "Ámbito", "Personal" : "Personal", "System" : "Sistema", - "No external storage configured or you don't have the permission to configure them" : "No se ha configurado ningún almacenamiento externo o no tienes permiso para configurarlos", + "Type to select account or group." : "Escriba para seleccionar una cuenta o grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", + "Enable encryption" : "Habilitar cifrado", + "Enable previews" : "Habilitar previsualizaciones", + "Enable sharing" : "Habilitar el uso compartido", + "Check for changes" : "Comprobar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez en cada acceso", + "Read only" : "Solo lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Backend desconocido: {backendName}", + "Admin defined" : "Admin definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación automática del estado está desactivada debido al gran número de almacenes configurados, haga clic para comprobar el estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y provocará la eliminación de estos archivos y carpetas en cualquier cliente de sincronización que esté conectado en ese momento, pero no eliminará ningún archivo ni carpeta en el propio almacenamiento externo.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Clic para volver a comprobar la configuración", + "Saved" : "Guardado", + "Saving …" : "Guardando…", + "Save" : "Guardar", + "Failed to save global credentials" : "Fallo al guardar las credenciales globales", + "Failed to save global credentials: {message}" : "Fallo al guardar las credenciales globales: {message}", + "No external storage configured or you don't have the permission to configure them" : "No se ha configurado ningún almacenamiento externo o no tiene permiso para configurarlos", "Open documentation" : "Abrir la documentación", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O almacenamento externo permítelle montar servizos e dispositivos de almacenamento externos como dispositivos de almacenamento Nextcloud secundarios. Tamén podes permitir que as persoas monten os seus propios servizos de almacenamento externo.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "El almacenamiento externo le permite montar dispositivos y servicios de almacenamiento externos como dispositivos de almacenamiento secundarios de Nextcloud. También puede permitir que las personas monten sus propios servicios de almacenamiento externo.", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autentificación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Clic para volver a comprobar la configuración", "Add storage" : "Añadir almacenamiento", "All people" : "Todas as persoas", "Advanced settings" : "Configuración avanzada", "Allow people to mount external storage" : "Permite que as persoas monten almacenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Se pueden usar credenciales globales para autenticar con múltiples almacenamientos externos que tengan las mismas credenciales.", - "Type to select user or group." : "Teclee para seleccionar un usuario o grupo.", - "Empty response from the server" : "Respuesta vacía desde el servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, cierra sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}", - "There was an error with message: " : "Ha habido un error con el mensaje:", - "external-storage" : "almacenamiento-externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor introduzca las credenciales para el punto de montaje {mount}", - "Username" : "Nombre de usuario", - "Credentials saved" : "Credenciales guardados", - "Credentials saving failed" : "Guardado de credenciales fallido", - "Credentials required" : "Credenciales requeridos", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no se puede editar por el usuario", - "Username and password" : "Nombre de usuario y contraseña", - "Global credentials, user entered" : "Credenciales Globales, introducidas por el usuario", - "User entered, store in database" : "Usuario registrado, almacenar en la base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desactivarlo permitirá usar un sistema de archivos no sensible a las mayúsculas, pero a costa de menor rendimiento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar los ACL de cada archivo o carpeta en un directorio para filtrar los ítems en los que el usuario no tiene permisos de lectura. Provoca un descenso en el rendimiento.", - "Username as share" : "Nombre de usuario como compartir", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos en bloque y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos de almacenamiento secundarios de Nextcloud. También puedes permitir que los usuarios monten sus propios servicios de almacenamiento externos.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo" + "Error configuring OAuth1" : "Error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", + "OAuth1" : "OAuth1", + "App key" : "App principal", + "App secret" : "App secreta" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index 991583e358d..7b6305239de 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Error configuring OAuth2" : "Error al configurar OAuth2", "Generate keys" : "Generar claves", "Error generating key pair" : "Error al generar el par de claves", - "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", - "Enable encryption" : "Habilitar cifrado", - "Enable previews" : "Habilitar previsualizaciones", - "Enable sharing" : "Habilitar el uso compartido", - "Check for changes" : "Comprobar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez en cada acceso", - "Read only" : "Solo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Admin definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación automática del estado está desactivada debido al gran número de almacenes configurados, haga clic para comprobar el estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y provocará la eliminación de estos archivos y carpetas en cualquier cliente de sincronización que esté conectado en ese momento, pero no eliminará ningún archivo ni carpeta en el propio almacenamiento externo.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Guardando…", - "Save" : "Guardar", + "You are not logged in" : "No ha iniciado sesión.", + "Permission denied" : "Permiso denegado", "Forbidden to manage local mounts" : "Prohibido gestionar montajes locales", "Storage with ID \"%d\" not found" : "No se ha encontrado el almacenamiento con ID \"%d\"", "Invalid backend or authentication mechanism class" : "Sistema o mecanismo de autentificación inválido", @@ -40,9 +22,6 @@ "Secret key" : "Clave secreta", "Builtin" : "Incorporado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "App principal", - "App secret" : "App secreta", "OAuth2" : "OAuth2", "Client ID" : "ID de Cliente", "Client secret" : "Cliente secreto", @@ -57,7 +36,7 @@ "API key" : "Clave de la API", "Global credentials" : "Credenciales globales", "Log-in credentials, save in database" : "Credenciales de inicio de sesión, salvar en la base de datos", - "Login and password" : "Inicio de sesión e contrasinal", + "Login and password" : "Inicio de sesión y contraseña", "Log-in credentials, save in session" : "Credenciales de login, guardar en la sesión", "Global credentials, manually entered" : "Credenciais globais, introducidas de forma manual", "Manually entered, store in database" : "Introducido manualmente, almacenar na base de datos", @@ -78,6 +57,7 @@ "Enable Path Style" : "Habilitar Estilo de Ruta", "Legacy (v2) authentication" : "Autenticación heredada (v2)", "Enable multipart copy" : "Activa a copia multiparte", + "SSE-C encryption key" : "Llave de cifrado SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcarpeta remota", @@ -97,7 +77,7 @@ "Case sensitive file system" : "Sistema de archivos sensible a mayúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desactivarlo permitirá utilizar un sistema de archivos insensible a mayúsculas y minúsculas, pero conlleva una penalización en el rendimiento.", "Verify ACL access when listing files" : "Verificar acceso ACL al listar archivos", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobe as ACL de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, inclúe unha penalización de rendemento", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique las ACL de cada archivo o carpeta dentro de un directorio para filtrar elementos donde la cuenta no tiene permisos de lectura, lo que conlleva una penalización de rendimiento.", "Timeout" : "Se agotó el tiempo", "SMB/CIFS using OC login" : "SMB/CIFS con inicio de sesión OC", "Login as share" : "Inicia sesión como compartir", @@ -110,10 +90,18 @@ "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Añade soporte básico de almacenamiento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite aos administradores configurar conexións con provedores de almacenamento externos, como servidores FTP, almacéns de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e moito máis. A administración pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e usar como calquera outro cartafol de Nextcloud. O almacenamento externo tamén permite que as persoas compartan ficheiros almacenados nestas localizacións externas. Nestes casos, as credenciais do propietario do ficheiro utilízanse cando o destinatario solicita o ficheiro desde o almacenamento externo, garantindo así que o destinatario poida acceder ao ficheiro compartido.\n\nO almacenamento externo pódese configurar mediante a GUI ou na liña de comandos. Esta segunda opción proporciona á administración máis flexibilidade para configurar montaxes de almacenamento externo masivo e establecer prioridades de montaxe. Hai máis información dispoñible na documentación da GUI de almacenamento externo e na documentación do ficheiro de configuración de almacenamento externo.", - "Enter missing credentials" : "Introduzca las credenciales requeridas", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones con proveedores de almacenamiento externos, como servidores FTP, almacenes de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y mucho más. La administración puede escoger qué tipos de almacenamiento activar y puede montar estas localizaciones de almacenamiento para una cuenta, un grupo o todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud. Pueden acceder a ella o usarla como cualquiera otra carpeta. El almacenamiento externo también permite que las personas compartan ficheros almacenados en estas localizaciones externas. En estos casos, se utilizan las credenciales del propietario cuando el destinatario solicita el fichero desde el almacenamiento externo, garantizando así que el destinatario pueda acceder al fichero compartido.\n\nSe puede configurar el almacenamiento externo mediante la GUI o la línea de comandos. Esta segunda opción proporciona al administrador más flexibilidad para configurar montajes de almacenamiento externo masivo y establecer prioridades de montaje. Hay más información disponible en la documentación de la GUI del almacenamiento externo y en la documentación del fichero de configuración del almacenamiento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciales de almacenamiento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder al almacenamiento, debe proporcionar las credenciales de autenticación.", + "Enter the storage login" : "Ingrese el inicio de sesión de almacenamiento", + "Enter the storage password" : "Ingrese la contraseña de almacenamiento", "Unable to update this external storage config. {statusMessage}" : "No fue posible actualizar la configuración de este almacenamiento externo {statusMessage}", - "New configuration successfully saved" : "La nueva configuración se guardó exitósamente", + "New configuration successfully saved" : "La nueva configuración se ha guardado con éxito", + "Enter missing credentials" : "Introduzca las credenciales requeridas", + "Credentials successfully set" : "Se han establecido las credenciales exitosamente", + "Error while setting credentials: {error}" : "Error al establecer credenciales: {error}", + "Checking storage …" : "Comprobando el almacenamiento …", "There was an error with this external storage." : "Se presentó un problema con este almacenamiento externo.", "We were unable to check the external storage {basename}" : "No nos fue posible chequear el almacenamiento externo {basename}", "Examine this faulty external storage configuration" : "Examinar la configuración de este almacenamiento externo con fallas", @@ -129,43 +117,44 @@ "Scope" : "Ámbito", "Personal" : "Personal", "System" : "Sistema", - "No external storage configured or you don't have the permission to configure them" : "No se ha configurado ningún almacenamiento externo o no tienes permiso para configurarlos", + "Type to select account or group." : "Escriba para seleccionar una cuenta o grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac MFD (lento)", + "Enable encryption" : "Habilitar cifrado", + "Enable previews" : "Habilitar previsualizaciones", + "Enable sharing" : "Habilitar el uso compartido", + "Check for changes" : "Comprobar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez en cada acceso", + "Read only" : "Solo lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Backend desconocido: {backendName}", + "Admin defined" : "Admin definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprobación automática del estado está desactivada debido al gran número de almacenes configurados, haga clic para comprobar el estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y provocará la eliminación de estos archivos y carpetas en cualquier cliente de sincronización que esté conectado en ese momento, pero no eliminará ningún archivo ni carpeta en el propio almacenamiento externo.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Clic para volver a comprobar la configuración", + "Saved" : "Guardado", + "Saving …" : "Guardando…", + "Save" : "Guardar", + "Failed to save global credentials" : "Fallo al guardar las credenciales globales", + "Failed to save global credentials: {message}" : "Fallo al guardar las credenciales globales: {message}", + "No external storage configured or you don't have the permission to configure them" : "No se ha configurado ningún almacenamiento externo o no tiene permiso para configurarlos", "Open documentation" : "Abrir la documentación", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O almacenamento externo permítelle montar servizos e dispositivos de almacenamento externos como dispositivos de almacenamento Nextcloud secundarios. Tamén podes permitir que as persoas monten os seus propios servizos de almacenamento externo.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "El almacenamiento externo le permite montar dispositivos y servicios de almacenamiento externos como dispositivos de almacenamiento secundarios de Nextcloud. También puede permitir que las personas monten sus propios servicios de almacenamiento externo.", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autentificación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Clic para volver a comprobar la configuración", "Add storage" : "Añadir almacenamiento", "All people" : "Todas as persoas", "Advanced settings" : "Configuración avanzada", "Allow people to mount external storage" : "Permite que as persoas monten almacenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Se pueden usar credenciales globales para autenticar con múltiples almacenamientos externos que tengan las mismas credenciales.", - "Type to select user or group." : "Teclee para seleccionar un usuario o grupo.", - "Empty response from the server" : "Respuesta vacía desde el servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "No se ha podido acceder. Por favor, cierra sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No se pudo obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No se puede obtener la lista de los puntos de montaje externos: {type}", - "There was an error with message: " : "Ha habido un error con el mensaje:", - "external-storage" : "almacenamiento-externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No se ha podido recuperar la lista de puntos de montaje de las unidades de red de Windows: respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor introduzca las credenciales para el punto de montaje {mount}", - "Username" : "Nombre de usuario", - "Credentials saved" : "Credenciales guardados", - "Credentials saving failed" : "Guardado de credenciales fallido", - "Credentials required" : "Credenciales requeridos", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no se puede editar por el usuario", - "Username and password" : "Nombre de usuario y contraseña", - "Global credentials, user entered" : "Credenciales Globales, introducidas por el usuario", - "User entered, store in database" : "Usuario registrado, almacenar en la base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desactivarlo permitirá usar un sistema de archivos no sensible a las mayúsculas, pero a costa de menor rendimiento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar los ACL de cada archivo o carpeta en un directorio para filtrar los ítems en los que el usuario no tiene permisos de lectura. Provoca un descenso en el rendimiento.", - "Username as share" : "Nombre de usuario como compartir", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones a proveedores externos de almacenamiento, como servidores FTP, almacenamientos de objetos S3 o SWIFT, otros servidores Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento activar y pueden montar estas localizaciones de almacenamiento para un usuario, un grupo o el sistema entero. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que pueden acceder y que pueden usar como cualquier otra carpeta. El almacenamiento externo también permite a los usuarios compartir los archivos almacenados en estas localizaciones externas. En estos casos, se usan las credenciales para el dueño del archivos cuando el receptor pide el archivo del almacenamiento externo, asegurando así que el receptor puede acceder al archivo compartido.\n\nEl almacenamiento externo se puede configurar usando la GUI o con la línea de comandos. La segunda opción proporciona al usuario avanzado más flexibilidad para configurar montajes de almacenamientos externos en bloque y para configurar prioridades de montaje. Más información disponible en la documentación del almacenamiento externo y la documentación del archivo de configuración de almacenamiento externo.", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos de almacenamiento secundarios de Nextcloud. También puedes permitir que los usuarios monten sus propios servicios de almacenamiento externos.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar un almacenamiento externo" + "Error configuring OAuth1" : "Error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", + "OAuth1" : "OAuth1", + "App key" : "App principal", + "App secret" : "App secreta" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_419.js b/apps/files_external/l10n/es_419.js index a61cb5f6956..7ca5616f326 100644 --- a/apps/files_external/l10n/es_419.js +++ b/apps/files_external/l10n/es_419.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o no tienes permiso para configurarlo", "Open documentation" : "Abrir documentación", "Folder name" : "Nombre de la carpeta", @@ -95,23 +91,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_419.json b/apps/files_external/l10n/es_419.json index dda9b1268f7..53757cab488 100644 --- a/apps/files_external/l10n/es_419.json +++ b/apps/files_external/l10n/es_419.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o no tienes permiso para configurarlo", "Open documentation" : "Abrir documentación", "Folder name" : "Nombre de la carpeta", @@ -93,23 +89,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_AR.js b/apps/files_external/l10n/es_AR.js index bfeec3eb13b..485e2a8b9d6 100644 --- a/apps/files_external/l10n/es_AR.js +++ b/apps/files_external/l10n/es_AR.js @@ -2,23 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Solo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -34,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +64,25 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Solo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,21 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta vacía del servidor", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", - "Username" : "Nombre de usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Nombre de usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Nombre de usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_AR.json b/apps/files_external/l10n/es_AR.json index ed7268eb8e3..43acdc5ce04 100644 --- a/apps/files_external/l10n/es_AR.json +++ b/apps/files_external/l10n/es_AR.json @@ -1,22 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Solo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -32,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +62,25 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Solo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,21 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta vacía del servidor", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", - "Username" : "Nombre de usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Nombre de usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Nombre de usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_CL.js b/apps/files_external/l10n/es_CL.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_CL.js +++ b/apps/files_external/l10n/es_CL.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_CL.json b/apps/files_external/l10n/es_CL.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_CL.json +++ b/apps/files_external/l10n/es_CL.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_CO.js b/apps/files_external/l10n/es_CO.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_CO.js +++ b/apps/files_external/l10n/es_CO.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_CO.json b/apps/files_external/l10n/es_CO.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_CO.json +++ b/apps/files_external/l10n/es_CO.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_CR.js b/apps/files_external/l10n/es_CR.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_CR.js +++ b/apps/files_external/l10n/es_CR.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_CR.json b/apps/files_external/l10n/es_CR.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_CR.json +++ b/apps/files_external/l10n/es_CR.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_DO.js b/apps/files_external/l10n/es_DO.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_DO.js +++ b/apps/files_external/l10n/es_DO.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_DO.json b/apps/files_external/l10n/es_DO.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_DO.json +++ b/apps/files_external/l10n/es_DO.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_EC.js b/apps/files_external/l10n/es_EC.js index d3632b736a7..f63fc7f07a3 100644 --- a/apps/files_external/l10n/es_EC.js +++ b/apps/files_external/l10n/es_EC.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haz clic para verificar el estado.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminarán estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán archivos y carpetas en el almacenamiento externo en sí.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Saving …", - "Save" : "Guardar", "Forbidden to manage local mounts" : "Prohibido administrar montajes locales.", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", @@ -40,9 +21,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -102,45 +80,44 @@ OC.L10N.register( "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Añade soporte básico para almacenamiento externo.", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haz clic para verificar el estado.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminarán estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán archivos y carpetas en el almacenamiento externo en sí.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Saving …" : "Saving …", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Las credenciales globales se pueden usar para autenticarse con múltiples almacenamientos externos que tienen las mismas credenciales.", - "Type to select user or group." : "Escribe para seleccionar usuario o grupo.", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "Global credentials, user entered" : "Credenciales globales, ingresadas por el usuario.", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verificar los permisos ACL de cada archivo o carpeta dentro de un directorio para filtrar los elementos donde el usuario no tenga permisos de lectura, esto afecta el rendimiento.", - "Username as share" : "Usuario como elemento compartido", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones a proveedores de almacenamiento externo, como servidores FTP, almacenamiento de objetos S3 o SWIFT, otros servidores de Nextcloud, servidores WebDAV, y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que podrán acceder y utilizar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, se utilizan las credenciales del propietario del archivo cuando el destinatario solicita el archivo desde el almacenamiento externo, asegurando así que el destinatario pueda acceder al archivo compartido.\n \n El almacenamiento externo se puede configurar utilizando la interfaz gráfica o mediante la línea de comandos. Esta segunda opción brinda al usuario avanzado más flexibilidad para configurar montajes de almacenamiento externo masivos y establecer prioridades de montaje. Más información está disponible en la documentación de la interfaz gráfica de almacenamiento externo y en la documentación del archivo de configuración de almacenamiento externo.", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puedes permitir a los usuarios montar sus propios servicios de almacenamiento externo.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_EC.json b/apps/files_external/l10n/es_EC.json index c17eef8434e..66c964e6aa4 100644 --- a/apps/files_external/l10n/es_EC.json +++ b/apps/files_external/l10n/es_EC.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haz clic para verificar el estado.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminarán estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán archivos y carpetas en el almacenamiento externo en sí.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Saving …", - "Save" : "Guardar", "Forbidden to manage local mounts" : "Prohibido administrar montajes locales.", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", @@ -38,9 +19,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -100,45 +78,44 @@ "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Añade soporte básico para almacenamiento externo.", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haz clic para verificar el estado.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Estás seguro de que quieres desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminarán estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán archivos y carpetas en el almacenamiento externo en sí.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Saving …" : "Saving …", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Las credenciales globales se pueden usar para autenticarse con múltiples almacenamientos externos que tienen las mismas credenciales.", - "Type to select user or group." : "Escribe para seleccionar usuario o grupo.", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "Global credentials, user entered" : "Credenciales globales, ingresadas por el usuario.", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verificar los permisos ACL de cada archivo o carpeta dentro de un directorio para filtrar los elementos donde el usuario no tenga permisos de lectura, esto afecta el rendimiento.", - "Username as share" : "Usuario como elemento compartido", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite a los administradores configurar conexiones a proveedores de almacenamiento externo, como servidores FTP, almacenamiento de objetos S3 o SWIFT, otros servidores de Nextcloud, servidores WebDAV, y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, a la que podrán acceder y utilizar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, se utilizan las credenciales del propietario del archivo cuando el destinatario solicita el archivo desde el almacenamiento externo, asegurando así que el destinatario pueda acceder al archivo compartido.\n \n El almacenamiento externo se puede configurar utilizando la interfaz gráfica o mediante la línea de comandos. Esta segunda opción brinda al usuario avanzado más flexibilidad para configurar montajes de almacenamiento externo masivos y establecer prioridades de montaje. Más información está disponible en la documentación de la interfaz gráfica de almacenamiento externo y en la documentación del archivo de configuración de almacenamiento externo.", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo te permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puedes permitir a los usuarios montar sus propios servicios de almacenamiento externo.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_GT.js b/apps/files_external/l10n/es_GT.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_GT.js +++ b/apps/files_external/l10n/es_GT.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_GT.json b/apps/files_external/l10n/es_GT.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_GT.json +++ b/apps/files_external/l10n/es_GT.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_HN.js b/apps/files_external/l10n/es_HN.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_HN.js +++ b/apps/files_external/l10n/es_HN.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_HN.json b/apps/files_external/l10n/es_HN.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_HN.json +++ b/apps/files_external/l10n/es_HN.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js index 25776b76126..cf7213b14d1 100644 --- a/apps/files_external/l10n/es_MX.js +++ b/apps/files_external/l10n/es_MX.js @@ -2,29 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Type to select account or group." : "Escriba para seleccionar un usuario o grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haga clic para verificar el estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Está seguro que quiere desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminen estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán los archivos y carpetas en el propio almacenamiento externo.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Guardando ...", - "Save" : "Guardar", "Forbidden to manage local mounts" : "Prohibido administrar montajes locales.", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", @@ -42,9 +22,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -113,9 +90,14 @@ OC.L10N.register( "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Agrega soporte básico para almacenamiento externo", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación le permite a los adminsitradores configurar las conexiónes a proveedores de almacenamiento externo, tales como servidores FTP, S3 o almacenamiento de objetos SWIFT, otros servidores de Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o para todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, la cual podrán acceder y usar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también le permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, las credenciales del dueño del archivo son usadas cuando el destinatario solicita el archivo de un almacenamiento externo, asegurando así que el destinatario pueda acceder el archivo compartido.\n\nEl almacenamiento externo se puede configurar usando el GUI o la línea de comandos. Esta segunda opción le brinda a los administradores más flexibilidad para configurar masivamente el montaje del almacenamiento externo y establecer la prioridad de montaje. Más información disponible en la documentación de almacenamiento externo GUI y la documentación del archivo de configuración del almacenamiento externo. ", - "Enter missing credentials" : "Ingrese las credenciales faltantes", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciales de almacenamiento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder al almacenamiento, debe proporcionar las credenciales de autenticación.", + "Enter the storage login" : "Ingrese el inicio de sesión de almacenamiento", + "Enter the storage password" : "Ingrese la contraseña de almacenamiento", "Unable to update this external storage config. {statusMessage}" : "No se pudo actualizar la configuración de este almacenamiento externo. {statusMessage}", "New configuration successfully saved" : "La nueva configuración se guardó exitosamente", + "Enter missing credentials" : "Ingrese las credenciales faltantes", "There was an error with this external storage." : "Hay un error con este almacenamiento externo.", "We were unable to check the external storage {basename}" : "No pudimos revisar el almacenamiento externo {basename}", "Examine this faulty external storage configuration" : "Examinar la configuración fallida de este almacenamiento externo", @@ -131,6 +113,26 @@ OC.L10N.register( "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escriba para seleccionar un usuario o grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Backend desconocido: {backendName}", + "Admin defined" : "Administrador definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haga clic para verificar el estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Está seguro que quiere desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminen estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán los archivos y carpetas en el propio almacenamiento externo.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Saving …" : "Guardando ...", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir documentación", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "El almacenamiento externo permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puede permitir a los usuarios montar sus propios servicios de almacenamiento externo.", @@ -138,36 +140,15 @@ OC.L10N.register( "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "All people" : "Todas las personas", "Advanced settings" : "Configuraciones avanzadas", "Allow people to mount external storage" : "Permitir a los usuarios montar almacenamientos externos", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Las credenciales globales se pueden usar para autentificarse con múltiples almacenamientos externos que tienen las mismas credenciales.", - "Type to select user or group." : "Escriba para seleccionar un usuario o grupo.", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "Global credentials, user entered" : "Credenciales globales, ingresadas por el usuario.", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desactivarlo permitirá utilizar un sistema de archivos insensible a mayúsculas y minúsculas, a costa de un menor rendimiento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verificar la lista de control de permisos de cada archivo o carpeta dentro de un directorio para filtrar los elementos donde el usuario no tenga permisos de lectura, a costa de un menor rendimiento", - "Username as share" : "Usuario como elemento compartido", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación le permite a los adminsitradores configurar las conexiónes a los proveedores de almacenamiento externo, tales como servidores FTP, S3 o almacenamiento de objetos SWIFT, otros servidores de Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o para todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, la cual podrán acceder y usar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también le permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, las credenciales del dueño del archivo son usadas cunado el destinatario solicita el archivo de un almacenamiento externo, asegurando así que el destinatario pueda acceder el archivo compartido.\n\nEl almacenamiento externo puede ser configurado usando el GUI o la línea de comnados. Esta segunda opción le brinda a los usuarios avanzados más flexibilidad para configurar masivamente el montaje del almacenamiento externo y establecer la prioridad de montaje. Hay más información disponible en la documentación de almacenamiento externo GUi y la documentación del Archivo de configuración del almacenamiento externo. ", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puede permitir a los usuarios montar sus propios servicios de almacenamiento externo.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json index 49fe899e48d..4b247a48bdd 100644 --- a/apps/files_external/l10n/es_MX.json +++ b/apps/files_external/l10n/es_MX.json @@ -1,28 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Type to select account or group." : "Escriba para seleccionar un usuario o grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haga clic para verificar el estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Está seguro que quiere desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminen estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán los archivos y carpetas en el propio almacenamiento externo.", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Saving …" : "Guardando ...", - "Save" : "Guardar", "Forbidden to manage local mounts" : "Prohibido administrar montajes locales.", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", @@ -40,9 +20,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -111,9 +88,14 @@ "External storage support" : "Soporte de almacenamiento externo", "Adds basic external storage support" : "Agrega soporte básico para almacenamiento externo", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación le permite a los adminsitradores configurar las conexiónes a proveedores de almacenamiento externo, tales como servidores FTP, S3 o almacenamiento de objetos SWIFT, otros servidores de Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o para todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, la cual podrán acceder y usar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también le permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, las credenciales del dueño del archivo son usadas cuando el destinatario solicita el archivo de un almacenamiento externo, asegurando así que el destinatario pueda acceder el archivo compartido.\n\nEl almacenamiento externo se puede configurar usando el GUI o la línea de comandos. Esta segunda opción le brinda a los administradores más flexibilidad para configurar masivamente el montaje del almacenamiento externo y establecer la prioridad de montaje. Más información disponible en la documentación de almacenamiento externo GUI y la documentación del archivo de configuración del almacenamiento externo. ", - "Enter missing credentials" : "Ingrese las credenciales faltantes", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciales de almacenamiento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder al almacenamiento, debe proporcionar las credenciales de autenticación.", + "Enter the storage login" : "Ingrese el inicio de sesión de almacenamiento", + "Enter the storage password" : "Ingrese la contraseña de almacenamiento", "Unable to update this external storage config. {statusMessage}" : "No se pudo actualizar la configuración de este almacenamiento externo. {statusMessage}", "New configuration successfully saved" : "La nueva configuración se guardó exitosamente", + "Enter missing credentials" : "Ingrese las credenciales faltantes", "There was an error with this external storage." : "Hay un error con este almacenamiento externo.", "We were unable to check the external storage {basename}" : "No pudimos revisar el almacenamiento externo {basename}", "Examine this faulty external storage configuration" : "Examinar la configuración fallida de este almacenamiento externo", @@ -129,6 +111,26 @@ "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Type to select account or group." : "Escriba para seleccionar un usuario o grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Backend desconocido: {backendName}", + "Admin defined" : "Administrador definido", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La verificación automática de estado está desactivada debido al gran número de almacenamientos configurados, haga clic para verificar el estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "¿Está seguro que quiere desconectar este almacenamiento externo? Esto hará que el almacenamiento no esté disponible en Nextcloud y se eliminen estos archivos y carpetas en cualquier cliente de sincronización que esté conectado actualmente, pero no se eliminarán los archivos y carpetas en el propio almacenamiento externo.", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Saving …" : "Guardando ...", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir documentación", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "El almacenamiento externo permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puede permitir a los usuarios montar sus propios servicios de almacenamiento externo.", @@ -136,36 +138,15 @@ "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "All people" : "Todas las personas", "Advanced settings" : "Configuraciones avanzadas", "Allow people to mount external storage" : "Permitir a los usuarios montar almacenamientos externos", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Las credenciales globales se pueden usar para autentificarse con múltiples almacenamientos externos que tienen las mismas credenciales.", - "Type to select user or group." : "Escriba para seleccionar un usuario o grupo.", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "Global credentials, user entered" : "Credenciales globales, ingresadas por el usuario.", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desactivarlo permitirá utilizar un sistema de archivos insensible a mayúsculas y minúsculas, a costa de un menor rendimiento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verificar la lista de control de permisos de cada archivo o carpeta dentro de un directorio para filtrar los elementos donde el usuario no tenga permisos de lectura, a costa de un menor rendimiento", - "Username as share" : "Usuario como elemento compartido", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación le permite a los adminsitradores configurar las conexiónes a los proveedores de almacenamiento externo, tales como servidores FTP, S3 o almacenamiento de objetos SWIFT, otros servidores de Nextcloud, servidores WebDAV y más. Los administradores pueden elegir qué tipos de almacenamiento habilitar y pueden montar estas ubicaciones de almacenamiento para un usuario, un grupo o para todo el sistema. Los usuarios verán aparecer una nueva carpeta en su directorio raíz de Nextcloud, la cual podrán acceder y usar como cualquier otra carpeta de Nextcloud. El almacenamiento externo también le permite a los usuarios compartir archivos almacenados en estas ubicaciones externas. En estos casos, las credenciales del dueño del archivo son usadas cunado el destinatario solicita el archivo de un almacenamiento externo, asegurando así que el destinatario pueda acceder el archivo compartido.\n\nEl almacenamiento externo puede ser configurado usando el GUI o la línea de comnados. Esta segunda opción le brinda a los usuarios avanzados más flexibilidad para configurar masivamente el montaje del almacenamiento externo y establecer la prioridad de montaje. Hay más información disponible en la documentación de almacenamiento externo GUi y la documentación del Archivo de configuración del almacenamiento externo. ", - "Name" : "Nombre", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "El almacenamiento externo permite montar servicios y dispositivos de almacenamiento externo como dispositivos secundarios de almacenamiento de Nextcloud. También puede permitir a los usuarios montar sus propios servicios de almacenamiento externo.", - "All users" : "Todos los usuarios", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_NI.js b/apps/files_external/l10n/es_NI.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_NI.js +++ b/apps/files_external/l10n/es_NI.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_NI.json b/apps/files_external/l10n/es_NI.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_NI.json +++ b/apps/files_external/l10n/es_NI.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_PA.js b/apps/files_external/l10n/es_PA.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_PA.js +++ b/apps/files_external/l10n/es_PA.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_PA.json b/apps/files_external/l10n/es_PA.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_PA.json +++ b/apps/files_external/l10n/es_PA.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_PE.js b/apps/files_external/l10n/es_PE.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_PE.js +++ b/apps/files_external/l10n/es_PE.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_PE.json b/apps/files_external/l10n/es_PE.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_PE.json +++ b/apps/files_external/l10n/es_PE.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_PR.js b/apps/files_external/l10n/es_PR.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_PR.js +++ b/apps/files_external/l10n/es_PR.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_PR.json b/apps/files_external/l10n/es_PR.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_PR.json +++ b/apps/files_external/l10n/es_PR.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_PY.js b/apps/files_external/l10n/es_PY.js index 4dd811486f6..60bd39324a8 100644 --- a/apps/files_external/l10n/es_PY.js +++ b/apps/files_external/l10n/es_PY.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,11 +63,25 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -93,23 +89,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_PY.json b/apps/files_external/l10n/es_PY.json index 0546bb02630..e10420ed371 100644 --- a/apps/files_external/l10n/es_PY.json +++ b/apps/files_external/l10n/es_PY.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,11 +61,25 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -91,23 +87,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_SV.js b/apps/files_external/l10n/es_SV.js index a38f99c0e59..a862a8b043e 100644 --- a/apps/files_external/l10n/es_SV.js +++ b/apps/files_external/l10n/es_SV.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -85,38 +67,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_SV.json b/apps/files_external/l10n/es_SV.json index 283673de0c7..d1ce689c091 100644 --- a/apps/files_external/l10n/es_SV.json +++ b/apps/files_external/l10n/es_SV.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -83,38 +65,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", "External storage support" : "Soporte de almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", + "Saved" : "Guardado", + "Save" : "Guardar", "No external storage configured or you don't have the permission to configure them" : "No se ha configurado almacenamiento externo o bien no cuentas con los permisos para configurarlos", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", - "Click to recheck the configuration" : "Haz click para volver a marcar la configuración", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_UY.js b/apps/files_external/l10n/es_UY.js index fd094ac5bcd..72b5fa1012b 100644 --- a/apps/files_external/l10n/es_UY.js +++ b/apps/files_external/l10n/es_UY.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -81,12 +63,26 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_UY.json b/apps/files_external/l10n/es_UY.json index 9341217c0f9..35269693d32 100644 --- a/apps/files_external/l10n/es_UY.json +++ b/apps/files_external/l10n/es_UY.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "Conceder acceso", - "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", "Generate keys" : "Generar llaves", "Error generating key pair" : "Se presentó un error al generar el juego de llaves", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", - "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar vistas previas", - "Enable sharing" : "Habilitar compartir", - "Check for changes" : "Verificar si hay cambios", - "Never" : "Nunca", - "Once every direct access" : "Una vez cada acceso directo", - "Read only" : "Sólo lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Administrador definido", - "Delete storage?" : "¿Borrar almacenamiento?", - "Saved" : "Guardado", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "El almacenamiento con ID \"%d\" no fue encontrado", "Invalid backend or authentication mechanism class" : "Backend o clase de mecanismo de autenticación inválido ", "Invalid mount point" : "Punto de montaje inválido", @@ -33,9 +18,6 @@ "Secret key" : "Llave secreta", "Builtin" : "Integrado", "None" : "Ninguno", - "OAuth1" : "OAuth1", - "App key" : "Llave de la aplicación", - "App secret" : "Secreto de la aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID del cliente", "Client secret" : "Secreto del cliente", @@ -79,12 +61,26 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Por favor solicita a tu administador su instalación. ", "External storage" : "Almacenamiento externo", + "Confirm" : "Confirmar", "External mount error" : "Error de montaje externo", "Storage type" : "Tipo de almacenamiento", "Unknown" : "Desconocido", "Scope" : "Alcance", "Personal" : "Personal", "System" : "Sistema", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar vistas previas", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", + "Read only" : "Sólo lectura", + "Disconnect" : "Desconectar", + "Admin defined" : "Administrador definido", + "Delete storage?" : "¿Borrar almacenamiento?", + "Saved" : "Guardado", + "Save" : "Guardar", "Open documentation" : "Abrir la documentación", "Folder name" : "Nombre de la carpeta", "Authentication" : "Autenticación", @@ -92,23 +88,10 @@ "Available for" : "Disponible para", "Add storage" : "Agregar almacenamiento", "Advanced settings" : "Configuraciones avanzadas", - "Empty response from the server" : "Respuesta del servidor vacía", - "Couldn't access. Please log out and in again to activate this mount point" : "No fue posible accesar. Por favor sal de la sesión y vuelve a entrar para activar este punto de montaje", - "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", - "There was an error with message: " : "Se presentó un problema con el mensaje:", - "external-storage" : "almacenamiento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "No fue posible obtener el listado de los puntos de motaje de unidades de red Windows. Respuesta vacía del servidor", - "Please enter the credentials for the {mount} mount" : "Por favor ingresa las credenciales para el montaje {mount}", - "Username" : "Usuario", - "Credentials saved" : "Credenciales guardadas", - "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", - "Credentials required" : "Se requieren credenciales", - "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no puede ser editado por el usuario", - "Username and password" : "Usuario y contraseña", - "User entered, store in database" : "Usuario ingresado, almacenar en la base de datos", - "Username as share" : "Usuario como elemento compartido", - "Name" : "Nombre", - "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo" + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor proporciona una llave de aplicación y secreto válidos.", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "App secret" : "Secreto de la aplicación" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js index 2fc9dc6b59b..1accac21323 100644 --- a/apps/files_external/l10n/et_EE.js +++ b/apps/files_external/l10n/et_EE.js @@ -2,54 +2,62 @@ OC.L10N.register( "files_external", { "Grant access" : "Anna ligipääs", - "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", - "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", + "Error configuring OAuth2" : "Viga OAuth2 seadistamisel", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", - "Enable encryption" : "Luba krüpteerimine", - "Enable previews" : "Luba eelvaated", - "Enable sharing" : "Luba jagamine", - "Check for changes" : "Otsi uuendusi", - "Never" : "Mitte kunagi", - "Once every direct access" : "Kord iga otsese pöördumise korral", - "Read only" : "kirjutuskaitstud", - "Disconnect" : "Ühenda lahti", - "Admin defined" : "Admini poolt määratud", - "Saved" : "Salvestatud", - "Saving …" : "Salvestamine …", - "Save" : "Salvesta", - "Invalid mount point" : "Vigane ühenduspunkt", + "You are not logged in" : "Sa pole sisse logitud.", + "Permission denied" : "Õigus on keelatud", + "Forbidden to manage local mounts" : "Kohalike haakepunktide haldamine on keelatud", + "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu", + "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass", + "Invalid mount point" : "Vigane haakepunkt", "Objectstore forbidden" : "Objectstore on keelatud", "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"", + "Not permitted to use backend \"%s\"" : "Pole luba kasutada „%s“ taustateenust", + "Not permitted to use authentication mechanism \"%s\"" : "Pole luba kasutada „%s“ autentimismeetodit", "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", "Insufficient data: %s" : "Pole piisavalt andmeid: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Andmeruumi tunnusega „%d“ on muudetav vaid peakasutajate poolt", "Access key" : "Ligipääsuvõti", "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", "None" : "Pole", - "OAuth1" : "OAuth1", - "App key" : "Rakenduse võti", - "App secret" : "Rakenduse salasõna", "OAuth2" : "OAuth2", "Client ID" : "Kliendi ID", - "Client secret" : "Kliendi salasõna", + "Client secret" : "Kliendi saladus", + "OpenStack v2" : "OpenStack v2", "Login" : "Logi sisse", - "Password" : "Parool", + "Password" : "Salasõna", + "Tenant name" : "Kliendi nimi", + "Identity endpoint URL" : "Tuvastuse otspunkti võrguaadress", + "OpenStack v3" : "OpenStack v3", "Domain" : "Domeen", + "Rackspace" : "Rackspace", "API key" : "API võti", + "Global credentials" : "Üldinekasutajanimi/salasõna", + "Log-in credentials, save in database" : "Salvesta sisselogimise kasutajanimi/salasõna andmebaasi", + "Login and password" : "Kasutajanimi ja salasõna", + "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis", + "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna", + "Manually entered, store in database" : "Käsitsi sisestatud ja salvestub andmebaasis", "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", + "RSA private key" : "RSA privaatvõti", + "Private key" : "Privaatvõti", "Amazon S3" : "Amazon S3", "Bucket" : "Korv", "Hostname" : "Hostinimi", "Port" : "Port", "Region" : "Piirkond", + "Storage Class" : "Andmeruumi klass (Storage class)", "Enable SSL" : "SSL-i kasutamine", "Enable Path Style" : "Luba otsingtee stiilis", + "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)", + "SSE-C encryption key" : "SSE-C krüptimisvõti", "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Mujahl olev alamkaust", + "URL" : "Võrguaadress", + "Remote subfolder" : "Mujal olev alamkaust", "Secure https://" : "Turvaline https://", "FTP" : "FTP", "Host" : "Host", @@ -60,31 +68,81 @@ OC.L10N.register( "SFTP" : "SFTP", "Root" : "Juur", "SFTP with secret key login" : "SFTP koos salajase võtmega logimisega", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Jaga", "Show hidden files" : "Näita peidetud faile", + "Case sensitive file system" : "Tõstutundlik failisüsteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Selle valiku keelamisega saad kasutada tõstutundetut failisüsteemi, kuid sellega kaasneb jõudluskadu", + "Timeout" : "Aegumine", + "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Teenuse nimi", + "Request timeout (seconds)" : "Päringu aegumine (sekundites)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ pole paigladatud. „%2$s“ haakimine pole võimalik. Palu oma peakasutajal või süsteemihalduril ta paigaldada.", "External storage" : "Väline andmehoidla", - "External mount error" : "Välise seostamise tõrge", - "Storage type" : "Andmehoidla tüüp", + "External storage support" : "Väliste andmehoidlate tugi", + "Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi", + "Confirm" : "Kinnita", + "Storage credentials" : "Andmeruumi kasutajanimi/salasõna", + "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.", + "Enter the storage login" : "Sisesta andmeruumi kasutajatunnus", + "Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna", + "Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}", + "New configuration successfully saved" : "Uue seadistuse salvestamine õnnestus", + "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna", + "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus", + "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}", + "Checking storage …" : "Kontrollin andmeruumi…", + "There was an error with this external storage." : "Selle välis andmeruumi kontekstis tekkis viga.", + "We were unable to check the external storage {basename}" : "Meil ei õnnestunud kontrollida välist andmeruumi „{basename}“", + "Examine this faulty external storage configuration" : "Kontrolli uuesti selle vigase välise andmeruumi seadistusi", + "Open in Files" : "Ava failirakenduses", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?", + "External mount error" : "Viga välise andmeruumi haakimisel", + "List of external storage." : "Väliste andmeruumide loend.", + "There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.", + "There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.", + "No external storage" : "Ühtegi välist andmeruumi ei leidu", + "Storage type" : "Andmeruumi tüüp", "Unknown" : "Teadmata", "Scope" : "Skoop", "Personal" : "Isiklik", "System" : "Süsteem", + "Type to select account or group." : "Kasutakonto või grupi leidmiseks kirjuta midagi.", + "(Group)" : "(Grupp)", + "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)", + "Enable encryption" : "Luba krüptimine", + "Enable previews" : "Luba eelvaated", + "Enable sharing" : "Luba jagamine", + "Check for changes" : "Otsi uuendusi", + "Never" : "Mitte kunagi", + "Once every direct access" : "Kord iga otsese pöördumise korral", + "Read only" : "kirjutuskaitstud", + "Disconnect" : "Ühenda lahti", + "Unknown backend: {backendName}" : "Tundmatu taustateenus: {backendName}", + "Admin defined" : "Admini poolt määratud", + "Delete storage?" : "Kas kustutame andmeruumi?", + "Click to recheck the configuration" : "Klõpsi seadistuste uuesti kontrollimiseks", + "Saved" : "Salvestatud", + "Saving …" : "Salvestan…", + "Save" : "Salvesta", + "Failed to save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud", + "Failed to save global credentials: {message}" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud: {message}", "Open documentation" : "Ava dokumentatsioon", "Folder name" : "Kausta nimi", "Authentication" : "Autentimine", "Configuration" : "Seadistamine", "Available for" : "Saadaval", "Add storage" : "Lisa andmehoidla", + "All people" : "Kõik inimesed", "Advanced settings" : "Lisavalikud", - "Empty response from the server" : "Tühi vastus serverilt", - "Couldn't get the list of external mount points: {type}" : "Välise ühenduspunkti hankimine ebaõnnestus: {type}", - "There was an error with message: " : "Sõnumiga tekkis tõrge:", - "external-storage" : "väline-salvestuskoht", - "Username" : "Kasutajanimi", - "Credentials required" : "Kasutajatunnused on nõutud", - "Username as share" : "Kasutajanimi kui jagamine", - "Name" : "Nimi" + "Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi", + "Error configuring OAuth1" : "Viga OAuth1 seadistamisel", + "Please provide a valid app key and secret." : "Palun sisesta rakenduse kehtiv võti ja saladus.", + "OAuth1" : "OAuth1", + "App key" : "Rakenduse võti", + "App secret" : "Rakenduse salasõna" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json index 0040c8ca89e..fbba3791395 100644 --- a/apps/files_external/l10n/et_EE.json +++ b/apps/files_external/l10n/et_EE.json @@ -1,53 +1,61 @@ { "translations": { "Grant access" : "Anna ligipääs", - "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", - "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", + "Error configuring OAuth2" : "Viga OAuth2 seadistamisel", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", - "Enable encryption" : "Luba krüpteerimine", - "Enable previews" : "Luba eelvaated", - "Enable sharing" : "Luba jagamine", - "Check for changes" : "Otsi uuendusi", - "Never" : "Mitte kunagi", - "Once every direct access" : "Kord iga otsese pöördumise korral", - "Read only" : "kirjutuskaitstud", - "Disconnect" : "Ühenda lahti", - "Admin defined" : "Admini poolt määratud", - "Saved" : "Salvestatud", - "Saving …" : "Salvestamine …", - "Save" : "Salvesta", - "Invalid mount point" : "Vigane ühenduspunkt", + "You are not logged in" : "Sa pole sisse logitud.", + "Permission denied" : "Õigus on keelatud", + "Forbidden to manage local mounts" : "Kohalike haakepunktide haldamine on keelatud", + "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu", + "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass", + "Invalid mount point" : "Vigane haakepunkt", "Objectstore forbidden" : "Objectstore on keelatud", "Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"", + "Not permitted to use backend \"%s\"" : "Pole luba kasutada „%s“ taustateenust", + "Not permitted to use authentication mechanism \"%s\"" : "Pole luba kasutada „%s“ autentimismeetodit", "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", "Insufficient data: %s" : "Pole piisavalt andmeid: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Andmeruumi tunnusega „%d“ on muudetav vaid peakasutajate poolt", "Access key" : "Ligipääsuvõti", "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", "None" : "Pole", - "OAuth1" : "OAuth1", - "App key" : "Rakenduse võti", - "App secret" : "Rakenduse salasõna", "OAuth2" : "OAuth2", "Client ID" : "Kliendi ID", - "Client secret" : "Kliendi salasõna", + "Client secret" : "Kliendi saladus", + "OpenStack v2" : "OpenStack v2", "Login" : "Logi sisse", - "Password" : "Parool", + "Password" : "Salasõna", + "Tenant name" : "Kliendi nimi", + "Identity endpoint URL" : "Tuvastuse otspunkti võrguaadress", + "OpenStack v3" : "OpenStack v3", "Domain" : "Domeen", + "Rackspace" : "Rackspace", "API key" : "API võti", + "Global credentials" : "Üldinekasutajanimi/salasõna", + "Log-in credentials, save in database" : "Salvesta sisselogimise kasutajanimi/salasõna andmebaasi", + "Login and password" : "Kasutajanimi ja salasõna", + "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis", + "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna", + "Manually entered, store in database" : "Käsitsi sisestatud ja salvestub andmebaasis", "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", + "RSA private key" : "RSA privaatvõti", + "Private key" : "Privaatvõti", "Amazon S3" : "Amazon S3", "Bucket" : "Korv", "Hostname" : "Hostinimi", "Port" : "Port", "Region" : "Piirkond", + "Storage Class" : "Andmeruumi klass (Storage class)", "Enable SSL" : "SSL-i kasutamine", "Enable Path Style" : "Luba otsingtee stiilis", + "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)", + "SSE-C encryption key" : "SSE-C krüptimisvõti", "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Mujahl olev alamkaust", + "URL" : "Võrguaadress", + "Remote subfolder" : "Mujal olev alamkaust", "Secure https://" : "Turvaline https://", "FTP" : "FTP", "Host" : "Host", @@ -58,31 +66,81 @@ "SFTP" : "SFTP", "Root" : "Juur", "SFTP with secret key login" : "SFTP koos salajase võtmega logimisega", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Jaga", "Show hidden files" : "Näita peidetud faile", + "Case sensitive file system" : "Tõstutundlik failisüsteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Selle valiku keelamisega saad kasutada tõstutundetut failisüsteemi, kuid sellega kaasneb jõudluskadu", + "Timeout" : "Aegumine", + "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Teenuse nimi", + "Request timeout (seconds)" : "Päringu aegumine (sekundites)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ pole paigladatud. „%2$s“ haakimine pole võimalik. Palu oma peakasutajal või süsteemihalduril ta paigaldada.", "External storage" : "Väline andmehoidla", - "External mount error" : "Välise seostamise tõrge", - "Storage type" : "Andmehoidla tüüp", + "External storage support" : "Väliste andmehoidlate tugi", + "Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi", + "Confirm" : "Kinnita", + "Storage credentials" : "Andmeruumi kasutajanimi/salasõna", + "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.", + "Enter the storage login" : "Sisesta andmeruumi kasutajatunnus", + "Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna", + "Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}", + "New configuration successfully saved" : "Uue seadistuse salvestamine õnnestus", + "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna", + "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus", + "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}", + "Checking storage …" : "Kontrollin andmeruumi…", + "There was an error with this external storage." : "Selle välis andmeruumi kontekstis tekkis viga.", + "We were unable to check the external storage {basename}" : "Meil ei õnnestunud kontrollida välist andmeruumi „{basename}“", + "Examine this faulty external storage configuration" : "Kontrolli uuesti selle vigase välise andmeruumi seadistusi", + "Open in Files" : "Ava failirakenduses", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?", + "External mount error" : "Viga välise andmeruumi haakimisel", + "List of external storage." : "Väliste andmeruumide loend.", + "There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.", + "There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.", + "No external storage" : "Ühtegi välist andmeruumi ei leidu", + "Storage type" : "Andmeruumi tüüp", "Unknown" : "Teadmata", "Scope" : "Skoop", "Personal" : "Isiklik", "System" : "Süsteem", + "Type to select account or group." : "Kasutakonto või grupi leidmiseks kirjuta midagi.", + "(Group)" : "(Grupp)", + "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)", + "Enable encryption" : "Luba krüptimine", + "Enable previews" : "Luba eelvaated", + "Enable sharing" : "Luba jagamine", + "Check for changes" : "Otsi uuendusi", + "Never" : "Mitte kunagi", + "Once every direct access" : "Kord iga otsese pöördumise korral", + "Read only" : "kirjutuskaitstud", + "Disconnect" : "Ühenda lahti", + "Unknown backend: {backendName}" : "Tundmatu taustateenus: {backendName}", + "Admin defined" : "Admini poolt määratud", + "Delete storage?" : "Kas kustutame andmeruumi?", + "Click to recheck the configuration" : "Klõpsi seadistuste uuesti kontrollimiseks", + "Saved" : "Salvestatud", + "Saving …" : "Salvestan…", + "Save" : "Salvesta", + "Failed to save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud", + "Failed to save global credentials: {message}" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud: {message}", "Open documentation" : "Ava dokumentatsioon", "Folder name" : "Kausta nimi", "Authentication" : "Autentimine", "Configuration" : "Seadistamine", "Available for" : "Saadaval", "Add storage" : "Lisa andmehoidla", + "All people" : "Kõik inimesed", "Advanced settings" : "Lisavalikud", - "Empty response from the server" : "Tühi vastus serverilt", - "Couldn't get the list of external mount points: {type}" : "Välise ühenduspunkti hankimine ebaõnnestus: {type}", - "There was an error with message: " : "Sõnumiga tekkis tõrge:", - "external-storage" : "väline-salvestuskoht", - "Username" : "Kasutajanimi", - "Credentials required" : "Kasutajatunnused on nõutud", - "Username as share" : "Kasutajanimi kui jagamine", - "Name" : "Nimi" + "Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi", + "Error configuring OAuth1" : "Viga OAuth1 seadistamisel", + "Please provide a valid app key and secret." : "Palun sisesta rakenduse kehtiv võti ja saladus.", + "OAuth1" : "OAuth1", + "App key" : "Rakenduse võti", + "App secret" : "Rakenduse salasõna" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/eu.js b/apps/files_external/l10n/eu.js index b75e60f8fa9..663f7592b9c 100644 --- a/apps/files_external/l10n/eu.js +++ b/apps/files_external/l10n/eu.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Baimendu sarrera", - "Error configuring OAuth1" : "Errorea OAuth1 konfiguratzean", - "Please provide a valid app key and secret." : "Eman baliozko aplikazio-gakoa eta sekretua.", "Error configuring OAuth2" : "Errorea OAuth2 konfiguratzean", "Generate keys" : "Sortu gakoak", "Error generating key pair" : "Errorea gako bikotea sortzean", - "(Group)" : "(Taldea)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD kodeketarekin bateragarritasuna (mantsoa)", - "Enable encryption" : "Gaitu zifratzea", - "Enable previews" : "Gaitu aurrebistak", - "Enable sharing" : "Gaitu partekatzea", - "Check for changes" : "Begiratu aldaketarik dagoen", - "Never" : "Inoiz ez", - "Once every direct access" : "Sarbide zuzen bakoitzean", - "Read only" : "Irakurtzeko soilik", - "Disconnect" : "Deskonektatu", - "Admin defined" : "Administratzaileak definitua", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.", - "Delete storage?" : "Biltegiratzea ezabatu?", - "Saved" : "Gordeta", - "Saving …" : "Gordetzen …", - "Save" : "Gorde", "Forbidden to manage local mounts" : "Debekatuta dago tokiko muntaketak kudeatzea", "Storage with ID \"%d\" not found" : "Ez da aurkitu \"%d\" IDa duen biltegiratzea", "Invalid backend or authentication mechanism class" : "Atzeko alde edo autentifikazio mekanismo klase baliogabea", @@ -36,13 +17,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Autentifikazio mekanismoaren parametroak ez dira asebete", "Insufficient data: %s" : "Behar baino datu gutxiago: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Administratzaile ez direnak ezin dute editatu \"%d\" IDa duen biltegiratzea", "Access key" : "Sarbide-gakoa", "Secret key" : "Gako sekretua", "Builtin" : "Integratua", "None" : "Bat ere ez", - "OAuth1" : "OAuth1", - "App key" : "Aplikazio-gakoa", - "App secret" : "Aplikazio-sekretua", "OAuth2" : "OAuth2", "Client ID" : "Bezero ID", "Client secret" : "Bezeroaren sekretua", @@ -57,7 +36,10 @@ OC.L10N.register( "API key" : "APIaren gakoa", "Global credentials" : "Kredentzial globalak", "Log-in credentials, save in database" : "Saio hasteko kredentzialak, gorde datu-basean", + "Login and password" : "Erabiltzaile eta pasahitza", "Log-in credentials, save in session" : "Saioa hasteko kredentzialak, gorde saioan", + "Global credentials, manually entered" : "Kredentzial globalak, eskuz sartuak", + "Manually entered, store in database" : "Eskuz sartuak, gorde datu-basean", "RSA public key" : "RSA gako publikoa", "Public key" : "Gako publikoa", "RSA private key" : "RSA gako pribatua", @@ -74,6 +56,7 @@ OC.L10N.register( "Enable SSL" : "Gaitu SSL", "Enable Path Style" : "Gaitu bide estiloa", "Legacy (v2) authentication" : "Legacy (v2) autentifikazioa", + "Enable multipart copy" : "Gaitu multizati kopia", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Urruneko azpikarpeta", @@ -90,9 +73,13 @@ OC.L10N.register( "SMB/CIFS" : "SMB/CIFS", "Share" : "Partekatu", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", + "Case sensitive file system" : "Maiuskulak eta minuskulak bereizten dituen fitxategi-sistema", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desgaituz gero, maiuskulak eta minuskulak bereizten ez dituen fitxategi-sistema erabiltzeko aukera emango du, baina errendimendua moteldu dezake", "Verify ACL access when listing files" : "Egiaztatu ACL baimena fitxategiak zerrendatzerakoan", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Egiaztatu direktorio bateko fitxategi edo karpeta bakoitzaren ACLak kontuak irakurtzeko baimenik ez duten elementuak iragazteko, errendimendu galera dakar honek.", "Timeout" : "Denbora-muga", "SMB/CIFS using OC login" : "SMB/CIFS OC saio hasiera erabilita", + "Login as share" : "Hasi saioa partekatze bezala", "OpenStack Object Storage" : "OpenStack objektu biltegiratzea", "Service name" : "Zerbitzuaren izena", "Request timeout (seconds)" : "Eskaeraren denbora-muga (segundoak)", @@ -102,9 +89,15 @@ OC.L10N.register( "External storage" : "Kanpoko biltegiratzea", "External storage support" : "Kanpoko biltegiratzearen euskarria", "Adds basic external storage support" : "Kanpoko biltegiratzearen oinarrizko euskarria gehitzen du", - "Enter missing credentials" : "Sartu falta diren kredentzialak", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek kontu, talde edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio administratzaileari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.", + "Confirm" : "Berretsi", + "Storage credentials" : "Biltegiaren kredentzialak", + "To access the storage, you need to provide the authentication credentials." : "Biltegian sartzeko, autentifikazio-kredentzialak eman behar dituzu.", + "Enter the storage login" : "Sartu biltegiratze-saioa", + "Enter the storage password" : "Sartu biltegiratze pasahitza", "Unable to update this external storage config. {statusMessage}" : "Ezin izan da kanpoko biltegiaren konfigurazioa aldatu. {statusMessage}", "New configuration successfully saved" : "Konfigurazio berria ondo gorde da", + "Enter missing credentials" : "Sartu falta diren kredentzialak", "There was an error with this external storage." : "Errore bat gertatu da kanpoko biltegi honekin.", "We were unable to check the external storage {basename}" : "Ezin izan da {basename} kanpoko biltegia egiaztatu ", "Examine this faulty external storage configuration" : "Berrikusi kanpoko biltegi konfigurazio akastun hau", @@ -120,39 +113,42 @@ OC.L10N.register( "Scope" : "Esparrua", "Personal" : "Pertsonala", "System" : "Sistema", + "Type to select account or group." : "Idatzi kontu edo taldea hautatzeko.", + "(Group)" : "(Taldea)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD kodeketarekin bateragarritasuna (mantsoa)", + "Enable encryption" : "Gaitu zifratzea", + "Enable previews" : "Gaitu aurrebistak", + "Enable sharing" : "Gaitu partekatzea", + "Check for changes" : "Begiratu aldaketarik dagoen", + "Never" : "Inoiz ez", + "Once every direct access" : "Sarbide zuzen bakoitzean", + "Read only" : "Irakurtzeko soilik", + "Disconnect" : "Deskonektatu", + "Unknown backend: {backendName}" : "Backend ezezaguna: {backendName}", + "Admin defined" : "Administratzaileak definitua", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.", + "Delete storage?" : "Biltegiratzea ezabatu?", + "Click to recheck the configuration" : "Egin klik konfigurazioa berriro egiaztatzeko", + "Saved" : "Gordeta", + "Saving …" : "Gordetzen …", + "Save" : "Gorde", "No external storage configured or you don't have the permission to configure them" : "Ez dago kanpoko biltegiratzerik konfiguratuta edo ez daukazu baimenik haiek konfiguratzeko", "Open documentation" : "Ireki dokumentazioa", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu pertsonei beren kanpoko biltegiratze zerbitzuak muntatzeko.", "Folder name" : "Karpetaren izena", "Authentication" : "Autentifikazioa", "Configuration" : "Konfigurazioa", "Available for" : "Hauentzat eskuragarri", - "Click to recheck the configuration" : "Egin klik konfigurazioa berriro egiaztatzeko", "Add storage" : "Gehitu biltegiratzea", + "All people" : "Pertsona guztiak", "Advanced settings" : "Ezarpen aurreratuak", + "Allow people to mount external storage" : "Baimendu pertsonek kanpoko biltegiratze zerbitzuak muntatzea", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Kredentzial globalak erabil daitezke kredentzial berdinak dituzten kanpoko hainbat biltegiratzerekin autentifikatzeko.", - "Type to select user or group." : "Idatzi erabiltzailea edo taldea aukeratzeko.", - "Empty response from the server" : "Erantzun hutsa zerbitzaritik", - "Couldn't access. Please log out and in again to activate this mount point" : "Ezin izan da atzitu. Amaitu saioa eta hasi berriz muntatze-puntu hau aktibatzeko", - "Couldn't get the information from the remote server: {code} {type}" : "Ezin izan da urruneko zerbitzaritik informaziorik eskuratu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ezin izan da kanpoko muntatze-puntuen zerrenda eskuratu: {type}", - "There was an error with message: " : "Errore bat gertatu da mezu honekin:", - "external-storage" : "kanpo-biltegiratzea", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ezin izan da Windows sareko gailuen muntatze-puntuen zerrenda eskuratu: Erantzun hutsa zerbitzaritik", - "Please enter the credentials for the {mount} mount" : "Sartu {mount} muntatzearen kredentzialak", - "Username" : "Erabiltzaile-izena", - "Credentials saved" : "Kredentzialak gordeta", - "Credentials saving failed" : "Kredentzialak gordetzeak huts egin du", - "Credentials required" : "Kredentzialak behar dira", - "Storage with ID \"%d\" is not user editable" : "Erabiltzaileek ezin dute editatu \"%d\" IDa duen biltegiratzea", - "Username and password" : "Erabiltzaile-izena eta pasahitza", - "Global credentials, user entered" : "Kredentzial globalak, erabiltzaileak sartuak", - "User entered, store in database" : "Erabiltzaileak sartuak, gorde datu-basean", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Egiaztatu direktorio bateko fitxategi edo karpeta bakoitzaren ACLak erabiltzaileak irakurtzeko baimenik ez duten elementuak iragazteko, errendimendu galera dakar honek.", - "Username as share" : "Erabiltzaile-izena partekatze bezala", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek erabiltzaile batentzat, talde batentzat edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio erabiltzaile aurreratuari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.", - "Name" : "Izena", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu erabiltzaileei beren kanpoko biltegiratze zerbitzuak muntatzeko.", - "All users" : "Erabiltzaile guztiak", - "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea" + "Error configuring OAuth1" : "Errorea OAuth1 konfiguratzean", + "Please provide a valid app key and secret." : "Eman baliozko aplikazio-gakoa eta sekretua.", + "OAuth1" : "OAuth1", + "App key" : "Aplikazio-gakoa", + "App secret" : "Aplikazio-sekretua" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/eu.json b/apps/files_external/l10n/eu.json index b8a75882b1e..406683de6cc 100644 --- a/apps/files_external/l10n/eu.json +++ b/apps/files_external/l10n/eu.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Baimendu sarrera", - "Error configuring OAuth1" : "Errorea OAuth1 konfiguratzean", - "Please provide a valid app key and secret." : "Eman baliozko aplikazio-gakoa eta sekretua.", "Error configuring OAuth2" : "Errorea OAuth2 konfiguratzean", "Generate keys" : "Sortu gakoak", "Error generating key pair" : "Errorea gako bikotea sortzean", - "(Group)" : "(Taldea)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD kodeketarekin bateragarritasuna (mantsoa)", - "Enable encryption" : "Gaitu zifratzea", - "Enable previews" : "Gaitu aurrebistak", - "Enable sharing" : "Gaitu partekatzea", - "Check for changes" : "Begiratu aldaketarik dagoen", - "Never" : "Inoiz ez", - "Once every direct access" : "Sarbide zuzen bakoitzean", - "Read only" : "Irakurtzeko soilik", - "Disconnect" : "Deskonektatu", - "Admin defined" : "Administratzaileak definitua", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.", - "Delete storage?" : "Biltegiratzea ezabatu?", - "Saved" : "Gordeta", - "Saving …" : "Gordetzen …", - "Save" : "Gorde", "Forbidden to manage local mounts" : "Debekatuta dago tokiko muntaketak kudeatzea", "Storage with ID \"%d\" not found" : "Ez da aurkitu \"%d\" IDa duen biltegiratzea", "Invalid backend or authentication mechanism class" : "Atzeko alde edo autentifikazio mekanismo klase baliogabea", @@ -34,13 +15,11 @@ "Unsatisfied authentication mechanism parameters" : "Autentifikazio mekanismoaren parametroak ez dira asebete", "Insufficient data: %s" : "Behar baino datu gutxiago: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Administratzaile ez direnak ezin dute editatu \"%d\" IDa duen biltegiratzea", "Access key" : "Sarbide-gakoa", "Secret key" : "Gako sekretua", "Builtin" : "Integratua", "None" : "Bat ere ez", - "OAuth1" : "OAuth1", - "App key" : "Aplikazio-gakoa", - "App secret" : "Aplikazio-sekretua", "OAuth2" : "OAuth2", "Client ID" : "Bezero ID", "Client secret" : "Bezeroaren sekretua", @@ -55,7 +34,10 @@ "API key" : "APIaren gakoa", "Global credentials" : "Kredentzial globalak", "Log-in credentials, save in database" : "Saio hasteko kredentzialak, gorde datu-basean", + "Login and password" : "Erabiltzaile eta pasahitza", "Log-in credentials, save in session" : "Saioa hasteko kredentzialak, gorde saioan", + "Global credentials, manually entered" : "Kredentzial globalak, eskuz sartuak", + "Manually entered, store in database" : "Eskuz sartuak, gorde datu-basean", "RSA public key" : "RSA gako publikoa", "Public key" : "Gako publikoa", "RSA private key" : "RSA gako pribatua", @@ -72,6 +54,7 @@ "Enable SSL" : "Gaitu SSL", "Enable Path Style" : "Gaitu bide estiloa", "Legacy (v2) authentication" : "Legacy (v2) autentifikazioa", + "Enable multipart copy" : "Gaitu multizati kopia", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Urruneko azpikarpeta", @@ -88,9 +71,13 @@ "SMB/CIFS" : "SMB/CIFS", "Share" : "Partekatu", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", + "Case sensitive file system" : "Maiuskulak eta minuskulak bereizten dituen fitxategi-sistema", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desgaituz gero, maiuskulak eta minuskulak bereizten ez dituen fitxategi-sistema erabiltzeko aukera emango du, baina errendimendua moteldu dezake", "Verify ACL access when listing files" : "Egiaztatu ACL baimena fitxategiak zerrendatzerakoan", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Egiaztatu direktorio bateko fitxategi edo karpeta bakoitzaren ACLak kontuak irakurtzeko baimenik ez duten elementuak iragazteko, errendimendu galera dakar honek.", "Timeout" : "Denbora-muga", "SMB/CIFS using OC login" : "SMB/CIFS OC saio hasiera erabilita", + "Login as share" : "Hasi saioa partekatze bezala", "OpenStack Object Storage" : "OpenStack objektu biltegiratzea", "Service name" : "Zerbitzuaren izena", "Request timeout (seconds)" : "Eskaeraren denbora-muga (segundoak)", @@ -100,9 +87,15 @@ "External storage" : "Kanpoko biltegiratzea", "External storage support" : "Kanpoko biltegiratzearen euskarria", "Adds basic external storage support" : "Kanpoko biltegiratzearen oinarrizko euskarria gehitzen du", - "Enter missing credentials" : "Sartu falta diren kredentzialak", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek kontu, talde edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio administratzaileari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.", + "Confirm" : "Berretsi", + "Storage credentials" : "Biltegiaren kredentzialak", + "To access the storage, you need to provide the authentication credentials." : "Biltegian sartzeko, autentifikazio-kredentzialak eman behar dituzu.", + "Enter the storage login" : "Sartu biltegiratze-saioa", + "Enter the storage password" : "Sartu biltegiratze pasahitza", "Unable to update this external storage config. {statusMessage}" : "Ezin izan da kanpoko biltegiaren konfigurazioa aldatu. {statusMessage}", "New configuration successfully saved" : "Konfigurazio berria ondo gorde da", + "Enter missing credentials" : "Sartu falta diren kredentzialak", "There was an error with this external storage." : "Errore bat gertatu da kanpoko biltegi honekin.", "We were unable to check the external storage {basename}" : "Ezin izan da {basename} kanpoko biltegia egiaztatu ", "Examine this faulty external storage configuration" : "Berrikusi kanpoko biltegi konfigurazio akastun hau", @@ -118,39 +111,42 @@ "Scope" : "Esparrua", "Personal" : "Pertsonala", "System" : "Sistema", + "Type to select account or group." : "Idatzi kontu edo taldea hautatzeko.", + "(Group)" : "(Taldea)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD kodeketarekin bateragarritasuna (mantsoa)", + "Enable encryption" : "Gaitu zifratzea", + "Enable previews" : "Gaitu aurrebistak", + "Enable sharing" : "Gaitu partekatzea", + "Check for changes" : "Begiratu aldaketarik dagoen", + "Never" : "Inoiz ez", + "Once every direct access" : "Sarbide zuzen bakoitzean", + "Read only" : "Irakurtzeko soilik", + "Disconnect" : "Deskonektatu", + "Unknown backend: {backendName}" : "Backend ezezaguna: {backendName}", + "Admin defined" : "Administratzaileak definitua", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Egoeraren egiaztatze automatikoa desgaituta dago konfiguratutako biltegiratze kopuru handia dela eta, egin klik egoera egiaztatzeko", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ziur kanpoko biltegiratze hau deskonektatu nahi duzula? Biltegiratzea ez da erabilgarri egongo Nextclouden eta fitxategi eta karpeta hauek ezabatuko ditu une honetan konektatuta dagoen edozein sinkronizazio-bezerotan, baina ez du fitxategi edo karpetarik ezabatuko kanpoko biltegian.", + "Delete storage?" : "Biltegiratzea ezabatu?", + "Click to recheck the configuration" : "Egin klik konfigurazioa berriro egiaztatzeko", + "Saved" : "Gordeta", + "Saving …" : "Gordetzen …", + "Save" : "Gorde", "No external storage configured or you don't have the permission to configure them" : "Ez dago kanpoko biltegiratzerik konfiguratuta edo ez daukazu baimenik haiek konfiguratzeko", "Open documentation" : "Ireki dokumentazioa", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu pertsonei beren kanpoko biltegiratze zerbitzuak muntatzeko.", "Folder name" : "Karpetaren izena", "Authentication" : "Autentifikazioa", "Configuration" : "Konfigurazioa", "Available for" : "Hauentzat eskuragarri", - "Click to recheck the configuration" : "Egin klik konfigurazioa berriro egiaztatzeko", "Add storage" : "Gehitu biltegiratzea", + "All people" : "Pertsona guztiak", "Advanced settings" : "Ezarpen aurreratuak", + "Allow people to mount external storage" : "Baimendu pertsonek kanpoko biltegiratze zerbitzuak muntatzea", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Kredentzial globalak erabil daitezke kredentzial berdinak dituzten kanpoko hainbat biltegiratzerekin autentifikatzeko.", - "Type to select user or group." : "Idatzi erabiltzailea edo taldea aukeratzeko.", - "Empty response from the server" : "Erantzun hutsa zerbitzaritik", - "Couldn't access. Please log out and in again to activate this mount point" : "Ezin izan da atzitu. Amaitu saioa eta hasi berriz muntatze-puntu hau aktibatzeko", - "Couldn't get the information from the remote server: {code} {type}" : "Ezin izan da urruneko zerbitzaritik informaziorik eskuratu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ezin izan da kanpoko muntatze-puntuen zerrenda eskuratu: {type}", - "There was an error with message: " : "Errore bat gertatu da mezu honekin:", - "external-storage" : "kanpo-biltegiratzea", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ezin izan da Windows sareko gailuen muntatze-puntuen zerrenda eskuratu: Erantzun hutsa zerbitzaritik", - "Please enter the credentials for the {mount} mount" : "Sartu {mount} muntatzearen kredentzialak", - "Username" : "Erabiltzaile-izena", - "Credentials saved" : "Kredentzialak gordeta", - "Credentials saving failed" : "Kredentzialak gordetzeak huts egin du", - "Credentials required" : "Kredentzialak behar dira", - "Storage with ID \"%d\" is not user editable" : "Erabiltzaileek ezin dute editatu \"%d\" IDa duen biltegiratzea", - "Username and password" : "Erabiltzaile-izena eta pasahitza", - "Global credentials, user entered" : "Kredentzial globalak, erabiltzaileak sartuak", - "User entered, store in database" : "Erabiltzaileak sartuak, gorde datu-basean", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Egiaztatu direktorio bateko fitxategi edo karpeta bakoitzaren ACLak erabiltzaileak irakurtzeko baimenik ez duten elementuak iragazteko, errendimendu galera dakar honek.", - "Username as share" : "Erabiltzaile-izena partekatze bezala", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikazio honek aukera ematen die administratzaileei kanpoko biltegiratze hornitzaileetara konexioak konfiguratzeko, hala nola, FTP zerbitzariak, S3 edo SWIFT objektuen biltegiak, beste Nextcloud zerbitzariak, WebDAV zerbitzariak eta gehiago. Administratzaileak aukeratu dezake ze biltegiratze mota gaitu nahi dituen eta biltegiratze kokaleku horiek erabiltzaile batentzat, talde batentzat edo sistema osorako munta ditzake. Erabiltzaileek beren erroko Nextcloud direktorioan karpeta berri bat agertu dela ikusiko dute; bertara sarbidea izango dute eta Nextcloudeko beste edozein karpeta bezala erabil dezakete. Kanpoko biltegiratzeak kanpoko kokaleku horietan gordetako fitxategiak partekatzeko aukera ere ematen die erabiltzaileei. Kasu horietan, hartzaileak kanpoko biltegiratzeko fitxategira sarbidea eskatzen duenean fitxategiaren jabearen kredentzialak erabiltzen dira, modu horretan hartzaileak partekatutako fitxategia atzitu dezakeela ziurtatuz.\n\nKanpoko biltegiratzea GUI edo komando lerro bidez konfigura daiteke. Bigarren aukerak malgutasun handiagoa eskaintzen dio erabiltzaile aurreratuari, kanpoko biltegiratzeen muntatzea multzoka konfiguratzeko eta muntatze lehentasunak ezartzeko. Eskuragarri dago informazio gehiago kanpoko biltegiratzeen GUIaren eta kanpoko biltegiratzearen konfigurazio fitxategiaren dokumentazioetan.", - "Name" : "Izena", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Kanpoko biltegiratzeak aukera ematen dizu kanpoko biltegiratze zerbitzuak eta gailuak erabiltzeko Nextlcloudeko bigarren mailako biltegiratze gailu bezala. Gainera, aukera eman diezaiekezu erabiltzaileei beren kanpoko biltegiratze zerbitzuak muntatzeko.", - "All users" : "Erabiltzaile guztiak", - "Allow users to mount external storage" : "Baimendu erabiltzaileek kanpoko biltegiratze zerbitzuak muntatzea" + "Error configuring OAuth1" : "Errorea OAuth1 konfiguratzean", + "Please provide a valid app key and secret." : "Eman baliozko aplikazio-gakoa eta sekretua.", + "OAuth1" : "OAuth1", + "App key" : "Aplikazio-gakoa", + "App secret" : "Aplikazio-sekretua" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/fa.js b/apps/files_external/l10n/fa.js index f581f7785b4..330a0997468 100644 --- a/apps/files_external/l10n/fa.js +++ b/apps/files_external/l10n/fa.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : " مجوز اعطا دسترسی", - "Error configuring OAuth1" : "خطا پیکربندی OAuth1", - "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", "Error configuring OAuth2" : "خطا پیکربندی OAuth2", "Generate keys" : "تولید کلید", "Error generating key pair" : "خطا در تولید جفت کلید", - "(Group)" : "(گروه)", - "Compatibility with Mac NFD encoding (slow)" : "سازگاری با رمزگذاری Mac NFD (کند)", - "Enable encryption" : "فعال کردن رمزگذاری", - "Enable previews" : "فعال سازی پیش نمایش", - "Enable sharing" : "فعال سازی اشتراک گذاری", - "Check for changes" : "بررسی برای تغییرات", - "Never" : "هرگز", - "Once every direct access" : "دسترسی مستقیم یکبار برای همیشه", - "Read only" : "فقط خواندنی", - "Disconnect" : "قطع شدن", - "Admin defined" : "مدیر تعریف شده", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "فضای ذخیره سازی را حذف می کنید؟", - "Saved" : "ذخیره شد", - "Saving …" : "ذخیره کردن …", - "Save" : "ذخیره", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "ذخیره سازی با شناسه \"%d\" پیدا نشد", "Invalid backend or authentication mechanism class" : "کلاس مکانیسم اعتبار پس زمینه یا تأیید اعتبار نامعتبر است", @@ -40,9 +21,6 @@ OC.L10N.register( "Secret key" : "کلید مخفی", "Builtin" : "ساخته شده", "None" : "هیچکدام", - "OAuth1" : "OAuth1", - "App key" : "کلید برنامه", - "App secret" : "کد برنامه", "OAuth2" : "OAuth2", "Client ID" : "شناسه مشتری", "Client secret" : "رمز مشتری", @@ -102,9 +80,10 @@ OC.L10N.register( "External storage" : "حافظه خارجی", "External storage support" : "پشتیبانی از ذخیره سازی خارجی", "Adds basic external storage support" : "پشتیبانی اصلی حافظه خارجی را اضافه می کند", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "تأیید", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -120,39 +99,37 @@ OC.L10N.register( "Scope" : "حوزه", "Personal" : "شخصی", "System" : "سیستم", + "(Group)" : "(گروه)", + "Compatibility with Mac NFD encoding (slow)" : "سازگاری با رمزگذاری Mac NFD (کند)", + "Enable encryption" : "فعال کردن رمزگذاری", + "Enable previews" : "فعال سازی پیش نمایش", + "Enable sharing" : "فعال سازی اشتراک گذاری", + "Check for changes" : "بررسی برای تغییرات", + "Never" : "هرگز", + "Once every direct access" : "دسترسی مستقیم یکبار برای همیشه", + "Read only" : "فقط خواندنی", + "Disconnect" : "قطع شدن", + "Admin defined" : "مدیر تعریف شده", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "فضای ذخیره سازی را حذف می کنید؟", + "Click to recheck the configuration" : "برای بررسی مجدد پیکربندی کلیک کنید.", + "Saved" : "ذخیره شد", + "Saving …" : "ذخیره کردن …", + "Save" : "ذخیره", "No external storage configured or you don't have the permission to configure them" : "هیچ فضای ذخیره سازی خارجی پیکربندی نشده است یا اجازه پیکربندی آنها را ندارید.", "Open documentation" : "مستندات باز", "Folder name" : "نام پوشه", "Authentication" : "احراز هویت", "Configuration" : "پیکربندی", "Available for" : "در دسترس برای", - "Click to recheck the configuration" : "برای بررسی مجدد پیکربندی کلیک کنید.", "Add storage" : "اضافه کردن حافظه", "Advanced settings" : "تنظیمات پیشرفته", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "از اعتبار جهانی می توان برای تأیید اعتبار با چندین انبار خارجی که دارای اعتبار یکسانی هستند استفاده کرد.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "خالی از پاسخ سرور", - "Couldn't access. Please log out and in again to activate this mount point" : "دسترسی پیدا نشد. لطفاً برای فعال کردن این نقطه نصب از سیستم خارج شوید و دوباره وارد سیستم شوید", - "Couldn't get the information from the remote server: {code} {type}" : "اطلاعاتی از سرور راه دور یافت نشد: {code} {type} ", - "Couldn't get the list of external mount points: {type}" : "لیست نقاط نصب خارجی یافت نشد: {type} ", - "There was an error with message: " : "خطایی در پیام وجود دارد:", - "external-storage" : "ذخیره ساز خارجی", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "نمی توان لیست نقاط نصب درایو شبکه Windows را یافت: پاسخ خالی از سرور", - "Please enter the credentials for the {mount} mount" : "لطفا مدارکی را برای مانت {mount} وارد کنید", - "Username" : "نام کاربری", - "Credentials saved" : "اعتبارنامه ذخیره شد", - "Credentials saving failed" : "ذخیره اعتبارنامه انجام نشد", - "Credentials required" : "اعتبارنامه ضروری", - "Storage with ID \"%d\" is not user editable" : "ذخیره سازی با شناسه \"%d\" قابل ویرایش کاربر نیست", - "Username and password" : "نام کاربری و رمز عبور", - "Global credentials, user entered" : "اعتبار جهانی، کاربر ثبت کرد", - "User entered, store in database" : "کاربر وارد شده، ذخیره در پایگاه داده", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "نام کاربری به عنوان اشتراک", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "این برنامه مدیران را قادر می سازد پیکربندی اتصالات را با ارائه دهندگان ذخیره سازی خارجی ، مانند سرورهای FTP ، فروشگاه های شی S3 یا SWIFT ، سایر سرورهای Nextcloud ، سرورهای WebDAV و موارد دیگر انجام دهند. سرپرستان می توانند انتخاب کنند که کدام نوع ذخیره سازی را فعال کرده و می توانند این مکانهای ذخیره سازی را برای کاربر ، گروه یا کل سیستم سوار کنند. کاربران می بینند که یک پوشه جدید در فهرست ریشه Nextcloud خود ظاهر می شود ، که می توانند مانند سایر پوشه های Nextcloud به آنها دسترسی پیدا کرده و از آن استفاده کنند. حافظه خارجی همچنین به کاربران امکان می دهد فایلهای ذخیره شده در این مکانهای خارجی را به اشتراک بگذارند. در این موارد ، هنگام دریافت درخواست گیرنده پرونده از فضای ذخیره خارجی ، از اعتبارنامه صاحب پرونده استفاده می شود ، از این طریق اطمینان حاصل می شود که گیرنده می تواند به پرونده اشتراکی دسترسی داشته باشد. . این گزینه دوم انعطاف پذیری بیشتری را برای پیکربندی نصب انبارداری های فله ای و تنظیم اولویت های مانیتور به کاربر پیشرفته ارائه می دهد. اطلاعات بیشتر در اسناد GUI فضای ذخیره سازی خارجی و اسناد فایل پیکربندی حافظه خارجی موجود است.", - "Name" : "نام", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "فضای ذخیره سازی خارجی شما را قادر می سازد خدمات و دستگاههای ذخیره سازی خارجی را به عنوان دستگاههای ذخیره سازی ثانویه Cloud نصب کنید. همچنین ممکن است به کاربران اجازه دهید خدمات ذخیره سازی خارجی خود را سوار کنند.", - "All users" : "All users", - "Allow users to mount external storage" : "به کاربران اجازه دهید حافظه خارجی را نصب کنند." + "Error configuring OAuth1" : "خطا پیکربندی OAuth1", + "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", + "OAuth1" : "OAuth1", + "App key" : "کلید برنامه", + "App secret" : "کد برنامه" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/fa.json b/apps/files_external/l10n/fa.json index 18dfa4794bf..2796bd6a34b 100644 --- a/apps/files_external/l10n/fa.json +++ b/apps/files_external/l10n/fa.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : " مجوز اعطا دسترسی", - "Error configuring OAuth1" : "خطا پیکربندی OAuth1", - "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", "Error configuring OAuth2" : "خطا پیکربندی OAuth2", "Generate keys" : "تولید کلید", "Error generating key pair" : "خطا در تولید جفت کلید", - "(Group)" : "(گروه)", - "Compatibility with Mac NFD encoding (slow)" : "سازگاری با رمزگذاری Mac NFD (کند)", - "Enable encryption" : "فعال کردن رمزگذاری", - "Enable previews" : "فعال سازی پیش نمایش", - "Enable sharing" : "فعال سازی اشتراک گذاری", - "Check for changes" : "بررسی برای تغییرات", - "Never" : "هرگز", - "Once every direct access" : "دسترسی مستقیم یکبار برای همیشه", - "Read only" : "فقط خواندنی", - "Disconnect" : "قطع شدن", - "Admin defined" : "مدیر تعریف شده", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "فضای ذخیره سازی را حذف می کنید؟", - "Saved" : "ذخیره شد", - "Saving …" : "ذخیره کردن …", - "Save" : "ذخیره", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "ذخیره سازی با شناسه \"%d\" پیدا نشد", "Invalid backend or authentication mechanism class" : "کلاس مکانیسم اعتبار پس زمینه یا تأیید اعتبار نامعتبر است", @@ -38,9 +19,6 @@ "Secret key" : "کلید مخفی", "Builtin" : "ساخته شده", "None" : "هیچکدام", - "OAuth1" : "OAuth1", - "App key" : "کلید برنامه", - "App secret" : "کد برنامه", "OAuth2" : "OAuth2", "Client ID" : "شناسه مشتری", "Client secret" : "رمز مشتری", @@ -100,9 +78,10 @@ "External storage" : "حافظه خارجی", "External storage support" : "پشتیبانی از ذخیره سازی خارجی", "Adds basic external storage support" : "پشتیبانی اصلی حافظه خارجی را اضافه می کند", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "تأیید", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -118,39 +97,37 @@ "Scope" : "حوزه", "Personal" : "شخصی", "System" : "سیستم", + "(Group)" : "(گروه)", + "Compatibility with Mac NFD encoding (slow)" : "سازگاری با رمزگذاری Mac NFD (کند)", + "Enable encryption" : "فعال کردن رمزگذاری", + "Enable previews" : "فعال سازی پیش نمایش", + "Enable sharing" : "فعال سازی اشتراک گذاری", + "Check for changes" : "بررسی برای تغییرات", + "Never" : "هرگز", + "Once every direct access" : "دسترسی مستقیم یکبار برای همیشه", + "Read only" : "فقط خواندنی", + "Disconnect" : "قطع شدن", + "Admin defined" : "مدیر تعریف شده", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "فضای ذخیره سازی را حذف می کنید؟", + "Click to recheck the configuration" : "برای بررسی مجدد پیکربندی کلیک کنید.", + "Saved" : "ذخیره شد", + "Saving …" : "ذخیره کردن …", + "Save" : "ذخیره", "No external storage configured or you don't have the permission to configure them" : "هیچ فضای ذخیره سازی خارجی پیکربندی نشده است یا اجازه پیکربندی آنها را ندارید.", "Open documentation" : "مستندات باز", "Folder name" : "نام پوشه", "Authentication" : "احراز هویت", "Configuration" : "پیکربندی", "Available for" : "در دسترس برای", - "Click to recheck the configuration" : "برای بررسی مجدد پیکربندی کلیک کنید.", "Add storage" : "اضافه کردن حافظه", "Advanced settings" : "تنظیمات پیشرفته", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "از اعتبار جهانی می توان برای تأیید اعتبار با چندین انبار خارجی که دارای اعتبار یکسانی هستند استفاده کرد.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "خالی از پاسخ سرور", - "Couldn't access. Please log out and in again to activate this mount point" : "دسترسی پیدا نشد. لطفاً برای فعال کردن این نقطه نصب از سیستم خارج شوید و دوباره وارد سیستم شوید", - "Couldn't get the information from the remote server: {code} {type}" : "اطلاعاتی از سرور راه دور یافت نشد: {code} {type} ", - "Couldn't get the list of external mount points: {type}" : "لیست نقاط نصب خارجی یافت نشد: {type} ", - "There was an error with message: " : "خطایی در پیام وجود دارد:", - "external-storage" : "ذخیره ساز خارجی", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "نمی توان لیست نقاط نصب درایو شبکه Windows را یافت: پاسخ خالی از سرور", - "Please enter the credentials for the {mount} mount" : "لطفا مدارکی را برای مانت {mount} وارد کنید", - "Username" : "نام کاربری", - "Credentials saved" : "اعتبارنامه ذخیره شد", - "Credentials saving failed" : "ذخیره اعتبارنامه انجام نشد", - "Credentials required" : "اعتبارنامه ضروری", - "Storage with ID \"%d\" is not user editable" : "ذخیره سازی با شناسه \"%d\" قابل ویرایش کاربر نیست", - "Username and password" : "نام کاربری و رمز عبور", - "Global credentials, user entered" : "اعتبار جهانی، کاربر ثبت کرد", - "User entered, store in database" : "کاربر وارد شده، ذخیره در پایگاه داده", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "نام کاربری به عنوان اشتراک", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "این برنامه مدیران را قادر می سازد پیکربندی اتصالات را با ارائه دهندگان ذخیره سازی خارجی ، مانند سرورهای FTP ، فروشگاه های شی S3 یا SWIFT ، سایر سرورهای Nextcloud ، سرورهای WebDAV و موارد دیگر انجام دهند. سرپرستان می توانند انتخاب کنند که کدام نوع ذخیره سازی را فعال کرده و می توانند این مکانهای ذخیره سازی را برای کاربر ، گروه یا کل سیستم سوار کنند. کاربران می بینند که یک پوشه جدید در فهرست ریشه Nextcloud خود ظاهر می شود ، که می توانند مانند سایر پوشه های Nextcloud به آنها دسترسی پیدا کرده و از آن استفاده کنند. حافظه خارجی همچنین به کاربران امکان می دهد فایلهای ذخیره شده در این مکانهای خارجی را به اشتراک بگذارند. در این موارد ، هنگام دریافت درخواست گیرنده پرونده از فضای ذخیره خارجی ، از اعتبارنامه صاحب پرونده استفاده می شود ، از این طریق اطمینان حاصل می شود که گیرنده می تواند به پرونده اشتراکی دسترسی داشته باشد. . این گزینه دوم انعطاف پذیری بیشتری را برای پیکربندی نصب انبارداری های فله ای و تنظیم اولویت های مانیتور به کاربر پیشرفته ارائه می دهد. اطلاعات بیشتر در اسناد GUI فضای ذخیره سازی خارجی و اسناد فایل پیکربندی حافظه خارجی موجود است.", - "Name" : "نام", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "فضای ذخیره سازی خارجی شما را قادر می سازد خدمات و دستگاههای ذخیره سازی خارجی را به عنوان دستگاههای ذخیره سازی ثانویه Cloud نصب کنید. همچنین ممکن است به کاربران اجازه دهید خدمات ذخیره سازی خارجی خود را سوار کنند.", - "All users" : "All users", - "Allow users to mount external storage" : "به کاربران اجازه دهید حافظه خارجی را نصب کنند." + "Error configuring OAuth1" : "خطا پیکربندی OAuth1", + "Please provide a valid app key and secret." : "لطفا یک کلید و رمز معتبر برای برنامه فرآهم کنید.", + "OAuth1" : "OAuth1", + "App key" : "کلید برنامه", + "App secret" : "کد برنامه" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js index 162077c5a7c..36928b64461 100644 --- a/apps/files_external/l10n/fi.js +++ b/apps/files_external/l10n/fi.js @@ -2,27 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Salli pääsy", - "Error configuring OAuth1" : "Virhe OAuth1:n asetuksia tehdessä", - "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Error configuring OAuth2" : "Virhe OAuth2:n asetuksia tehdessä", "Generate keys" : "Luo avaimet", "Error generating key pair" : "Virhe luotaessa avainparia", - "Type to select account or group." : "Kirjoita valitaksesi tilin tai ryhmän.", - "(Group)" : "(Ryhmä)", - "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)", - "Enable encryption" : "Käytä salausta", - "Enable previews" : "Käytä esikatseluja", - "Enable sharing" : "Käytä jakamista", - "Check for changes" : "Tarkista muutokset", - "Never" : "Ei koskaan", - "Once every direct access" : "Kerran aina suoran käytön yhteydessä", - "Read only" : "Vain luku", - "Disconnect" : "Katkaise yhteys", - "Admin defined" : "Ylläpitäjän määrittämä", - "Delete storage?" : "Poistetaanko tallennustila?", - "Saved" : "Tallennettu", - "Saving …" : "Tallennetaan…", - "Save" : "Tallenna", + "You are not logged in" : "Et ole kirjautuneena sisään", + "Permission denied" : "Ei käyttöoikeutta", "Storage with ID \"%d\" not found" : "Tallennustilaa tunnisteella \"%d\" ei löytynyt", "Invalid backend or authentication mechanism class" : "Virheellinen tietovarasto tai tunnistautumismekanismin luokka", "Invalid mount point" : "Virheellinen liitoskohta", @@ -38,9 +22,6 @@ OC.L10N.register( "Secret key" : "Salainen avain", "Builtin" : "Sisäänrakennettu", "None" : "Ei mitään", - "OAuth1" : "OAuth1", - "App key" : "Sovellusavain", - "App secret" : "Sovellussalaisuus", "OAuth2" : "OAuth2", "Client ID" : "Asiakkaan tunniste", "Client secret" : "Asiakassalaisuus", @@ -55,6 +36,7 @@ OC.L10N.register( "API key" : "API-avain", "Global credentials" : "Yleiset tunnistetiedot", "Log-in credentials, save in database" : "Kirjautumistiedot, tallennetaan tietokantaan", + "Login and password" : "Käyttäjätunnus ja salasana", "Log-in credentials, save in session" : "Kirjautumistiedot, tallenna istuntoon", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", @@ -96,6 +78,7 @@ OC.L10N.register( "External storage" : "Erillinen tallennustila", "External storage support" : "Erillisen tallennustilan tuki", "Adds basic external storage support" : "Lisää perusmuotoisen tuen erillisille tallennustiloille", + "Confirm" : "Vahvista", "Open in Files" : "Avaa tiedostosovelluksessa", "External mount error" : "Erillisen liitosvirhe", "Storage type" : "Tallennustilan tyyppi", @@ -103,36 +86,37 @@ OC.L10N.register( "Scope" : "Näkyvyysalue", "Personal" : "Henkilökohtainen", "System" : "Järjestelmä", + "Type to select account or group." : "Kirjoita valitaksesi tilin tai ryhmän.", + "(Group)" : "(Ryhmä)", + "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)", + "Enable encryption" : "Käytä salausta", + "Enable previews" : "Käytä esikatseluja", + "Enable sharing" : "Käytä jakamista", + "Check for changes" : "Tarkista muutokset", + "Never" : "Ei koskaan", + "Once every direct access" : "Kerran aina suoran käytön yhteydessä", + "Read only" : "Vain luku", + "Disconnect" : "Katkaise yhteys", + "Admin defined" : "Ylläpitäjän määrittämä", + "Delete storage?" : "Poistetaanko tallennustila?", + "Click to recheck the configuration" : "Napsauta tarkistaaksesi uudelleen määritykset", + "Saved" : "Tallennettu", + "Saving …" : "Tallennetaan…", + "Save" : "Tallenna", "No external storage configured or you don't have the permission to configure them" : "Erillistä tallennustilaa ei ole määritelty tai sinulla ei ole oikeuksia määrittää erillisiä tallennustiloja", "Open documentation" : "Avaa dokumentaatio", "Folder name" : "Kansion nimi", "Authentication" : "Tunnistautuminen", "Configuration" : "Asetukset", "Available for" : "Saatavuus", - "Click to recheck the configuration" : "Napsauta tarkistaaksesi uudelleen määritykset", "Add storage" : "Lisää tallennustila", + "All people" : "Kaikki ihmiset", "Advanced settings" : "Lisäasetukset", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Yleisiä tunnistetietoja voidaan käyttää useisiin ulkoisiin tallennustiloihin tunnistautumiseen, joissa käytetään samoja tunnistetietoja.", - "Type to select user or group." : "Kirjoita valitaksesi käyttäjän tai ryhmän.", - "Empty response from the server" : "Tyhjä vastaus palvelimelta", - "Couldn't access. Please log out and in again to activate this mount point" : "Käyttö ei onnistunut. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitoskohdan", - "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", - "There was an error with message: " : "Tapahtui virhe viestillä:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ei voitu noutaa listaa Windows-verkkoasemien liitoskohdista: tyhjä vastaus palvelimelta", - "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", - "Username" : "Käyttäjätunnus", - "Credentials saved" : "Kirjautumistiedot tallennettu", - "Credentials saving failed" : "Kirjautumistietojen tallentaminen epäonnistui", - "Credentials required" : "Kirjautumistiedot vaaditaan", - "Storage with ID \"%d\" is not user editable" : "Tallennustila tunnisteella \"%d\" ei ole käyttäjän muokattavissa", - "Username and password" : "Käyttäjätunnus ja salasana", - "Global credentials, user entered" : "Yleiset tunnistetiedot, käyttäjän syöttämät", - "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", - "Username as share" : "Käyttäjänimi jakona", - "Name" : "Nimi", - "All users" : "Kaikki käyttäjät", - "Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja" + "Error configuring OAuth1" : "Virhe OAuth1:n asetuksia tehdessä", + "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", + "OAuth1" : "OAuth1", + "App key" : "Sovellusavain", + "App secret" : "Sovellussalaisuus" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json index b12b9437e7b..08667506c51 100644 --- a/apps/files_external/l10n/fi.json +++ b/apps/files_external/l10n/fi.json @@ -1,26 +1,10 @@ { "translations": { "Grant access" : "Salli pääsy", - "Error configuring OAuth1" : "Virhe OAuth1:n asetuksia tehdessä", - "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Error configuring OAuth2" : "Virhe OAuth2:n asetuksia tehdessä", "Generate keys" : "Luo avaimet", "Error generating key pair" : "Virhe luotaessa avainparia", - "Type to select account or group." : "Kirjoita valitaksesi tilin tai ryhmän.", - "(Group)" : "(Ryhmä)", - "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)", - "Enable encryption" : "Käytä salausta", - "Enable previews" : "Käytä esikatseluja", - "Enable sharing" : "Käytä jakamista", - "Check for changes" : "Tarkista muutokset", - "Never" : "Ei koskaan", - "Once every direct access" : "Kerran aina suoran käytön yhteydessä", - "Read only" : "Vain luku", - "Disconnect" : "Katkaise yhteys", - "Admin defined" : "Ylläpitäjän määrittämä", - "Delete storage?" : "Poistetaanko tallennustila?", - "Saved" : "Tallennettu", - "Saving …" : "Tallennetaan…", - "Save" : "Tallenna", + "You are not logged in" : "Et ole kirjautuneena sisään", + "Permission denied" : "Ei käyttöoikeutta", "Storage with ID \"%d\" not found" : "Tallennustilaa tunnisteella \"%d\" ei löytynyt", "Invalid backend or authentication mechanism class" : "Virheellinen tietovarasto tai tunnistautumismekanismin luokka", "Invalid mount point" : "Virheellinen liitoskohta", @@ -36,9 +20,6 @@ "Secret key" : "Salainen avain", "Builtin" : "Sisäänrakennettu", "None" : "Ei mitään", - "OAuth1" : "OAuth1", - "App key" : "Sovellusavain", - "App secret" : "Sovellussalaisuus", "OAuth2" : "OAuth2", "Client ID" : "Asiakkaan tunniste", "Client secret" : "Asiakassalaisuus", @@ -53,6 +34,7 @@ "API key" : "API-avain", "Global credentials" : "Yleiset tunnistetiedot", "Log-in credentials, save in database" : "Kirjautumistiedot, tallennetaan tietokantaan", + "Login and password" : "Käyttäjätunnus ja salasana", "Log-in credentials, save in session" : "Kirjautumistiedot, tallenna istuntoon", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", @@ -94,6 +76,7 @@ "External storage" : "Erillinen tallennustila", "External storage support" : "Erillisen tallennustilan tuki", "Adds basic external storage support" : "Lisää perusmuotoisen tuen erillisille tallennustiloille", + "Confirm" : "Vahvista", "Open in Files" : "Avaa tiedostosovelluksessa", "External mount error" : "Erillisen liitosvirhe", "Storage type" : "Tallennustilan tyyppi", @@ -101,36 +84,37 @@ "Scope" : "Näkyvyysalue", "Personal" : "Henkilökohtainen", "System" : "Järjestelmä", + "Type to select account or group." : "Kirjoita valitaksesi tilin tai ryhmän.", + "(Group)" : "(Ryhmä)", + "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD -enkoodauksen kanssa (hidas)", + "Enable encryption" : "Käytä salausta", + "Enable previews" : "Käytä esikatseluja", + "Enable sharing" : "Käytä jakamista", + "Check for changes" : "Tarkista muutokset", + "Never" : "Ei koskaan", + "Once every direct access" : "Kerran aina suoran käytön yhteydessä", + "Read only" : "Vain luku", + "Disconnect" : "Katkaise yhteys", + "Admin defined" : "Ylläpitäjän määrittämä", + "Delete storage?" : "Poistetaanko tallennustila?", + "Click to recheck the configuration" : "Napsauta tarkistaaksesi uudelleen määritykset", + "Saved" : "Tallennettu", + "Saving …" : "Tallennetaan…", + "Save" : "Tallenna", "No external storage configured or you don't have the permission to configure them" : "Erillistä tallennustilaa ei ole määritelty tai sinulla ei ole oikeuksia määrittää erillisiä tallennustiloja", "Open documentation" : "Avaa dokumentaatio", "Folder name" : "Kansion nimi", "Authentication" : "Tunnistautuminen", "Configuration" : "Asetukset", "Available for" : "Saatavuus", - "Click to recheck the configuration" : "Napsauta tarkistaaksesi uudelleen määritykset", "Add storage" : "Lisää tallennustila", + "All people" : "Kaikki ihmiset", "Advanced settings" : "Lisäasetukset", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Yleisiä tunnistetietoja voidaan käyttää useisiin ulkoisiin tallennustiloihin tunnistautumiseen, joissa käytetään samoja tunnistetietoja.", - "Type to select user or group." : "Kirjoita valitaksesi käyttäjän tai ryhmän.", - "Empty response from the server" : "Tyhjä vastaus palvelimelta", - "Couldn't access. Please log out and in again to activate this mount point" : "Käyttö ei onnistunut. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitoskohdan", - "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", - "There was an error with message: " : "Tapahtui virhe viestillä:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ei voitu noutaa listaa Windows-verkkoasemien liitoskohdista: tyhjä vastaus palvelimelta", - "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", - "Username" : "Käyttäjätunnus", - "Credentials saved" : "Kirjautumistiedot tallennettu", - "Credentials saving failed" : "Kirjautumistietojen tallentaminen epäonnistui", - "Credentials required" : "Kirjautumistiedot vaaditaan", - "Storage with ID \"%d\" is not user editable" : "Tallennustila tunnisteella \"%d\" ei ole käyttäjän muokattavissa", - "Username and password" : "Käyttäjätunnus ja salasana", - "Global credentials, user entered" : "Yleiset tunnistetiedot, käyttäjän syöttämät", - "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", - "Username as share" : "Käyttäjänimi jakona", - "Name" : "Nimi", - "All users" : "Kaikki käyttäjät", - "Allow users to mount external storage" : "Salli käyttäjien liittää erillisiä tallennustiloja" + "Error configuring OAuth1" : "Virhe OAuth1:n asetuksia tehdessä", + "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", + "OAuth1" : "OAuth1", + "App key" : "Sovellusavain", + "App secret" : "Sovellussalaisuus" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index df65f6c7402..1ae5821553b 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Autoriser l’accès", - "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1", - "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2", "Generate keys" : "Générer des clés", "Error generating key pair" : "Erreur lors de la génération des clés", - "Type to select account or group." : "Tapez pour sélectionner un compte ou un groupe.", - "(Group)" : "(Groupe)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", - "Enable encryption" : "Activer le chiffrement", - "Enable previews" : "Activer les prévisualisations", - "Enable sharing" : "Permettre le partage", - "Check for changes" : "Rechercher les modifications", - "Never" : "Jamais", - "Once every direct access" : "Une fois à chaque accès direct", - "Read only" : "Lecture seule", - "Disconnect" : "Se déconnecter", - "Admin defined" : "Défini par l'administrateur", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La vérification automatique d'état est désactivée à cause du grand nombre de stockages configurés, cliquez pour vérifier l'état", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Êtes-vous certain de vouloir déconnecter ce stockage externe ? Cela rendra ce stockage indisponible dans Nextcloud et entraînera la suppression de ces fichiers et dossiers sur tous les clients actuellement connectés, mais ne supprimera aucun fichier ni dossier du stockage externe lui-même.", - "Delete storage?" : "Supprimer ce support de stockage ?", - "Saved" : "Enregistré", - "Saving …" : "Enregistrement ...", - "Save" : "Enregistrer", + "You are not logged in" : "Vous n'êtes pas connecté", + "Permission denied" : "Autorisation refusée", "Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.", "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Clé secrète", "Builtin" : "Intégré", "None" : "Aucun", - "OAuth1" : "OAuth1", - "App key" : "Clé d'application", - "App secret" : "Secret de l'application", "OAuth2" : "OAuth2", "Client ID" : "ID Client", "Client secret" : "Secret client", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Accès par path", "Legacy (v2) authentication" : "Authentification héritée (v2)", "Enable multipart copy" : "Activer la copie multiple", + "SSE-C encryption key" : "Clé de chiffrement SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Sous-dossier distant", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "Support de stockage externe", "Adds basic external storage support" : "Ajoute la prise en charge de base du stockage externe", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. L'administration peut choisir les types de stockage à activer et peut monter ces emplacements de stockage pour un compte, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux personnes de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre à l'administration une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", - "Enter missing credentials" : "Saisissez les identifiants de connexion manquants", + "Confirm" : "Confirmer", + "Storage credentials" : "informations d'identification du stockage ", + "To access the storage, you need to provide the authentication credentials." : "Pour accéder au stockage, vous devez fournir les informations d’authentification.", + "Enter the storage login" : "Entrez le login du stockage", + "Enter the storage password" : "Entrez le mot de passe du stockage", "Unable to update this external storage config. {statusMessage}" : "Impossible de mettre à jour la configuration de ce stockage externe. {statusMessage}", "New configuration successfully saved" : "Nouvelle configuration entrée avec succès", + "Enter missing credentials" : "Saisissez les identifiants de connexion manquants", + "Credentials successfully set" : "Identifiants enregistrés avec succès", + "Error while setting credentials: {error}" : "Erreur lors de l'envoi des identifiants: {error}", + "Checking storage …" : "Vérification du stockage ...", "There was an error with this external storage." : "Il y a eu une erreur avec ce stockage externe.", "We were unable to check the external storage {basename}" : "Nous n'avons pas pu vérifier le stockage externe {basename}", "Examine this faulty external storage configuration" : "Examiner la configuration de ce stockage externe défaillant", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Portée", "Personal" : "Personnel", "System" : "Système", + "Type to select account or group." : "Tapez pour sélectionner un compte ou un groupe.", + "(Group)" : "(Groupe)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", + "Enable encryption" : "Activer le chiffrement", + "Enable previews" : "Activer les prévisualisations", + "Enable sharing" : "Permettre le partage", + "Check for changes" : "Rechercher les modifications", + "Never" : "Jamais", + "Once every direct access" : "Une fois à chaque accès direct", + "Read only" : "Lecture seule", + "Disconnect" : "Se déconnecter", + "Unknown backend: {backendName}" : "Backend inconnu: {backendName}", + "Admin defined" : "Défini par l'administrateur", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La vérification automatique d'état est désactivée à cause du grand nombre de stockages configurés, cliquez pour vérifier l'état", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Êtes-vous certain de vouloir déconnecter ce stockage externe ? Cela rendra ce stockage indisponible dans Nextcloud et entraînera la suppression de ces fichiers et dossiers sur tous les clients actuellement connectés, mais ne supprimera aucun fichier ni dossier du stockage externe lui-même.", + "Delete storage?" : "Supprimer ce support de stockage ?", + "Click to recheck the configuration" : "Cliquer pour revérifier la configuration", + "Saved" : "Enregistré", + "Saving …" : "Enregistrement ...", + "Save" : "Enregistrer", + "Failed to save global credentials" : "Échec de l'enregistrement des identifiants globaux", + "Failed to save global credentials: {message}" : "Échec de l'enregistrement des identifiants globaux : {message}", "No external storage configured or you don't have the permission to configure them" : "Aucun stockage externe configuré ou vous n'avez pas l'autorisation de les configurer", "Open documentation" : "Voir la documentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les personnes à monter leurs propres services de stockage externes.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Authentification", "Configuration" : "Configuration", "Available for" : "Disponible pour", - "Click to recheck the configuration" : "Cliquer pour revérifier la configuration", "Add storage" : "Ajouter un support de stockage", "All people" : "Toutes les personnes", "Advanced settings" : "Paramètres avancés", "Allow people to mount external storage" : "Autoriser les personnes à monter des espaces de stockage externes", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les identifiants globaux peuvent être utilisés pour s'authentifier auprès de multiples stockages externes qui ont les mêmes identifiants.", - "Type to select user or group." : "Tapez pour sélectionner un utilisateur ou un groupe.", - "Empty response from the server" : "Réponse du serveur vide", - "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage", - "Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", - "There was an error with message: " : "Il y a eu une erreur avec le message :", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", - "Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}", - "Username" : "Nom d’utilisateur", - "Credentials saved" : "Identifiants sauvegardés", - "Credentials saving failed" : "La sauvegarde des identifiants a échoué", - "Credentials required" : "Identifiants exigés", - "Storage with ID \"%d\" is not user editable" : "Le support de stockage avec l'ID \"%d\" n'est pas modifiable par les utilisateurs", - "Username and password" : "Nom d'utilisateur et mot de passe", - "Global credentials, user entered" : "Identifiants globaux, utilisateur saisi", - "User entered, store in database" : "Utilisateur entré, stocker dans la base de données", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Le désactiver va permettre d'utiliser un système de fichiers insensible à la casse mais cela a un impact sur les performances.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Contrôler les ACL de chaque fichier ou dossier à l'intérieur d'un répertoire afin de filtrer les éléments pour lesquels l'utilisateur n'a pas d'accès en lecture, ceci engendre une dégradation des performances", - "Username as share" : "Nom d'utilisateur comme nom de partage", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", - "Name" : "Nom", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les utilisateurs à monter leurs propres services de stockage externes.", - "All users" : "Tous les utilisateurs", - "Allow users to mount external storage" : "Autoriser les utilisateurs à monter des espaces de stockage externes" + "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1", + "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", + "OAuth1" : "OAuth1", + "App key" : "Clé d'application", + "App secret" : "Secret de l'application" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 9f6ec8da8cb..05f50b1be8a 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Autoriser l’accès", - "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1", - "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2", "Generate keys" : "Générer des clés", "Error generating key pair" : "Erreur lors de la génération des clés", - "Type to select account or group." : "Tapez pour sélectionner un compte ou un groupe.", - "(Group)" : "(Groupe)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", - "Enable encryption" : "Activer le chiffrement", - "Enable previews" : "Activer les prévisualisations", - "Enable sharing" : "Permettre le partage", - "Check for changes" : "Rechercher les modifications", - "Never" : "Jamais", - "Once every direct access" : "Une fois à chaque accès direct", - "Read only" : "Lecture seule", - "Disconnect" : "Se déconnecter", - "Admin defined" : "Défini par l'administrateur", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La vérification automatique d'état est désactivée à cause du grand nombre de stockages configurés, cliquez pour vérifier l'état", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Êtes-vous certain de vouloir déconnecter ce stockage externe ? Cela rendra ce stockage indisponible dans Nextcloud et entraînera la suppression de ces fichiers et dossiers sur tous les clients actuellement connectés, mais ne supprimera aucun fichier ni dossier du stockage externe lui-même.", - "Delete storage?" : "Supprimer ce support de stockage ?", - "Saved" : "Enregistré", - "Saving …" : "Enregistrement ...", - "Save" : "Enregistrer", + "You are not logged in" : "Vous n'êtes pas connecté", + "Permission denied" : "Autorisation refusée", "Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.", "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", @@ -40,9 +22,6 @@ "Secret key" : "Clé secrète", "Builtin" : "Intégré", "None" : "Aucun", - "OAuth1" : "OAuth1", - "App key" : "Clé d'application", - "App secret" : "Secret de l'application", "OAuth2" : "OAuth2", "Client ID" : "ID Client", "Client secret" : "Secret client", @@ -78,6 +57,7 @@ "Enable Path Style" : "Accès par path", "Legacy (v2) authentication" : "Authentification héritée (v2)", "Enable multipart copy" : "Activer la copie multiple", + "SSE-C encryption key" : "Clé de chiffrement SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Sous-dossier distant", @@ -111,9 +91,17 @@ "External storage support" : "Support de stockage externe", "Adds basic external storage support" : "Ajoute la prise en charge de base du stockage externe", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. L'administration peut choisir les types de stockage à activer et peut monter ces emplacements de stockage pour un compte, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux personnes de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre à l'administration une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", - "Enter missing credentials" : "Saisissez les identifiants de connexion manquants", + "Confirm" : "Confirmer", + "Storage credentials" : "informations d'identification du stockage ", + "To access the storage, you need to provide the authentication credentials." : "Pour accéder au stockage, vous devez fournir les informations d’authentification.", + "Enter the storage login" : "Entrez le login du stockage", + "Enter the storage password" : "Entrez le mot de passe du stockage", "Unable to update this external storage config. {statusMessage}" : "Impossible de mettre à jour la configuration de ce stockage externe. {statusMessage}", "New configuration successfully saved" : "Nouvelle configuration entrée avec succès", + "Enter missing credentials" : "Saisissez les identifiants de connexion manquants", + "Credentials successfully set" : "Identifiants enregistrés avec succès", + "Error while setting credentials: {error}" : "Erreur lors de l'envoi des identifiants: {error}", + "Checking storage …" : "Vérification du stockage ...", "There was an error with this external storage." : "Il y a eu une erreur avec ce stockage externe.", "We were unable to check the external storage {basename}" : "Nous n'avons pas pu vérifier le stockage externe {basename}", "Examine this faulty external storage configuration" : "Examiner la configuration de ce stockage externe défaillant", @@ -129,6 +117,28 @@ "Scope" : "Portée", "Personal" : "Personnel", "System" : "Système", + "Type to select account or group." : "Tapez pour sélectionner un compte ou un groupe.", + "(Group)" : "(Groupe)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilité avec l'encodage Mac NFD (lent)", + "Enable encryption" : "Activer le chiffrement", + "Enable previews" : "Activer les prévisualisations", + "Enable sharing" : "Permettre le partage", + "Check for changes" : "Rechercher les modifications", + "Never" : "Jamais", + "Once every direct access" : "Une fois à chaque accès direct", + "Read only" : "Lecture seule", + "Disconnect" : "Se déconnecter", + "Unknown backend: {backendName}" : "Backend inconnu: {backendName}", + "Admin defined" : "Défini par l'administrateur", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La vérification automatique d'état est désactivée à cause du grand nombre de stockages configurés, cliquez pour vérifier l'état", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Êtes-vous certain de vouloir déconnecter ce stockage externe ? Cela rendra ce stockage indisponible dans Nextcloud et entraînera la suppression de ces fichiers et dossiers sur tous les clients actuellement connectés, mais ne supprimera aucun fichier ni dossier du stockage externe lui-même.", + "Delete storage?" : "Supprimer ce support de stockage ?", + "Click to recheck the configuration" : "Cliquer pour revérifier la configuration", + "Saved" : "Enregistré", + "Saving …" : "Enregistrement ...", + "Save" : "Enregistrer", + "Failed to save global credentials" : "Échec de l'enregistrement des identifiants globaux", + "Failed to save global credentials: {message}" : "Échec de l'enregistrement des identifiants globaux : {message}", "No external storage configured or you don't have the permission to configure them" : "Aucun stockage externe configuré ou vous n'avez pas l'autorisation de les configurer", "Open documentation" : "Voir la documentation", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les personnes à monter leurs propres services de stockage externes.", @@ -136,36 +146,15 @@ "Authentication" : "Authentification", "Configuration" : "Configuration", "Available for" : "Disponible pour", - "Click to recheck the configuration" : "Cliquer pour revérifier la configuration", "Add storage" : "Ajouter un support de stockage", "All people" : "Toutes les personnes", "Advanced settings" : "Paramètres avancés", "Allow people to mount external storage" : "Autoriser les personnes à monter des espaces de stockage externes", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Les identifiants globaux peuvent être utilisés pour s'authentifier auprès de multiples stockages externes qui ont les mêmes identifiants.", - "Type to select user or group." : "Tapez pour sélectionner un utilisateur ou un groupe.", - "Empty response from the server" : "Réponse du serveur vide", - "Couldn't access. Please log out and in again to activate this mount point" : "Impossible d'accéder. Veuillez vous déconnecter et vous reconnecter pour activer ce point de montage", - "Couldn't get the information from the remote server: {code} {type}" : "Impossible d'obtenir l'information du serveur distant: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Impossible de récupérer la liste des points de montage externes : {type}", - "There was an error with message: " : "Il y a eu une erreur avec le message :", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossible d'aller chercher la liste des points de montage des disques réseaux Windows : Réponse vide du serveur", - "Please enter the credentials for the {mount} mount" : "Veuillez entrer les identifiants pour le montage {mount}", - "Username" : "Nom d’utilisateur", - "Credentials saved" : "Identifiants sauvegardés", - "Credentials saving failed" : "La sauvegarde des identifiants a échoué", - "Credentials required" : "Identifiants exigés", - "Storage with ID \"%d\" is not user editable" : "Le support de stockage avec l'ID \"%d\" n'est pas modifiable par les utilisateurs", - "Username and password" : "Nom d'utilisateur et mot de passe", - "Global credentials, user entered" : "Identifiants globaux, utilisateur saisi", - "User entered, store in database" : "Utilisateur entré, stocker dans la base de données", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Le désactiver va permettre d'utiliser un système de fichiers insensible à la casse mais cela a un impact sur les performances.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Contrôler les ACL de chaque fichier ou dossier à l'intérieur d'un répertoire afin de filtrer les éléments pour lesquels l'utilisateur n'a pas d'accès en lecture, ceci engendre une dégradation des performances", - "Username as share" : "Nom d'utilisateur comme nom de partage", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", - "Name" : "Nom", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Le stockage externe vous permet de monter des périphériques et services externes en tant que périphériques de stockage secondaires sous Nextcloud. Vous pouvez aussi autoriser les utilisateurs à monter leurs propres services de stockage externes.", - "All users" : "Tous les utilisateurs", - "Allow users to mount external storage" : "Autoriser les utilisateurs à monter des espaces de stockage externes" + "Error configuring OAuth1" : "Erreur lors de la configuration de OAuth1", + "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", + "OAuth1" : "OAuth1", + "App key" : "Clé d'application", + "App secret" : "Secret de l'application" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ga.js b/apps/files_external/l10n/ga.js new file mode 100644 index 00000000000..1ca1650e8bc --- /dev/null +++ b/apps/files_external/l10n/ga.js @@ -0,0 +1,162 @@ +OC.L10N.register( + "files_external", + { + "Grant access" : "Deonaigh rochtain", + "Error configuring OAuth2" : "Earráid agus OAuth2 á chumrú", + "Generate keys" : "Gin eochracha", + "Error generating key pair" : "Earráid agus péire eochair á nginiúint", + "You are not logged in" : "Níl tú logáilte isteach", + "Permission denied" : "Cead diúltaithe", + "Forbidden to manage local mounts" : "Toirmiscthe gléasanna áitiúla a bhainistiú", + "Storage with ID \"%d\" not found" : "Níor aimsíodh stóras le haitheantas \"%d\" ", + "Invalid backend or authentication mechanism class" : "Inneall neamhbhailí nó rang meicníochta fíordheimhnithe", + "Invalid mount point" : "Pointe gléasta neamhbhailí", + "Objectstore forbidden" : "Objectstore toirmiscthe", + "Invalid storage backend \"%s\"" : "Inneall stórála neamhbhailí \"%s\"", + "Not permitted to use backend \"%s\"" : "Ní cheadaítear inneall \"%s\" a úsáid", + "Not permitted to use authentication mechanism \"%s\"" : "Ní cheadaítear meicníocht fíordheimhnithe\"%s\" a úsáid", + "Unsatisfied backend parameters" : "Paraiméadair inneall míshásta", + "Unsatisfied authentication mechanism parameters" : "Paraiméadair sásra fíordheimhnithe neamhshásta", + "Insufficient data: %s" : "Sonraí neamhleor: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Ní féidir le daoine nach riarthóirí iad stóráil le haitheantas \"%d\" a chur in eagar", + "Access key" : "Eochair rochtana", + "Secret key" : "Eochair rúnda", + "Builtin" : "Tógtha", + "None" : "aon cheann", + "OAuth2" : "OAuth2", + "Client ID" : "Aitheantas Cliant", + "Client secret" : "Rún an chliaint", + "OpenStack v2" : "OpenStack v2", + "Login" : "Logáil isteach", + "Password" : "Pasfhocal", + "Tenant name" : "Ainm tionónta", + "Identity endpoint URL" : "URL críochphointe aitheantais", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Fearann", + "Rackspace" : "Racaspás", + "API key" : "Eochair API", + "Global credentials" : "Dintiúir dhomhanda", + "Log-in credentials, save in database" : "Dintiúir logáil isteach, sábháil sa bhunachar sonraí", + "Login and password" : "Logáil isteach agus pasfhocal", + "Log-in credentials, save in session" : "Dintiúir logáil isteach, sábháil sa seisiún", + "Global credentials, manually entered" : "Dintiúir dhomhanda, curtha isteach de láimh", + "Manually entered, store in database" : "Iontráil de láimh, stóráil sa bhunachar sonraí", + "RSA public key" : "RSA eochair phoiblí", + "Public key" : "Eochair phoiblí", + "RSA private key" : "Íosluchtaigh eochair phríobháideach RSA", + "Private key" : "Eochair phríobháideach", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Réimse réamhshocraithe Kerberos, mainneachtainí chuig \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Mód Apache ticéad Kerberos", + "Kerberos ticket" : "ticéad Kerberos", + "Amazon S3" : "Amazon S3", + "Bucket" : "Buicéad", + "Hostname" : "Óstainm", + "Port" : "Port", + "Region" : "Réigiún", + "Storage Class" : "Rang Stórála", + "Enable SSL" : "Cumasaigh SSL", + "Enable Path Style" : "Cumasaigh Conair Stíl", + "Legacy (v2) authentication" : "Fíordheimhniú oidhreacht (v2).", + "Enable multipart copy" : "Cumasaigh cóip ilpháirteach", + "SSE-C encryption key" : "Eochair criptithe SSE-C", + "WebDAV" : "WebDAV", + "URL" : "URL", + "Remote subfolder" : "Fofhillteán cianda", + "Secure https://" : "slán https://", + "FTP" : "FTP", + "Host" : "Óstach", + "Secure ftps://" : "slán ftps://", + "Local" : "Áitiúil", + "Location" : "Suíomh", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Fréamh", + "SFTP with secret key login" : "SFTP le logáil isteach eochair rúnda", + "SMB/CIFS" : "SMB/CIFS", + "Share" : "Comhroinn", + "Show hidden files" : "Taispeáin comhaid i bhfolach", + "Case sensitive file system" : "Córas comhaid cás-íogair", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Má dhíchumasaítear é beifear in ann córas comhaid cás-neamhíogair a úsáid, ach beidh pionós feidhmíochta ag gabháil leis", + "Verify ACL access when listing files" : "Fíoraigh rochtain ACL agus comhaid á liostú", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Seiceáil ACL gach comhad nó fillteán laistigh d'eolaire chun míreanna nach bhfuil cead léite ag an gcuntas a scagadh amach, tagann pionós feidhmíochta leis", + "Timeout" : "Sos", + "SMB/CIFS using OC login" : "SMB/CIFS ag baint úsáide as logáil isteach OC", + "Login as share" : "Logáil isteach mar scair", + "OpenStack Object Storage" : "Stóráil Oibiachta OpenStack", + "Service name" : "Ainm seirbhíse", + "Request timeout (seconds)" : "Iarr am istigh (soicindí)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Níl an tacaíocht cURL i PHP cumasaithe nó suiteáilte. Ní féidir %s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Níl an tacaíocht FTP i PHP cumasaithe nó suiteáilte. Ní féidir %s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "Níl \"%1$s\" suiteáilte. Ní féidir %2$s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "External storage" : "Stóráil sheachtrach", + "External storage support" : "Tacaíocht stórála seachtrach", + "Adds basic external storage support" : "Cuireann sé tacaíocht bhunúsach stórála seachtrach leis", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cuireann an feidhmchlár seo ar chumas riarthóirí naisc a chumrú le soláthraithe stórála seachtracha, mar fhreastalaithe FTP, stórais réad S3 nó SWIFT, freastalaithe Nextcloud eile, freastalaithe WebDAV, agus go leor eile. Is féidir le lucht riaracháin na cineálacha stórála a roghnú le cumasú agus is féidir leo na láithreacha stórála seo a shuiteáil do chuntas, do ghrúpa nó don chóras iomlán. Feicfidh úsáideoirí fillteán nua le feiceáil ina n-eolaire root Nextcloud, ar féidir leo rochtain a fháil air agus a úsáid mar aon fhillteán Nextcloud eile. Ligeann stóráil sheachtrach do dhaoine comhaid atá stóráilte sna láithreacha seachtracha seo a roinnt. Sna cásanna seo, úsáidtear dintiúir úinéir an chomhaid nuair a iarrann an faighteoir an comhad ó stóráil sheachtrach, rud a chinntíonn go bhféadfaidh an faighteoir rochtain a fháil ar an gcomhad roinnte.\n\nIs féidir stóráil sheachtrach a chumrú trí úsáid a bhaint as an GUI nó ag an líne ordaithe. Tugann an dara rogha seo níos mó solúbthachta don riarachán maidir le gléasanna stórála seachtracha mórchóir a chumrú agus chun tosaíochtaí gléasta a shocrú. Tá tuilleadh faisnéise ar fáil sna doiciméid GUI stórála seachtracha agus sa doiciméadú Comhad Cumraíochta stórála seachtraí.", + "Confirm" : "Deimhnigh", + "Storage credentials" : "Dintiúir stórála", + "To access the storage, you need to provide the authentication credentials." : "Chun rochtain a fháil ar an stóras, ní mór duit na dintiúir fíordheimhnithe a sholáthar.", + "Enter the storage login" : "Cuir isteach an logáil isteach stórála", + "Enter the storage password" : "Cuir isteach an focal faire stórála", + "Unable to update this external storage config. {statusMessage}" : "Ní féidir an cumraíocht stórála seachtrach seo a nuashonrú. {statusMessage}", + "New configuration successfully saved" : "D'éirigh le cumraíocht nua a shábháil", + "Enter missing credentials" : "Cuir isteach dintiúir atá in easnamh", + "Credentials successfully set" : "Socraíodh na dintiúir go rathúil", + "Error while setting credentials: {error}" : "Earráid agus na dintiúir á socrú: {error}", + "Checking storage …" : "Stóras á sheiceáil…", + "There was an error with this external storage." : "Tharla earráid leis an stóras seachtrach seo.", + "We were unable to check the external storage {basename}" : "Níorbh fhéidir linn an stóras seachtrach {basename} a sheiceáil", + "Examine this faulty external storage configuration" : "Scrúdaigh an chumraíocht stórála seachtrach lochtach seo", + "Open in Files" : "Oscail i Comhaid", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Tharla earráid leis an stóras seachtrach seo. Ar mhaith leat an cumraíocht mount point seo a athbhreithniú ar leathanach na socruithe?", + "External mount error" : "Earráid gléasta sheachtraigh", + "List of external storage." : "Liosta de stóráil sheachtrach.", + "There is no external storage configured. You can configure them in your Personal settings." : "Níl aon stóras seachtrach cumraithe. Is féidir leat iad a chumrú i do shocruithe Pearsanta.", + "There is no external storage configured and you don't have the permission to configure them." : "Níl aon stóras seachtrach cumraithe agus níl cead agat iad a chumrú.", + "No external storage" : "Uimh stórála seachtrach", + "Storage type" : "Cineál stórála", + "Unknown" : "Anaithnid", + "Scope" : "Raon feidhme", + "Personal" : "Pearsanta", + "System" : "Córas", + "Type to select account or group." : "Clóscríobh chun cuntas nó grúpa a roghnú.", + "(Group)" : "(Grúpa)", + "Compatibility with Mac NFD encoding (slow)" : "Comhoiriúnacht le hionchódú Mac NFD (mall)", + "Enable encryption" : "Cumasaigh criptiú", + "Enable previews" : "Cumasaigh criptiú", + "Enable sharing" : "Cumasaigh comhroinnt", + "Check for changes" : "Cumasaigh comhroinnt", + "Never" : "Riamh", + "Once every direct access" : "Uair amháin gach rochtain dhíreach", + "Read only" : "Léamh amháin", + "Disconnect" : "Dícheangail", + "Unknown backend: {backendName}" : "Inneall anaithnid: {backendName}", + "Admin defined" : "Riarachán sainithe", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Tá seiceáil stádais uathoibríoch díchumasaithe mar gheall ar an líon mór stórais cumraithe, cliceáil chun stádas a sheiceáil", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "An bhfuil tú cinnte gur mhaith leat an stóras seachtrach seo a dhínascadh? Fágfaidh sé nach mbeidh an stóráil ar fáil in Nextcloud agus scriosfar na comhaid agus na fillteáin seo ar aon chliant sioncronaithe atá ceangailte faoi láthair ach ní scriosfaidh sé aon chomhaid agus fillteáin ar an stóráil sheachtrach féin.", + "Delete storage?" : "An bhfuil fonn ort an stóras a scriosadh?", + "Click to recheck the configuration" : "Cliceáil chun an chumraíocht a athsheiceáil", + "Saved" : "Shábháil", + "Saving …" : "Shábháil …", + "Save" : "Sábháil", + "Failed to save global credentials" : "Theip ar shábháil dintiúir dhomhanda", + "Failed to save global credentials: {message}" : "Theip ar shábháil sonraí domhanda: {message}", + "No external storage configured or you don't have the permission to configure them" : "Níl aon stóras seachtrach cumraithe nó níl cead agat iad a chumrú", + "Open documentation" : "Doiciméadú oscailte", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Cuireann stóráil sheachtrach ar do chumas seirbhísí agus gléasanna stórála seachtracha a fheistiú mar ghléasanna stórála tánaisteacha Nextcloud. Is féidir leat ligean do dhaoine a gcuid seirbhísí stórála seachtracha féin a shuiteáil.", + "Folder name" : "Ainm fillteáin", + "Authentication" : "Fíordheimhniú", + "Configuration" : "Cumraíocht", + "Available for" : "Ar fáil le haghaidh", + "Add storage" : "Cuir stóráil leis", + "All people" : "Gach duine", + "Advanced settings" : "Ardsocruithe", + "Allow people to mount external storage" : "Lig do dhaoine stóráil sheachtrach a shuiteáil", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Is féidir dintiúir dhomhanda a úsáid chun fíordheimhniú a dhéanamh le stórais sheachtracha iolracha a bhfuil na dintiúir chéanna acu.", + "Error configuring OAuth1" : "Earráid agus OAuth1 á chumrú", + "Please provide a valid app key and secret." : "Tabhair eochair feidhmchláir agus rún bailí le do thoil.", + "OAuth1" : "OAuth1", + "App key" : "Eochair aip", + "App secret" : "Rúnda aip" +}, +"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"); diff --git a/apps/files_external/l10n/ga.json b/apps/files_external/l10n/ga.json new file mode 100644 index 00000000000..c5ecde4bd56 --- /dev/null +++ b/apps/files_external/l10n/ga.json @@ -0,0 +1,160 @@ +{ "translations": { + "Grant access" : "Deonaigh rochtain", + "Error configuring OAuth2" : "Earráid agus OAuth2 á chumrú", + "Generate keys" : "Gin eochracha", + "Error generating key pair" : "Earráid agus péire eochair á nginiúint", + "You are not logged in" : "Níl tú logáilte isteach", + "Permission denied" : "Cead diúltaithe", + "Forbidden to manage local mounts" : "Toirmiscthe gléasanna áitiúla a bhainistiú", + "Storage with ID \"%d\" not found" : "Níor aimsíodh stóras le haitheantas \"%d\" ", + "Invalid backend or authentication mechanism class" : "Inneall neamhbhailí nó rang meicníochta fíordheimhnithe", + "Invalid mount point" : "Pointe gléasta neamhbhailí", + "Objectstore forbidden" : "Objectstore toirmiscthe", + "Invalid storage backend \"%s\"" : "Inneall stórála neamhbhailí \"%s\"", + "Not permitted to use backend \"%s\"" : "Ní cheadaítear inneall \"%s\" a úsáid", + "Not permitted to use authentication mechanism \"%s\"" : "Ní cheadaítear meicníocht fíordheimhnithe\"%s\" a úsáid", + "Unsatisfied backend parameters" : "Paraiméadair inneall míshásta", + "Unsatisfied authentication mechanism parameters" : "Paraiméadair sásra fíordheimhnithe neamhshásta", + "Insufficient data: %s" : "Sonraí neamhleor: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Ní féidir le daoine nach riarthóirí iad stóráil le haitheantas \"%d\" a chur in eagar", + "Access key" : "Eochair rochtana", + "Secret key" : "Eochair rúnda", + "Builtin" : "Tógtha", + "None" : "aon cheann", + "OAuth2" : "OAuth2", + "Client ID" : "Aitheantas Cliant", + "Client secret" : "Rún an chliaint", + "OpenStack v2" : "OpenStack v2", + "Login" : "Logáil isteach", + "Password" : "Pasfhocal", + "Tenant name" : "Ainm tionónta", + "Identity endpoint URL" : "URL críochphointe aitheantais", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Fearann", + "Rackspace" : "Racaspás", + "API key" : "Eochair API", + "Global credentials" : "Dintiúir dhomhanda", + "Log-in credentials, save in database" : "Dintiúir logáil isteach, sábháil sa bhunachar sonraí", + "Login and password" : "Logáil isteach agus pasfhocal", + "Log-in credentials, save in session" : "Dintiúir logáil isteach, sábháil sa seisiún", + "Global credentials, manually entered" : "Dintiúir dhomhanda, curtha isteach de láimh", + "Manually entered, store in database" : "Iontráil de láimh, stóráil sa bhunachar sonraí", + "RSA public key" : "RSA eochair phoiblí", + "Public key" : "Eochair phoiblí", + "RSA private key" : "Íosluchtaigh eochair phríobháideach RSA", + "Private key" : "Eochair phríobháideach", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Réimse réamhshocraithe Kerberos, mainneachtainí chuig \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Mód Apache ticéad Kerberos", + "Kerberos ticket" : "ticéad Kerberos", + "Amazon S3" : "Amazon S3", + "Bucket" : "Buicéad", + "Hostname" : "Óstainm", + "Port" : "Port", + "Region" : "Réigiún", + "Storage Class" : "Rang Stórála", + "Enable SSL" : "Cumasaigh SSL", + "Enable Path Style" : "Cumasaigh Conair Stíl", + "Legacy (v2) authentication" : "Fíordheimhniú oidhreacht (v2).", + "Enable multipart copy" : "Cumasaigh cóip ilpháirteach", + "SSE-C encryption key" : "Eochair criptithe SSE-C", + "WebDAV" : "WebDAV", + "URL" : "URL", + "Remote subfolder" : "Fofhillteán cianda", + "Secure https://" : "slán https://", + "FTP" : "FTP", + "Host" : "Óstach", + "Secure ftps://" : "slán ftps://", + "Local" : "Áitiúil", + "Location" : "Suíomh", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Fréamh", + "SFTP with secret key login" : "SFTP le logáil isteach eochair rúnda", + "SMB/CIFS" : "SMB/CIFS", + "Share" : "Comhroinn", + "Show hidden files" : "Taispeáin comhaid i bhfolach", + "Case sensitive file system" : "Córas comhaid cás-íogair", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Má dhíchumasaítear é beifear in ann córas comhaid cás-neamhíogair a úsáid, ach beidh pionós feidhmíochta ag gabháil leis", + "Verify ACL access when listing files" : "Fíoraigh rochtain ACL agus comhaid á liostú", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Seiceáil ACL gach comhad nó fillteán laistigh d'eolaire chun míreanna nach bhfuil cead léite ag an gcuntas a scagadh amach, tagann pionós feidhmíochta leis", + "Timeout" : "Sos", + "SMB/CIFS using OC login" : "SMB/CIFS ag baint úsáide as logáil isteach OC", + "Login as share" : "Logáil isteach mar scair", + "OpenStack Object Storage" : "Stóráil Oibiachta OpenStack", + "Service name" : "Ainm seirbhíse", + "Request timeout (seconds)" : "Iarr am istigh (soicindí)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Níl an tacaíocht cURL i PHP cumasaithe nó suiteáilte. Ní féidir %s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Níl an tacaíocht FTP i PHP cumasaithe nó suiteáilte. Ní féidir %s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "Níl \"%1$s\" suiteáilte. Ní féidir %2$s a shuiteáil. Iarr ar do riarthóir córais é a shuiteáil.", + "External storage" : "Stóráil sheachtrach", + "External storage support" : "Tacaíocht stórála seachtrach", + "Adds basic external storage support" : "Cuireann sé tacaíocht bhunúsach stórála seachtrach leis", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cuireann an feidhmchlár seo ar chumas riarthóirí naisc a chumrú le soláthraithe stórála seachtracha, mar fhreastalaithe FTP, stórais réad S3 nó SWIFT, freastalaithe Nextcloud eile, freastalaithe WebDAV, agus go leor eile. Is féidir le lucht riaracháin na cineálacha stórála a roghnú le cumasú agus is féidir leo na láithreacha stórála seo a shuiteáil do chuntas, do ghrúpa nó don chóras iomlán. Feicfidh úsáideoirí fillteán nua le feiceáil ina n-eolaire root Nextcloud, ar féidir leo rochtain a fháil air agus a úsáid mar aon fhillteán Nextcloud eile. Ligeann stóráil sheachtrach do dhaoine comhaid atá stóráilte sna láithreacha seachtracha seo a roinnt. Sna cásanna seo, úsáidtear dintiúir úinéir an chomhaid nuair a iarrann an faighteoir an comhad ó stóráil sheachtrach, rud a chinntíonn go bhféadfaidh an faighteoir rochtain a fháil ar an gcomhad roinnte.\n\nIs féidir stóráil sheachtrach a chumrú trí úsáid a bhaint as an GUI nó ag an líne ordaithe. Tugann an dara rogha seo níos mó solúbthachta don riarachán maidir le gléasanna stórála seachtracha mórchóir a chumrú agus chun tosaíochtaí gléasta a shocrú. Tá tuilleadh faisnéise ar fáil sna doiciméid GUI stórála seachtracha agus sa doiciméadú Comhad Cumraíochta stórála seachtraí.", + "Confirm" : "Deimhnigh", + "Storage credentials" : "Dintiúir stórála", + "To access the storage, you need to provide the authentication credentials." : "Chun rochtain a fháil ar an stóras, ní mór duit na dintiúir fíordheimhnithe a sholáthar.", + "Enter the storage login" : "Cuir isteach an logáil isteach stórála", + "Enter the storage password" : "Cuir isteach an focal faire stórála", + "Unable to update this external storage config. {statusMessage}" : "Ní féidir an cumraíocht stórála seachtrach seo a nuashonrú. {statusMessage}", + "New configuration successfully saved" : "D'éirigh le cumraíocht nua a shábháil", + "Enter missing credentials" : "Cuir isteach dintiúir atá in easnamh", + "Credentials successfully set" : "Socraíodh na dintiúir go rathúil", + "Error while setting credentials: {error}" : "Earráid agus na dintiúir á socrú: {error}", + "Checking storage …" : "Stóras á sheiceáil…", + "There was an error with this external storage." : "Tharla earráid leis an stóras seachtrach seo.", + "We were unable to check the external storage {basename}" : "Níorbh fhéidir linn an stóras seachtrach {basename} a sheiceáil", + "Examine this faulty external storage configuration" : "Scrúdaigh an chumraíocht stórála seachtrach lochtach seo", + "Open in Files" : "Oscail i Comhaid", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Tharla earráid leis an stóras seachtrach seo. Ar mhaith leat an cumraíocht mount point seo a athbhreithniú ar leathanach na socruithe?", + "External mount error" : "Earráid gléasta sheachtraigh", + "List of external storage." : "Liosta de stóráil sheachtrach.", + "There is no external storage configured. You can configure them in your Personal settings." : "Níl aon stóras seachtrach cumraithe. Is féidir leat iad a chumrú i do shocruithe Pearsanta.", + "There is no external storage configured and you don't have the permission to configure them." : "Níl aon stóras seachtrach cumraithe agus níl cead agat iad a chumrú.", + "No external storage" : "Uimh stórála seachtrach", + "Storage type" : "Cineál stórála", + "Unknown" : "Anaithnid", + "Scope" : "Raon feidhme", + "Personal" : "Pearsanta", + "System" : "Córas", + "Type to select account or group." : "Clóscríobh chun cuntas nó grúpa a roghnú.", + "(Group)" : "(Grúpa)", + "Compatibility with Mac NFD encoding (slow)" : "Comhoiriúnacht le hionchódú Mac NFD (mall)", + "Enable encryption" : "Cumasaigh criptiú", + "Enable previews" : "Cumasaigh criptiú", + "Enable sharing" : "Cumasaigh comhroinnt", + "Check for changes" : "Cumasaigh comhroinnt", + "Never" : "Riamh", + "Once every direct access" : "Uair amháin gach rochtain dhíreach", + "Read only" : "Léamh amháin", + "Disconnect" : "Dícheangail", + "Unknown backend: {backendName}" : "Inneall anaithnid: {backendName}", + "Admin defined" : "Riarachán sainithe", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Tá seiceáil stádais uathoibríoch díchumasaithe mar gheall ar an líon mór stórais cumraithe, cliceáil chun stádas a sheiceáil", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "An bhfuil tú cinnte gur mhaith leat an stóras seachtrach seo a dhínascadh? Fágfaidh sé nach mbeidh an stóráil ar fáil in Nextcloud agus scriosfar na comhaid agus na fillteáin seo ar aon chliant sioncronaithe atá ceangailte faoi láthair ach ní scriosfaidh sé aon chomhaid agus fillteáin ar an stóráil sheachtrach féin.", + "Delete storage?" : "An bhfuil fonn ort an stóras a scriosadh?", + "Click to recheck the configuration" : "Cliceáil chun an chumraíocht a athsheiceáil", + "Saved" : "Shábháil", + "Saving …" : "Shábháil …", + "Save" : "Sábháil", + "Failed to save global credentials" : "Theip ar shábháil dintiúir dhomhanda", + "Failed to save global credentials: {message}" : "Theip ar shábháil sonraí domhanda: {message}", + "No external storage configured or you don't have the permission to configure them" : "Níl aon stóras seachtrach cumraithe nó níl cead agat iad a chumrú", + "Open documentation" : "Doiciméadú oscailte", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Cuireann stóráil sheachtrach ar do chumas seirbhísí agus gléasanna stórála seachtracha a fheistiú mar ghléasanna stórála tánaisteacha Nextcloud. Is féidir leat ligean do dhaoine a gcuid seirbhísí stórála seachtracha féin a shuiteáil.", + "Folder name" : "Ainm fillteáin", + "Authentication" : "Fíordheimhniú", + "Configuration" : "Cumraíocht", + "Available for" : "Ar fáil le haghaidh", + "Add storage" : "Cuir stóráil leis", + "All people" : "Gach duine", + "Advanced settings" : "Ardsocruithe", + "Allow people to mount external storage" : "Lig do dhaoine stóráil sheachtrach a shuiteáil", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Is féidir dintiúir dhomhanda a úsáid chun fíordheimhniú a dhéanamh le stórais sheachtracha iolracha a bhfuil na dintiúir chéanna acu.", + "Error configuring OAuth1" : "Earráid agus OAuth1 á chumrú", + "Please provide a valid app key and secret." : "Tabhair eochair feidhmchláir agus rún bailí le do thoil.", + "OAuth1" : "OAuth1", + "App key" : "Eochair aip", + "App secret" : "Rúnda aip" +},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);" +}
\ No newline at end of file diff --git a/apps/files_external/l10n/gl.js b/apps/files_external/l10n/gl.js index 74436863cda..5c333c23da2 100644 --- a/apps/files_external/l10n/gl.js +++ b/apps/files_external/l10n/gl.js @@ -2,29 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Permitir o acceso", - "Error configuring OAuth1" : "Produciuse un erro ao configurar OAuth1", - "Please provide a valid app key and secret." : "Forneza unha chave de aplicación e o segredo", "Error configuring OAuth2" : "Produciuse un erro ao configurar OAuth2", "Generate keys" : "Xerar chaves", "Error generating key pair" : "Produciuse un erro ao xerar o par de chaves", - "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", - "(Group)" : "(grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)", - "Enable encryption" : "Activar o cifrado", - "Enable previews" : "Activar as vistas previas", - "Enable sharing" : "Activar as comparticións", - "Check for changes" : "Comprobar se hai cambios", - "Never" : "Nunca", - "Once every direct access" : "Unha vez cada acceso directo", - "Read only" : "Só lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Definido polo administración", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A comprobación automática do estado está desactivada por mor da gran cantidade de almacenamentos configurados. Prema para comprobar o estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Confirma que quere desconectar este almacenamento externo? Isto fará que o almacenamento non estea dispoñíbel en Nextcloud e provocará a eliminación destes ficheiros e cartafoles en calquera cliente de sincronización que estea conectado agora, mais non eliminará ningún ficheiro e cartafol do propio almacenamento externo.", - "Delete storage?" : "Eliminar o almacenamento?", - "Saved" : "Gardado", - "Saving …" : "Gardando…", - "Save" : "Gardar", "Forbidden to manage local mounts" : "Prohibido xestionar montaxes locais", "Storage with ID \"%d\" not found" : "Non se atopa o almacenamento co ID «%d» ", "Invalid backend or authentication mechanism class" : "Clase de mecanismo de autenticación ou infraestrutura incorrecta", @@ -37,14 +17,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Os parámetros do mecanismo de autenticación non son satisfactorios", "Insufficient data: %s" : "Faltan datos: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "Os non administradores non poden editar o almacenamento co identificador \"%d\".", + "Storage with ID \"%d\" is not editable by non-admins" : "O almacenamento co ID «%d» non pode ser editado por non pertencentes á administración do sitio", "Access key" : "Chave de acceso", "Secret key" : "Chave secreta", "Builtin" : "Integrado", "None" : "Ningún", - "OAuth1" : "OAuth1", - "App key" : "Chave da aplicación", - "App secret" : "Segredo da aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID de cliente", "Client secret" : "Segredo do cliente", @@ -59,10 +36,10 @@ OC.L10N.register( "API key" : "Chave da API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de acceso, gardar na base de datos", - "Login and password" : "Inicio de sesión e contrasinal", + "Login and password" : "Acceso e contrasinal", "Log-in credentials, save in session" : "Credenciais de acceso, gardar na sesión", - "Global credentials, manually entered" : "Credenciais globais introducidas de forma manual", - "Manually entered, store in database" : "Introdúcese manualmente, almacénase na base de datos", + "Global credentials, manually entered" : "Credenciais globais introducidas de xeito manual", + "Manually entered, store in database" : "Introdución manual, almacenar na base de datos", "RSA public key" : "Chave RSA pública", "Public key" : "Chave pública", "RSA private key" : "Chave RSA privada", @@ -79,7 +56,8 @@ OC.L10N.register( "Enable SSL" : "Activar SSL", "Enable Path Style" : "Activar o estilo de ruta", "Legacy (v2) authentication" : "Autenticación (v2) estilo antigo", - "Enable multipart copy" : "Activa a copia multiparte", + "Enable multipart copy" : "Activar a copia de múltiples partes", + "SSE-C encryption key" : "Chave de cifrado SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcartafol remoto", @@ -99,10 +77,10 @@ OC.L10N.register( "Case sensitive file system" : "Sistema de ficheiros que distingue entre maiúsculas e minúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "A súa desactivación permitirá usar un sistema de ficheiros que non distinga entre maiúsculas e minúsculas, mais afectará ao rendemento", "Verify ACL access when listing files" : "Verificar a lista de control de acceso (ACL) ao listar ficheiros", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobe as ACL de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, inclúe unha penalización de rendemento", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobar as listas de control de acceso (ACL) de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, ten unha penalización de rendemento.", "Timeout" : "Límite de tempo", "SMB/CIFS using OC login" : "SMB/CIFS usando acceso OC", - "Login as share" : "Inicia sesión como compartir", + "Login as share" : "Acceder como compartición", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome do servicio", "Request timeout (seconds)" : "Tempo de espera da solicitude (segundos)", @@ -112,10 +90,18 @@ OC.L10N.register( "External storage" : "Almacenamento externo", "External storage support" : "Compatibilidade de almacenamento externo", "Adds basic external storage support" : "Engade compatibilidade básica de almacenamento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite aos administradores configurar conexións con provedores de almacenamento externos, como servidores FTP, almacéns de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e moito máis. A administración pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e usar como calquera outro cartafol de Nextcloud. O almacenamento externo tamén permite que as persoas compartan ficheiros almacenados nestes lugares externos. Nestes casos, as credenciais do propietario do ficheiro utilízanse cando o destinatario solicita o ficheiro desde un almacenamento externo, co que se garante que o destinatario poida acceder ao ficheiro compartido.\n\nO almacenamento externo pódese configurar mediante a GUI ou na liña de comandos. Esta segunda opción proporciona á administración máis flexibilidade para configurar montaxes de almacenamento externo masivo e establecer prioridades de montaxe. Hai máis información dispoñible na documentación da GUI de almacenamento externo e na documentación do ficheiro de configuración de almacenamento externo.", - "Enter missing credentials" : "Introduza as credenciais que faltan", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou o todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol de Nextcloud. Almacenamento externo tamén lle permite á xente compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o propietario dos ficheiros cando o receptor solicita o ficheiro do almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciais de almacenamento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder ao almacenamento, cómpre fornecer as credenciais de autenticación.", + "Enter the storage login" : "Introduza o acceso ao almacenamento", + "Enter the storage password" : "Introduza o contrasinal do almacenamento", "Unable to update this external storage config. {statusMessage}" : "Non é posíbel actualizar esta configuración de almacenamento externo. {statusMessage}", "New configuration successfully saved" : "A nova configuración gardouse correctamente", + "Enter missing credentials" : "Introduza as credenciais que faltan", + "Credentials successfully set" : "Definíronse correctamente as credenciais", + "Error while setting credentials: {error}" : "Produciuse un erro ao definir as credenciais: {error}", + "Checking storage …" : "Comprobando o almacenamento…", "There was an error with this external storage." : "Produciuse un erro con este almacenamento externo.", "We were unable to check the external storage {basename}" : "Non fomos quen de comprobar o almacenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuración de almacenamento externo defectuosa", @@ -131,43 +117,42 @@ OC.L10N.register( "Scope" : "Ámbito", "Personal" : "Persoal", "System" : "Sistema", + "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", + "(Group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)", + "Enable encryption" : "Activar o cifrado", + "Enable previews" : "Activar as vistas previas", + "Enable sharing" : "Activar as comparticións", + "Check for changes" : "Comprobar se hai cambios", + "Never" : "Nunca", + "Once every direct access" : "Unha vez cada acceso directo", + "Read only" : "Só lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Infraestrutura descoñecida: {backendName}", + "Admin defined" : "Definido polo administración", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A comprobación automática do estado está desactivada por mor da gran cantidade de almacenamentos configurados. Prema para comprobar o estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Confirma que quere desconectar este almacenamento externo? Isto fará que o almacenamento non estea dispoñíbel en Nextcloud e provocará a eliminación destes ficheiros e cartafoles en calquera cliente de sincronización que estea conectado agora, mais non eliminará ningún ficheiro e cartafol do propio almacenamento externo.", + "Delete storage?" : "Eliminar o almacenamento?", + "Click to recheck the configuration" : "Prema para volver comprobar a configuración", + "Saved" : "Gardado", + "Saving …" : "Gardando…", + "Save" : "Gardar", "No external storage configured or you don't have the permission to configure them" : "Non hai ningún almacenamento externo configurado ou non ten permiso para configuralos", "Open documentation" : "Abrir a documentación", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O almacenamento externo permítelle montar servizos e dispositivos de almacenamento externos como dispositivos secundarios de almacenamento Nextcloud. Tamén podes permitir que a xente monte os seus propios servizos de almacenamento externo.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud. Tamén pode permitirlle que a xente monte os seus propios servizos de almacenamento externo.", "Folder name" : "Nome do cartafol", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Dispoñíbel para", - "Click to recheck the configuration" : "Prema para volver comprobar a configuración", "Add storage" : "Engadir almacenamento", "All people" : "Todas as persoas", "Advanced settings" : "Axustes avanzados", - "Allow people to mount external storage" : "Permite que as persoas monten almacenamento externo", + "Allow people to mount external storage" : "Permitirlle á xente montar almacenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poden empregarse credenciais globais para autenticar con múltiples almacenamentos externos que teñan as mesmas credenciais.", - "Type to select user or group." : "Escriba para seleccionar usuario ou grupo.", - "Empty response from the server" : "Resposta baleira dende o servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Non é posíbel acceder. Peche a sesión e volva iníciala para activar este punto de montaxe", - "Couldn't get the information from the remote server: {code} {type}" : "Non foi posíbel obter a información do servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Non foi posíbel obter a lista dos puntos de montaxe externos: {type}", - "There was an error with message: " : "Produciuse un erro coa mensaxe:", - "external-storage" : "almacenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Non é posíbel recuperar a lista de unidades en rede e os seus puntos de montaxe de Windows: resposta baleira dende o servidor", - "Please enter the credentials for the {mount} mount" : "Introduza as credenciais para o punto de montaxe {mount}", - "Username" : "Nome de usuario", - "Credentials saved" : "Credenciais gardadas", - "Credentials saving failed" : "Non foi posíbel gardar as credenciais", - "Credentials required" : "Precísanse as credenciais", - "Storage with ID \"%d\" is not user editable" : "O almacenamento co ID «%d» non pode ser editado polo usuario", - "Username and password" : "Nome de usuario e contrasinal", - "Global credentials, user entered" : "Credenciais globais, introducidas polo usuario", - "User entered, store in database" : "Usuario que accedeu, almacenar na base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "A súa desactivación permitirá usar un sistema de ficheiros que non distinga entre maiúsculas e minúsculas, mais afectará ao rendemento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar as listas de control de acceso (ACL) de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos onde o usuario non ten permisos de lectura, ten unha penalización de rendemento.", - "Username as share" : "Nome de usuario como compartición", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para un usuario, un grupo ou o sistema enteiro. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol. Almacenamento externo tamén permite aos usuarios compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o dono dos ficheiros cando o receptor solicita o ficheiro de almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud. Tamén pode permitirlle que os usuarios monten os seus propios servizos de almacenamento externo.", - "All users" : "Todos os usuarios", - "Allow users to mount external storage" : "Permitirlle aos usuarios montar almacenamento externo" + "Error configuring OAuth1" : "Produciuse un erro ao configurar OAuth1", + "Please provide a valid app key and secret." : "Forneza unha chave de aplicación e o segredo", + "OAuth1" : "OAuth1", + "App key" : "Chave da aplicación", + "App secret" : "Segredo da aplicación" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/gl.json b/apps/files_external/l10n/gl.json index 6fed544a6eb..c3bc32daef9 100644 --- a/apps/files_external/l10n/gl.json +++ b/apps/files_external/l10n/gl.json @@ -1,28 +1,8 @@ { "translations": { "Grant access" : "Permitir o acceso", - "Error configuring OAuth1" : "Produciuse un erro ao configurar OAuth1", - "Please provide a valid app key and secret." : "Forneza unha chave de aplicación e o segredo", "Error configuring OAuth2" : "Produciuse un erro ao configurar OAuth2", "Generate keys" : "Xerar chaves", "Error generating key pair" : "Produciuse un erro ao xerar o par de chaves", - "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", - "(Group)" : "(grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)", - "Enable encryption" : "Activar o cifrado", - "Enable previews" : "Activar as vistas previas", - "Enable sharing" : "Activar as comparticións", - "Check for changes" : "Comprobar se hai cambios", - "Never" : "Nunca", - "Once every direct access" : "Unha vez cada acceso directo", - "Read only" : "Só lectura", - "Disconnect" : "Desconectar", - "Admin defined" : "Definido polo administración", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A comprobación automática do estado está desactivada por mor da gran cantidade de almacenamentos configurados. Prema para comprobar o estado", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Confirma que quere desconectar este almacenamento externo? Isto fará que o almacenamento non estea dispoñíbel en Nextcloud e provocará a eliminación destes ficheiros e cartafoles en calquera cliente de sincronización que estea conectado agora, mais non eliminará ningún ficheiro e cartafol do propio almacenamento externo.", - "Delete storage?" : "Eliminar o almacenamento?", - "Saved" : "Gardado", - "Saving …" : "Gardando…", - "Save" : "Gardar", "Forbidden to manage local mounts" : "Prohibido xestionar montaxes locais", "Storage with ID \"%d\" not found" : "Non se atopa o almacenamento co ID «%d» ", "Invalid backend or authentication mechanism class" : "Clase de mecanismo de autenticación ou infraestrutura incorrecta", @@ -35,14 +15,11 @@ "Unsatisfied authentication mechanism parameters" : "Os parámetros do mecanismo de autenticación non son satisfactorios", "Insufficient data: %s" : "Faltan datos: %s", "%s" : "%s", - "Storage with ID \"%d\" is not editable by non-admins" : "Os non administradores non poden editar o almacenamento co identificador \"%d\".", + "Storage with ID \"%d\" is not editable by non-admins" : "O almacenamento co ID «%d» non pode ser editado por non pertencentes á administración do sitio", "Access key" : "Chave de acceso", "Secret key" : "Chave secreta", "Builtin" : "Integrado", "None" : "Ningún", - "OAuth1" : "OAuth1", - "App key" : "Chave da aplicación", - "App secret" : "Segredo da aplicación", "OAuth2" : "OAuth2", "Client ID" : "ID de cliente", "Client secret" : "Segredo do cliente", @@ -57,10 +34,10 @@ "API key" : "Chave da API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de acceso, gardar na base de datos", - "Login and password" : "Inicio de sesión e contrasinal", + "Login and password" : "Acceso e contrasinal", "Log-in credentials, save in session" : "Credenciais de acceso, gardar na sesión", - "Global credentials, manually entered" : "Credenciais globais introducidas de forma manual", - "Manually entered, store in database" : "Introdúcese manualmente, almacénase na base de datos", + "Global credentials, manually entered" : "Credenciais globais introducidas de xeito manual", + "Manually entered, store in database" : "Introdución manual, almacenar na base de datos", "RSA public key" : "Chave RSA pública", "Public key" : "Chave pública", "RSA private key" : "Chave RSA privada", @@ -77,7 +54,8 @@ "Enable SSL" : "Activar SSL", "Enable Path Style" : "Activar o estilo de ruta", "Legacy (v2) authentication" : "Autenticación (v2) estilo antigo", - "Enable multipart copy" : "Activa a copia multiparte", + "Enable multipart copy" : "Activar a copia de múltiples partes", + "SSE-C encryption key" : "Chave de cifrado SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subcartafol remoto", @@ -97,10 +75,10 @@ "Case sensitive file system" : "Sistema de ficheiros que distingue entre maiúsculas e minúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "A súa desactivación permitirá usar un sistema de ficheiros que non distinga entre maiúsculas e minúsculas, mais afectará ao rendemento", "Verify ACL access when listing files" : "Verificar a lista de control de acceso (ACL) ao listar ficheiros", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobe as ACL de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, inclúe unha penalización de rendemento", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Comprobar as listas de control de acceso (ACL) de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos nos que a conta non ten permisos de lectura, ten unha penalización de rendemento.", "Timeout" : "Límite de tempo", "SMB/CIFS using OC login" : "SMB/CIFS usando acceso OC", - "Login as share" : "Inicia sesión como compartir", + "Login as share" : "Acceder como compartición", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome do servicio", "Request timeout (seconds)" : "Tempo de espera da solicitude (segundos)", @@ -110,10 +88,18 @@ "External storage" : "Almacenamento externo", "External storage support" : "Compatibilidade de almacenamento externo", "Adds basic external storage support" : "Engade compatibilidade básica de almacenamento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permite aos administradores configurar conexións con provedores de almacenamento externos, como servidores FTP, almacéns de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e moito máis. A administración pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e usar como calquera outro cartafol de Nextcloud. O almacenamento externo tamén permite que as persoas compartan ficheiros almacenados nestes lugares externos. Nestes casos, as credenciais do propietario do ficheiro utilízanse cando o destinatario solicita o ficheiro desde un almacenamento externo, co que se garante que o destinatario poida acceder ao ficheiro compartido.\n\nO almacenamento externo pódese configurar mediante a GUI ou na liña de comandos. Esta segunda opción proporciona á administración máis flexibilidade para configurar montaxes de almacenamento externo masivo e establecer prioridades de montaxe. Hai máis información dispoñible na documentación da GUI de almacenamento externo e na documentación do ficheiro de configuración de almacenamento externo.", - "Enter missing credentials" : "Introduza as credenciais que faltan", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para unha conta, un grupo ou o todo o sistema. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol de Nextcloud. Almacenamento externo tamén lle permite á xente compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o propietario dos ficheiros cando o receptor solicita o ficheiro do almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciais de almacenamento", + "To access the storage, you need to provide the authentication credentials." : "Para acceder ao almacenamento, cómpre fornecer as credenciais de autenticación.", + "Enter the storage login" : "Introduza o acceso ao almacenamento", + "Enter the storage password" : "Introduza o contrasinal do almacenamento", "Unable to update this external storage config. {statusMessage}" : "Non é posíbel actualizar esta configuración de almacenamento externo. {statusMessage}", "New configuration successfully saved" : "A nova configuración gardouse correctamente", + "Enter missing credentials" : "Introduza as credenciais que faltan", + "Credentials successfully set" : "Definíronse correctamente as credenciais", + "Error while setting credentials: {error}" : "Produciuse un erro ao definir as credenciais: {error}", + "Checking storage …" : "Comprobando o almacenamento…", "There was an error with this external storage." : "Produciuse un erro con este almacenamento externo.", "We were unable to check the external storage {basename}" : "Non fomos quen de comprobar o almacenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuración de almacenamento externo defectuosa", @@ -129,43 +115,42 @@ "Scope" : "Ámbito", "Personal" : "Persoal", "System" : "Sistema", + "Type to select account or group." : "Escriba para seleccionar unha conta ou un grupo.", + "(Group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade coa codificación Mac MFD (lenta)", + "Enable encryption" : "Activar o cifrado", + "Enable previews" : "Activar as vistas previas", + "Enable sharing" : "Activar as comparticións", + "Check for changes" : "Comprobar se hai cambios", + "Never" : "Nunca", + "Once every direct access" : "Unha vez cada acceso directo", + "Read only" : "Só lectura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Infraestrutura descoñecida: {backendName}", + "Admin defined" : "Definido polo administración", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A comprobación automática do estado está desactivada por mor da gran cantidade de almacenamentos configurados. Prema para comprobar o estado", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Confirma que quere desconectar este almacenamento externo? Isto fará que o almacenamento non estea dispoñíbel en Nextcloud e provocará a eliminación destes ficheiros e cartafoles en calquera cliente de sincronización que estea conectado agora, mais non eliminará ningún ficheiro e cartafol do propio almacenamento externo.", + "Delete storage?" : "Eliminar o almacenamento?", + "Click to recheck the configuration" : "Prema para volver comprobar a configuración", + "Saved" : "Gardado", + "Saving …" : "Gardando…", + "Save" : "Gardar", "No external storage configured or you don't have the permission to configure them" : "Non hai ningún almacenamento externo configurado ou non ten permiso para configuralos", "Open documentation" : "Abrir a documentación", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O almacenamento externo permítelle montar servizos e dispositivos de almacenamento externos como dispositivos secundarios de almacenamento Nextcloud. Tamén podes permitir que a xente monte os seus propios servizos de almacenamento externo.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud. Tamén pode permitirlle que a xente monte os seus propios servizos de almacenamento externo.", "Folder name" : "Nome do cartafol", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Dispoñíbel para", - "Click to recheck the configuration" : "Prema para volver comprobar a configuración", "Add storage" : "Engadir almacenamento", "All people" : "Todas as persoas", "Advanced settings" : "Axustes avanzados", - "Allow people to mount external storage" : "Permite que as persoas monten almacenamento externo", + "Allow people to mount external storage" : "Permitirlle á xente montar almacenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poden empregarse credenciais globais para autenticar con múltiples almacenamentos externos que teñan as mesmas credenciais.", - "Type to select user or group." : "Escriba para seleccionar usuario ou grupo.", - "Empty response from the server" : "Resposta baleira dende o servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Non é posíbel acceder. Peche a sesión e volva iníciala para activar este punto de montaxe", - "Couldn't get the information from the remote server: {code} {type}" : "Non foi posíbel obter a información do servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Non foi posíbel obter a lista dos puntos de montaxe externos: {type}", - "There was an error with message: " : "Produciuse un erro coa mensaxe:", - "external-storage" : "almacenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Non é posíbel recuperar a lista de unidades en rede e os seus puntos de montaxe de Windows: resposta baleira dende o servidor", - "Please enter the credentials for the {mount} mount" : "Introduza as credenciais para o punto de montaxe {mount}", - "Username" : "Nome de usuario", - "Credentials saved" : "Credenciais gardadas", - "Credentials saving failed" : "Non foi posíbel gardar as credenciais", - "Credentials required" : "Precísanse as credenciais", - "Storage with ID \"%d\" is not user editable" : "O almacenamento co ID «%d» non pode ser editado polo usuario", - "Username and password" : "Nome de usuario e contrasinal", - "Global credentials, user entered" : "Credenciais globais, introducidas polo usuario", - "User entered, store in database" : "Usuario que accedeu, almacenar na base de datos", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "A súa desactivación permitirá usar un sistema de ficheiros que non distinga entre maiúsculas e minúsculas, mais afectará ao rendemento", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar as listas de control de acceso (ACL) de cada ficheiro ou cartafol dentro dun directorio para filtrar os elementos onde o usuario non ten permisos de lectura, ten unha penalización de rendemento.", - "Username as share" : "Nome de usuario como compartición", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esta aplicación permítelle á administración da instancia configurar conexións a provedores externos de almacenamento, como servidores FTP, almacenamento de obxectos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e máis. A administración da instancia pode escoller que tipos de almacenamento activar e pode montar estas localizacións de almacenamento para un usuario, un grupo ou o sistema enteiro. Os usuarios verán aparecer un novo cartafol no seu directorio raíz de Nextcloud, ao que poden acceder e que poden usar como calquera outro cartafol. Almacenamento externo tamén permite aos usuarios compartir os ficheiros almacenados nestas localizacións externas. Nestes casos, úsanse as credenciais para o dono dos ficheiros cando o receptor solicita o ficheiro de almacenamento externo, asegurando así que o receptor poida acceder ao ficheiro compartido.\n\nAlmacenamento externo pódese configurar usando a GUI ou coa liña de ordes. A segunda opción fornece ao usuario avanzado máis flexibilidade para configurar montaxes de almacenamento externo en bloque e para configurar prioridades de montaxe. Ten dispoñíbel máis información na documentación da GUI do almacenamento externo e na documentación do ficheiro de configuración do almacenamento externo.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "A aplicación Almacenamento externo permítelle montar servizos e dispositivos de almacenamento externo como dispositivos de almacenamento secundarios de Nextcloud. Tamén pode permitirlle que os usuarios monten os seus propios servizos de almacenamento externo.", - "All users" : "Todos os usuarios", - "Allow users to mount external storage" : "Permitirlle aos usuarios montar almacenamento externo" + "Error configuring OAuth1" : "Produciuse un erro ao configurar OAuth1", + "Please provide a valid app key and secret." : "Forneza unha chave de aplicación e o segredo", + "OAuth1" : "OAuth1", + "App key" : "Chave da aplicación", + "App secret" : "Segredo da aplicación" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js index fb0cdf834fc..5c5a7a71e5f 100644 --- a/apps/files_external/l10n/he.js +++ b/apps/files_external/l10n/he.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "הענקת גישה", - "Error configuring OAuth1" : "שגיאה בתצורת OAuth1", - "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", "Error configuring OAuth2" : "שגיאה בתצורת OAuth2", "Generate keys" : "יצירת מפתחות", "Error generating key pair" : "שגיאה ביצירת זוג מפתחות", - "(Group)" : "(קבוצה)", - "Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)", - "Enable encryption" : "אפשר הצפנה", - "Enable previews" : "מאפשר תצוגות מקדימות", - "Enable sharing" : "הפעלת שיתוף", - "Check for changes" : "בדיקה אחר שינויים", - "Never" : "לעולם לא", - "Once every direct access" : "פעם אחת כל כניסה ישירה", - "Read only" : "קריאה בלבד", - "Disconnect" : "ניתוק", - "Admin defined" : "הוגדר מנהל", - "Delete storage?" : "למחוק אחסון?", - "Saved" : "נשמר", - "Saving …" : "מתבצעת שמירה…", - "Save" : "שמירה", "Storage with ID \"%d\" not found" : "לא נמצא התקן אחסון עם המזהה „%d”", "Invalid backend or authentication mechanism class" : "צד אחורי או סוג מנגנון אימות לא חוקי", "Invalid mount point" : "נקודת עגינה לא חוקית", @@ -37,9 +20,6 @@ OC.L10N.register( "Secret key" : "מפתח סודי", "Builtin" : "מובנה", "None" : "כלום", - "OAuth1" : "OAuth1", - "App key" : "מפתח יישום", - "App secret" : "סוד יישום", "OAuth2" : "OAuth2", "Client ID" : "זיהוי לקוח", "Client secret" : "סוד לקוח", @@ -94,43 +74,42 @@ OC.L10N.register( "External storage" : "אחסון חיצוני", "External storage support" : "תמיכה באחסון חיצוני", "Adds basic external storage support" : "מוסיף תמיכה באחסון חיצוני בסיסי", + "Confirm" : "אישור", "External mount error" : "שגיאת עגינה חיצונית", "Storage type" : "סוג אחסון", "Unknown" : "לא ידוע", "Scope" : "היקף", "Personal" : "אישי", "System" : "מערכת", + "(Group)" : "(קבוצה)", + "Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)", + "Enable encryption" : "אפשר הצפנה", + "Enable previews" : "מאפשר תצוגות מקדימות", + "Enable sharing" : "הפעלת שיתוף", + "Check for changes" : "בדיקה אחר שינויים", + "Never" : "לעולם לא", + "Once every direct access" : "פעם אחת כל כניסה ישירה", + "Read only" : "קריאה בלבד", + "Disconnect" : "ניתוק", + "Admin defined" : "הוגדר מנהל", + "Delete storage?" : "למחוק אחסון?", + "Click to recheck the configuration" : "יש ללחוץ כאן כדי לבדוק את ההגדרות מחדש", + "Saved" : "נשמר", + "Saving …" : "מתבצעת שמירה…", + "Save" : "שמירה", "No external storage configured or you don't have the permission to configure them" : "לא הוגדר התקן חיצוני או שאין לך הרשאות להגדיר כאלה", "Open documentation" : "פתיחת תיעוד", "Folder name" : "שם התיקייה", "Authentication" : "אימות", "Configuration" : "הגדרות", "Available for" : "זמין עבור", - "Click to recheck the configuration" : "יש ללחוץ כאן כדי לבדוק את ההגדרות מחדש", "Add storage" : "הוספת אחסון", "Advanced settings" : "הגדרות מתקדמות", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "ניתן להשתמש בפרטי גישה גלובליים עם מגוון אמצעי אחסון חיצוניים שיש להם את אותם פרטי הגישה.", - "Empty response from the server" : "תגובה ריקה מהשרת", - "Couldn't access. Please log out and in again to activate this mount point" : "לא ניתן לגשת. נא לצאת ולהיכנס שוב כדי להפעיל את נקודת העגינה הזו", - "Couldn't get the information from the remote server: {code} {type}" : "לא ניתן לקבל את המידע מהשרת המרוחק: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}", - "There was an error with message: " : "התרחשה שגיאה עם הודעה: ", - "external-storage" : "אחסון חיצוני", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "לא ניתן לקבל את רשימת נקודות העגינה לכונני רשת ב־Windows: תגובה ריקה מהשרת", - "Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}", - "Username" : "שם משתמש", - "Credentials saved" : "פרטי גישה נשמרו", - "Credentials saving failed" : "שמירת פרטי גישה נכשלה", - "Credentials required" : "נדרשים פרטי גישה", - "Storage with ID \"%d\" is not user editable" : "למשתמשים אין אפשרות לערוך התקן אחסון עם מזהה „%d”", - "Username and password" : "שם משתמש וסיסמא", - "Global credentials, user entered" : "פרטי גישה גלובליים, מולאו על ידי המשתמש", - "User entered, store in database" : "הוכנס על ידי המשתמש, אחסון במסד הנתונים", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "בדוק את ה- ACL של כל קובץ או תיקיה בספרייה כדי לסנן פריטים שבהם אין למשתמש הרשאות קריאה, כולל פגיעה בביצועים", - "Username as share" : "שם משתמש כשיתוף", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "יישום זה מאפשר למנהלים להגדיר חיבורים לספקי אחסון חיצוניים, כמו שרתי FTP, חנויות אובייקטים S3 או SWIFT, שרתי Nextcloud אחרים, שרתי WebDAV ועוד. מנהלי מערכת יכולים לבחור אילו סוגי אחסון להפעיל, ויכולים להרכיב את מיקומי האחסון הללו עבור משתמש, קבוצה, או לכל המערכת. משתמשים יראו תיקיה חדשה המופיעה בספריית Nextcloud הבסיסית שלהם, אליה הם יכולים לגשת ולהשתמש כמו כל תיקיית Nextcloud אחרת. אחסון חיצוני מאפשר למשתמשים גם לשתף קבצים המאוחסנים במיקומים חיצוניים אלה. במקרים אלה, נעשה שימוש בתעודות בעל הקובץ כאשר הנמען מבקש את הקובץ מאחסון חיצוני, ובכך מבטיח כי הנמען יכול לגשת לקובץ המשותף.\n\nניתן להגדיר אחסון חיצוני באמצעות ה- GUI או בשורת הפקודה. אפשרות השנייה זו מספקת למשתמש המתקדם גמישות רבה יותר לקביעת תצורה של רכיבי אחסון חיצוניים בכמות גדולה וקביעת סדרי עדיפויות ברכיבי אחסון. מידע נוסף זמין בתיעוד GUI לאחסון חיצוני, ובתיעוד קובץ תצורה של אחסון חיצוני.", - "Name" : "שם", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "אחסון חיצוני מאפשר לך לעגן שירותי אחסון והתקנים כהתקני אחסון משניים ב־Nextcloud. ישנה גם אפשרות לאפשר למשתמשים לעגן שירותי אחסון חיצוניים משלהם.", - "Allow users to mount external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני" + "Error configuring OAuth1" : "שגיאה בתצורת OAuth1", + "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", + "OAuth1" : "OAuth1", + "App key" : "מפתח יישום", + "App secret" : "סוד יישום" }, "nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"); diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json index 90fdaa227bb..fc280122848 100644 --- a/apps/files_external/l10n/he.json +++ b/apps/files_external/l10n/he.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "הענקת גישה", - "Error configuring OAuth1" : "שגיאה בתצורת OAuth1", - "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", "Error configuring OAuth2" : "שגיאה בתצורת OAuth2", "Generate keys" : "יצירת מפתחות", "Error generating key pair" : "שגיאה ביצירת זוג מפתחות", - "(Group)" : "(קבוצה)", - "Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)", - "Enable encryption" : "אפשר הצפנה", - "Enable previews" : "מאפשר תצוגות מקדימות", - "Enable sharing" : "הפעלת שיתוף", - "Check for changes" : "בדיקה אחר שינויים", - "Never" : "לעולם לא", - "Once every direct access" : "פעם אחת כל כניסה ישירה", - "Read only" : "קריאה בלבד", - "Disconnect" : "ניתוק", - "Admin defined" : "הוגדר מנהל", - "Delete storage?" : "למחוק אחסון?", - "Saved" : "נשמר", - "Saving …" : "מתבצעת שמירה…", - "Save" : "שמירה", "Storage with ID \"%d\" not found" : "לא נמצא התקן אחסון עם המזהה „%d”", "Invalid backend or authentication mechanism class" : "צד אחורי או סוג מנגנון אימות לא חוקי", "Invalid mount point" : "נקודת עגינה לא חוקית", @@ -35,9 +18,6 @@ "Secret key" : "מפתח סודי", "Builtin" : "מובנה", "None" : "כלום", - "OAuth1" : "OAuth1", - "App key" : "מפתח יישום", - "App secret" : "סוד יישום", "OAuth2" : "OAuth2", "Client ID" : "זיהוי לקוח", "Client secret" : "סוד לקוח", @@ -92,43 +72,42 @@ "External storage" : "אחסון חיצוני", "External storage support" : "תמיכה באחסון חיצוני", "Adds basic external storage support" : "מוסיף תמיכה באחסון חיצוני בסיסי", + "Confirm" : "אישור", "External mount error" : "שגיאת עגינה חיצונית", "Storage type" : "סוג אחסון", "Unknown" : "לא ידוע", "Scope" : "היקף", "Personal" : "אישי", "System" : "מערכת", + "(Group)" : "(קבוצה)", + "Compatibility with Mac NFD encoding (slow)" : "תואם של קידוד Mac NFD (איטי)", + "Enable encryption" : "אפשר הצפנה", + "Enable previews" : "מאפשר תצוגות מקדימות", + "Enable sharing" : "הפעלת שיתוף", + "Check for changes" : "בדיקה אחר שינויים", + "Never" : "לעולם לא", + "Once every direct access" : "פעם אחת כל כניסה ישירה", + "Read only" : "קריאה בלבד", + "Disconnect" : "ניתוק", + "Admin defined" : "הוגדר מנהל", + "Delete storage?" : "למחוק אחסון?", + "Click to recheck the configuration" : "יש ללחוץ כאן כדי לבדוק את ההגדרות מחדש", + "Saved" : "נשמר", + "Saving …" : "מתבצעת שמירה…", + "Save" : "שמירה", "No external storage configured or you don't have the permission to configure them" : "לא הוגדר התקן חיצוני או שאין לך הרשאות להגדיר כאלה", "Open documentation" : "פתיחת תיעוד", "Folder name" : "שם התיקייה", "Authentication" : "אימות", "Configuration" : "הגדרות", "Available for" : "זמין עבור", - "Click to recheck the configuration" : "יש ללחוץ כאן כדי לבדוק את ההגדרות מחדש", "Add storage" : "הוספת אחסון", "Advanced settings" : "הגדרות מתקדמות", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "ניתן להשתמש בפרטי גישה גלובליים עם מגוון אמצעי אחסון חיצוניים שיש להם את אותם פרטי הגישה.", - "Empty response from the server" : "תגובה ריקה מהשרת", - "Couldn't access. Please log out and in again to activate this mount point" : "לא ניתן לגשת. נא לצאת ולהיכנס שוב כדי להפעיל את נקודת העגינה הזו", - "Couldn't get the information from the remote server: {code} {type}" : "לא ניתן לקבל את המידע מהשרת המרוחק: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "לא ניתן היה לקבל את רשימת נקודות העיגון החיצוניות: {type}", - "There was an error with message: " : "התרחשה שגיאה עם הודעה: ", - "external-storage" : "אחסון חיצוני", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "לא ניתן לקבל את רשימת נקודות העגינה לכונני רשת ב־Windows: תגובה ריקה מהשרת", - "Please enter the credentials for the {mount} mount" : "יש להזין את פרטי הגישה עבור התקן עגינה {mount}", - "Username" : "שם משתמש", - "Credentials saved" : "פרטי גישה נשמרו", - "Credentials saving failed" : "שמירת פרטי גישה נכשלה", - "Credentials required" : "נדרשים פרטי גישה", - "Storage with ID \"%d\" is not user editable" : "למשתמשים אין אפשרות לערוך התקן אחסון עם מזהה „%d”", - "Username and password" : "שם משתמש וסיסמא", - "Global credentials, user entered" : "פרטי גישה גלובליים, מולאו על ידי המשתמש", - "User entered, store in database" : "הוכנס על ידי המשתמש, אחסון במסד הנתונים", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "בדוק את ה- ACL של כל קובץ או תיקיה בספרייה כדי לסנן פריטים שבהם אין למשתמש הרשאות קריאה, כולל פגיעה בביצועים", - "Username as share" : "שם משתמש כשיתוף", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "יישום זה מאפשר למנהלים להגדיר חיבורים לספקי אחסון חיצוניים, כמו שרתי FTP, חנויות אובייקטים S3 או SWIFT, שרתי Nextcloud אחרים, שרתי WebDAV ועוד. מנהלי מערכת יכולים לבחור אילו סוגי אחסון להפעיל, ויכולים להרכיב את מיקומי האחסון הללו עבור משתמש, קבוצה, או לכל המערכת. משתמשים יראו תיקיה חדשה המופיעה בספריית Nextcloud הבסיסית שלהם, אליה הם יכולים לגשת ולהשתמש כמו כל תיקיית Nextcloud אחרת. אחסון חיצוני מאפשר למשתמשים גם לשתף קבצים המאוחסנים במיקומים חיצוניים אלה. במקרים אלה, נעשה שימוש בתעודות בעל הקובץ כאשר הנמען מבקש את הקובץ מאחסון חיצוני, ובכך מבטיח כי הנמען יכול לגשת לקובץ המשותף.\n\nניתן להגדיר אחסון חיצוני באמצעות ה- GUI או בשורת הפקודה. אפשרות השנייה זו מספקת למשתמש המתקדם גמישות רבה יותר לקביעת תצורה של רכיבי אחסון חיצוניים בכמות גדולה וקביעת סדרי עדיפויות ברכיבי אחסון. מידע נוסף זמין בתיעוד GUI לאחסון חיצוני, ובתיעוד קובץ תצורה של אחסון חיצוני.", - "Name" : "שם", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "אחסון חיצוני מאפשר לך לעגן שירותי אחסון והתקנים כהתקני אחסון משניים ב־Nextcloud. ישנה גם אפשרות לאפשר למשתמשים לעגן שירותי אחסון חיצוניים משלהם.", - "Allow users to mount external storage" : "מאפשר למשתמשים לחבר אחסון חיצוני" + "Error configuring OAuth1" : "שגיאה בתצורת OAuth1", + "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", + "OAuth1" : "OAuth1", + "App key" : "מפתח יישום", + "App secret" : "סוד יישום" },"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/hr.js b/apps/files_external/l10n/hr.js index 17d9c5e04c0..25a33ce3562 100644 --- a/apps/files_external/l10n/hr.js +++ b/apps/files_external/l10n/hr.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Dodijeli pristup", - "Error configuring OAuth1" : "Pogreška pri konfiguriranju OAuth1", - "Please provide a valid app key and secret." : "Unesite važeći ključ aplikacije i tajnu.", "Error configuring OAuth2" : "Pogreška pri konfiguriranju OAuth2", "Generate keys" : "Generiraj ključeve", "Error generating key pair" : "Pogreška pri generiranju parova ključeva", - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilnost s kodiranjem Mac NFD (sporo)", - "Enable encryption" : "Omogući šifriranje", - "Enable previews" : "Omogući pretpregled", - "Enable sharing" : "Omogući dijeljenje", - "Check for changes" : "Provjeri za promjene", - "Never" : "Nikad", - "Once every direct access" : "Jednom za svaki izravni pristup", - "Read only" : "Samo za čitanje", - "Disconnect" : "Odspoji", - "Admin defined" : "Definira administrator", - "Delete storage?" : "Želite li izbrisati pohranu?", - "Saved" : "Spremljeno", - "Saving …" : "Spremanje...", - "Save" : "Spremi", "Storage with ID \"%d\" not found" : "Pohrana s ID-om „%d” nije pronađena", "Invalid backend or authentication mechanism class" : "Nevažeća klasa pozadine ili mehanizma autentifikacije", "Invalid mount point" : "Nevažeća točka postavljanja", @@ -37,9 +20,6 @@ OC.L10N.register( "Secret key" : "Tajni ključ", "Builtin" : "Ugrađen", "None" : "Nema", - "OAuth1" : "OAuth1", - "App key" : "Ključ aplikacije", - "App secret" : "Tajna aplikacije", "OAuth2" : "OAuth2", "Client ID" : "ID klijenta", "Client secret" : "Tajni ključ klijenta", @@ -96,44 +76,42 @@ OC.L10N.register( "External storage" : "Vanjsko spremište za pohranu", "External storage support" : "Podrška za vanjsku pohranu", "Adds basic external storage support" : "Dodaje osnovnu podršku za vanjsku pohranu", + "Confirm" : "Potvrdi", "External mount error" : "Pogreška vanjskog postavljanja", "Storage type" : "Vrsta pohrane", "Unknown" : "Nepoznata pogreška", "Scope" : "Opseg", "Personal" : "Osobno", "System" : "Sustav", + "(Group)" : "(Grupa)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilnost s kodiranjem Mac NFD (sporo)", + "Enable encryption" : "Omogući šifriranje", + "Enable previews" : "Omogući pretpregled", + "Enable sharing" : "Omogući dijeljenje", + "Check for changes" : "Provjeri za promjene", + "Never" : "Nikad", + "Once every direct access" : "Jednom za svaki izravni pristup", + "Read only" : "Samo za čitanje", + "Disconnect" : "Odspoji", + "Admin defined" : "Definira administrator", + "Delete storage?" : "Želite li izbrisati pohranu?", + "Click to recheck the configuration" : "Kliknite za ponovnu provjeru konfiguracije", + "Saved" : "Spremljeno", + "Saving …" : "Spremanje...", + "Save" : "Spremi", "No external storage configured or you don't have the permission to configure them" : "Nema konfigurirane vanjske pohrane ili nemate dopuštenje za konfiguriranje", "Open documentation" : "Otvori dokumentaciju", "Folder name" : "Naziv mape", "Authentication" : "Autentifikacija", "Configuration" : "Konfiguracija", "Available for" : "Dostupno za", - "Click to recheck the configuration" : "Kliknite za ponovnu provjeru konfiguracije", "Add storage" : "Dodaj pohranu", "Advanced settings" : "Napredne postavke", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globalne vjerodajnice mogu se upotrebljavati za provođenje autentifikacije na više vanjskih pohrana koje imaju iste vjerodajnice.", - "Empty response from the server" : "Prazan odgovor poslužitelja", - "Couldn't access. Please log out and in again to activate this mount point" : "Nije moguće pristupiti. Odjavite se i ponovno se prijavite kako biste aktivirali ovu točku postavljanja", - "Couldn't get the information from the remote server: {code} {type}" : "Nisu primljeni podaci s udaljenog poslužitelja: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nije primljen popis vanjskih točaka postavljanja: {type}", - "There was an error with message: " : "Došlo je do pogreške s porukom: ", - "external-storage" : "vanjsko spremište za pohranu", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nije moguće dohvatiti popis točaka postavljanja mrežnog diska u sustavu Windows: prazan odgovor poslužitelja", - "Please enter the credentials for the {mount} mount" : "Unesite vjerodajnice postav {mount}", - "Username" : "Korisničko ime", - "Credentials saved" : "Vjerodajnice su spremljene", - "Credentials saving failed" : "Neuspješno spremanje vjerodajnica", - "Credentials required" : "Potrebne su vjerodajnice", - "Storage with ID \"%d\" is not user editable" : "Korisnici ne mogu uređivati pohranu s ID-om „%d”", - "Username and password" : "Korisničko ime i zaporka", - "Global credentials, user entered" : "Globalne vjerodajnice, unio korisnik", - "User entered, store in database" : "Unio korisnik, pohrani u bazu podataka", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Provjerava ACL-ove pojedinih datoteka ili mapa unutar direktorija radi filtriranja stavki za koje korisnik nema pravo pristupa, opterećuje rad sustava", - "Username as share" : "Korisničko ime kao dijeljenje", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ova aplikacija omogućuje administratorima da konfiguriraju veze s vanjskim davateljima prostora za pohranu, kao što su FTP poslužitelji, S3 ili SWIFT trgovine objektima, drugi Nextcloudovi poslužitelji, WebDAV poslužitelji itd. Administratori mogu odabrati koje vrste prostora za pohranu žele omogućiti i mogu postaviti te prostore za pohranu za pojedinog korisnika, grupu ili cijeli sustav. Korisnici će vidjeti svoju novu mapu koja se pojavi u njihovom korijenskom Nextcloudovom direktoriju i mogu joj pristupiti i upotrebljavati je kao i bilo koju drugu mapu u sustavu Nextcloud. Vanjska pohrana također omogućuje korisnicima dijeljenje datoteka pohranjenih na tim vanjskim lokacijama. U tim se slučajevima koristi vjerodajnica vlasnika datoteke kada primatelj zatraži datoteku iz vanjske pohrane, čime se osigurava da primatelj može pristupiti dijeljenoj datoteci.\n\nVanjska pohrana može se konfigurirati s pomoću GUI-ja ili naredbenog retka. Ova druga opcija naprednom korisniku pruža veću fleksibilnost za konfiguriranje skupnoga vanjskog prostora za pohranu i postavljanje prioriteta pri postavljanju pohrane. Više informacija možete pronaći u dokumentaciji GUI-ja vanjske pohrane i dokumentaciji konfiguracijske datoteke za vanjsku pohranu.", - "Name" : "Naziv", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Vanjska pohrana omogućuje vam postavljanje vanjskih servisa i uređaja za pohranu kao pomoćnih uređaja za pohranu sustava Nextcloud. Također možete omogućiti korisnicima postavljanje vlastitih vanjskih servisa za pohranu.", - "All users" : "Svi korisnici", - "Allow users to mount external storage" : "Dopusti korisnicima postavljanje vanjske pohrane" + "Error configuring OAuth1" : "Pogreška pri konfiguriranju OAuth1", + "Please provide a valid app key and secret." : "Unesite važeći ključ aplikacije i tajnu.", + "OAuth1" : "OAuth1", + "App key" : "Ključ aplikacije", + "App secret" : "Tajna aplikacije" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/files_external/l10n/hr.json b/apps/files_external/l10n/hr.json index 7da7decc63d..91ac16f7852 100644 --- a/apps/files_external/l10n/hr.json +++ b/apps/files_external/l10n/hr.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Dodijeli pristup", - "Error configuring OAuth1" : "Pogreška pri konfiguriranju OAuth1", - "Please provide a valid app key and secret." : "Unesite važeći ključ aplikacije i tajnu.", "Error configuring OAuth2" : "Pogreška pri konfiguriranju OAuth2", "Generate keys" : "Generiraj ključeve", "Error generating key pair" : "Pogreška pri generiranju parova ključeva", - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilnost s kodiranjem Mac NFD (sporo)", - "Enable encryption" : "Omogući šifriranje", - "Enable previews" : "Omogući pretpregled", - "Enable sharing" : "Omogući dijeljenje", - "Check for changes" : "Provjeri za promjene", - "Never" : "Nikad", - "Once every direct access" : "Jednom za svaki izravni pristup", - "Read only" : "Samo za čitanje", - "Disconnect" : "Odspoji", - "Admin defined" : "Definira administrator", - "Delete storage?" : "Želite li izbrisati pohranu?", - "Saved" : "Spremljeno", - "Saving …" : "Spremanje...", - "Save" : "Spremi", "Storage with ID \"%d\" not found" : "Pohrana s ID-om „%d” nije pronađena", "Invalid backend or authentication mechanism class" : "Nevažeća klasa pozadine ili mehanizma autentifikacije", "Invalid mount point" : "Nevažeća točka postavljanja", @@ -35,9 +18,6 @@ "Secret key" : "Tajni ključ", "Builtin" : "Ugrađen", "None" : "Nema", - "OAuth1" : "OAuth1", - "App key" : "Ključ aplikacije", - "App secret" : "Tajna aplikacije", "OAuth2" : "OAuth2", "Client ID" : "ID klijenta", "Client secret" : "Tajni ključ klijenta", @@ -94,44 +74,42 @@ "External storage" : "Vanjsko spremište za pohranu", "External storage support" : "Podrška za vanjsku pohranu", "Adds basic external storage support" : "Dodaje osnovnu podršku za vanjsku pohranu", + "Confirm" : "Potvrdi", "External mount error" : "Pogreška vanjskog postavljanja", "Storage type" : "Vrsta pohrane", "Unknown" : "Nepoznata pogreška", "Scope" : "Opseg", "Personal" : "Osobno", "System" : "Sustav", + "(Group)" : "(Grupa)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilnost s kodiranjem Mac NFD (sporo)", + "Enable encryption" : "Omogući šifriranje", + "Enable previews" : "Omogući pretpregled", + "Enable sharing" : "Omogući dijeljenje", + "Check for changes" : "Provjeri za promjene", + "Never" : "Nikad", + "Once every direct access" : "Jednom za svaki izravni pristup", + "Read only" : "Samo za čitanje", + "Disconnect" : "Odspoji", + "Admin defined" : "Definira administrator", + "Delete storage?" : "Želite li izbrisati pohranu?", + "Click to recheck the configuration" : "Kliknite za ponovnu provjeru konfiguracije", + "Saved" : "Spremljeno", + "Saving …" : "Spremanje...", + "Save" : "Spremi", "No external storage configured or you don't have the permission to configure them" : "Nema konfigurirane vanjske pohrane ili nemate dopuštenje za konfiguriranje", "Open documentation" : "Otvori dokumentaciju", "Folder name" : "Naziv mape", "Authentication" : "Autentifikacija", "Configuration" : "Konfiguracija", "Available for" : "Dostupno za", - "Click to recheck the configuration" : "Kliknite za ponovnu provjeru konfiguracije", "Add storage" : "Dodaj pohranu", "Advanced settings" : "Napredne postavke", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globalne vjerodajnice mogu se upotrebljavati za provođenje autentifikacije na više vanjskih pohrana koje imaju iste vjerodajnice.", - "Empty response from the server" : "Prazan odgovor poslužitelja", - "Couldn't access. Please log out and in again to activate this mount point" : "Nije moguće pristupiti. Odjavite se i ponovno se prijavite kako biste aktivirali ovu točku postavljanja", - "Couldn't get the information from the remote server: {code} {type}" : "Nisu primljeni podaci s udaljenog poslužitelja: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nije primljen popis vanjskih točaka postavljanja: {type}", - "There was an error with message: " : "Došlo je do pogreške s porukom: ", - "external-storage" : "vanjsko spremište za pohranu", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nije moguće dohvatiti popis točaka postavljanja mrežnog diska u sustavu Windows: prazan odgovor poslužitelja", - "Please enter the credentials for the {mount} mount" : "Unesite vjerodajnice postav {mount}", - "Username" : "Korisničko ime", - "Credentials saved" : "Vjerodajnice su spremljene", - "Credentials saving failed" : "Neuspješno spremanje vjerodajnica", - "Credentials required" : "Potrebne su vjerodajnice", - "Storage with ID \"%d\" is not user editable" : "Korisnici ne mogu uređivati pohranu s ID-om „%d”", - "Username and password" : "Korisničko ime i zaporka", - "Global credentials, user entered" : "Globalne vjerodajnice, unio korisnik", - "User entered, store in database" : "Unio korisnik, pohrani u bazu podataka", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Provjerava ACL-ove pojedinih datoteka ili mapa unutar direktorija radi filtriranja stavki za koje korisnik nema pravo pristupa, opterećuje rad sustava", - "Username as share" : "Korisničko ime kao dijeljenje", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ova aplikacija omogućuje administratorima da konfiguriraju veze s vanjskim davateljima prostora za pohranu, kao što su FTP poslužitelji, S3 ili SWIFT trgovine objektima, drugi Nextcloudovi poslužitelji, WebDAV poslužitelji itd. Administratori mogu odabrati koje vrste prostora za pohranu žele omogućiti i mogu postaviti te prostore za pohranu za pojedinog korisnika, grupu ili cijeli sustav. Korisnici će vidjeti svoju novu mapu koja se pojavi u njihovom korijenskom Nextcloudovom direktoriju i mogu joj pristupiti i upotrebljavati je kao i bilo koju drugu mapu u sustavu Nextcloud. Vanjska pohrana također omogućuje korisnicima dijeljenje datoteka pohranjenih na tim vanjskim lokacijama. U tim se slučajevima koristi vjerodajnica vlasnika datoteke kada primatelj zatraži datoteku iz vanjske pohrane, čime se osigurava da primatelj može pristupiti dijeljenoj datoteci.\n\nVanjska pohrana može se konfigurirati s pomoću GUI-ja ili naredbenog retka. Ova druga opcija naprednom korisniku pruža veću fleksibilnost za konfiguriranje skupnoga vanjskog prostora za pohranu i postavljanje prioriteta pri postavljanju pohrane. Više informacija možete pronaći u dokumentaciji GUI-ja vanjske pohrane i dokumentaciji konfiguracijske datoteke za vanjsku pohranu.", - "Name" : "Naziv", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Vanjska pohrana omogućuje vam postavljanje vanjskih servisa i uređaja za pohranu kao pomoćnih uređaja za pohranu sustava Nextcloud. Također možete omogućiti korisnicima postavljanje vlastitih vanjskih servisa za pohranu.", - "All users" : "Svi korisnici", - "Allow users to mount external storage" : "Dopusti korisnicima postavljanje vanjske pohrane" + "Error configuring OAuth1" : "Pogreška pri konfiguriranju OAuth1", + "Please provide a valid app key and secret." : "Unesite važeći ključ aplikacije i tajnu.", + "OAuth1" : "OAuth1", + "App key" : "Ključ aplikacije", + "App secret" : "Tajna aplikacije" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/hu.js b/apps/files_external/l10n/hu.js index dff76ca8103..183b660a730 100644 --- a/apps/files_external/l10n/hu.js +++ b/apps/files_external/l10n/hu.js @@ -2,28 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Hozzáférés megadása", - "Error configuring OAuth1" : "OAuth1 beállítási hiba", - "Please provide a valid app key and secret." : "Adjon meg egy érvényes alkalmazáskulcsot és titkot.", "Error configuring OAuth2" : "OAuth2 beállítási hiba", "Generate keys" : "Kulcsok előállítása", "Error generating key pair" : "Hiba történt a kulcspár előállítása során", - "(Group)" : "(Csoport)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)", - "Enable encryption" : "Titkosítás engedélyezése", - "Enable previews" : "Előnézet engedélyezése", - "Enable sharing" : "Megosztás engedélyezése", - "Check for changes" : "Változások keresése", - "Never" : "Soha", - "Once every direct access" : "Minden közvetlen elérésnél", - "Read only" : "Csak olvasható", - "Disconnect" : "Kapcsolat bontása", - "Admin defined" : "Rendszergazda által definiálva", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Az automatikus állapotellenőrzés a beállított tárolók nagy száma miatt ki van kapcsolva, kattintson az állapot ellenőrzéséhez", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Biztos, hogy bontja a kapcsolatot ezzel a külső tárolóval? A tároló nem lesz elérhető a Nextcloudban, és a szinkronizálási kliensek is törölni fogják azokat a fájlokat, amelyek jelenleg kapcsolatban vannak, viszont magáról a külső tárolóról nem fogja törölni a fájlokat és mappákat.", - "Delete storage?" : "Tároló törlése?", - "Saved" : "Mentve", - "Saving …" : "Mentés…", - "Save" : "Mentés", + "You are not logged in" : "Nincs bejelentkezve.", + "Permission denied" : "Jogosultság megtagadva", "Forbidden to manage local mounts" : "A helyi csatolt kötetek kezelése tiltott", "Storage with ID \"%d\" not found" : "A(z) „%d” azonosítójú tároló nem található", "Invalid backend or authentication mechanism class" : "Érvénytelen háttérszolgáltatási vagy hitelesítési mechanizmus osztály", @@ -36,13 +19,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Elégtelen paraméterek a hitelesítési mechanizmushoz", "Insufficient data: %s" : "Elégtelen adatok: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "A(z) „%d” azonosítójú tárolót csak rendszergazdák szerkeszthetik", "Access key" : "Hozzáférési kulcs", "Secret key" : "Titkos kulcs", "Builtin" : "Beépített", "None" : "Egyik sem", - "OAuth1" : "OAuth1", - "App key" : "Alkalmazáskulcs", - "App secret" : "Alkalmazás titka", "OAuth2" : "OAuth2", "Client ID" : "Kliensazonosító", "Client secret" : "Kliens titka", @@ -57,7 +38,10 @@ OC.L10N.register( "API key" : "API kulcs", "Global credentials" : "Globális hitelesítő adatok", "Log-in credentials, save in database" : "Bejelentkezési hitelesítő adatok, mentés adatbázisban", + "Login and password" : "Bejelentkezés és jelszó", "Log-in credentials, save in session" : "Bejelentkezési hitelesítő adatok, mentés a munkamenetben", + "Global credentials, manually entered" : "Globális hitelesítő adatok, kézileg megadva", + "Manually entered, store in database" : "Kézileg megadva, tárolás adatbázisban", "RSA public key" : "RSA nyilvános kulcs", "Public key" : "Nyilvános kulcs", "RSA private key" : "RSA titkos kulcs", @@ -74,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "SSL engedélyezése", "Enable Path Style" : "Útvonal stílus engedélyezés", "Legacy (v2) authentication" : "Örökölt (v2) hitelesítés", + "Enable multipart copy" : "Többrészes másolás engedélyezése", + "SSE-C encryption key" : "SSE-C titkosítási kulcsa", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Távoli almappa", @@ -93,8 +79,10 @@ OC.L10N.register( "Case sensitive file system" : "Kis- és nagybetűket megkülönböztető fájlrendszer", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "A letiltása lehetővé teszi a kis- és nagybetűket nem megkülönböztető fájlrendszerek használatát, de ez teljesítményvesztést okoz", "Verify ACL access when listing files" : "ACL hozzáférés ellenőrzése a fájlok listázásakor", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Egy könyvtárban szereplő összes fájl vagy mappa ACL-jének ellenőrzése azon elemek kiszűréséhez, melyeken a fióknak nincs olvasási engedélye; teljesítménycsökkenéssel jár", "Timeout" : "Időtúllépés", "SMB/CIFS using OC login" : "SMB / CIFS OC bejelentkezéssel", + "Login as share" : "Bejelentkezés megosztásként", "OpenStack Object Storage" : "OpenStack objektumtároló", "Service name" : "Szolgáltatás neve", "Request timeout (seconds)" : "Kérés időtúllépése (másodpercben)", @@ -104,9 +92,18 @@ OC.L10N.register( "External storage" : "Külső tároló", "External storage support" : "Külső tároló támogatás", "Adds basic external storage support" : "Külső tároló támogatás hozzáadása", - "Enter missing credentials" : "Adja meg a hiányzó hitelesítési adatokat", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ez az alkalmazás lehetővé teszi a rendszergazdák számára, hogy beállítsák a kapcsolatokat a külső tárhely-szolgáltatókkal, például FTP-kiszolgálókkal, S3 vagy SWIFT objektumtárolókkal, más Nextcloud-kiszolgálókkal, WebDAV-kiszolgálókkal és egyebekkel. A rendszergazdák kiválaszthatják, hogy milyen típusú tárolókat engedélyeznek, és csatolhatják ezeket a tárhelyeket egy fiók, egy csoport vagy az egész rendszer számára. A felhasználók látni fogják, hogy egy új mappa jelenik meg a Nextcloud gyökérkönyvtárában, amelyet minden más Nextcloud mappához hasonlóan elérhetnek és használhatnak. A külső tárhely lehetővé teszi az emberek számára a külső helyeken tárolt fájlok megosztását is. Ezekben az esetekben a fájl tulajdonosának hitelesítő adatait akkor használják, amikor a címzett a fájlt külső tárhelyről kéri, ezáltal biztosítva, hogy a címzett hozzáférjen a megosztott fájlhoz.\n\nA külső tároló grafikus felületen vagy a parancssorban konfigurálható. Ez a második lehetőség a rendszergazdák számára nagyobb rugalmasságot biztosít a tömeges külső tárolók konfigurálásához, és a csatolási prioritások beállításához. További információ a külső tároló GUI dokumentációjában, és a külső tároló konfigurációs fájljának dokumentációjában található.", + "Confirm" : "Megerősítés", + "Storage credentials" : "Tároló hitelesítő adatai", + "To access the storage, you need to provide the authentication credentials." : "A tároló eléréséhez meg kell adnia a hitelesítő adatokat.", + "Enter the storage login" : "Adja meg a tároló bejelentkezését", + "Enter the storage password" : "Adja meg a tároló jelszavát", "Unable to update this external storage config. {statusMessage}" : "A külső tároló beállításainak frissítése nem sikerült. {statusMessage}", "New configuration successfully saved" : "Az új konfiguráció sikeresen elmentve", + "Enter missing credentials" : "Adja meg a hiányzó hitelesítési adatokat", + "Credentials successfully set" : "Hitelesítő adatok sikeresen beállítva", + "Error while setting credentials: {error}" : "Hiba a hitelesítő adatok beállításakor: {error}", + "Checking storage …" : "Tároló ellenőrzése…", "There was an error with this external storage." : "Hiba történt ezzel a külső tárolóval.", "We were unable to check the external storage {basename}" : "Nem sikerült a(z) {basename} külső tároló ellenőrzése", "Examine this faulty external storage configuration" : "Vizsgálja meg a külső tároló hibás konfigurációját", @@ -122,40 +119,44 @@ OC.L10N.register( "Scope" : "Hatókör", "Personal" : "Személyes", "System" : "Rendszer", + "Type to select account or group." : "Gépeljen a fiók vagy a csoport kiválasztásához.", + "(Group)" : "(Csoport)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)", + "Enable encryption" : "Titkosítás engedélyezése", + "Enable previews" : "Előnézet engedélyezése", + "Enable sharing" : "Megosztás engedélyezése", + "Check for changes" : "Változások keresése", + "Never" : "Soha", + "Once every direct access" : "Minden közvetlen elérésnél", + "Read only" : "Csak olvasható", + "Disconnect" : "Kapcsolat bontása", + "Unknown backend: {backendName}" : "Ismeretlen háttérszolgáltatás: {backendName}", + "Admin defined" : "Rendszergazda által definiálva", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Az automatikus állapotellenőrzés a beállított tárolók nagy száma miatt ki van kapcsolva, kattintson az állapot ellenőrzéséhez", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Biztos, hogy bontja a kapcsolatot ezzel a külső tárolóval? A tároló nem lesz elérhető a Nextcloudban, és a szinkronizálási kliensek is törölni fogják azokat a fájlokat, amelyek jelenleg kapcsolatban vannak, viszont magáról a külső tárolóról nem fogja törölni a fájlokat és mappákat.", + "Delete storage?" : "Tároló törlése?", + "Click to recheck the configuration" : "Kattintson ide a konfiguráció újraellenőrzéséhez", + "Saved" : "Mentve", + "Saving …" : "Mentés…", + "Save" : "Mentés", + "Failed to save global credentials" : "A globális hitelesítő adatok mentése sikertelen", + "Failed to save global credentials: {message}" : "A globális hitelesítő adatok mentése sikertelen: {message}", "No external storage configured or you don't have the permission to configure them" : "Nincsenek külső tárolók beállítva, vagy nincs hozzáférése a beállításaikhoz", "Open documentation" : "Dokumentáció megnyitása", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "A külső tárhely lehetővé teszi külső tárolási szolgáltatások és eszközök másodlagos Nextcloud-tárolóeszközként történő csatlakoztatását. Lehetővé teheti az emberek számára, hogy saját külső tárolószolgáltatásukat is csatlakoztassák.", "Folder name" : "Mappa neve", "Authentication" : "Hitelesítés", "Configuration" : "Beállítások", "Available for" : "Számukra érhető el:", - "Click to recheck the configuration" : "Kattintson ide a konfiguráció újraellenőrzéséhez", "Add storage" : "Tároló hozzáadása", + "All people" : "Mindenki", "Advanced settings" : "Speciális beállítások", + "Allow people to mount external storage" : "Külső tárolók csatolásának engedélyezése az emberek számára", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "A globális hitelesítő adatokkal azonos külső hitelesítő adatokkal rendelkező külső tárhelyek hitelesíthetők.", - "Type to select user or group." : "Gépeljen a felhasználó vagy a csoport kiválasztásához.", - "Empty response from the server" : "Üres válasz a kiszolgálótól", - "Couldn't access. Please log out and in again to activate this mount point" : "Nem férhető hozzá. Próbáljon meg ki- és bejelentkezni a csatolási pont aktiválásához.", - "Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli kiszolgálóról: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}", - "There was an error with message: " : "Hiba történt ezzel az üzenettel:", - "external-storage" : "külső tároló", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "A Windows hálózati meghajtó csatolási pontok listája nem tölthető le: üres válasz a kiszolgálótól", - "Please enter the credentials for the {mount} mount" : "Adja meg a(z) {mount} csatolási pont hitelesítő adatait", - "Username" : "Felhasználónév", - "Credentials saved" : "Hitelesítő adatok mentve", - "Credentials saving failed" : "Hitelesítő adatok mentése sikertelen", - "Credentials required" : "Hitelesítő adatok szükségesek", - "Storage with ID \"%d\" is not user editable" : "A(z) „%d” azonosítójú tárolót nem szerkeszthetik a felhasználók", - "Username and password" : "Felhasználónév és jelszó", - "Global credentials, user entered" : "Globális hitelesítő adatok, a felhasználó által megadva", - "User entered, store in database" : "Felhasználó által megadva, tárolás adatbázisban", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "A letiltása lehetővé teszi a kis- és nagybetűket nem megkülönböztető fájlrendszerek használatát, de ez teljesítményvesztést okoz", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Egy könyvtárban szereplő összes fájl vagy mappa ACL-jének ellenőrzése azon elemek kiszűréséhez, melyeken a felhasználónak nincs olvasási engedélye, teljesítménycsökkenéssel jár", - "Username as share" : "Felhasználónév és megosztás", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ez az alkalmazás lehetővé teszi a rendszergazdák számára, hogy beállítsák a kapcsolatokat a külső tárhely-szolgáltatókkal, például FTP-kiszolgálókkal, S3 vagy SWIFT objektumtárolókkal, más Nextcloud-kiszolgálókkal, WebDAV-kiszolgálókkal és egyebekkel. A rendszergazdák kiválaszthatják, hogy milyen típusú tárolókat engedélyeznek, és csatolhatják ezeket a tárhelyeket egy felhasználó, egy csoport vagy az egész rendszer számára. A felhasználók látni fogják, hogy egy új mappa jelenik meg a Nextcloud gyökérkönyvtárában, amelyet minden más Nextcloud mappához hasonlóan elérhetnek és használhatnak. A külső tárhely lehetővé teszi a felhasználók számára a külső helyeken tárolt fájlok megosztását is. Ezekben az esetekben a fájl tulajdonosának hitelesítő adatait akkor használják, amikor a címzett a fájlt külső tárhelyről kéri, ezáltal biztosítva, hogy a címzett hozzáférjen a megosztott fájlhoz.\n\nA külső tároló grafikus felületen vagy a parancssorban konfigurálható. Ez a második lehetőség a haladó felhasználók számára nagyobb rugalmasságot biztosít a tömeges külső tárolók konfigurálásához, és a csatolási prioritások beállításához. További információ a külső tároló GUI dokumentációjában, és a külső tároló konfigurációs fájljának dokumentációjában található.", - "Name" : "Név", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "A külső tárhely lehetővé teszi külső tárolási szolgáltatások és eszközök másodlagos Nextcloud tárolóeszközként történő csatlakoztatását. Lehetővé teheti a felhasználók számára, hogy saját külső tároló szolgáltatásukat is csatlakoztassák.", - "All users" : "Összes felhasználó", - "Allow users to mount external storage" : "Külső tárolók csatolásának engedélyezése a felhasználók számára" + "Error configuring OAuth1" : "OAuth1 beállítási hiba", + "Please provide a valid app key and secret." : "Adjon meg egy érvényes alkalmazáskulcsot és titkot.", + "OAuth1" : "OAuth1", + "App key" : "Alkalmazáskulcs", + "App secret" : "Alkalmazás titka" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/hu.json b/apps/files_external/l10n/hu.json index fd20f10a5d4..c32c232a4a2 100644 --- a/apps/files_external/l10n/hu.json +++ b/apps/files_external/l10n/hu.json @@ -1,27 +1,10 @@ { "translations": { "Grant access" : "Hozzáférés megadása", - "Error configuring OAuth1" : "OAuth1 beállítási hiba", - "Please provide a valid app key and secret." : "Adjon meg egy érvényes alkalmazáskulcsot és titkot.", "Error configuring OAuth2" : "OAuth2 beállítási hiba", "Generate keys" : "Kulcsok előállítása", "Error generating key pair" : "Hiba történt a kulcspár előállítása során", - "(Group)" : "(Csoport)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)", - "Enable encryption" : "Titkosítás engedélyezése", - "Enable previews" : "Előnézet engedélyezése", - "Enable sharing" : "Megosztás engedélyezése", - "Check for changes" : "Változások keresése", - "Never" : "Soha", - "Once every direct access" : "Minden közvetlen elérésnél", - "Read only" : "Csak olvasható", - "Disconnect" : "Kapcsolat bontása", - "Admin defined" : "Rendszergazda által definiálva", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Az automatikus állapotellenőrzés a beállított tárolók nagy száma miatt ki van kapcsolva, kattintson az állapot ellenőrzéséhez", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Biztos, hogy bontja a kapcsolatot ezzel a külső tárolóval? A tároló nem lesz elérhető a Nextcloudban, és a szinkronizálási kliensek is törölni fogják azokat a fájlokat, amelyek jelenleg kapcsolatban vannak, viszont magáról a külső tárolóról nem fogja törölni a fájlokat és mappákat.", - "Delete storage?" : "Tároló törlése?", - "Saved" : "Mentve", - "Saving …" : "Mentés…", - "Save" : "Mentés", + "You are not logged in" : "Nincs bejelentkezve.", + "Permission denied" : "Jogosultság megtagadva", "Forbidden to manage local mounts" : "A helyi csatolt kötetek kezelése tiltott", "Storage with ID \"%d\" not found" : "A(z) „%d” azonosítójú tároló nem található", "Invalid backend or authentication mechanism class" : "Érvénytelen háttérszolgáltatási vagy hitelesítési mechanizmus osztály", @@ -34,13 +17,11 @@ "Unsatisfied authentication mechanism parameters" : "Elégtelen paraméterek a hitelesítési mechanizmushoz", "Insufficient data: %s" : "Elégtelen adatok: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "A(z) „%d” azonosítójú tárolót csak rendszergazdák szerkeszthetik", "Access key" : "Hozzáférési kulcs", "Secret key" : "Titkos kulcs", "Builtin" : "Beépített", "None" : "Egyik sem", - "OAuth1" : "OAuth1", - "App key" : "Alkalmazáskulcs", - "App secret" : "Alkalmazás titka", "OAuth2" : "OAuth2", "Client ID" : "Kliensazonosító", "Client secret" : "Kliens titka", @@ -55,7 +36,10 @@ "API key" : "API kulcs", "Global credentials" : "Globális hitelesítő adatok", "Log-in credentials, save in database" : "Bejelentkezési hitelesítő adatok, mentés adatbázisban", + "Login and password" : "Bejelentkezés és jelszó", "Log-in credentials, save in session" : "Bejelentkezési hitelesítő adatok, mentés a munkamenetben", + "Global credentials, manually entered" : "Globális hitelesítő adatok, kézileg megadva", + "Manually entered, store in database" : "Kézileg megadva, tárolás adatbázisban", "RSA public key" : "RSA nyilvános kulcs", "Public key" : "Nyilvános kulcs", "RSA private key" : "RSA titkos kulcs", @@ -72,6 +56,8 @@ "Enable SSL" : "SSL engedélyezése", "Enable Path Style" : "Útvonal stílus engedélyezés", "Legacy (v2) authentication" : "Örökölt (v2) hitelesítés", + "Enable multipart copy" : "Többrészes másolás engedélyezése", + "SSE-C encryption key" : "SSE-C titkosítási kulcsa", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Távoli almappa", @@ -91,8 +77,10 @@ "Case sensitive file system" : "Kis- és nagybetűket megkülönböztető fájlrendszer", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "A letiltása lehetővé teszi a kis- és nagybetűket nem megkülönböztető fájlrendszerek használatát, de ez teljesítményvesztést okoz", "Verify ACL access when listing files" : "ACL hozzáférés ellenőrzése a fájlok listázásakor", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Egy könyvtárban szereplő összes fájl vagy mappa ACL-jének ellenőrzése azon elemek kiszűréséhez, melyeken a fióknak nincs olvasási engedélye; teljesítménycsökkenéssel jár", "Timeout" : "Időtúllépés", "SMB/CIFS using OC login" : "SMB / CIFS OC bejelentkezéssel", + "Login as share" : "Bejelentkezés megosztásként", "OpenStack Object Storage" : "OpenStack objektumtároló", "Service name" : "Szolgáltatás neve", "Request timeout (seconds)" : "Kérés időtúllépése (másodpercben)", @@ -102,9 +90,18 @@ "External storage" : "Külső tároló", "External storage support" : "Külső tároló támogatás", "Adds basic external storage support" : "Külső tároló támogatás hozzáadása", - "Enter missing credentials" : "Adja meg a hiányzó hitelesítési adatokat", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ez az alkalmazás lehetővé teszi a rendszergazdák számára, hogy beállítsák a kapcsolatokat a külső tárhely-szolgáltatókkal, például FTP-kiszolgálókkal, S3 vagy SWIFT objektumtárolókkal, más Nextcloud-kiszolgálókkal, WebDAV-kiszolgálókkal és egyebekkel. A rendszergazdák kiválaszthatják, hogy milyen típusú tárolókat engedélyeznek, és csatolhatják ezeket a tárhelyeket egy fiók, egy csoport vagy az egész rendszer számára. A felhasználók látni fogják, hogy egy új mappa jelenik meg a Nextcloud gyökérkönyvtárában, amelyet minden más Nextcloud mappához hasonlóan elérhetnek és használhatnak. A külső tárhely lehetővé teszi az emberek számára a külső helyeken tárolt fájlok megosztását is. Ezekben az esetekben a fájl tulajdonosának hitelesítő adatait akkor használják, amikor a címzett a fájlt külső tárhelyről kéri, ezáltal biztosítva, hogy a címzett hozzáférjen a megosztott fájlhoz.\n\nA külső tároló grafikus felületen vagy a parancssorban konfigurálható. Ez a második lehetőség a rendszergazdák számára nagyobb rugalmasságot biztosít a tömeges külső tárolók konfigurálásához, és a csatolási prioritások beállításához. További információ a külső tároló GUI dokumentációjában, és a külső tároló konfigurációs fájljának dokumentációjában található.", + "Confirm" : "Megerősítés", + "Storage credentials" : "Tároló hitelesítő adatai", + "To access the storage, you need to provide the authentication credentials." : "A tároló eléréséhez meg kell adnia a hitelesítő adatokat.", + "Enter the storage login" : "Adja meg a tároló bejelentkezését", + "Enter the storage password" : "Adja meg a tároló jelszavát", "Unable to update this external storage config. {statusMessage}" : "A külső tároló beállításainak frissítése nem sikerült. {statusMessage}", "New configuration successfully saved" : "Az új konfiguráció sikeresen elmentve", + "Enter missing credentials" : "Adja meg a hiányzó hitelesítési adatokat", + "Credentials successfully set" : "Hitelesítő adatok sikeresen beállítva", + "Error while setting credentials: {error}" : "Hiba a hitelesítő adatok beállításakor: {error}", + "Checking storage …" : "Tároló ellenőrzése…", "There was an error with this external storage." : "Hiba történt ezzel a külső tárolóval.", "We were unable to check the external storage {basename}" : "Nem sikerült a(z) {basename} külső tároló ellenőrzése", "Examine this faulty external storage configuration" : "Vizsgálja meg a külső tároló hibás konfigurációját", @@ -120,40 +117,44 @@ "Scope" : "Hatókör", "Personal" : "Személyes", "System" : "Rendszer", + "Type to select account or group." : "Gépeljen a fiók vagy a csoport kiválasztásához.", + "(Group)" : "(Csoport)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitás a Mac NFD kódolással (lassú)", + "Enable encryption" : "Titkosítás engedélyezése", + "Enable previews" : "Előnézet engedélyezése", + "Enable sharing" : "Megosztás engedélyezése", + "Check for changes" : "Változások keresése", + "Never" : "Soha", + "Once every direct access" : "Minden közvetlen elérésnél", + "Read only" : "Csak olvasható", + "Disconnect" : "Kapcsolat bontása", + "Unknown backend: {backendName}" : "Ismeretlen háttérszolgáltatás: {backendName}", + "Admin defined" : "Rendszergazda által definiálva", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Az automatikus állapotellenőrzés a beállított tárolók nagy száma miatt ki van kapcsolva, kattintson az állapot ellenőrzéséhez", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Biztos, hogy bontja a kapcsolatot ezzel a külső tárolóval? A tároló nem lesz elérhető a Nextcloudban, és a szinkronizálási kliensek is törölni fogják azokat a fájlokat, amelyek jelenleg kapcsolatban vannak, viszont magáról a külső tárolóról nem fogja törölni a fájlokat és mappákat.", + "Delete storage?" : "Tároló törlése?", + "Click to recheck the configuration" : "Kattintson ide a konfiguráció újraellenőrzéséhez", + "Saved" : "Mentve", + "Saving …" : "Mentés…", + "Save" : "Mentés", + "Failed to save global credentials" : "A globális hitelesítő adatok mentése sikertelen", + "Failed to save global credentials: {message}" : "A globális hitelesítő adatok mentése sikertelen: {message}", "No external storage configured or you don't have the permission to configure them" : "Nincsenek külső tárolók beállítva, vagy nincs hozzáférése a beállításaikhoz", "Open documentation" : "Dokumentáció megnyitása", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "A külső tárhely lehetővé teszi külső tárolási szolgáltatások és eszközök másodlagos Nextcloud-tárolóeszközként történő csatlakoztatását. Lehetővé teheti az emberek számára, hogy saját külső tárolószolgáltatásukat is csatlakoztassák.", "Folder name" : "Mappa neve", "Authentication" : "Hitelesítés", "Configuration" : "Beállítások", "Available for" : "Számukra érhető el:", - "Click to recheck the configuration" : "Kattintson ide a konfiguráció újraellenőrzéséhez", "Add storage" : "Tároló hozzáadása", + "All people" : "Mindenki", "Advanced settings" : "Speciális beállítások", + "Allow people to mount external storage" : "Külső tárolók csatolásának engedélyezése az emberek számára", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "A globális hitelesítő adatokkal azonos külső hitelesítő adatokkal rendelkező külső tárhelyek hitelesíthetők.", - "Type to select user or group." : "Gépeljen a felhasználó vagy a csoport kiválasztásához.", - "Empty response from the server" : "Üres válasz a kiszolgálótól", - "Couldn't access. Please log out and in again to activate this mount point" : "Nem férhető hozzá. Próbáljon meg ki- és bejelentkezni a csatolási pont aktiválásához.", - "Couldn't get the information from the remote server: {code} {type}" : "Nem sikerült lekérdezni az információkat a távoli kiszolgálóról: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nem lehet letölteni a külső csatolási pontok listáját: {type}", - "There was an error with message: " : "Hiba történt ezzel az üzenettel:", - "external-storage" : "külső tároló", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "A Windows hálózati meghajtó csatolási pontok listája nem tölthető le: üres válasz a kiszolgálótól", - "Please enter the credentials for the {mount} mount" : "Adja meg a(z) {mount} csatolási pont hitelesítő adatait", - "Username" : "Felhasználónév", - "Credentials saved" : "Hitelesítő adatok mentve", - "Credentials saving failed" : "Hitelesítő adatok mentése sikertelen", - "Credentials required" : "Hitelesítő adatok szükségesek", - "Storage with ID \"%d\" is not user editable" : "A(z) „%d” azonosítójú tárolót nem szerkeszthetik a felhasználók", - "Username and password" : "Felhasználónév és jelszó", - "Global credentials, user entered" : "Globális hitelesítő adatok, a felhasználó által megadva", - "User entered, store in database" : "Felhasználó által megadva, tárolás adatbázisban", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "A letiltása lehetővé teszi a kis- és nagybetűket nem megkülönböztető fájlrendszerek használatát, de ez teljesítményvesztést okoz", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Egy könyvtárban szereplő összes fájl vagy mappa ACL-jének ellenőrzése azon elemek kiszűréséhez, melyeken a felhasználónak nincs olvasási engedélye, teljesítménycsökkenéssel jár", - "Username as share" : "Felhasználónév és megosztás", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ez az alkalmazás lehetővé teszi a rendszergazdák számára, hogy beállítsák a kapcsolatokat a külső tárhely-szolgáltatókkal, például FTP-kiszolgálókkal, S3 vagy SWIFT objektumtárolókkal, más Nextcloud-kiszolgálókkal, WebDAV-kiszolgálókkal és egyebekkel. A rendszergazdák kiválaszthatják, hogy milyen típusú tárolókat engedélyeznek, és csatolhatják ezeket a tárhelyeket egy felhasználó, egy csoport vagy az egész rendszer számára. A felhasználók látni fogják, hogy egy új mappa jelenik meg a Nextcloud gyökérkönyvtárában, amelyet minden más Nextcloud mappához hasonlóan elérhetnek és használhatnak. A külső tárhely lehetővé teszi a felhasználók számára a külső helyeken tárolt fájlok megosztását is. Ezekben az esetekben a fájl tulajdonosának hitelesítő adatait akkor használják, amikor a címzett a fájlt külső tárhelyről kéri, ezáltal biztosítva, hogy a címzett hozzáférjen a megosztott fájlhoz.\n\nA külső tároló grafikus felületen vagy a parancssorban konfigurálható. Ez a második lehetőség a haladó felhasználók számára nagyobb rugalmasságot biztosít a tömeges külső tárolók konfigurálásához, és a csatolási prioritások beállításához. További információ a külső tároló GUI dokumentációjában, és a külső tároló konfigurációs fájljának dokumentációjában található.", - "Name" : "Név", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "A külső tárhely lehetővé teszi külső tárolási szolgáltatások és eszközök másodlagos Nextcloud tárolóeszközként történő csatlakoztatását. Lehetővé teheti a felhasználók számára, hogy saját külső tároló szolgáltatásukat is csatlakoztassák.", - "All users" : "Összes felhasználó", - "Allow users to mount external storage" : "Külső tárolók csatolásának engedélyezése a felhasználók számára" + "Error configuring OAuth1" : "OAuth1 beállítási hiba", + "Please provide a valid app key and secret." : "Adjon meg egy érvényes alkalmazáskulcsot és titkot.", + "OAuth1" : "OAuth1", + "App key" : "Alkalmazáskulcs", + "App secret" : "Alkalmazás titka" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/hy.js b/apps/files_external/l10n/hy.js deleted file mode 100644 index b55c9393b39..00000000000 --- a/apps/files_external/l10n/hy.js +++ /dev/null @@ -1,17 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Անձնական", - "Saved" : "Պահված", - "Username" : "Օգտանուն", - "Password" : "Գաղտնաբառ", - "Save" : "Պահպանել", - "URL" : "URL", - "Dropbox" : "Dropbox", - "Share" : "Կիսվել", - "Name" : "Անուն", - "Never" : "Երբեք", - "Folder name" : "Պանակի անուն", - "Delete" : "Ջնջել" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/hy.json b/apps/files_external/l10n/hy.json deleted file mode 100644 index 7a5d37b985c..00000000000 --- a/apps/files_external/l10n/hy.json +++ /dev/null @@ -1,15 +0,0 @@ -{ "translations": { - "Personal" : "Անձնական", - "Saved" : "Պահված", - "Username" : "Օգտանուն", - "Password" : "Գաղտնաբառ", - "Save" : "Պահպանել", - "URL" : "URL", - "Dropbox" : "Dropbox", - "Share" : "Կիսվել", - "Name" : "Անուն", - "Never" : "Երբեք", - "Folder name" : "Պանակի անուն", - "Delete" : "Ջնջել" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/ia.js b/apps/files_external/l10n/ia.js deleted file mode 100644 index 02b888e1b02..00000000000 --- a/apps/files_external/l10n/ia.js +++ /dev/null @@ -1,77 +0,0 @@ -OC.L10N.register( - "files_external", - { - "External storage" : "Immagazinage externe", - "Personal" : "Personal", - "System" : "Systema", - "Grant access" : "Conceder accesso", - "Error configuring OAuth1" : "Error durante configuration de OAuth1", - "Please provide a valid app key and secret." : "Per favor, provide un clave e un secreto ambe valide.", - "Error configuring OAuth2" : "Error durante configuration de OAuth2", - "Generate keys" : "Generar claves", - "Error generating key pair" : "Error durante creation de par de claves", - "Enable encryption" : "Activar cryptographia", - "Enable previews" : "Activar previsualisationes", - "Enable sharing" : "Activar compartimento", - "Check for changes" : "Verificar nove modificationes", - "Never" : "Nunquam", - "Once every direct access" : "A cata accesso directe", - "Disconnect" : "Disconnecter", - "Saved" : "Salveguardate", - "Save" : "Salveguardar", - "External mount error" : "Error del montage externe", - "external-storage" : "immagazinage-externe", - "Username" : "Nomine de usator", - "Password" : "Contrasigno", - "Credentials saved" : "Datos de authentication salveguardate", - "Credentials saving failed" : "Salveguarda de datos de authentication falleva", - "Credentials required" : "Datos de authentication requirite", - "Invalid mount point" : "Puncto de montage non valide", - "Insufficient data: %s" : "Datos insufficiente: %s", - "%s" : "%s", - "Access key" : "Clave de accesso", - "Secret key" : "Clave secrete", - "None" : "Nulle", - "OAuth1" : "OAuth1", - "App key" : "Clave del Application", - "App secret" : "Secreto del Application", - "OAuth2" : "OAuth2", - "Domain" : "Dominio", - "API key" : "Clave API", - "Global credentials" : "Datos de authentication global", - "Username and password" : "Nomine de usator e contrasigno", - "RSA public key" : "Clave public RSA", - "Public key" : "Clave public", - "Amazon S3" : "Amazon S3", - "Hostname" : "Nomine de Hospite", - "Port" : "Porto", - "Region" : "Region", - "Enable SSL" : "Activar SSL", - "Enable Path Style" : "Activar Stilo de Sentiero", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Sub-dossier remote", - "Secure https://" : "Secur https://", - "FTP" : "FTP", - "Host" : "Hospite", - "Secure ftps://" : "Secure ftps://", - "Local" : "Local", - "Location" : "Loco", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "Share" : "Compartir", - "Show hidden files" : "Monstrar files occultate", - "Service name" : "Nomine del servicio", - "Name" : "Nomine", - "Storage type" : "Typo de immagazinage", - "Open documentation" : "Aperir documentation", - "Folder name" : "Nomine de dossier", - "Authentication" : "Authentication", - "Configuration" : "Configuration", - "Available for" : "Disponibile a", - "Add storage" : "Adder immagazinage", - "Advanced settings" : "Configurationes avantiate", - "Allow users to mount external storage" : "Permitter usatores montar immagazinage externe" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/ia.json b/apps/files_external/l10n/ia.json deleted file mode 100644 index 774e47dcb6c..00000000000 --- a/apps/files_external/l10n/ia.json +++ /dev/null @@ -1,75 +0,0 @@ -{ "translations": { - "External storage" : "Immagazinage externe", - "Personal" : "Personal", - "System" : "Systema", - "Grant access" : "Conceder accesso", - "Error configuring OAuth1" : "Error durante configuration de OAuth1", - "Please provide a valid app key and secret." : "Per favor, provide un clave e un secreto ambe valide.", - "Error configuring OAuth2" : "Error durante configuration de OAuth2", - "Generate keys" : "Generar claves", - "Error generating key pair" : "Error durante creation de par de claves", - "Enable encryption" : "Activar cryptographia", - "Enable previews" : "Activar previsualisationes", - "Enable sharing" : "Activar compartimento", - "Check for changes" : "Verificar nove modificationes", - "Never" : "Nunquam", - "Once every direct access" : "A cata accesso directe", - "Disconnect" : "Disconnecter", - "Saved" : "Salveguardate", - "Save" : "Salveguardar", - "External mount error" : "Error del montage externe", - "external-storage" : "immagazinage-externe", - "Username" : "Nomine de usator", - "Password" : "Contrasigno", - "Credentials saved" : "Datos de authentication salveguardate", - "Credentials saving failed" : "Salveguarda de datos de authentication falleva", - "Credentials required" : "Datos de authentication requirite", - "Invalid mount point" : "Puncto de montage non valide", - "Insufficient data: %s" : "Datos insufficiente: %s", - "%s" : "%s", - "Access key" : "Clave de accesso", - "Secret key" : "Clave secrete", - "None" : "Nulle", - "OAuth1" : "OAuth1", - "App key" : "Clave del Application", - "App secret" : "Secreto del Application", - "OAuth2" : "OAuth2", - "Domain" : "Dominio", - "API key" : "Clave API", - "Global credentials" : "Datos de authentication global", - "Username and password" : "Nomine de usator e contrasigno", - "RSA public key" : "Clave public RSA", - "Public key" : "Clave public", - "Amazon S3" : "Amazon S3", - "Hostname" : "Nomine de Hospite", - "Port" : "Porto", - "Region" : "Region", - "Enable SSL" : "Activar SSL", - "Enable Path Style" : "Activar Stilo de Sentiero", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Sub-dossier remote", - "Secure https://" : "Secur https://", - "FTP" : "FTP", - "Host" : "Hospite", - "Secure ftps://" : "Secure ftps://", - "Local" : "Local", - "Location" : "Loco", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "Share" : "Compartir", - "Show hidden files" : "Monstrar files occultate", - "Service name" : "Nomine del servicio", - "Name" : "Nomine", - "Storage type" : "Typo de immagazinage", - "Open documentation" : "Aperir documentation", - "Folder name" : "Nomine de dossier", - "Authentication" : "Authentication", - "Configuration" : "Configuration", - "Available for" : "Disponibile a", - "Add storage" : "Adder immagazinage", - "Advanced settings" : "Configurationes avantiate", - "Allow users to mount external storage" : "Permitter usatores montar immagazinage externe" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index 22acf5a261b..e90c6093f60 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -2,25 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Berikan hak akses", - "Error configuring OAuth1" : "Kesalahan mengkonfigurasi OAuth1", - "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", "Error configuring OAuth2" : "Kesalahan mengkonfigurasi OAuth2", "Generate keys" : "Hasilkan kunci", "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci", - "(Group)" : "(Grup)", - "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", - "Enable encryption" : "Aktifkan enkripsi", - "Enable previews" : "Aktifkan pratinjau", - "Enable sharing" : "Aktifkan pembagian", - "Check for changes" : "Periksa perubahan", - "Never" : "Jangan pernah", - "Once every direct access" : "Setiap kali akses langsung", - "Read only" : "Hanya baca", - "Disconnect" : "Terputus", - "Admin defined" : "Terdefinisi Admin", - "Saved" : "Disimpan", - "Saving …" : "Menyimpan ...", - "Save" : "Simpan", "Invalid backend or authentication mechanism class" : "Beckend atau kelas mekanisme otentikasi salah.", "Invalid mount point" : "Mount point salah", "Objectstore forbidden" : "Objectstore terlarang", @@ -35,9 +19,6 @@ OC.L10N.register( "Secret key" : "Kunci rahasia", "Builtin" : "Internal", "None" : "Tidak ada", - "OAuth1" : "OAuth1", - "App key" : "Kunci Apl", - "App secret" : "Rahasia Apl", "OAuth2" : "OAuth2", "Client ID" : "ID Klien", "Client secret" : "Rahasia klien", @@ -81,12 +62,27 @@ OC.L10N.register( "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem Anda untuk memasangnya.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem Anda untuk memasangnya.", "External storage" : "Penyimpanan eksternal", + "Confirm" : "Konfirmasi", "External mount error" : "Kesalahan mount eksternal", "Storage type" : "Tipe penyimpanan", "Unknown" : "Tidak diketahui", "Scope" : "Skop", "Personal" : "Pribadi", "System" : "Sistem", + "(Group)" : "(Grup)", + "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", + "Enable encryption" : "Aktifkan enkripsi", + "Enable previews" : "Aktifkan pratinjau", + "Enable sharing" : "Aktifkan pembagian", + "Check for changes" : "Periksa perubahan", + "Never" : "Jangan pernah", + "Once every direct access" : "Setiap kali akses langsung", + "Read only" : "Hanya baca", + "Disconnect" : "Terputus", + "Admin defined" : "Terdefinisi Admin", + "Saved" : "Disimpan", + "Saving …" : "Menyimpan ...", + "Save" : "Simpan", "Open documentation" : "Buka dokumentasi", "Folder name" : "Nama folder", "Authentication" : "Otentikasi", @@ -94,20 +90,10 @@ OC.L10N.register( "Available for" : "Tersedia untuk", "Add storage" : "Tambahkan penyimpanan", "Advanced settings" : "Pengaturan Lanjutan", - "Empty response from the server" : "Tidak ada respon dari server", - "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", - "There was an error with message: " : "Terjadi kesalahan dengan pesan:", - "external-storage" : "penyimpanan-eksternal", - "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", - "Username" : "Nama Pengguna", - "Credentials saved" : "Kredensial tersimpan", - "Credentials saving failed" : "Penyimpanan kredensial gagal", - "Credentials required" : "Kredensial dibutuhkan", - "Username and password" : "Nama pengguna dan kata sandi", - "User entered, store in database" : "Dimasukkan pengguna, masukkan dalam basis data", - "Username as share" : "Nama pengguna berbagi", - "Name" : "Nama", - "Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal" + "Error configuring OAuth1" : "Kesalahan mengkonfigurasi OAuth1", + "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", + "OAuth1" : "OAuth1", + "App key" : "Kunci Apl", + "App secret" : "Rahasia Apl" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index 88b729d9a0b..2f73118a4fc 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -1,24 +1,8 @@ { "translations": { "Grant access" : "Berikan hak akses", - "Error configuring OAuth1" : "Kesalahan mengkonfigurasi OAuth1", - "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", "Error configuring OAuth2" : "Kesalahan mengkonfigurasi OAuth2", "Generate keys" : "Hasilkan kunci", "Error generating key pair" : "Kesalahan saat menghasilkan pasangan kunci", - "(Group)" : "(Grup)", - "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", - "Enable encryption" : "Aktifkan enkripsi", - "Enable previews" : "Aktifkan pratinjau", - "Enable sharing" : "Aktifkan pembagian", - "Check for changes" : "Periksa perubahan", - "Never" : "Jangan pernah", - "Once every direct access" : "Setiap kali akses langsung", - "Read only" : "Hanya baca", - "Disconnect" : "Terputus", - "Admin defined" : "Terdefinisi Admin", - "Saved" : "Disimpan", - "Saving …" : "Menyimpan ...", - "Save" : "Simpan", "Invalid backend or authentication mechanism class" : "Beckend atau kelas mekanisme otentikasi salah.", "Invalid mount point" : "Mount point salah", "Objectstore forbidden" : "Objectstore terlarang", @@ -33,9 +17,6 @@ "Secret key" : "Kunci rahasia", "Builtin" : "Internal", "None" : "Tidak ada", - "OAuth1" : "OAuth1", - "App key" : "Kunci Apl", - "App secret" : "Rahasia Apl", "OAuth2" : "OAuth2", "Client ID" : "ID Klien", "Client secret" : "Rahasia klien", @@ -79,12 +60,27 @@ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem Anda untuk memasangnya.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem Anda untuk memasangnya.", "External storage" : "Penyimpanan eksternal", + "Confirm" : "Konfirmasi", "External mount error" : "Kesalahan mount eksternal", "Storage type" : "Tipe penyimpanan", "Unknown" : "Tidak diketahui", "Scope" : "Skop", "Personal" : "Pribadi", "System" : "Sistem", + "(Group)" : "(Grup)", + "Compatibility with Mac NFD encoding (slow)" : "Kecocokan dengan pengkodean Mac NFD (lambat)", + "Enable encryption" : "Aktifkan enkripsi", + "Enable previews" : "Aktifkan pratinjau", + "Enable sharing" : "Aktifkan pembagian", + "Check for changes" : "Periksa perubahan", + "Never" : "Jangan pernah", + "Once every direct access" : "Setiap kali akses langsung", + "Read only" : "Hanya baca", + "Disconnect" : "Terputus", + "Admin defined" : "Terdefinisi Admin", + "Saved" : "Disimpan", + "Saving …" : "Menyimpan ...", + "Save" : "Simpan", "Open documentation" : "Buka dokumentasi", "Folder name" : "Nama folder", "Authentication" : "Otentikasi", @@ -92,20 +88,10 @@ "Available for" : "Tersedia untuk", "Add storage" : "Tambahkan penyimpanan", "Advanced settings" : "Pengaturan Lanjutan", - "Empty response from the server" : "Tidak ada respon dari server", - "Couldn't get the information from the remote server: {code} {type}" : "Tidak dapat mengambil informasi dari server remote: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Tidak bisa mendapatkan informasi dari mount point eksternal: {type}", - "There was an error with message: " : "Terjadi kesalahan dengan pesan:", - "external-storage" : "penyimpanan-eksternal", - "Please enter the credentials for the {mount} mount" : "Masukkan kredensial untuk mount {mount}", - "Username" : "Nama Pengguna", - "Credentials saved" : "Kredensial tersimpan", - "Credentials saving failed" : "Penyimpanan kredensial gagal", - "Credentials required" : "Kredensial dibutuhkan", - "Username and password" : "Nama pengguna dan kata sandi", - "User entered, store in database" : "Dimasukkan pengguna, masukkan dalam basis data", - "Username as share" : "Nama pengguna berbagi", - "Name" : "Nama", - "Allow users to mount external storage" : "Izinkan pengguna untuk mengaitkan penyimpanan eksternal" + "Error configuring OAuth1" : "Kesalahan mengkonfigurasi OAuth1", + "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", + "OAuth1" : "OAuth1", + "App key" : "Kunci Apl", + "App secret" : "Rahasia Apl" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js index 72adc61345a..a30f187accb 100644 --- a/apps/files_external/l10n/is.js +++ b/apps/files_external/l10n/is.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Veita aðgengi", - "Error configuring OAuth1" : "Villa við uppsetningu OAuth1", - "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", "Error configuring OAuth2" : "Villa við uppsetningu OAuth2", "Generate keys" : "Útbúa lykla", "Error generating key pair" : "Villa við að útbúa nýtt lyklapar", - "(Group)" : "(Hópur)", - "Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)", - "Enable encryption" : "Virkja dulritun", - "Enable previews" : "Virkja forskoðanir", - "Enable sharing" : "Virkja deilingu", - "Check for changes" : "Fylgjast með breytingum", - "Never" : "Aldrei", - "Once every direct access" : "Einu sinni við hvern beinan aðgang", - "Read only" : "Skrifvarið", - "Disconnect" : "Aftengjast", - "Admin defined" : "Skilgreindur kerfisstjóri", - "Delete storage?" : "Eyða geymslu?", - "Saved" : "Vistað", - "Saving …" : "Vista …", - "Save" : "Vista", "Forbidden to manage local mounts" : "Bannað að stjórna staðværum tengipunktum", "Storage with ID \"%d\" not found" : "Geymsla með auðkennið '%d' fannst ekki", "Invalid backend or authentication mechanism class" : "Ógildur flokkur bakenda eða auðkenningartækni", @@ -34,13 +17,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Óuppfyllt viðföng auðkenningartækni", "Insufficient data: %s" : "Ónóg gögn: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Geymslan með auðkennið '%d' er ekki breytanleg af venjulegum notanda", "Access key" : "Aðgangslykill", "Secret key" : "Leynilykill", "Builtin" : "Innbyggt", "None" : "Ekkert", - "OAuth1" : "OAuth1", - "App key" : "Lykill forrits", - "App secret" : "Leynilykill forrits", "OAuth2" : "OAuth2", "Client ID" : "Biðlaraauðkenni", "Client secret" : "Leynilykill biðlara", @@ -55,7 +36,10 @@ OC.L10N.register( "API key" : "API-lykill", "Global credentials" : "Víðvær innskráningarauðkenni", "Log-in credentials, save in database" : "Innskráningarauðkenni, vista í gagnagrunni", + "Login and password" : "Notandanafn og lykilorð", "Log-in credentials, save in session" : "Innskráningarauðkenni, vista í setu", + "Global credentials, manually entered" : "Víðvær innskráningarauðkenni, sett inn handvirkt", + "Manually entered, store in database" : "Sett inn handvirkt, geyma í gagnagrunni", "RSA public key" : "RSA-dreifilykill", "Public key" : "Dreifilykill", "RSA private key" : "RSA-einkalykill", @@ -91,6 +75,7 @@ OC.L10N.register( "Verify ACL access when listing files" : "Athuga ACL-aðgang þegar gerðir eru listar yfir skrár", "Timeout" : "Tímamörk", "SMB/CIFS using OC login" : "SMB / CIFS með OC-innskráningu", + "Login as share" : "Skrá inn sem sameign", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Heiti á þjónustu", "Request timeout (seconds)" : "Tímamörk á beiðni (sekúndur)", @@ -100,9 +85,13 @@ OC.L10N.register( "External storage" : "Ytri gagnageymsla", "External storage support" : "Stuðningur við utanaðkomandi gagnageymslur", "Adds basic external storage support" : "Bætir við grunnstuðningi fyrir utanaðkomandi gagnageymslur", - "Enter missing credentials" : "Settu inn auðkenni sem vantar", + "Confirm" : "Staðfesta", + "Storage credentials" : "Innskráningarauðkenni á gagnageymslu", + "Enter the storage login" : "Settu inn notandanafn fyrir gagnageymsluna", + "Enter the storage password" : "Settu inn lykilorð fyrir gagnageymsluna", "Unable to update this external storage config. {statusMessage}" : "Tókst ekki að uppfæra uppsetningu þessarar ytri-gagnageymslu. {statusMessage}", "New configuration successfully saved" : "Það tókst að vista nýju uppsetninguna", + "Enter missing credentials" : "Settu inn auðkenni sem vantar", "There was an error with this external storage." : "Það kom upp villa með þessa ytri-gagnageymslu.", "We were unable to check the external storage {basename}" : "Okkur tókst ekki að athuga ytri-gagnageymsluna {basename}", "Examine this faulty external storage configuration" : "Skoða þessa ófullgerðu uppsetningu ytri-gagnageymslu", @@ -118,35 +107,38 @@ OC.L10N.register( "Scope" : "Umfang", "Personal" : "Einka", "System" : "Kerfi", + "Type to select account or group." : "Skrifaðu til að velja notandaaðgang eða hóp.", + "(Group)" : "(Hópur)", + "Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)", + "Enable encryption" : "Virkja dulritun", + "Enable previews" : "Virkja forskoðanir", + "Enable sharing" : "Virkja deilingu", + "Check for changes" : "Fylgjast með breytingum", + "Never" : "Aldrei", + "Once every direct access" : "Einu sinni við hvern beinan aðgang", + "Read only" : "Skrifvarið", + "Disconnect" : "Aftengjast", + "Unknown backend: {backendName}" : "Óþekktur bakendi: {backendName}", + "Admin defined" : "Skilgreindur kerfisstjóri", + "Delete storage?" : "Eyða geymslu?", + "Click to recheck the configuration" : "Smelltu til að yfirfara aftur uppsetninguna", + "Saved" : "Vistað", + "Saving …" : "Vista …", + "Save" : "Vista", "No external storage configured or you don't have the permission to configure them" : "Engin utanaðkomandi gagnageymsla er uppsett eða að þú hefur ekki heimild til að stilla slíkt", "Open documentation" : "Opna hjálparskjöl", "Folder name" : "Nafn möppu", "Authentication" : "Auðkenning", "Configuration" : "Uppsetning", "Available for" : "Tiltækt fyrir", - "Click to recheck the configuration" : "Smelltu til að yfirfara aftur uppsetninguna", "Add storage" : "Bæta við gagnahirslu", + "All people" : "Allt fólk", "Advanced settings" : "Ítarlegri valkostir", - "Type to select user or group." : "Skrifaðu til að velja notanda eða hóp.", - "Empty response from the server" : "Tómt svar frá þjóni móttekið", - "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", - "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}", - "There was an error with message: " : "Það kom upp villa með skilaboðunum: ", - "external-storage" : "ytri-gagnageymsla", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt", - "Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn", - "Username" : "Notandanafn", - "Credentials saved" : "Auðkenni vistuð", - "Credentials saving failed" : "Vistun auðkenna tókst ekki", - "Credentials required" : "Auðkenna krafist", - "Storage with ID \"%d\" is not user editable" : "Geymslan með auðkennið '%d' er ekki breytanleg af notanda", - "Username and password" : "Notandanafn og lykilorð", - "Global credentials, user entered" : "Víðvær innskráningarauðkenni, sett inn af notanda", - "User entered, store in database" : "Innskráður notandi, geyma í gagnagrunni", - "Username as share" : "Notandanafn sem sameign", - "Name" : "Nafn", - "All users" : "Allir notendur", - "Allow users to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi" + "Allow people to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi", + "Error configuring OAuth1" : "Villa við uppsetningu OAuth1", + "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", + "OAuth1" : "OAuth1", + "App key" : "Lykill forrits", + "App secret" : "Leynilykill forrits" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json index 6c7aeccf7fc..ac67b5a14d5 100644 --- a/apps/files_external/l10n/is.json +++ b/apps/files_external/l10n/is.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Veita aðgengi", - "Error configuring OAuth1" : "Villa við uppsetningu OAuth1", - "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", "Error configuring OAuth2" : "Villa við uppsetningu OAuth2", "Generate keys" : "Útbúa lykla", "Error generating key pair" : "Villa við að útbúa nýtt lyklapar", - "(Group)" : "(Hópur)", - "Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)", - "Enable encryption" : "Virkja dulritun", - "Enable previews" : "Virkja forskoðanir", - "Enable sharing" : "Virkja deilingu", - "Check for changes" : "Fylgjast með breytingum", - "Never" : "Aldrei", - "Once every direct access" : "Einu sinni við hvern beinan aðgang", - "Read only" : "Skrifvarið", - "Disconnect" : "Aftengjast", - "Admin defined" : "Skilgreindur kerfisstjóri", - "Delete storage?" : "Eyða geymslu?", - "Saved" : "Vistað", - "Saving …" : "Vista …", - "Save" : "Vista", "Forbidden to manage local mounts" : "Bannað að stjórna staðværum tengipunktum", "Storage with ID \"%d\" not found" : "Geymsla með auðkennið '%d' fannst ekki", "Invalid backend or authentication mechanism class" : "Ógildur flokkur bakenda eða auðkenningartækni", @@ -32,13 +15,11 @@ "Unsatisfied authentication mechanism parameters" : "Óuppfyllt viðföng auðkenningartækni", "Insufficient data: %s" : "Ónóg gögn: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Geymslan með auðkennið '%d' er ekki breytanleg af venjulegum notanda", "Access key" : "Aðgangslykill", "Secret key" : "Leynilykill", "Builtin" : "Innbyggt", "None" : "Ekkert", - "OAuth1" : "OAuth1", - "App key" : "Lykill forrits", - "App secret" : "Leynilykill forrits", "OAuth2" : "OAuth2", "Client ID" : "Biðlaraauðkenni", "Client secret" : "Leynilykill biðlara", @@ -53,7 +34,10 @@ "API key" : "API-lykill", "Global credentials" : "Víðvær innskráningarauðkenni", "Log-in credentials, save in database" : "Innskráningarauðkenni, vista í gagnagrunni", + "Login and password" : "Notandanafn og lykilorð", "Log-in credentials, save in session" : "Innskráningarauðkenni, vista í setu", + "Global credentials, manually entered" : "Víðvær innskráningarauðkenni, sett inn handvirkt", + "Manually entered, store in database" : "Sett inn handvirkt, geyma í gagnagrunni", "RSA public key" : "RSA-dreifilykill", "Public key" : "Dreifilykill", "RSA private key" : "RSA-einkalykill", @@ -89,6 +73,7 @@ "Verify ACL access when listing files" : "Athuga ACL-aðgang þegar gerðir eru listar yfir skrár", "Timeout" : "Tímamörk", "SMB/CIFS using OC login" : "SMB / CIFS með OC-innskráningu", + "Login as share" : "Skrá inn sem sameign", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Heiti á þjónustu", "Request timeout (seconds)" : "Tímamörk á beiðni (sekúndur)", @@ -98,9 +83,13 @@ "External storage" : "Ytri gagnageymsla", "External storage support" : "Stuðningur við utanaðkomandi gagnageymslur", "Adds basic external storage support" : "Bætir við grunnstuðningi fyrir utanaðkomandi gagnageymslur", - "Enter missing credentials" : "Settu inn auðkenni sem vantar", + "Confirm" : "Staðfesta", + "Storage credentials" : "Innskráningarauðkenni á gagnageymslu", + "Enter the storage login" : "Settu inn notandanafn fyrir gagnageymsluna", + "Enter the storage password" : "Settu inn lykilorð fyrir gagnageymsluna", "Unable to update this external storage config. {statusMessage}" : "Tókst ekki að uppfæra uppsetningu þessarar ytri-gagnageymslu. {statusMessage}", "New configuration successfully saved" : "Það tókst að vista nýju uppsetninguna", + "Enter missing credentials" : "Settu inn auðkenni sem vantar", "There was an error with this external storage." : "Það kom upp villa með þessa ytri-gagnageymslu.", "We were unable to check the external storage {basename}" : "Okkur tókst ekki að athuga ytri-gagnageymsluna {basename}", "Examine this faulty external storage configuration" : "Skoða þessa ófullgerðu uppsetningu ytri-gagnageymslu", @@ -116,35 +105,38 @@ "Scope" : "Umfang", "Personal" : "Einka", "System" : "Kerfi", + "Type to select account or group." : "Skrifaðu til að velja notandaaðgang eða hóp.", + "(Group)" : "(Hópur)", + "Compatibility with Mac NFD encoding (slow)" : "Samhæfni við Mac NFD kóðun (hægvirkt)", + "Enable encryption" : "Virkja dulritun", + "Enable previews" : "Virkja forskoðanir", + "Enable sharing" : "Virkja deilingu", + "Check for changes" : "Fylgjast með breytingum", + "Never" : "Aldrei", + "Once every direct access" : "Einu sinni við hvern beinan aðgang", + "Read only" : "Skrifvarið", + "Disconnect" : "Aftengjast", + "Unknown backend: {backendName}" : "Óþekktur bakendi: {backendName}", + "Admin defined" : "Skilgreindur kerfisstjóri", + "Delete storage?" : "Eyða geymslu?", + "Click to recheck the configuration" : "Smelltu til að yfirfara aftur uppsetninguna", + "Saved" : "Vistað", + "Saving …" : "Vista …", + "Save" : "Vista", "No external storage configured or you don't have the permission to configure them" : "Engin utanaðkomandi gagnageymsla er uppsett eða að þú hefur ekki heimild til að stilla slíkt", "Open documentation" : "Opna hjálparskjöl", "Folder name" : "Nafn möppu", "Authentication" : "Auðkenning", "Configuration" : "Uppsetning", "Available for" : "Tiltækt fyrir", - "Click to recheck the configuration" : "Smelltu til að yfirfara aftur uppsetninguna", "Add storage" : "Bæta við gagnahirslu", + "All people" : "Allt fólk", "Advanced settings" : "Ítarlegri valkostir", - "Type to select user or group." : "Skrifaðu til að velja notanda eða hóp.", - "Empty response from the server" : "Tómt svar frá þjóni móttekið", - "Couldn't access. Please log out and in again to activate this mount point" : "Náði ekki aðgangi. Skráðu þig út og svo aftur inn til að virkja þennan tengipunkt", - "Couldn't get the information from the remote server: {code} {type}" : "Gat ekki lesið upplýsingar frá fjartengda þjóninum: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Gat ekki fengið lista yfir fjartengda tengipunkta: {type}", - "There was an error with message: " : "Það kom upp villa með skilaboðunum: ", - "external-storage" : "ytri-gagnageymsla", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Gat ekki fengið lista yfir tengipunkta Windows-netdrifa, Svar frá þjóni var tómt", - "Please enter the credentials for the {mount} mount" : "Settu inn auðkenni fyrir {mount} tengipunktinn", - "Username" : "Notandanafn", - "Credentials saved" : "Auðkenni vistuð", - "Credentials saving failed" : "Vistun auðkenna tókst ekki", - "Credentials required" : "Auðkenna krafist", - "Storage with ID \"%d\" is not user editable" : "Geymslan með auðkennið '%d' er ekki breytanleg af notanda", - "Username and password" : "Notandanafn og lykilorð", - "Global credentials, user entered" : "Víðvær innskráningarauðkenni, sett inn af notanda", - "User entered, store in database" : "Innskráður notandi, geyma í gagnagrunni", - "Username as share" : "Notandanafn sem sameign", - "Name" : "Nafn", - "All users" : "Allir notendur", - "Allow users to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi" + "Allow people to mount external storage" : "Leyfa notendum að tengja ytri gagnageymslur í skráakerfi", + "Error configuring OAuth1" : "Villa við uppsetningu OAuth1", + "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", + "OAuth1" : "OAuth1", + "App key" : "Lykill forrits", + "App secret" : "Leynilykill forrits" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index 0460410c785..ee3f5665599 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Concedi l'accesso", - "Error configuring OAuth1" : "Errore di configurazione OAuth1", - "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", "Error configuring OAuth2" : "Errore di configurazione OAuth2", "Generate keys" : "Genera la chiavi", "Error generating key pair" : "Errore durante la generazione della coppia di chiavi", - "(Group)" : "(Gruppo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", - "Enable encryption" : "Abilita cifratura", - "Enable previews" : "Abilita le anteprime", - "Enable sharing" : "Abilita condivisione", - "Check for changes" : "Controlla le modifiche", - "Never" : "Mai", - "Once every direct access" : "Una volta per ogni accesso diretto", - "Read only" : "Sola lettura", - "Disconnect" : "Disconnetti", - "Admin defined" : "Definito dall'amministratore", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.", - "Delete storage?" : "Vuoi eliminare l'archiviazione?", - "Saved" : "Salvato", - "Saving …" : "Salvataggio…", - "Save" : "Salva", "Forbidden to manage local mounts" : "Gestione dei mount locali proibita", "Storage with ID \"%d\" not found" : "Archiviazione con ID \"%d\" non trovata", "Invalid backend or authentication mechanism class" : "Motore o classe del meccanismo di autenticazione non valido", @@ -36,13 +17,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", "Insufficient data: %s" : "Dati insufficienti: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "L'archiviazione con ID \"%d\" non è modificabile dai non amministratori", "Access key" : "Chiave di accesso", "Secret key" : "Chiave segreta", "Builtin" : "Integrata", "None" : "Nessuno", - "OAuth1" : "OAuth1", - "App key" : "Chiave applicazione", - "App secret" : "Segreto applicazione", "OAuth2" : "OAuth2", "Client ID" : "ID client", "Client secret" : "Segreto del client", @@ -57,7 +36,10 @@ OC.L10N.register( "API key" : "Chiave API", "Global credentials" : "Credenziali globali", "Log-in credentials, save in database" : "Credenziali di accesso, salva nel database", + "Login and password" : "Login e password", "Log-in credentials, save in session" : "Credenziali di accesso, salva nella sessione", + "Global credentials, manually entered" : "Credenziali globali, inserite manualmente", + "Manually entered, store in database" : "Inserite manualmente, salva nel database", "RSA public key" : "Chiave pubblica RSA", "Public key" : "Chiave pubblica", "RSA private key" : "Chiave privata RSA", @@ -74,6 +56,8 @@ OC.L10N.register( "Enable SSL" : "Abilita SSL", "Enable Path Style" : "Abilita stile percorsi", "Legacy (v2) authentication" : "Autenticazione tradizionale (v2)", + "Enable multipart copy" : "Attiva copia multiparte", + "SSE-C encryption key" : "Chiave di crittografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Sottocartella remota", @@ -93,8 +77,10 @@ OC.L10N.register( "Case sensitive file system" : "File system case sensitive", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Disattivandolo, sarà possibile usare un file system non sensibile alle maiuscole, ma comporta una riduzione di prestazioni", "Verify ACL access when listing files" : "Verifica le ACL di accesso quando elenchi i file", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'account non ha permessi di lettura, implica una riduzione di prestazioni", "Timeout" : "Tempo scaduto", "SMB/CIFS using OC login" : "SMB/CIFS utilizzando le credenziali OC", + "Login as share" : "Accedi come condivisione", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome servizio", "Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)", @@ -104,9 +90,18 @@ OC.L10N.register( "External storage" : "Archiviazione esterna", "External storage support" : "Supporto archiviazioni esterne", "Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne", - "Enter missing credentials" : "Digita le credenziali mancanti", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a provider di archiviazione esterni, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro ancora. L'amministrazione può scegliere quali tipi di archiviazione abilitare e montare queste posizioni di archiviazione per un account, un gruppo o l'intero sistema. Gli utenti vedranno apparire una nuova cartella nella loro directory principale di Nextcloud, a cui potranno accedere e utilizzare come qualsiasi altra cartella Nextcloud. L'archiviazione esterna consente inoltre alle persone di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file vengono utilizzate quando il destinatario richiede il file da un archivio esterno, garantendo così che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando la GUI o dalla riga di comando. Questa seconda opzione offre all'amministrazione maggiore flessibilità per la configurazione dei montaggi di archiviazione esterni in blocco e l'impostazione delle priorità di montaggio. Ulteriori informazioni sono disponibili nella documentazione della GUI dell'archiviazione esterna e nella documentazione del file di configurazione dell'archiviazione esterna.", + "Confirm" : "Conferma", + "Storage credentials" : "Credenziali dello spazio di archiviazione", + "To access the storage, you need to provide the authentication credentials." : "Per accedere allo spazio di archiviazione è necessario fornire le credenziali di autenticazione.", + "Enter the storage login" : "Inserisci le credenziali dello spazio di archiviazione", + "Enter the storage password" : "Inserisci la password dello spazio di archiviazione", "Unable to update this external storage config. {statusMessage}" : "Impossibile aggiornare questa configurazione di archiviazione esterna. {statusMessage}", "New configuration successfully saved" : "Nuova configurazione salvata correttamente", + "Enter missing credentials" : "Digita le credenziali mancanti", + "Credentials successfully set" : "Credenziali impostate correttamente", + "Error while setting credentials: {error}" : "Errore durante l'impostazione delle credenziali: {error}", + "Checking storage …" : "Controllo spazio di archiviazione…", "There was an error with this external storage." : "Si è verificato un errore con questa archiviazione esterna.", "We were unable to check the external storage {basename}" : "Non è stato possibile controllare l'archiviazione esterna {basename}", "Examine this faulty external storage configuration" : "Esamina questa configurazione errata di archiviazione esterna", @@ -122,40 +117,42 @@ OC.L10N.register( "Scope" : "Ambito", "Personal" : "Personale", "System" : "Sistema", + "Type to select account or group." : "Digita per selezionare account o gruppi.", + "(Group)" : "(Gruppo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", + "Enable encryption" : "Abilita cifratura", + "Enable previews" : "Abilita le anteprime", + "Enable sharing" : "Abilita condivisione", + "Check for changes" : "Controlla le modifiche", + "Never" : "Mai", + "Once every direct access" : "Una volta per ogni accesso diretto", + "Read only" : "Sola lettura", + "Disconnect" : "Disconnetti", + "Unknown backend: {backendName}" : "Backend sconosciuto: {backendName}", + "Admin defined" : "Definito dall'amministratore", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.", + "Delete storage?" : "Vuoi eliminare l'archiviazione?", + "Click to recheck the configuration" : "Clic per controllare di nuovo la configurazione", + "Saved" : "Salvato", + "Saving …" : "Salvataggio…", + "Save" : "Salva", "No external storage configured or you don't have the permission to configure them" : "Nessuna archiviazione esterna configurata o non hai i permessi per configurarle", "Open documentation" : "Apri la documentazione", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere alle persone di montare i propri servizi di archiviazione esterna.", "Folder name" : "Nome della cartella", "Authentication" : "Autenticazione", "Configuration" : "Configurazione", "Available for" : "Disponibile per", - "Click to recheck the configuration" : "Clic per controllare di nuovo la configurazione", "Add storage" : "Aggiungi archiviazione", + "All people" : "Tutte le persone", "Advanced settings" : "Impostazioni avanzate", + "Allow people to mount external storage" : "Consenti alle persone di montare archiviazioni esterne", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Le credenziali globali possono essere utilizzate anche per l'autenticazione con più archiviazioni esterne che hanno le stesse credenziali.", - "Type to select user or group." : "Digita per selezionare utente o gruppo.", - "Empty response from the server" : "Risposta vuota dal server", - "Couldn't access. Please log out and in again to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount", - "Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}", - "Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}", - "There was an error with message: " : "Si è verificato un errore con il messaggio:", - "external-storage" : "archiviazione-esterna", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server", - "Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}", - "Username" : "Nome utente", - "Credentials saved" : "Credenziali salvate", - "Credentials saving failed" : "Salvataggio delle credenziali non riuscito", - "Credentials required" : "Credenziali richieste", - "Storage with ID \"%d\" is not user editable" : "Archiviazione con ID \"%d\" non modificabile dall'utente", - "Username and password" : "Nome utente e password", - "Global credentials, user entered" : "Credenziali globali, inserite dall'utente", - "User entered, store in database" : "Inserite dall'utente, salva nel database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disattivandolo, sarà possibile usare un file system non sensibile alle maiuscole, ma comporta una riduzione di prestazioni", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'utente non ha permessi di lettura, implica una riduzione di prestazioni", - "Username as share" : "Nome utente come condivisione", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.", - "All users" : "Tutti gli utenti", - "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne" + "Error configuring OAuth1" : "Errore di configurazione OAuth1", + "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", + "OAuth1" : "OAuth1", + "App key" : "Chiave applicazione", + "App secret" : "Segreto applicazione" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index 8907eecc6de..4151e2b7364 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Concedi l'accesso", - "Error configuring OAuth1" : "Errore di configurazione OAuth1", - "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", "Error configuring OAuth2" : "Errore di configurazione OAuth2", "Generate keys" : "Genera la chiavi", "Error generating key pair" : "Errore durante la generazione della coppia di chiavi", - "(Group)" : "(Gruppo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", - "Enable encryption" : "Abilita cifratura", - "Enable previews" : "Abilita le anteprime", - "Enable sharing" : "Abilita condivisione", - "Check for changes" : "Controlla le modifiche", - "Never" : "Mai", - "Once every direct access" : "Una volta per ogni accesso diretto", - "Read only" : "Sola lettura", - "Disconnect" : "Disconnetti", - "Admin defined" : "Definito dall'amministratore", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.", - "Delete storage?" : "Vuoi eliminare l'archiviazione?", - "Saved" : "Salvato", - "Saving …" : "Salvataggio…", - "Save" : "Salva", "Forbidden to manage local mounts" : "Gestione dei mount locali proibita", "Storage with ID \"%d\" not found" : "Archiviazione con ID \"%d\" non trovata", "Invalid backend or authentication mechanism class" : "Motore o classe del meccanismo di autenticazione non valido", @@ -34,13 +15,11 @@ "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", "Insufficient data: %s" : "Dati insufficienti: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "L'archiviazione con ID \"%d\" non è modificabile dai non amministratori", "Access key" : "Chiave di accesso", "Secret key" : "Chiave segreta", "Builtin" : "Integrata", "None" : "Nessuno", - "OAuth1" : "OAuth1", - "App key" : "Chiave applicazione", - "App secret" : "Segreto applicazione", "OAuth2" : "OAuth2", "Client ID" : "ID client", "Client secret" : "Segreto del client", @@ -55,7 +34,10 @@ "API key" : "Chiave API", "Global credentials" : "Credenziali globali", "Log-in credentials, save in database" : "Credenziali di accesso, salva nel database", + "Login and password" : "Login e password", "Log-in credentials, save in session" : "Credenziali di accesso, salva nella sessione", + "Global credentials, manually entered" : "Credenziali globali, inserite manualmente", + "Manually entered, store in database" : "Inserite manualmente, salva nel database", "RSA public key" : "Chiave pubblica RSA", "Public key" : "Chiave pubblica", "RSA private key" : "Chiave privata RSA", @@ -72,6 +54,8 @@ "Enable SSL" : "Abilita SSL", "Enable Path Style" : "Abilita stile percorsi", "Legacy (v2) authentication" : "Autenticazione tradizionale (v2)", + "Enable multipart copy" : "Attiva copia multiparte", + "SSE-C encryption key" : "Chiave di crittografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Sottocartella remota", @@ -91,8 +75,10 @@ "Case sensitive file system" : "File system case sensitive", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Disattivandolo, sarà possibile usare un file system non sensibile alle maiuscole, ma comporta una riduzione di prestazioni", "Verify ACL access when listing files" : "Verifica le ACL di accesso quando elenchi i file", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'account non ha permessi di lettura, implica una riduzione di prestazioni", "Timeout" : "Tempo scaduto", "SMB/CIFS using OC login" : "SMB/CIFS utilizzando le credenziali OC", + "Login as share" : "Accedi come condivisione", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome servizio", "Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)", @@ -102,9 +88,18 @@ "External storage" : "Archiviazione esterna", "External storage support" : "Supporto archiviazioni esterne", "Adds basic external storage support" : "Aggiunge un supporto di base per archiviazioni esterne", - "Enter missing credentials" : "Digita le credenziali mancanti", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a provider di archiviazione esterni, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro ancora. L'amministrazione può scegliere quali tipi di archiviazione abilitare e montare queste posizioni di archiviazione per un account, un gruppo o l'intero sistema. Gli utenti vedranno apparire una nuova cartella nella loro directory principale di Nextcloud, a cui potranno accedere e utilizzare come qualsiasi altra cartella Nextcloud. L'archiviazione esterna consente inoltre alle persone di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file vengono utilizzate quando il destinatario richiede il file da un archivio esterno, garantendo così che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando la GUI o dalla riga di comando. Questa seconda opzione offre all'amministrazione maggiore flessibilità per la configurazione dei montaggi di archiviazione esterni in blocco e l'impostazione delle priorità di montaggio. Ulteriori informazioni sono disponibili nella documentazione della GUI dell'archiviazione esterna e nella documentazione del file di configurazione dell'archiviazione esterna.", + "Confirm" : "Conferma", + "Storage credentials" : "Credenziali dello spazio di archiviazione", + "To access the storage, you need to provide the authentication credentials." : "Per accedere allo spazio di archiviazione è necessario fornire le credenziali di autenticazione.", + "Enter the storage login" : "Inserisci le credenziali dello spazio di archiviazione", + "Enter the storage password" : "Inserisci la password dello spazio di archiviazione", "Unable to update this external storage config. {statusMessage}" : "Impossibile aggiornare questa configurazione di archiviazione esterna. {statusMessage}", "New configuration successfully saved" : "Nuova configurazione salvata correttamente", + "Enter missing credentials" : "Digita le credenziali mancanti", + "Credentials successfully set" : "Credenziali impostate correttamente", + "Error while setting credentials: {error}" : "Errore durante l'impostazione delle credenziali: {error}", + "Checking storage …" : "Controllo spazio di archiviazione…", "There was an error with this external storage." : "Si è verificato un errore con questa archiviazione esterna.", "We were unable to check the external storage {basename}" : "Non è stato possibile controllare l'archiviazione esterna {basename}", "Examine this faulty external storage configuration" : "Esamina questa configurazione errata di archiviazione esterna", @@ -120,40 +115,42 @@ "Scope" : "Ambito", "Personal" : "Personale", "System" : "Sistema", + "Type to select account or group." : "Digita per selezionare account o gruppi.", + "(Group)" : "(Gruppo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilità con la codifica Mac NFD (lento)", + "Enable encryption" : "Abilita cifratura", + "Enable previews" : "Abilita le anteprime", + "Enable sharing" : "Abilita condivisione", + "Check for changes" : "Controlla le modifiche", + "Never" : "Mai", + "Once every direct access" : "Una volta per ogni accesso diretto", + "Read only" : "Sola lettura", + "Disconnect" : "Disconnetti", + "Unknown backend: {backendName}" : "Backend sconosciuto: {backendName}", + "Admin defined" : "Definito dall'amministratore", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Il controllo automatico dello stato è disabilitato a causa del numero elevato di archivi configurati, fai clic per controllare lo stato", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Sei sicuro di voler disconnettere questo spazio di archiviazione esterno? Ciò renderà lo spazio di archiviazione non disponibile in Nextcloud e comporterà l'eliminazione di questi file e cartelle su qualsiasi client di sincronizzazione attualmente connesso, ma non eliminerà alcun file e cartella sullo spazio di archiviazione esterno stesso.", + "Delete storage?" : "Vuoi eliminare l'archiviazione?", + "Click to recheck the configuration" : "Clic per controllare di nuovo la configurazione", + "Saved" : "Salvato", + "Saving …" : "Salvataggio…", + "Save" : "Salva", "No external storage configured or you don't have the permission to configure them" : "Nessuna archiviazione esterna configurata o non hai i permessi per configurarle", "Open documentation" : "Apri la documentazione", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere alle persone di montare i propri servizi di archiviazione esterna.", "Folder name" : "Nome della cartella", "Authentication" : "Autenticazione", "Configuration" : "Configurazione", "Available for" : "Disponibile per", - "Click to recheck the configuration" : "Clic per controllare di nuovo la configurazione", "Add storage" : "Aggiungi archiviazione", + "All people" : "Tutte le persone", "Advanced settings" : "Impostazioni avanzate", + "Allow people to mount external storage" : "Consenti alle persone di montare archiviazioni esterne", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Le credenziali globali possono essere utilizzate anche per l'autenticazione con più archiviazioni esterne che hanno le stesse credenziali.", - "Type to select user or group." : "Digita per selezionare utente o gruppo.", - "Empty response from the server" : "Risposta vuota dal server", - "Couldn't access. Please log out and in again to activate this mount point" : "Impossibile accedere. Chiudi la sessione e accedi nuovamente per attivare questo punto di mount", - "Couldn't get the information from the remote server: {code} {type}" : "Impossibile ottenere le informazioni dal server remoto: {code} {tipo}", - "Couldn't get the list of external mount points: {type}" : "Impossibile ottenere l'elenco dei punti di mount esterni: {type}", - "There was an error with message: " : "Si è verificato un errore con il messaggio:", - "external-storage" : "archiviazione-esterna", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Impossibile ottenere l'elenco dei punti di mount delle unità di rete Windows: risposta vuota dal server", - "Please enter the credentials for the {mount} mount" : "Digita le credenziali per montare {mount}", - "Username" : "Nome utente", - "Credentials saved" : "Credenziali salvate", - "Credentials saving failed" : "Salvataggio delle credenziali non riuscito", - "Credentials required" : "Credenziali richieste", - "Storage with ID \"%d\" is not user editable" : "Archiviazione con ID \"%d\" non modificabile dall'utente", - "Username and password" : "Nome utente e password", - "Global credentials, user entered" : "Credenziali globali, inserite dall'utente", - "User entered, store in database" : "Inserite dall'utente, salva nel database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disattivandolo, sarà possibile usare un file system non sensibile alle maiuscole, ma comporta una riduzione di prestazioni", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'utente non ha permessi di lettura, implica una riduzione di prestazioni", - "Username as share" : "Nome utente come condivisione", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Questa applicazione consente agli amministratori di configurare connessioni a fornitori di archiviazione esterna, come server FTP, archivi di oggetti S3 o SWIFT, altri server Nextcloud, server WebDAV e altro. Gli amministratori possono scegliere quale tipo di archiviazione abilitare e possono montare queste posizioni di archiviazione per un utente, un gruppo o per l'intero sistema. Gli utenti vedranno una nuova cartella apparire nella loro cartella radice di Nextcloud, che possono accedere e utilizzare come qualsiasi altra cartella di Nextcloud. L'archiviazione esterna consente anche agli utenti di condividere file archiviati in queste posizioni esterne. In questi casi, le credenziali del proprietario del file sono utilizzate quando il destinatario richiede il file da archiviazione esterna, assicurando in tal modo che il destinatario possa accedere al file condiviso.\n\nL'archiviazione esterna può essere configurata utilizzando l'interfaccia grafica o la riga di comando. Questa seconda opzione fornisce maggiore flessibilità all'utente avanzato per una configurazione massiva dei punti di mount delle archiviazioni esterne e l'impostazione delle priorità dei punti di mount. Altre informazioni sono disponibili nella documentazione dell'interfaccia grafica dell'archiviazione esterna e nella documentazione del file di configurazione delle archiviazioni esterne.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Archiviazioni esterne ti consente di montare servizi di archiviazione esterna e dispositivi come dispositivi di archiviazione secondari di Nextcloud. Puoi anche permettere agli utenti di montare i propri servizi di archiviazione esterna.", - "All users" : "Tutti gli utenti", - "Allow users to mount external storage" : "Consenti agli utenti di montare archiviazioni esterne" + "Error configuring OAuth1" : "Errore di configurazione OAuth1", + "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", + "OAuth1" : "OAuth1", + "App key" : "Chiave applicazione", + "App secret" : "Segreto applicazione" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 1561b73a9b4..ed00130e01f 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "アクセスを許可", - "Error configuring OAuth1" : "OAuth1設定エラー", - "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Error configuring OAuth2" : "OAuth2設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", - "Type to select account or group." : "入力してアカウントまたはグループを選択", - "(Group)" : "(グループ)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", - "Enable encryption" : "暗号化を有効に", - "Enable previews" : "プレビューを有効に", - "Enable sharing" : "共有の有効化", - "Check for changes" : "変更点を確認", - "Never" : "更新無", - "Once every direct access" : "直指定時のみ", - "Read only" : "読み取り専用", - "Disconnect" : "切断", - "Admin defined" : "管理者設定済", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "大量のストレージが設定されているため、ステータスの自動確認は無効になっています。クリックして状態を確認", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "本当にこの外部ストレージを切断しますか?これにより、Nextcloudでストレージが使用できなくなり、現在接続されている同期クライアント上のこれらのファイルとフォルダーが削除されますが、外部ストレージ自体のファイルとフォルダーは削除されません。", - "Delete storage?" : "ストレージを削除しますか?", - "Saved" : "保存しました", - "Saving …" : "保存中...", - "Save" : "保存", + "You are not logged in" : "ログインしていません", + "Permission denied" : "アクセス拒否", "Forbidden to manage local mounts" : "ローカルマウントの利用は禁止されています", "Storage with ID \"%d\" not found" : "ID \"%d\" のストレージが見つかりません", "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", "None" : "なし", - "OAuth1" : "OAuth1", - "App key" : "アプリキー", - "App secret" : "アプリシークレット", "OAuth2" : "OAuth2", "Client ID" : "クライアントID", "Client secret" : "クライアント秘密鍵", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "パス形式を有効", "Legacy (v2) authentication" : "レガシー認証(v2)", "Enable multipart copy" : "マルチパートコピーの有効化", + "SSE-C encryption key" : "SSE-C暗号化キー", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "リモートサブフォルダー", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "外部ストレージに対応", "Adds basic external storage support" : "基本的な外部ストレージの対応を追加", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "このアプリケーションは、管理者がFTPサーバー、S3またはSWIFTオブジェクトストア、他のNextcloudサーバー、WebDAVサーバーなどの外部ストレージプロバイダーへの接続を設定できるようにします。管理者は、有効にするストレージの種類を選択し、これらのストレージの場所をアカウント、グループ、またはシステム全体にマウントできます。ユーザーは、ルートNextcloudディレクトリに新しいフォルダが表示され、他のNextcloudフォルダと同様にアクセスして使用できます。外部ストレージを使用すると、これらの外部位置に保存されているファイルを共有することもできます。これらの場合、受信者が外部ストレージからファイルをリクエストするときに、ファイルの所有者の資格情報が使用され、受信者が共有されたファイルにアクセスできることが保証されます。\n\n外部ストレージはGUIまたはコマンドラインを使用して設定できます。この第二のオプションでは、管理者は大量の外部ストレージのマウントやマウントの優先順位の設定を柔軟に行うことができます。外部ストレージのGUIドキュメントと外部ストレージの構成ファイルのドキュメントには、詳細な情報が記載されています。", - "Enter missing credentials" : "不足している資格情報を入力", + "Confirm" : "承認", + "Storage credentials" : "ストレージ資格情報", + "To access the storage, you need to provide the authentication credentials." : "ストレージにアクセスするには、認証情報を提供する必要があります。", + "Enter the storage login" : "ストレージのログインを入力してください", + "Enter the storage password" : "ストレージのパスワードを入力してください", "Unable to update this external storage config. {statusMessage}" : "この外部ストレージ設定を更新できません。 {statusMessage}", "New configuration successfully saved" : "新しい設定が正常に保存されました", + "Enter missing credentials" : "不足している資格情報を入力", + "Credentials successfully set" : "認証情報は正常に設定されました", + "Error while setting credentials: {error}" : "認証情報の設定中にエラーが発生しました: {error}", + "Checking storage …" : "ストレージのチェック...", "There was an error with this external storage." : "この外部ストレージでエラーが発生しました。", "We were unable to check the external storage {basename}" : "外部ストレージ {basename} をチェックできませんでした。", "Examine this faulty external storage configuration" : "この問題のある外部ストレージの設定を調べる", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "スコープ", "Personal" : "個人", "System" : "システム", + "Type to select account or group." : "入力してアカウントまたはグループを選択", + "(Group)" : "(グループ)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", + "Enable encryption" : "暗号化を有効に", + "Enable previews" : "プレビューを有効に", + "Enable sharing" : "共有の有効化", + "Check for changes" : "変更点を確認", + "Never" : "更新無", + "Once every direct access" : "直指定時のみ", + "Read only" : "読み取り専用", + "Disconnect" : "切断", + "Unknown backend: {backendName}" : "不明なバックエンド: {backendName}", + "Admin defined" : "管理者設定済", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "大量のストレージが設定されているため、ステータスの自動確認は無効になっています。クリックして状態を確認", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "本当にこの外部ストレージを切断しますか?これにより、Nextcloudでストレージが使用できなくなり、現在接続されている同期クライアント上のこれらのファイルとフォルダーが削除されますが、外部ストレージ自体のファイルとフォルダーは削除されません。", + "Delete storage?" : "ストレージを削除しますか?", + "Click to recheck the configuration" : "クリックすると設定が再確認されます", + "Saved" : "保存しました", + "Saving …" : "保存中...", + "Save" : "保存", + "Failed to save global credentials" : "グローバル認証情報の保存に失敗しました", + "Failed to save global credentials: {message}" : "グローバル認証情報の保存に失敗しました: {message}", "No external storage configured or you don't have the permission to configure them" : "外部ストレージが設定されていないか、外部ストレージを設定する権限がありません", "Open documentation" : "ドキュメントを開く", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部ストレージを使用すると、外部ストレージサービスおよびデバイスをセカンダリのNextcloudストレージデバイスとしてマウントできます。 また、ユーザーが独自の外部ストレージサービスをマウントできるようにすることもできます。", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "認証", "Configuration" : "設定", "Available for" : "利用可能", - "Click to recheck the configuration" : "クリックすると設定が再確認されます", "Add storage" : "ストレージを追加", "All people" : "すべての人", "Advanced settings" : "詳細設定", "Allow people to mount external storage" : "ユーザーに外部ストレージの接続を許可する", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "グローバル資格情報を使用して、同じ資格情報を持つ複数の外部記憶装置で認証することができます。", - "Type to select user or group." : "入力してユーザーまたはグループを選択", - "Empty response from the server" : "サーバーから空の応答がありました", - "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", - "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得できませんでした。: {type}", - "There was an error with message: " : "メッセージ付きのエラーが発生しました:", - "external-storage" : "外部ストレージ", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", - "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", - "Username" : "ユーザー名", - "Credentials saved" : "資格情報を保存しました", - "Credentials saving failed" : "資格情報の保存に失敗しました", - "Credentials required" : "資格情報が必要です", - "Storage with ID \"%d\" is not user editable" : "ID \"%d\" のストレージはユーザーが編集できません", - "Username and password" : "ユーザー名とパスワード", - "Global credentials, user entered" : "ユーザー入力のグローバル資格情報", - "User entered, store in database" : "入力されたユーザーデータは、データベースに保管します", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "これを無効にすると、大文字と小文字を区別しないファイルシステムを使用できるようになりますが、パフォーマンス上のペナルティが発生します。", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "ディレクトリ内の各ファイルまたはフォルダーのACLをチェックして、ユーザーが読み取り権限を持たないアイテムを除外すると、パフォーマンスが低下します", - "Username as share" : "共有名", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "このアプリケーションを使用すると、管理者は、FTPサーバー、S3またはSWIFTオブジェクトストア、その他のNextcloudサーバー、WebDAVサーバーなどの外部ストレージプロバイダーへの接続を構成できます。管理者は、有効にするストレージの種類を選択し、ユーザー、グループ、またはシステム全体でこれらのストレージの場所をマウントできます。ユーザーはルートのNextcloudディレクトリに新しいフォルダーが表示され、他のNextcloudフォルダーと同様にアクセスして使用できます。外部ストレージを使用すると、ユーザーはこれらの外部ロケーションに格納されたファイルを共有することもできます。このような場合、受信者が外部ストレージからファイルを要求すると、ファイルの所有者の資格情報が使用され、受信者が共有ファイルにアクセスできるようになります。外部ストレージは、GUIまたはコマンドラインを使用して構成できます。この2番目のオプションは、高度なユーザーにバルク外部ストレージマウントの設定とマウント優先度の設定の柔軟性を提供します。詳細については、外部ストレージGUIのマニュアルと外部ストレージConfiguration Fileのマニュアルを参照してください。", - "Name" : "名前", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部ストレージを使用すると、外部ストレージサービスおよびデバイスをセカンダリのNextcloudストレージデバイスとしてマウントできます。 また、ユーザーが独自の外部ストレージサービスをマウントできるようにすることもできます。", - "All users" : "すべてのユーザー", - "Allow users to mount external storage" : "ユーザーに外部ストレージの接続を許可する" + "Error configuring OAuth1" : "OAuth1設定エラー", + "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", + "OAuth1" : "OAuth1", + "App key" : "アプリキー", + "App secret" : "アプリシークレット" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index 9099588e88c..510898a7f6a 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "アクセスを許可", - "Error configuring OAuth1" : "OAuth1設定エラー", - "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Error configuring OAuth2" : "OAuth2設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", - "Type to select account or group." : "入力してアカウントまたはグループを選択", - "(Group)" : "(グループ)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", - "Enable encryption" : "暗号化を有効に", - "Enable previews" : "プレビューを有効に", - "Enable sharing" : "共有の有効化", - "Check for changes" : "変更点を確認", - "Never" : "更新無", - "Once every direct access" : "直指定時のみ", - "Read only" : "読み取り専用", - "Disconnect" : "切断", - "Admin defined" : "管理者設定済", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "大量のストレージが設定されているため、ステータスの自動確認は無効になっています。クリックして状態を確認", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "本当にこの外部ストレージを切断しますか?これにより、Nextcloudでストレージが使用できなくなり、現在接続されている同期クライアント上のこれらのファイルとフォルダーが削除されますが、外部ストレージ自体のファイルとフォルダーは削除されません。", - "Delete storage?" : "ストレージを削除しますか?", - "Saved" : "保存しました", - "Saving …" : "保存中...", - "Save" : "保存", + "You are not logged in" : "ログインしていません", + "Permission denied" : "アクセス拒否", "Forbidden to manage local mounts" : "ローカルマウントの利用は禁止されています", "Storage with ID \"%d\" not found" : "ID \"%d\" のストレージが見つかりません", "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", @@ -40,9 +22,6 @@ "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", "None" : "なし", - "OAuth1" : "OAuth1", - "App key" : "アプリキー", - "App secret" : "アプリシークレット", "OAuth2" : "OAuth2", "Client ID" : "クライアントID", "Client secret" : "クライアント秘密鍵", @@ -78,6 +57,7 @@ "Enable Path Style" : "パス形式を有効", "Legacy (v2) authentication" : "レガシー認証(v2)", "Enable multipart copy" : "マルチパートコピーの有効化", + "SSE-C encryption key" : "SSE-C暗号化キー", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "リモートサブフォルダー", @@ -111,9 +91,17 @@ "External storage support" : "外部ストレージに対応", "Adds basic external storage support" : "基本的な外部ストレージの対応を追加", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "このアプリケーションは、管理者がFTPサーバー、S3またはSWIFTオブジェクトストア、他のNextcloudサーバー、WebDAVサーバーなどの外部ストレージプロバイダーへの接続を設定できるようにします。管理者は、有効にするストレージの種類を選択し、これらのストレージの場所をアカウント、グループ、またはシステム全体にマウントできます。ユーザーは、ルートNextcloudディレクトリに新しいフォルダが表示され、他のNextcloudフォルダと同様にアクセスして使用できます。外部ストレージを使用すると、これらの外部位置に保存されているファイルを共有することもできます。これらの場合、受信者が外部ストレージからファイルをリクエストするときに、ファイルの所有者の資格情報が使用され、受信者が共有されたファイルにアクセスできることが保証されます。\n\n外部ストレージはGUIまたはコマンドラインを使用して設定できます。この第二のオプションでは、管理者は大量の外部ストレージのマウントやマウントの優先順位の設定を柔軟に行うことができます。外部ストレージのGUIドキュメントと外部ストレージの構成ファイルのドキュメントには、詳細な情報が記載されています。", - "Enter missing credentials" : "不足している資格情報を入力", + "Confirm" : "承認", + "Storage credentials" : "ストレージ資格情報", + "To access the storage, you need to provide the authentication credentials." : "ストレージにアクセスするには、認証情報を提供する必要があります。", + "Enter the storage login" : "ストレージのログインを入力してください", + "Enter the storage password" : "ストレージのパスワードを入力してください", "Unable to update this external storage config. {statusMessage}" : "この外部ストレージ設定を更新できません。 {statusMessage}", "New configuration successfully saved" : "新しい設定が正常に保存されました", + "Enter missing credentials" : "不足している資格情報を入力", + "Credentials successfully set" : "認証情報は正常に設定されました", + "Error while setting credentials: {error}" : "認証情報の設定中にエラーが発生しました: {error}", + "Checking storage …" : "ストレージのチェック...", "There was an error with this external storage." : "この外部ストレージでエラーが発生しました。", "We were unable to check the external storage {basename}" : "外部ストレージ {basename} をチェックできませんでした。", "Examine this faulty external storage configuration" : "この問題のある外部ストレージの設定を調べる", @@ -129,6 +117,28 @@ "Scope" : "スコープ", "Personal" : "個人", "System" : "システム", + "Type to select account or group." : "入力してアカウントまたはグループを選択", + "(Group)" : "(グループ)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD エンコード互換 (遅い)", + "Enable encryption" : "暗号化を有効に", + "Enable previews" : "プレビューを有効に", + "Enable sharing" : "共有の有効化", + "Check for changes" : "変更点を確認", + "Never" : "更新無", + "Once every direct access" : "直指定時のみ", + "Read only" : "読み取り専用", + "Disconnect" : "切断", + "Unknown backend: {backendName}" : "不明なバックエンド: {backendName}", + "Admin defined" : "管理者設定済", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "大量のストレージが設定されているため、ステータスの自動確認は無効になっています。クリックして状態を確認", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "本当にこの外部ストレージを切断しますか?これにより、Nextcloudでストレージが使用できなくなり、現在接続されている同期クライアント上のこれらのファイルとフォルダーが削除されますが、外部ストレージ自体のファイルとフォルダーは削除されません。", + "Delete storage?" : "ストレージを削除しますか?", + "Click to recheck the configuration" : "クリックすると設定が再確認されます", + "Saved" : "保存しました", + "Saving …" : "保存中...", + "Save" : "保存", + "Failed to save global credentials" : "グローバル認証情報の保存に失敗しました", + "Failed to save global credentials: {message}" : "グローバル認証情報の保存に失敗しました: {message}", "No external storage configured or you don't have the permission to configure them" : "外部ストレージが設定されていないか、外部ストレージを設定する権限がありません", "Open documentation" : "ドキュメントを開く", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部ストレージを使用すると、外部ストレージサービスおよびデバイスをセカンダリのNextcloudストレージデバイスとしてマウントできます。 また、ユーザーが独自の外部ストレージサービスをマウントできるようにすることもできます。", @@ -136,36 +146,15 @@ "Authentication" : "認証", "Configuration" : "設定", "Available for" : "利用可能", - "Click to recheck the configuration" : "クリックすると設定が再確認されます", "Add storage" : "ストレージを追加", "All people" : "すべての人", "Advanced settings" : "詳細設定", "Allow people to mount external storage" : "ユーザーに外部ストレージの接続を許可する", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "グローバル資格情報を使用して、同じ資格情報を持つ複数の外部記憶装置で認証することができます。", - "Type to select user or group." : "入力してユーザーまたはグループを選択", - "Empty response from the server" : "サーバーから空の応答がありました", - "Couldn't access. Please log out and in again to activate this mount point" : "アクセスできません。ログアウトして、再度このマウントポイントをアクティベートしてください。", - "Couldn't get the information from the remote server: {code} {type}" : "リモートサーバーから情報を取得できませんでした:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "外部マウントポイントのリストを取得できませんでした。: {type}", - "There was an error with message: " : "メッセージ付きのエラーが発生しました:", - "external-storage" : "外部ストレージ", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windowsネットワークドライブのマウントポイントのリストが取得できませんでした: サーバーからのレスポンスは空でした。", - "Please enter the credentials for the {mount} mount" : " {mount} のマウントのために必要な資格情報を入力してください", - "Username" : "ユーザー名", - "Credentials saved" : "資格情報を保存しました", - "Credentials saving failed" : "資格情報の保存に失敗しました", - "Credentials required" : "資格情報が必要です", - "Storage with ID \"%d\" is not user editable" : "ID \"%d\" のストレージはユーザーが編集できません", - "Username and password" : "ユーザー名とパスワード", - "Global credentials, user entered" : "ユーザー入力のグローバル資格情報", - "User entered, store in database" : "入力されたユーザーデータは、データベースに保管します", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "これを無効にすると、大文字と小文字を区別しないファイルシステムを使用できるようになりますが、パフォーマンス上のペナルティが発生します。", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "ディレクトリ内の各ファイルまたはフォルダーのACLをチェックして、ユーザーが読み取り権限を持たないアイテムを除外すると、パフォーマンスが低下します", - "Username as share" : "共有名", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "このアプリケーションを使用すると、管理者は、FTPサーバー、S3またはSWIFTオブジェクトストア、その他のNextcloudサーバー、WebDAVサーバーなどの外部ストレージプロバイダーへの接続を構成できます。管理者は、有効にするストレージの種類を選択し、ユーザー、グループ、またはシステム全体でこれらのストレージの場所をマウントできます。ユーザーはルートのNextcloudディレクトリに新しいフォルダーが表示され、他のNextcloudフォルダーと同様にアクセスして使用できます。外部ストレージを使用すると、ユーザーはこれらの外部ロケーションに格納されたファイルを共有することもできます。このような場合、受信者が外部ストレージからファイルを要求すると、ファイルの所有者の資格情報が使用され、受信者が共有ファイルにアクセスできるようになります。外部ストレージは、GUIまたはコマンドラインを使用して構成できます。この2番目のオプションは、高度なユーザーにバルク外部ストレージマウントの設定とマウント優先度の設定の柔軟性を提供します。詳細については、外部ストレージGUIのマニュアルと外部ストレージConfiguration Fileのマニュアルを参照してください。", - "Name" : "名前", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部ストレージを使用すると、外部ストレージサービスおよびデバイスをセカンダリのNextcloudストレージデバイスとしてマウントできます。 また、ユーザーが独自の外部ストレージサービスをマウントできるようにすることもできます。", - "All users" : "すべてのユーザー", - "Allow users to mount external storage" : "ユーザーに外部ストレージの接続を許可する" + "Error configuring OAuth1" : "OAuth1設定エラー", + "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", + "OAuth1" : "OAuth1", + "App key" : "アプリキー", + "App secret" : "アプリシークレット" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ka.js b/apps/files_external/l10n/ka.js index 76ef40fe525..eea61ff5b90 100644 --- a/apps/files_external/l10n/ka.js +++ b/apps/files_external/l10n/ka.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Grant access", - "Error configuring OAuth1" : "Error configuring OAuth1", - "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Error configuring OAuth2" : "Error configuring OAuth2", "Generate keys" : "Generate keys", "Error generating key pair" : "Error generating key pair", - "(Group)" : "(Group)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", - "Enable encryption" : "Enable encryption", - "Enable previews" : "Enable previews", - "Enable sharing" : "Enable sharing", - "Check for changes" : "Check for changes", - "Never" : "Never", - "Once every direct access" : "Once every direct access", - "Read only" : "Read only", - "Disconnect" : "Disconnect", - "Admin defined" : "Admin defined", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "Delete storage?", - "Saved" : "Saved", - "Saving …" : "Saving …", - "Save" : "Save", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "Storage with ID \"%d\" not found", "Invalid backend or authentication mechanism class" : "Invalid backend or authentication mechanism class", @@ -40,9 +21,6 @@ OC.L10N.register( "Secret key" : "Secret key", "Builtin" : "Builtin", "None" : "None", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -104,9 +82,10 @@ OC.L10N.register( "External storage" : "External storage", "External storage support" : "External storage support", "Adds basic external storage support" : "Adds basic external storage support", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "Confirm", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -122,40 +101,37 @@ OC.L10N.register( "Scope" : "Scope", "Personal" : "Personal", "System" : "System", + "(Group)" : "(Group)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", + "Enable encryption" : "Enable encryption", + "Enable previews" : "Enable previews", + "Enable sharing" : "Enable sharing", + "Check for changes" : "Check for changes", + "Never" : "Never", + "Once every direct access" : "Once every direct access", + "Read only" : "Read only", + "Disconnect" : "Disconnect", + "Admin defined" : "Admin defined", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "Delete storage?", + "Click to recheck the configuration" : "Click to recheck the configuration", + "Saved" : "Saved", + "Saving …" : "Saving …", + "Save" : "Save", "No external storage configured or you don't have the permission to configure them" : "No external storage configured or you don't have the permission to configure them", "Open documentation" : "Open documentation", "Folder name" : "Folder name", "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", - "Click to recheck the configuration" : "Click to recheck the configuration", "Add storage" : "Add storage", "Advanced settings" : "Advanced settings", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Global credentials can be used to authenticate with multiple external storages that have the same credentials.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", - "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", - "There was an error with message: " : "There was an error with message: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", - "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", - "Username" : "Username", - "Credentials saved" : "Credentials saved", - "Credentials saving failed" : "Credentials saving failed", - "Credentials required" : "Credentials required", - "Storage with ID \"%d\" is not user editable" : "Storage with ID \"%d\" is not user editable", - "Username and password" : "Username and password", - "Global credentials, user entered" : "Global credentials, user entered", - "User entered, store in database" : "User entered, store in database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disabling it will allow to use a case insentive file system, but comes with a performance penalty", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "Username as share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services.", - "All users" : "All users", - "Allow users to mount external storage" : "Allow users to mount external storage" + "Error configuring OAuth1" : "Error configuring OAuth1", + "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/files_external/l10n/ka.json b/apps/files_external/l10n/ka.json index d9418c22449..fa67a3974e4 100644 --- a/apps/files_external/l10n/ka.json +++ b/apps/files_external/l10n/ka.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Grant access", - "Error configuring OAuth1" : "Error configuring OAuth1", - "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Error configuring OAuth2" : "Error configuring OAuth2", "Generate keys" : "Generate keys", "Error generating key pair" : "Error generating key pair", - "(Group)" : "(Group)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", - "Enable encryption" : "Enable encryption", - "Enable previews" : "Enable previews", - "Enable sharing" : "Enable sharing", - "Check for changes" : "Check for changes", - "Never" : "Never", - "Once every direct access" : "Once every direct access", - "Read only" : "Read only", - "Disconnect" : "Disconnect", - "Admin defined" : "Admin defined", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", - "Delete storage?" : "Delete storage?", - "Saved" : "Saved", - "Saving …" : "Saving …", - "Save" : "Save", "Forbidden to manage local mounts" : "Forbidden to manage local mounts", "Storage with ID \"%d\" not found" : "Storage with ID \"%d\" not found", "Invalid backend or authentication mechanism class" : "Invalid backend or authentication mechanism class", @@ -38,9 +19,6 @@ "Secret key" : "Secret key", "Builtin" : "Builtin", "None" : "None", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -102,9 +80,10 @@ "External storage" : "External storage", "External storage support" : "External storage support", "Adds basic external storage support" : "Adds basic external storage support", - "Enter missing credentials" : "Enter missing credentials", + "Confirm" : "Confirm", "Unable to update this external storage config. {statusMessage}" : "Unable to update this external storage config. {statusMessage}", "New configuration successfully saved" : "New configuration successfully saved", + "Enter missing credentials" : "Enter missing credentials", "There was an error with this external storage." : "There was an error with this external storage.", "We were unable to check the external storage {basename}" : "We were unable to check the external storage {basename}", "Examine this faulty external storage configuration" : "Examine this faulty external storage configuration", @@ -120,40 +99,37 @@ "Scope" : "Scope", "Personal" : "Personal", "System" : "System", + "(Group)" : "(Group)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibility with Mac NFD encoding (slow)", + "Enable encryption" : "Enable encryption", + "Enable previews" : "Enable previews", + "Enable sharing" : "Enable sharing", + "Check for changes" : "Check for changes", + "Never" : "Never", + "Once every direct access" : "Once every direct access", + "Read only" : "Read only", + "Disconnect" : "Disconnect", + "Admin defined" : "Admin defined", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatic status checking is disabled due to the large number of configured storages, click to check status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.", + "Delete storage?" : "Delete storage?", + "Click to recheck the configuration" : "Click to recheck the configuration", + "Saved" : "Saved", + "Saving …" : "Saving …", + "Save" : "Save", "No external storage configured or you don't have the permission to configure them" : "No external storage configured or you don't have the permission to configure them", "Open documentation" : "Open documentation", "Folder name" : "Folder name", "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", - "Click to recheck the configuration" : "Click to recheck the configuration", "Add storage" : "Add storage", "Advanced settings" : "Advanced settings", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Global credentials can be used to authenticate with multiple external storages that have the same credentials.", - "Type to select user or group." : "Type to select user or group.", - "Empty response from the server" : "Empty response from the server", - "Couldn't access. Please log out and in again to activate this mount point" : "Couldn't access. Please log out and in again to activate this mount point", - "Couldn't get the information from the remote server: {code} {type}" : "Couldn't get the information from the remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Couldn't get the list of external mount points: {type}", - "There was an error with message: " : "There was an error with message: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Couldn't fetch list of Windows network drive mount points: Empty response from server", - "Please enter the credentials for the {mount} mount" : "Please enter the credentials for the {mount} mount", - "Username" : "Username", - "Credentials saved" : "Credentials saved", - "Credentials saving failed" : "Credentials saving failed", - "Credentials required" : "Credentials required", - "Storage with ID \"%d\" is not user editable" : "Storage with ID \"%d\" is not user editable", - "Username and password" : "Username and password", - "Global credentials, user entered" : "Global credentials, user entered", - "User entered, store in database" : "User entered, store in database", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Disabling it will allow to use a case insentive file system, but comes with a performance penalty", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty", - "Username as share" : "Username as share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation.", - "Name" : "Name", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services.", - "All users" : "All users", - "Allow users to mount external storage" : "Allow users to mount external storage" + "Error configuring OAuth1" : "Error configuring OAuth1", + "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ka_GE.js b/apps/files_external/l10n/ka_GE.js index 00c5e40c952..d6371711106 100644 --- a/apps/files_external/l10n/ka_GE.js +++ b/apps/files_external/l10n/ka_GE.js @@ -2,24 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "წვდომის მინიჭება", - "Error configuring OAuth1" : "OAuth1-ის კონფიგურირებისას წარმოიშვა შეცდომა", - "Please provide a valid app key and secret." : "გთხოვთ უზრუნველყოთ სწორი აპლიკაციის გასაღები და საიდუმლო.", "Error configuring OAuth2" : "OAuth2-ის კონფიგურირებისას წარმოიშვა შეცდომა", "Generate keys" : "გასაღებების გენერირება", "Error generating key pair" : "გასაღების წყვილის გენერირებისას წარმოიშვა შეცდომა", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)", - "Enable encryption" : "შიფრაციის ამოქმედება", - "Enable previews" : "პრევიუების ამოქმედება", - "Enable sharing" : "გაზიარების ამოქმედება", - "Check for changes" : "ცვლილებების შემოწმება", - "Never" : "არასდროს", - "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას", - "Read only" : "მხოლოდ-კითხვადი", - "Disconnect" : "კავშირის გაწყვეტა", - "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ", - "Delete storage?" : "გავაუქმოთ საცავი?", - "Saved" : "შენახულია", - "Save" : "შენახვა", "Storage with ID \"%d\" not found" : "საცავი ID-ით \"%d\" ვერ იქნა ნაპოვნი", "Invalid backend or authentication mechanism class" : "არასწორი ბექენდი ან აუტენტიფიკაციის მექანიზმის კლასი", "Invalid mount point" : "არასწორი მონტაჟის წერტილი", @@ -35,9 +20,6 @@ OC.L10N.register( "Secret key" : "საიდუმლო გასაღები", "Builtin" : "ჩაშენებული", "None" : "არც ერთი", - "OAuth1" : "OAuth1", - "App key" : "აპლიკაციის გასაღები", - "App secret" : "აპლიკაციის საიდუმლო", "OAuth2" : "OAuth2", "Client ID" : "კლიენტის ID", "Client secret" : "კლიენტის საიდუმლო", @@ -86,38 +68,39 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-ს მხარდაჭერა PHP-ში არაა მოქმედი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.", "External storage" : "ექსტერნალური საცავი", "External storage support" : "გარე საცავის მხარდაჭერა", + "Confirm" : "დადასტურება", "External mount error" : "გარე მონტაჟის შეცდომა", "Storage type" : "საცავის სახეობა", "Unknown" : "უცნობია", "Scope" : "ფარგლები", "Personal" : "პირადი", "System" : "სისტემა", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)", + "Enable encryption" : "შიფრაციის ამოქმედება", + "Enable previews" : "პრევიუების ამოქმედება", + "Enable sharing" : "გაზიარების ამოქმედება", + "Check for changes" : "ცვლილებების შემოწმება", + "Never" : "არასდროს", + "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას", + "Read only" : "მხოლოდ-კითხვადი", + "Disconnect" : "კავშირის გაწყვეტა", + "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ", + "Delete storage?" : "გავაუქმოთ საცავი?", + "Click to recheck the configuration" : "დააწკაპუნეთ კონფიგურაციის ხელახალი შემოწმებისთვის", + "Saved" : "შენახულია", + "Save" : "შენახვა", "No external storage configured or you don't have the permission to configure them" : "გარე საცავი არაა კონფიგურირებული, ან არ გაქვთ უფლება გაუწიოთ მას კონფიგურაცია", "Open documentation" : "ღია დოკუმენტაცია", "Folder name" : "დირექტორიის სახელი", "Authentication" : "აუტენტიფიკაცია", "Configuration" : "კონფიგურაცია", "Available for" : "ხელმისაწვდომია რომ", - "Click to recheck the configuration" : "დააწკაპუნეთ კონფიგურაციის ხელახალი შემოწმებისთვის", "Add storage" : "საცავის დამატება", "Advanced settings" : "დამატებითი პარამეტრები", - "Empty response from the server" : "სერვერმა დააბრუნა ცარიელი პასუხი", - "Couldn't access. Please log out and in again to activate this mount point" : "წვდომა ვერ მოხერხდა. ამ მონტაჟის წერტილის გასააქტიურებლად გთხოვთ გახვიდეთ და ახლიდან გაიაროთ ავტორიზაცია.", - "Couldn't get the information from the remote server: {code} {type}" : "დისტანციური სერვერიდან ინფორმაციის მოპოვება ვერ მოხერხდა: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "გარე მონტაჟის წერტილების სიის მოპოვება ვერ მოხერხდა: {type}", - "There was an error with message: " : "წარმოიშვა შეცდომა წერილით:", - "external-storage" : "გარე-საცავი", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows-ის ქსელის დრაივის მონტაჯის წერტილების სიის მოპოვება ვერ მოხერხდა: ცარიელი პასუხი სერვერიდან", - "Please enter the credentials for the {mount} mount" : "გთხოვთ {mount} მონტაჟისთვის შეიყვანოთ მონაცემები", - "Username" : "მომხმარებლის სახელი", - "Credentials saved" : "მონაცემები შენახულია", - "Credentials saving failed" : "მონაცემების შენახვა ვერ მოხერხდა", - "Credentials required" : "მონაცემები საჭიროა", - "Storage with ID \"%d\" is not user editable" : "საცავი ID-ით \"%d\" არაა მომხმარებლისთვის შეცვლადი", - "Username and password" : "მომხმარებელი და პაროლი", - "User entered, store in database" : "შეყვანილი მომხმარებელი, შენახვა მონაცემთა ბაზაში", - "Username as share" : "მომხმარებლის სახელი გაზიარებად", - "Name" : "სახელი", - "Allow users to mount external storage" : "მივცეთ მომხმარებლებს გარე საცავის მონტაჟის უფლება" + "Error configuring OAuth1" : "OAuth1-ის კონფიგურირებისას წარმოიშვა შეცდომა", + "Please provide a valid app key and secret." : "გთხოვთ უზრუნველყოთ სწორი აპლიკაციის გასაღები და საიდუმლო.", + "OAuth1" : "OAuth1", + "App key" : "აპლიკაციის გასაღები", + "App secret" : "აპლიკაციის საიდუმლო" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/files_external/l10n/ka_GE.json b/apps/files_external/l10n/ka_GE.json index fecc048c444..32740ba5e28 100644 --- a/apps/files_external/l10n/ka_GE.json +++ b/apps/files_external/l10n/ka_GE.json @@ -1,23 +1,8 @@ { "translations": { "Grant access" : "წვდომის მინიჭება", - "Error configuring OAuth1" : "OAuth1-ის კონფიგურირებისას წარმოიშვა შეცდომა", - "Please provide a valid app key and secret." : "გთხოვთ უზრუნველყოთ სწორი აპლიკაციის გასაღები და საიდუმლო.", "Error configuring OAuth2" : "OAuth2-ის კონფიგურირებისას წარმოიშვა შეცდომა", "Generate keys" : "გასაღებების გენერირება", "Error generating key pair" : "გასაღების წყვილის გენერირებისას წარმოიშვა შეცდომა", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)", - "Enable encryption" : "შიფრაციის ამოქმედება", - "Enable previews" : "პრევიუების ამოქმედება", - "Enable sharing" : "გაზიარების ამოქმედება", - "Check for changes" : "ცვლილებების შემოწმება", - "Never" : "არასდროს", - "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას", - "Read only" : "მხოლოდ-კითხვადი", - "Disconnect" : "კავშირის გაწყვეტა", - "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ", - "Delete storage?" : "გავაუქმოთ საცავი?", - "Saved" : "შენახულია", - "Save" : "შენახვა", "Storage with ID \"%d\" not found" : "საცავი ID-ით \"%d\" ვერ იქნა ნაპოვნი", "Invalid backend or authentication mechanism class" : "არასწორი ბექენდი ან აუტენტიფიკაციის მექანიზმის კლასი", "Invalid mount point" : "არასწორი მონტაჟის წერტილი", @@ -33,9 +18,6 @@ "Secret key" : "საიდუმლო გასაღები", "Builtin" : "ჩაშენებული", "None" : "არც ერთი", - "OAuth1" : "OAuth1", - "App key" : "აპლიკაციის გასაღები", - "App secret" : "აპლიკაციის საიდუმლო", "OAuth2" : "OAuth2", "Client ID" : "კლიენტის ID", "Client secret" : "კლიენტის საიდუმლო", @@ -84,38 +66,39 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-ს მხარდაჭერა PHP-ში არაა მოქმედი ან დაყენებული. %s-ის მონტაჟი ვერ ხერხდება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს მისი დაყენება.", "External storage" : "ექსტერნალური საცავი", "External storage support" : "გარე საცავის მხარდაჭერა", + "Confirm" : "დადასტურება", "External mount error" : "გარე მონტაჟის შეცდომა", "Storage type" : "საცავის სახეობა", "Unknown" : "უცნობია", "Scope" : "ფარგლები", "Personal" : "პირადი", "System" : "სისტემა", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD-სთან თავსებადობა (ნელი)", + "Enable encryption" : "შიფრაციის ამოქმედება", + "Enable previews" : "პრევიუების ამოქმედება", + "Enable sharing" : "გაზიარების ამოქმედება", + "Check for changes" : "ცვლილებების შემოწმება", + "Never" : "არასდროს", + "Once every direct access" : "ყოველთვის პირდაპირი წვდომისას", + "Read only" : "მხოლოდ-კითხვადი", + "Disconnect" : "კავშირის გაწყვეტა", + "Admin defined" : "განსაზღვრულია ადმინისტრატორის მიერ", + "Delete storage?" : "გავაუქმოთ საცავი?", + "Click to recheck the configuration" : "დააწკაპუნეთ კონფიგურაციის ხელახალი შემოწმებისთვის", + "Saved" : "შენახულია", + "Save" : "შენახვა", "No external storage configured or you don't have the permission to configure them" : "გარე საცავი არაა კონფიგურირებული, ან არ გაქვთ უფლება გაუწიოთ მას კონფიგურაცია", "Open documentation" : "ღია დოკუმენტაცია", "Folder name" : "დირექტორიის სახელი", "Authentication" : "აუტენტიფიკაცია", "Configuration" : "კონფიგურაცია", "Available for" : "ხელმისაწვდომია რომ", - "Click to recheck the configuration" : "დააწკაპუნეთ კონფიგურაციის ხელახალი შემოწმებისთვის", "Add storage" : "საცავის დამატება", "Advanced settings" : "დამატებითი პარამეტრები", - "Empty response from the server" : "სერვერმა დააბრუნა ცარიელი პასუხი", - "Couldn't access. Please log out and in again to activate this mount point" : "წვდომა ვერ მოხერხდა. ამ მონტაჟის წერტილის გასააქტიურებლად გთხოვთ გახვიდეთ და ახლიდან გაიაროთ ავტორიზაცია.", - "Couldn't get the information from the remote server: {code} {type}" : "დისტანციური სერვერიდან ინფორმაციის მოპოვება ვერ მოხერხდა: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "გარე მონტაჟის წერტილების სიის მოპოვება ვერ მოხერხდა: {type}", - "There was an error with message: " : "წარმოიშვა შეცდომა წერილით:", - "external-storage" : "გარე-საცავი", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows-ის ქსელის დრაივის მონტაჯის წერტილების სიის მოპოვება ვერ მოხერხდა: ცარიელი პასუხი სერვერიდან", - "Please enter the credentials for the {mount} mount" : "გთხოვთ {mount} მონტაჟისთვის შეიყვანოთ მონაცემები", - "Username" : "მომხმარებლის სახელი", - "Credentials saved" : "მონაცემები შენახულია", - "Credentials saving failed" : "მონაცემების შენახვა ვერ მოხერხდა", - "Credentials required" : "მონაცემები საჭიროა", - "Storage with ID \"%d\" is not user editable" : "საცავი ID-ით \"%d\" არაა მომხმარებლისთვის შეცვლადი", - "Username and password" : "მომხმარებელი და პაროლი", - "User entered, store in database" : "შეყვანილი მომხმარებელი, შენახვა მონაცემთა ბაზაში", - "Username as share" : "მომხმარებლის სახელი გაზიარებად", - "Name" : "სახელი", - "Allow users to mount external storage" : "მივცეთ მომხმარებლებს გარე საცავის მონტაჟის უფლება" + "Error configuring OAuth1" : "OAuth1-ის კონფიგურირებისას წარმოიშვა შეცდომა", + "Please provide a valid app key and secret." : "გთხოვთ უზრუნველყოთ სწორი აპლიკაციის გასაღები და საიდუმლო.", + "OAuth1" : "OAuth1", + "App key" : "აპლიკაციის გასაღები", + "App secret" : "აპლიკაციის საიდუმლო" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/km.js b/apps/files_external/l10n/km.js deleted file mode 100644 index 3f42823824b..00000000000 --- a/apps/files_external/l10n/km.js +++ /dev/null @@ -1,25 +0,0 @@ -OC.L10N.register( - "files_external", - { - "External storage" : "ឃ្លាំងផ្ទុកខាងក្រៅ", - "Personal" : "ផ្ទាល់ខ្លួន", - "Grant access" : "ទទួលសិទ្ធិចូល", - "Saved" : "បានរក្សាទុក", - "Username" : "ឈ្មោះអ្នកប្រើ", - "Password" : "ពាក្យសម្ងាត់", - "Save" : "រក្សាទុក", - "None" : "គ្មាន", - "Port" : "ច្រក", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "ម៉ាស៊ីនផ្ទុក", - "Location" : "ទីតាំង", - "Share" : "ចែករំលែក", - "Name" : "ឈ្មោះ", - "External Storage" : "ឃ្លាំងផ្ទុកខាងក្រៅ", - "Folder name" : "ឈ្មោះថត", - "Configuration" : "ការកំណត់សណ្ឋាន", - "Add storage" : "បន្ថែមឃ្លាំងផ្ទុក", - "Delete" : "លុប" -}, -"nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/km.json b/apps/files_external/l10n/km.json deleted file mode 100644 index 06ab103b606..00000000000 --- a/apps/files_external/l10n/km.json +++ /dev/null @@ -1,23 +0,0 @@ -{ "translations": { - "External storage" : "ឃ្លាំងផ្ទុកខាងក្រៅ", - "Personal" : "ផ្ទាល់ខ្លួន", - "Grant access" : "ទទួលសិទ្ធិចូល", - "Saved" : "បានរក្សាទុក", - "Username" : "ឈ្មោះអ្នកប្រើ", - "Password" : "ពាក្យសម្ងាត់", - "Save" : "រក្សាទុក", - "None" : "គ្មាន", - "Port" : "ច្រក", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "ម៉ាស៊ីនផ្ទុក", - "Location" : "ទីតាំង", - "Share" : "ចែករំលែក", - "Name" : "ឈ្មោះ", - "External Storage" : "ឃ្លាំងផ្ទុកខាងក្រៅ", - "Folder name" : "ឈ្មោះថត", - "Configuration" : "ការកំណត់សណ្ឋាន", - "Add storage" : "បន្ថែមឃ្លាំងផ្ទុក", - "Delete" : "លុប" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/kn.js b/apps/files_external/l10n/kn.js deleted file mode 100644 index 81c8e442f28..00000000000 --- a/apps/files_external/l10n/kn.js +++ /dev/null @@ -1,19 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "ವೈಯಕ್ತಿಕ", - "Saved" : "ಉಳಿಸಿದ", - "Username" : "ಬಳಕೆಯ ಹೆಸರು", - "Password" : "ಗುಪ್ತ ಪದ", - "Save" : "ಉಳಿಸಿ", - "None" : "ಯಾವುದೂ ಇಲ್ಲ", - "Port" : "ರೇವು", - "WebDAV" : "WebDAV", - "URL" : "ಜಾಲದ ಕೊಂಡಿ", - "Host" : "ಅತಿಥೆಯ-ಗಣಕ", - "Local" : "ಸ್ಥಳೀಯ", - "Share" : "ಹಂಚಿಕೊಳ್ಳಿ", - "Name" : "ಹೆಸರು", - "Delete" : "ಅಳಿಸಿ" -}, -"nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/kn.json b/apps/files_external/l10n/kn.json deleted file mode 100644 index cd14c56a32f..00000000000 --- a/apps/files_external/l10n/kn.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "translations": { - "Personal" : "ವೈಯಕ್ತಿಕ", - "Saved" : "ಉಳಿಸಿದ", - "Username" : "ಬಳಕೆಯ ಹೆಸರು", - "Password" : "ಗುಪ್ತ ಪದ", - "Save" : "ಉಳಿಸಿ", - "None" : "ಯಾವುದೂ ಇಲ್ಲ", - "Port" : "ರೇವು", - "WebDAV" : "WebDAV", - "URL" : "ಜಾಲದ ಕೊಂಡಿ", - "Host" : "ಅತಿಥೆಯ-ಗಣಕ", - "Local" : "ಸ್ಥಳೀಯ", - "Share" : "ಹಂಚಿಕೊಳ್ಳಿ", - "Name" : "ಹೆಸರು", - "Delete" : "ಅಳಿಸಿ" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js index fa92a5900f7..39b058565e3 100644 --- a/apps/files_external/l10n/ko.js +++ b/apps/files_external/l10n/ko.js @@ -2,29 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "접근 권한 부여", - "Error configuring OAuth1" : "OAuth1 설정 오류", - "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", "Error configuring OAuth2" : "OAuth2 설정 오류", "Generate keys" : "키 생성", "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생", - "Type to select account or group." : "계정 또는 그룹을 입력하십시오.", - "(Group)" : "(그룹)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", - "Enable encryption" : "암호화 사용", - "Enable previews" : "미리 보기 사용", - "Enable sharing" : "공유 사용", - "Check for changes" : "변경 사항 감시", - "Never" : "하지 않음", - "Once every direct access" : "한 번 직접 접근할 때마다", - "Read only" : "읽기 전용", - "Disconnect" : "연결 해제", - "Admin defined" : "관리자 지정", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "설정된 저장소가 많아 자동 상태 확인이 비활성화되었습니다. 클릭하여 상태를 확인하십시오", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "이 외부 저장소를 해제하겠습니까? Nextcloud에서 이 저장소에 더 이상 접근할 수 없게 되며, 연결된 모든 동기화 클라이언트에서 이 저장소의 파일이 사라질 것입니다. 단, 저장소에 있는 파일 자체는 삭제되지 않습니다.", - "Delete storage?" : "저장소를 삭제하시겠습니까?", - "Saved" : "저장됨", - "Saving …" : "저장 중 …", - "Save" : "저장", "Forbidden to manage local mounts" : "로컬 마운트에 대한 관리가 금지됨", "Storage with ID \"%d\" not found" : "ID \"%d\"인 공유를 찾을 수 없음", "Invalid backend or authentication mechanism class" : "백엔드나 인증 방식 클래스가 잘못됨", @@ -37,13 +17,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "인증 방식 인자가 부족함", "Insufficient data: %s" : "충분하지 않은 데이터: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "저장소 ID \"%d\"을(를) 비관리자가 편집할 수 없음", "Access key" : "접근 키", "Secret key" : "비밀 키", "Builtin" : "내장", "None" : "없음", - "OAuth1" : "OAuth1", - "App key" : "앱 키", - "App secret" : "앱 비밀 값", "OAuth2" : "OAuth2", "Client ID" : "클라이언트 ID", "Client secret" : "클라이언트 비밀 값", @@ -58,11 +36,16 @@ OC.L10N.register( "API key" : "API 키", "Global credentials" : "글로벌 인증", "Log-in credentials, save in database" : "데이터베이스에 저장된 로그인 인증 정보", + "Login and password" : "로그인 및 암호", "Log-in credentials, save in session" : "로그인 인증 정보, 세션에 저장됨", + "Global credentials, manually entered" : "전역 자격 증명, 수동으로 입력됨", + "Manually entered, store in database" : "수동으로 입력됨, 데이터베이스에 저장", "RSA public key" : "RSA 공개 키", "Public key" : "공개 키", "RSA private key" : "RSA 비밀 키", "Private key" : "비밀 키", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 기본 영역, 기본값은 \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Kerberos 티켓 Apache 모드", "Kerberos ticket" : "Kerberos 티켓", "Amazon S3" : "Amazon S3", "Bucket" : "버킷", @@ -73,6 +56,8 @@ OC.L10N.register( "Enable SSL" : "SSL 사용", "Enable Path Style" : "경로 스타일 사용", "Legacy (v2) authentication" : "레거시(v2) 인증", + "Enable multipart copy" : "멀티파트 복사 활성화", + "SSE-C encryption key" : "SSE-C 암호화 키", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "원격 하위 폴더", @@ -95,6 +80,7 @@ OC.L10N.register( "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "경로 내 각 파일과 폴더의 접근 권한을 확인하여 해당 계정에 읽기 권한이 없는 파일을 솎아내며, 일부 성능 제약이 발생할 수 있습니다", "Timeout" : "시간 초과", "SMB/CIFS using OC login" : "OC 로그인을 사용하는 SMB/CIFS", + "Login as share" : "공유 로그인", "OpenStack Object Storage" : "OpenStack 객체 저장소", "Service name" : "서비스 이름", "Request timeout (seconds)" : "요청 시간 제한(초)", @@ -104,9 +90,15 @@ OC.L10N.register( "External storage" : "외부 저장소", "External storage support" : "외부 저장소 지원", "Adds basic external storage support" : "기본적인 외부 저장소 지원 추가", - "Enter missing credentials" : "유실된 인증 정보 입력", - "Unable to update this external storage config. {statusMessage}" : "이 외부 저장소의 설정을 갱신할 수 없음. {status Message}", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "이 앱을 사용하면 관리자가 FTP 서버, S3 또는 SWIFT 객체 저장소, 다른 Nextcloud 서버, WebDAV 서버 등 외부 저장소 공급자에 연결할 수 있습니다. 관리자는 활성화할 저장소 종류와 저장소 마운트 위치를 계정, 그룹, 전체 시스템 단위로 설정할 수 있습니다. 사용자의 개별 Nextcloud 루트 디렉터리에 새 폴더가 나타나며, 다른 Nextcloud 폴더처럼 사용할 수 있습니다. 외부 저장소 앱을 사용하여 해당 외부 저장소에 저장된 파일에 접근할 수 있습니다. 이 때 받는 사람이 외부 저장소의 파일을 요청하면 파일 소유자의 인증 정보를 사용하여 해당 파일에 접근할 수 있도록 합니다.\n\n외부 저장소는 GUI나 명령행으로 설정할 수 있습니다. 명령행 옵션을 사용하면 관리자가 대량으로 외부 저장소를 마운트하거나 마운트 우선 순위를 설정하는 등 전문가 설정을 변경할 수 있습니다. 더 많은 정보를 보려면 외부 저장소 GUI 문서와 외부 저장소 설정 파일 문서를 참조하십시오.", + "Confirm" : "확인", + "Storage credentials" : "저장소 자격 증명", + "To access the storage, you need to provide the authentication credentials." : "저장소에 접근하려면 인증 자격 증명을 제공해야 합니다.", + "Enter the storage login" : "저장소 로그인 입력", + "Enter the storage password" : "저장소 암호 입력", + "Unable to update this external storage config. {statusMessage}" : "이 외부 저장소의 설정을 갱신할 수 없음. {statusMessage}", "New configuration successfully saved" : "새로운 설정이 성공적으로 저장됨", + "Enter missing credentials" : "유실된 인증 정보 입력", "There was an error with this external storage." : "이 외부 저장소에서 오류가 발생했습니다", "We were unable to check the external storage {basename}" : "외부 저장소 {basename}을(를) 확인할 수 없습니다", "Examine this faulty external storage configuration" : "잘못된 외부 저장소 설정을 검사합니다", @@ -122,40 +114,42 @@ OC.L10N.register( "Scope" : "범위", "Personal" : "개인", "System" : "시스템", + "Type to select account or group." : "계정 또는 그룹을 입력하십시오.", + "(Group)" : "(그룹)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", + "Enable encryption" : "암호화 사용", + "Enable previews" : "미리 보기 사용", + "Enable sharing" : "공유 사용", + "Check for changes" : "변경 사항 감시", + "Never" : "하지 않음", + "Once every direct access" : "한 번 직접 접근할 때마다", + "Read only" : "읽기 전용", + "Disconnect" : "연결 해제", + "Unknown backend: {backendName}" : "알 수 없는 백엔드: {backendName}", + "Admin defined" : "관리자 지정", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "설정된 저장소가 많아 자동 상태 확인이 비활성화되었습니다. 클릭하여 상태를 확인하십시오", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "이 외부 저장소를 해제하겠습니까? Nextcloud에서 이 저장소에 더 이상 접근할 수 없게 되며, 연결된 모든 동기화 클라이언트에서 이 저장소의 파일이 사라질 것입니다. 단, 저장소에 있는 파일 자체는 삭제되지 않습니다.", + "Delete storage?" : "저장소를 삭제하시겠습니까?", + "Click to recheck the configuration" : "설정을 다시 확인하려면 클릭", + "Saved" : "저장됨", + "Saving …" : "저장 중 …", + "Save" : "저장", "No external storage configured or you don't have the permission to configure them" : "외부 저장소가 구성되지 않았거나 외부 저장소를 구성할 권한이 없습니다.", "Open documentation" : "문서 열기", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "외부 저장소를 사용하여 외부 저장소 서비스나 장치를 Nextcloud 이차 저장 장치로 마운트할 수 있습니다. 사용자가 개별 외부 저장소 서비스를 마운트할 수 있도록 허용할 수도 있습니다.", "Folder name" : "폴더 이름", "Authentication" : "인증", "Configuration" : "설정", "Available for" : "다음으로 사용 가능", - "Click to recheck the configuration" : "설정을 다시 확인하려면 클릭", "Add storage" : "저장소 추가", + "All people" : "모든 사용자", "Advanced settings" : "고급 설정", + "Allow people to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "전역 인증 정보를 사용하여 같은 인증 정보를 사용하는 여러 외부 저장소에 인증할 수 있습니다.", - "Type to select user or group." : "사용자 또는 그룹을 입력하십시오", - "Empty response from the server" : "서버에서 빈 응답이 돌아옴", - "Couldn't access. Please log out and in again to activate this mount point" : "접속할 수 없습니다. 이 마운트 지점을 활성화하기 위해 로그아웃 후 다시 로그인 해 주세요", - "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", - "There was an error with message: " : "오류 메시지: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴", - "Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오", - "Username" : "사용자 이름", - "Credentials saved" : "인증 정보 저장됨", - "Credentials saving failed" : "인증 정보를 저장할 수 없음", - "Credentials required" : "인증 정보 필요함", - "Storage with ID \"%d\" is not user editable" : "저장소 ID \"%d\"을(를) 사용자가 편집할 수 없음", - "Username and password" : "사용자 이름과 암호", - "Global credentials, user entered" : "전역 인증, 사용자가 입력함", - "User entered, store in database" : "사용자 데이터베이스에 저장", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "비활성화할 경우 파일 시스템이 대소문자를 구분하도록 할 수 있으나, 일부 성능 제약이 발생할 수 있습니다", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "경로 내 각 파일과 폴더의 접근 권한을 확인하여 사용자에게 읽기 권한이 없는 파일을 솎아내며, 일부 성능 제약이 발생할 수 있습니다", - "Username as share" : "사용자 이름으로 공유", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "이 앱을 사용하면 관리자가 FTP 서버, S3 또는 SWIFT 객체 저장소, 다른 Nextcloud 서버, WebDAV 서버 등 외부 저장소 공급자에 연결할 수 있습니다. 관리자는 활성화할 저장소 종류와 저장소 마운트 위치를 사용자, 그룹, 전체 시스템 단위로 설정할 수 있습니다. 사용자의 개별 Nextcloud 루트 디렉터리에 새 폴더가 나타나며, 다른 Nextcloud 폴더처럼 사용할 수 있습니다. 외부 저장소 앱을 사용하여 해당 외부 저장소에 저장된 파일에 접근할 수 있습니다. 이 때 받는 사람이 외부 저장소의 파일을 요청하면 파일 소유자의 인증 정보를 사용하여 해당 파일에 접근할 수 있도록 합니다.\n\n외부 저장소는 GUI나 명령행으로 설정할 수 있습니다. 명령행 옵션을 사용하면 고급 사용자가 대량으로 외부 저장소를 마운트하거나 마운트 우선 순위를 설정하는 등 전문가 설정을 변경할 수 있습니다. 더 많은 정보를 보려면 외부 저장소 GUI 문서와 외부 저장소 설정 파일 문서를 참조하십시오.", - "Name" : "이름", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "외부 저장소를 사용하여 외부 저장소 서비스나 장치를 Nextcloud 이차 저장 장치로 마운트할 수 있습니다. 사용자가 개별 외부 저장소 서비스를 마운트할 수 있도록 허용할 수도 있습니다.", - "All users" : "모든 사용자", - "Allow users to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용" + "Error configuring OAuth1" : "OAuth1 설정 오류", + "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", + "OAuth1" : "OAuth1", + "App key" : "앱 키", + "App secret" : "앱 비밀 값" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json index 1489736d46c..05382556314 100644 --- a/apps/files_external/l10n/ko.json +++ b/apps/files_external/l10n/ko.json @@ -1,28 +1,8 @@ { "translations": { "Grant access" : "접근 권한 부여", - "Error configuring OAuth1" : "OAuth1 설정 오류", - "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", "Error configuring OAuth2" : "OAuth2 설정 오류", "Generate keys" : "키 생성", "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생", - "Type to select account or group." : "계정 또는 그룹을 입력하십시오.", - "(Group)" : "(그룹)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", - "Enable encryption" : "암호화 사용", - "Enable previews" : "미리 보기 사용", - "Enable sharing" : "공유 사용", - "Check for changes" : "변경 사항 감시", - "Never" : "하지 않음", - "Once every direct access" : "한 번 직접 접근할 때마다", - "Read only" : "읽기 전용", - "Disconnect" : "연결 해제", - "Admin defined" : "관리자 지정", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "설정된 저장소가 많아 자동 상태 확인이 비활성화되었습니다. 클릭하여 상태를 확인하십시오", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "이 외부 저장소를 해제하겠습니까? Nextcloud에서 이 저장소에 더 이상 접근할 수 없게 되며, 연결된 모든 동기화 클라이언트에서 이 저장소의 파일이 사라질 것입니다. 단, 저장소에 있는 파일 자체는 삭제되지 않습니다.", - "Delete storage?" : "저장소를 삭제하시겠습니까?", - "Saved" : "저장됨", - "Saving …" : "저장 중 …", - "Save" : "저장", "Forbidden to manage local mounts" : "로컬 마운트에 대한 관리가 금지됨", "Storage with ID \"%d\" not found" : "ID \"%d\"인 공유를 찾을 수 없음", "Invalid backend or authentication mechanism class" : "백엔드나 인증 방식 클래스가 잘못됨", @@ -35,13 +15,11 @@ "Unsatisfied authentication mechanism parameters" : "인증 방식 인자가 부족함", "Insufficient data: %s" : "충분하지 않은 데이터: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "저장소 ID \"%d\"을(를) 비관리자가 편집할 수 없음", "Access key" : "접근 키", "Secret key" : "비밀 키", "Builtin" : "내장", "None" : "없음", - "OAuth1" : "OAuth1", - "App key" : "앱 키", - "App secret" : "앱 비밀 값", "OAuth2" : "OAuth2", "Client ID" : "클라이언트 ID", "Client secret" : "클라이언트 비밀 값", @@ -56,11 +34,16 @@ "API key" : "API 키", "Global credentials" : "글로벌 인증", "Log-in credentials, save in database" : "데이터베이스에 저장된 로그인 인증 정보", + "Login and password" : "로그인 및 암호", "Log-in credentials, save in session" : "로그인 인증 정보, 세션에 저장됨", + "Global credentials, manually entered" : "전역 자격 증명, 수동으로 입력됨", + "Manually entered, store in database" : "수동으로 입력됨, 데이터베이스에 저장", "RSA public key" : "RSA 공개 키", "Public key" : "공개 키", "RSA private key" : "RSA 비밀 키", "Private key" : "비밀 키", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 기본 영역, 기본값은 \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Kerberos 티켓 Apache 모드", "Kerberos ticket" : "Kerberos 티켓", "Amazon S3" : "Amazon S3", "Bucket" : "버킷", @@ -71,6 +54,8 @@ "Enable SSL" : "SSL 사용", "Enable Path Style" : "경로 스타일 사용", "Legacy (v2) authentication" : "레거시(v2) 인증", + "Enable multipart copy" : "멀티파트 복사 활성화", + "SSE-C encryption key" : "SSE-C 암호화 키", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "원격 하위 폴더", @@ -93,6 +78,7 @@ "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "경로 내 각 파일과 폴더의 접근 권한을 확인하여 해당 계정에 읽기 권한이 없는 파일을 솎아내며, 일부 성능 제약이 발생할 수 있습니다", "Timeout" : "시간 초과", "SMB/CIFS using OC login" : "OC 로그인을 사용하는 SMB/CIFS", + "Login as share" : "공유 로그인", "OpenStack Object Storage" : "OpenStack 객체 저장소", "Service name" : "서비스 이름", "Request timeout (seconds)" : "요청 시간 제한(초)", @@ -102,9 +88,15 @@ "External storage" : "외부 저장소", "External storage support" : "외부 저장소 지원", "Adds basic external storage support" : "기본적인 외부 저장소 지원 추가", - "Enter missing credentials" : "유실된 인증 정보 입력", - "Unable to update this external storage config. {statusMessage}" : "이 외부 저장소의 설정을 갱신할 수 없음. {status Message}", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "이 앱을 사용하면 관리자가 FTP 서버, S3 또는 SWIFT 객체 저장소, 다른 Nextcloud 서버, WebDAV 서버 등 외부 저장소 공급자에 연결할 수 있습니다. 관리자는 활성화할 저장소 종류와 저장소 마운트 위치를 계정, 그룹, 전체 시스템 단위로 설정할 수 있습니다. 사용자의 개별 Nextcloud 루트 디렉터리에 새 폴더가 나타나며, 다른 Nextcloud 폴더처럼 사용할 수 있습니다. 외부 저장소 앱을 사용하여 해당 외부 저장소에 저장된 파일에 접근할 수 있습니다. 이 때 받는 사람이 외부 저장소의 파일을 요청하면 파일 소유자의 인증 정보를 사용하여 해당 파일에 접근할 수 있도록 합니다.\n\n외부 저장소는 GUI나 명령행으로 설정할 수 있습니다. 명령행 옵션을 사용하면 관리자가 대량으로 외부 저장소를 마운트하거나 마운트 우선 순위를 설정하는 등 전문가 설정을 변경할 수 있습니다. 더 많은 정보를 보려면 외부 저장소 GUI 문서와 외부 저장소 설정 파일 문서를 참조하십시오.", + "Confirm" : "확인", + "Storage credentials" : "저장소 자격 증명", + "To access the storage, you need to provide the authentication credentials." : "저장소에 접근하려면 인증 자격 증명을 제공해야 합니다.", + "Enter the storage login" : "저장소 로그인 입력", + "Enter the storage password" : "저장소 암호 입력", + "Unable to update this external storage config. {statusMessage}" : "이 외부 저장소의 설정을 갱신할 수 없음. {statusMessage}", "New configuration successfully saved" : "새로운 설정이 성공적으로 저장됨", + "Enter missing credentials" : "유실된 인증 정보 입력", "There was an error with this external storage." : "이 외부 저장소에서 오류가 발생했습니다", "We were unable to check the external storage {basename}" : "외부 저장소 {basename}을(를) 확인할 수 없습니다", "Examine this faulty external storage configuration" : "잘못된 외부 저장소 설정을 검사합니다", @@ -120,40 +112,42 @@ "Scope" : "범위", "Personal" : "개인", "System" : "시스템", + "Type to select account or group." : "계정 또는 그룹을 입력하십시오.", + "(Group)" : "(그룹)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", + "Enable encryption" : "암호화 사용", + "Enable previews" : "미리 보기 사용", + "Enable sharing" : "공유 사용", + "Check for changes" : "변경 사항 감시", + "Never" : "하지 않음", + "Once every direct access" : "한 번 직접 접근할 때마다", + "Read only" : "읽기 전용", + "Disconnect" : "연결 해제", + "Unknown backend: {backendName}" : "알 수 없는 백엔드: {backendName}", + "Admin defined" : "관리자 지정", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "설정된 저장소가 많아 자동 상태 확인이 비활성화되었습니다. 클릭하여 상태를 확인하십시오", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "이 외부 저장소를 해제하겠습니까? Nextcloud에서 이 저장소에 더 이상 접근할 수 없게 되며, 연결된 모든 동기화 클라이언트에서 이 저장소의 파일이 사라질 것입니다. 단, 저장소에 있는 파일 자체는 삭제되지 않습니다.", + "Delete storage?" : "저장소를 삭제하시겠습니까?", + "Click to recheck the configuration" : "설정을 다시 확인하려면 클릭", + "Saved" : "저장됨", + "Saving …" : "저장 중 …", + "Save" : "저장", "No external storage configured or you don't have the permission to configure them" : "외부 저장소가 구성되지 않았거나 외부 저장소를 구성할 권한이 없습니다.", "Open documentation" : "문서 열기", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "외부 저장소를 사용하여 외부 저장소 서비스나 장치를 Nextcloud 이차 저장 장치로 마운트할 수 있습니다. 사용자가 개별 외부 저장소 서비스를 마운트할 수 있도록 허용할 수도 있습니다.", "Folder name" : "폴더 이름", "Authentication" : "인증", "Configuration" : "설정", "Available for" : "다음으로 사용 가능", - "Click to recheck the configuration" : "설정을 다시 확인하려면 클릭", "Add storage" : "저장소 추가", + "All people" : "모든 사용자", "Advanced settings" : "고급 설정", + "Allow people to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "전역 인증 정보를 사용하여 같은 인증 정보를 사용하는 여러 외부 저장소에 인증할 수 있습니다.", - "Type to select user or group." : "사용자 또는 그룹을 입력하십시오", - "Empty response from the server" : "서버에서 빈 응답이 돌아옴", - "Couldn't access. Please log out and in again to activate this mount point" : "접속할 수 없습니다. 이 마운트 지점을 활성화하기 위해 로그아웃 후 다시 로그인 해 주세요", - "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", - "There was an error with message: " : "오류 메시지: ", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows 네트워크 드라이브 마운트 지점 목록을 가져올 수 없음: 서버에서 빈 응답이 돌아옴", - "Please enter the credentials for the {mount} mount" : "{mount} 마운트 인증 정보를 입력하십시오", - "Username" : "사용자 이름", - "Credentials saved" : "인증 정보 저장됨", - "Credentials saving failed" : "인증 정보를 저장할 수 없음", - "Credentials required" : "인증 정보 필요함", - "Storage with ID \"%d\" is not user editable" : "저장소 ID \"%d\"을(를) 사용자가 편집할 수 없음", - "Username and password" : "사용자 이름과 암호", - "Global credentials, user entered" : "전역 인증, 사용자가 입력함", - "User entered, store in database" : "사용자 데이터베이스에 저장", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "비활성화할 경우 파일 시스템이 대소문자를 구분하도록 할 수 있으나, 일부 성능 제약이 발생할 수 있습니다", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "경로 내 각 파일과 폴더의 접근 권한을 확인하여 사용자에게 읽기 권한이 없는 파일을 솎아내며, 일부 성능 제약이 발생할 수 있습니다", - "Username as share" : "사용자 이름으로 공유", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "이 앱을 사용하면 관리자가 FTP 서버, S3 또는 SWIFT 객체 저장소, 다른 Nextcloud 서버, WebDAV 서버 등 외부 저장소 공급자에 연결할 수 있습니다. 관리자는 활성화할 저장소 종류와 저장소 마운트 위치를 사용자, 그룹, 전체 시스템 단위로 설정할 수 있습니다. 사용자의 개별 Nextcloud 루트 디렉터리에 새 폴더가 나타나며, 다른 Nextcloud 폴더처럼 사용할 수 있습니다. 외부 저장소 앱을 사용하여 해당 외부 저장소에 저장된 파일에 접근할 수 있습니다. 이 때 받는 사람이 외부 저장소의 파일을 요청하면 파일 소유자의 인증 정보를 사용하여 해당 파일에 접근할 수 있도록 합니다.\n\n외부 저장소는 GUI나 명령행으로 설정할 수 있습니다. 명령행 옵션을 사용하면 고급 사용자가 대량으로 외부 저장소를 마운트하거나 마운트 우선 순위를 설정하는 등 전문가 설정을 변경할 수 있습니다. 더 많은 정보를 보려면 외부 저장소 GUI 문서와 외부 저장소 설정 파일 문서를 참조하십시오.", - "Name" : "이름", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "외부 저장소를 사용하여 외부 저장소 서비스나 장치를 Nextcloud 이차 저장 장치로 마운트할 수 있습니다. 사용자가 개별 외부 저장소 서비스를 마운트할 수 있도록 허용할 수도 있습니다.", - "All users" : "모든 사용자", - "Allow users to mount external storage" : "사용자가 외부 저장소를 마운트하도록 허용" + "Error configuring OAuth1" : "OAuth1 설정 오류", + "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", + "OAuth1" : "OAuth1", + "App key" : "앱 키", + "App secret" : "앱 비밀 값" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/lb.js b/apps/files_external/l10n/lb.js deleted file mode 100644 index 29014e55190..00000000000 --- a/apps/files_external/l10n/lb.js +++ /dev/null @@ -1,24 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Perséinlech", - "Saved" : "Gespäichert", - "Username" : "Benotzernumm", - "Password" : "Passwuert", - "Save" : "Späicheren", - "None" : "Keng", - "Port" : "Port", - "Region" : "Regioun", - "URL" : "URL", - "Host" : "Host", - "Location" : "Uert", - "ownCloud" : "ownCloud", - "Share" : "Deelen", - "Name" : "Numm", - "Enable encryption" : "Verschlësselung aschalten", - "External Storage" : "Externt Lager", - "Folder name" : "Dossiers Numm:", - "Advanced settings" : "Erweidert Astellungen", - "Delete" : "Läschen" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/lb.json b/apps/files_external/l10n/lb.json deleted file mode 100644 index ef3f3d2f333..00000000000 --- a/apps/files_external/l10n/lb.json +++ /dev/null @@ -1,22 +0,0 @@ -{ "translations": { - "Personal" : "Perséinlech", - "Saved" : "Gespäichert", - "Username" : "Benotzernumm", - "Password" : "Passwuert", - "Save" : "Späicheren", - "None" : "Keng", - "Port" : "Port", - "Region" : "Regioun", - "URL" : "URL", - "Host" : "Host", - "Location" : "Uert", - "ownCloud" : "ownCloud", - "Share" : "Deelen", - "Name" : "Numm", - "Enable encryption" : "Verschlësselung aschalten", - "External Storage" : "Externt Lager", - "Folder name" : "Dossiers Numm:", - "Advanced settings" : "Erweidert Astellungen", - "Delete" : "Läschen" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js index d24191684ba..dfda2c25671 100644 --- a/apps/files_external/l10n/lt_LT.js +++ b/apps/files_external/l10n/lt_LT.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Suteikti prieigą", - "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", - "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2", "Generate keys" : "Generuoti raktus", - "Error generating key pair" : "Klaida kuriant raktus", - "(Group)" : "(Grupė)", - "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)", - "Enable encryption" : "Įjungti šifravimą", - "Enable previews" : "Leisti peržiūras", - "Enable sharing" : "Leisti bendrinti", - "Check for changes" : "Patikrinti ar nėra pakeitimų", - "Never" : "Niekada", - "Once every direct access" : "Kartą per tiesioginę peržiūrą", - "Read only" : "Tik skaitymui", - "Disconnect" : "Atsijungti", - "Admin defined" : "Administratorius apibrėžtas", - "Delete storage?" : "Ištrinti saugyklą?", - "Saved" : "Įrašyta", - "Saving …" : "Įrašoma …", - "Save" : "Įrašyti", + "Error generating key pair" : "Klaida generuojant raktų porą", "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"", "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą", "Invalid mount point" : "Neteisingas prijungimo taškas", @@ -36,9 +19,6 @@ OC.L10N.register( "Secret key" : "Slaptasis raktas", "Builtin" : "Įtaisytasis", "None" : "Nėra", - "OAuth1" : "OAuth1", - "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", - "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis", "OAuth2" : "OAuth2", "Client ID" : "Kliento ID", "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas", @@ -65,6 +45,7 @@ OC.L10N.register( "Region" : "Regionas", "Enable SSL" : "Įjungti SSL", "Enable Path Style" : "Amazon S3 kelias", + "SSE-C encryption key" : "SSE-C šifravimo raktas", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Nuotolinis poaplankis", @@ -78,6 +59,7 @@ OC.L10N.register( "SFTP" : "SFTP", "Root" : "Šaknis", "SFTP with secret key login" : "SFTP protokolas su prisijungimu", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Bendrinti", "Show hidden files" : "Rodyti paslėptus failus", "Timeout" : "Pasibaigė laikas", @@ -88,39 +70,42 @@ OC.L10N.register( "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" nėra įdiegtas. %2$s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad jį įdiegtų.", "External storage" : "Išorinė saugykla", "External storage support" : "Išorinės saugyklos priežiūra", + "Confirm" : "Patvirtinti", + "New configuration successfully saved" : "Nauja konfigūracija sėkmingai įrašyta", "External mount error" : "Išorinio prijungimo klaida", "Storage type" : "Saugyklos tipas", "Unknown" : "Nežinoma", "Scope" : "Leidimas", "Personal" : "Asmeniniai", "System" : "Sistema", + "(Group)" : "(Grupė)", + "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD koduote (lėtai)", + "Enable encryption" : "Įjungti šifravimą", + "Enable previews" : "Leisti peržiūras", + "Enable sharing" : "Leisti bendrinti", + "Check for changes" : "Patikrinti ar nėra pakeitimų", + "Never" : "Niekada", + "Once every direct access" : "Kartą per tiesioginę peržiūrą", + "Read only" : "Tik skaitymui", + "Disconnect" : "Atsijungti", + "Admin defined" : "Administratorius apibrėžtas", + "Delete storage?" : "Ištrinti saugyklą?", + "Click to recheck the configuration" : "Spustelėkite norėdami iš naujo patikrinti konfigūraciją", + "Saved" : "Įrašyta", + "Saving …" : "Įrašoma …", + "Save" : "Įrašyti", "No external storage configured or you don't have the permission to configure them" : "Nėra sukonfigūruota jokia išorinė saugykla arba jūs neturite leidimo jų konfigūruoti", "Open documentation" : "Atverti dokumentaciją", "Folder name" : "Aplanko pavadinimas", "Authentication" : "Prisijungimas", "Configuration" : "Konfigūracija", "Available for" : "Prieinamas", - "Click to recheck the configuration" : "Spustelėkite norėdami iš naujo patikrinti konfigūraciją", "Add storage" : "Pridėti saugyklą", "Advanced settings" : "Išplėstiniai nustatymai", - "Empty response from the server" : "Negautas atsakymas iš serverio", - "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.", - "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}", - "There was an error with message: " : "Klaidos žinutė:", - "external-storage" : "išorinė-saugykla", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.", - "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui", - "Username" : "Naudotojo vardas", - "Credentials saved" : "Prisijungimo duomenys yra išsaugoti", - "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų", - "Credentials required" : "Reikalingi prisijungimo duomenys", - "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"", - "Username and password" : "Naudotojo vardas ir slaptažodis", - "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje", - "Username as share" : "Dalinimosi vardas kaip ir vartotojo vardas", - "Name" : "Pavadinimas", - "All users" : "Visi naudotojai", - "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas" + "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", + "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", + "OAuth1" : "OAuth1", + "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", + "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json index 1b365c15a86..f448286c2a0 100644 --- a/apps/files_external/l10n/lt_LT.json +++ b/apps/files_external/l10n/lt_LT.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Suteikti prieigą", - "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", - "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", "Error configuring OAuth2" : "Klaida, konfigūruojant OAuth2", "Generate keys" : "Generuoti raktus", - "Error generating key pair" : "Klaida kuriant raktus", - "(Group)" : "(Grupė)", - "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD kodavimu (lėtai)", - "Enable encryption" : "Įjungti šifravimą", - "Enable previews" : "Leisti peržiūras", - "Enable sharing" : "Leisti bendrinti", - "Check for changes" : "Patikrinti ar nėra pakeitimų", - "Never" : "Niekada", - "Once every direct access" : "Kartą per tiesioginę peržiūrą", - "Read only" : "Tik skaitymui", - "Disconnect" : "Atsijungti", - "Admin defined" : "Administratorius apibrėžtas", - "Delete storage?" : "Ištrinti saugyklą?", - "Saved" : "Įrašyta", - "Saving …" : "Įrašoma …", - "Save" : "Įrašyti", + "Error generating key pair" : "Klaida generuojant raktų porą", "Storage with ID \"%d\" not found" : "Nerasta saugykla su identifikacijos numeriu \"%d\"", "Invalid backend or authentication mechanism class" : "Netinkama programinio kodo klasė realizuoja prisijungimo mechanizmą", "Invalid mount point" : "Neteisingas prijungimo taškas", @@ -34,9 +17,6 @@ "Secret key" : "Slaptasis raktas", "Builtin" : "Įtaisytasis", "None" : "Nėra", - "OAuth1" : "OAuth1", - "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", - "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis", "OAuth2" : "OAuth2", "Client ID" : "Kliento ID", "Client secret" : "Trečiųjų šalių programinės įrangos kliento identifikacijos raktas", @@ -63,6 +43,7 @@ "Region" : "Regionas", "Enable SSL" : "Įjungti SSL", "Enable Path Style" : "Amazon S3 kelias", + "SSE-C encryption key" : "SSE-C šifravimo raktas", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Nuotolinis poaplankis", @@ -76,6 +57,7 @@ "SFTP" : "SFTP", "Root" : "Šaknis", "SFTP with secret key login" : "SFTP protokolas su prisijungimu", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Bendrinti", "Show hidden files" : "Rodyti paslėptus failus", "Timeout" : "Pasibaigė laikas", @@ -86,39 +68,42 @@ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" nėra įdiegtas. %2$s prijungimas yra neįmanomas. Paprašykite savo sistemos administratoriaus, kad jį įdiegtų.", "External storage" : "Išorinė saugykla", "External storage support" : "Išorinės saugyklos priežiūra", + "Confirm" : "Patvirtinti", + "New configuration successfully saved" : "Nauja konfigūracija sėkmingai įrašyta", "External mount error" : "Išorinio prijungimo klaida", "Storage type" : "Saugyklos tipas", "Unknown" : "Nežinoma", "Scope" : "Leidimas", "Personal" : "Asmeniniai", "System" : "Sistema", + "(Group)" : "(Grupė)", + "Compatibility with Mac NFD encoding (slow)" : "Suderinamumas su Mac NFD koduote (lėtai)", + "Enable encryption" : "Įjungti šifravimą", + "Enable previews" : "Leisti peržiūras", + "Enable sharing" : "Leisti bendrinti", + "Check for changes" : "Patikrinti ar nėra pakeitimų", + "Never" : "Niekada", + "Once every direct access" : "Kartą per tiesioginę peržiūrą", + "Read only" : "Tik skaitymui", + "Disconnect" : "Atsijungti", + "Admin defined" : "Administratorius apibrėžtas", + "Delete storage?" : "Ištrinti saugyklą?", + "Click to recheck the configuration" : "Spustelėkite norėdami iš naujo patikrinti konfigūraciją", + "Saved" : "Įrašyta", + "Saving …" : "Įrašoma …", + "Save" : "Įrašyti", "No external storage configured or you don't have the permission to configure them" : "Nėra sukonfigūruota jokia išorinė saugykla arba jūs neturite leidimo jų konfigūruoti", "Open documentation" : "Atverti dokumentaciją", "Folder name" : "Aplanko pavadinimas", "Authentication" : "Prisijungimas", "Configuration" : "Konfigūracija", "Available for" : "Prieinamas", - "Click to recheck the configuration" : "Spustelėkite norėdami iš naujo patikrinti konfigūraciją", "Add storage" : "Pridėti saugyklą", "Advanced settings" : "Išplėstiniai nustatymai", - "Empty response from the server" : "Negautas atsakymas iš serverio", - "Couldn't access. Please log out and in again to activate this mount point" : "Prieiga yra neįmanoma. Pabandykite prisijungti iš naujo.", - "Couldn't get the information from the remote server: {code} {type}" : "Neįmanoma gauti informacijos iš serverio: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nepavyko gauti išorinių prijungimo taškų sąrašo: {type}", - "There was an error with message: " : "Klaidos žinutė:", - "external-storage" : "išorinė-saugykla", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Neįmanoma gauti duomenų sąrašo ir Windows tinkle prijungto disko. Nėra jokio atsakymo.", - "Please enter the credentials for the {mount} mount" : "Prašome įvesti prisijungimo duomenis skirtus saugyklos {mount} prijungimui", - "Username" : "Naudotojo vardas", - "Credentials saved" : "Prisijungimo duomenys yra išsaugoti", - "Credentials saving failed" : "Nepavyko išsaugoti prisijungimo duomenų", - "Credentials required" : "Reikalingi prisijungimo duomenys", - "Storage with ID \"%d\" is not user editable" : "Naudotojai negali redaguoti saugyklos identifikuotos kaip \"%d\"", - "Username and password" : "Naudotojo vardas ir slaptažodis", - "User entered, store in database" : "Naudotojas įvestas, saugoti duomenų bazėje", - "Username as share" : "Dalinimosi vardas kaip ir vartotojo vardas", - "Name" : "Pavadinimas", - "All users" : "Visi naudotojai", - "Allow users to mount external storage" : "Leisti naudotojams prijungti išorines saugyklas" + "Error configuring OAuth1" : "Klaida, konfigūruojant OAuth1", + "Please provide a valid app key and secret." : "Prašome naudoti teisingus trečiųjų šalių programinės įrangos identifikacijos numerį ir slaptažodį.", + "OAuth1" : "OAuth1", + "App key" : "Trečiųjų šalių programinės įrangos identifikacijos raktas", + "App secret" : "Trečiųjų šalių programinės įrangos slaptažodis" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/lv.js b/apps/files_external/l10n/lv.js deleted file mode 100644 index 2fc3b21fd72..00000000000 --- a/apps/files_external/l10n/lv.js +++ /dev/null @@ -1,82 +0,0 @@ -OC.L10N.register( - "files_external", - { - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Saderība ar Mac NFD kodēšanu (lēni)", - "Enable encryption" : "Ieslēgt šifrēšanu", - "Enable previews" : "Iespējot priekšskatījumu", - "Enable sharing" : "Koplietošanas iespējošana", - "Check for changes" : "Pārbaudīt, vai nav izmaiņu", - "Never" : "Nekad", - "Read only" : "Tikai lasāms", - "Disconnect" : "Atvienot", - "Admin defined" : "Administrators definētās", - "Saved" : "Saglabāts", - "Saving …" : "Saglabā ...", - "Save" : "Saglabāt", - "Invalid mount point" : "Nederīgs montēšanas punkts", - "%s" : "%s", - "Access key" : "Pieejas atslēga", - "Secret key" : "Slepenā atslēga", - "None" : "Nav", - "OAuth1" : "OAuth1", - "App key" : "Lietotnes atslēga", - "OAuth2" : "OAuth2", - "Client ID" : "Klienta ID", - "Username" : "Lietotājvārds", - "Password" : "Parole", - "Domain" : "Domain", - "API key" : "API atslēga", - "Username and password" : "Lietotājvārds un parole", - "RSA public key" : "RSA publiskā atslēga", - "Public key" : "Publiska atslēga", - "Amazon S3" : "Amazon S3", - "Hostname" : "Resursa nosaukums", - "Port" : "Ports", - "Region" : "Reģions", - "Enable SSL" : "Iespējot SSL", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Attālinātā apakšmape", - "Secure https://" : "Secure https://", - "FTP" : "FTP", - "Host" : "Resursdators", - "Secure ftps://" : "Secure ftps://", - "Local" : "Lokāls", - "Location" : "Vieta", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "SFTP with secret key login" : "SFTP pieteikšanās ar slepeno atslēgu", - "Share" : "Koplietot", - "Show hidden files" : "Rādīt slēptās datnes", - "OpenStack Object Storage" : "OpenStack Object krātuve", - "Service name" : "Servisa nosaukums", - "External storage" : "Ārējā krātuve", - "External mount error" : "Ārējā montēšanas kļūda", - "Storage type" : "Krātuves tips", - "Unknown" : "Nezināms", - "Scope" : "Darbības joma", - "Personal" : "Personīgi", - "System" : "Sistēma", - "Open documentation" : "Atvērt dokumentāciju", - "Folder name" : "Mapes nosaukums", - "Authentication" : "Autentifikācija", - "Configuration" : "Konfigurācija", - "Available for" : "Pieejams", - "Add storage" : "Pievienot krātuvi", - "Advanced settings" : "Paplašināti iestatījumi", - "Allow users to mount external storage" : "Atļaut lietotājiem uzstādīt ārējās krātuves", - "Grant access" : "Piešķirt pieeju", - "Error configuring OAuth1" : "Konfigurēšanas kļūda OAuth1", - "Please provide a valid app key and secret." : "Lūdzu, norādiet derīgu lietotnes atslēgu un noslēpumu.", - "Error configuring OAuth2" : "Konfigurēšanas kļūda OAuth2", - "Generate keys" : "Izveidot atslēgas", - "Error generating key pair" : "Kļūda, ģenerējot atslēgu pāri", - "Empty response from the server" : "Tukša atbilde no servera", - "Couldn't get the information from the remote server: {code} {type}" : "Nevarējām iegūt informāciju no attālā servera: {code} {type}", - "There was an error with message: " : "Radās kļūda ar ziņu:", - "external-storage" : "ārējā krātuve", - "Name" : "Nosaukums" -}, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/files_external/l10n/lv.json b/apps/files_external/l10n/lv.json deleted file mode 100644 index c24256d2ff4..00000000000 --- a/apps/files_external/l10n/lv.json +++ /dev/null @@ -1,80 +0,0 @@ -{ "translations": { - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Saderība ar Mac NFD kodēšanu (lēni)", - "Enable encryption" : "Ieslēgt šifrēšanu", - "Enable previews" : "Iespējot priekšskatījumu", - "Enable sharing" : "Koplietošanas iespējošana", - "Check for changes" : "Pārbaudīt, vai nav izmaiņu", - "Never" : "Nekad", - "Read only" : "Tikai lasāms", - "Disconnect" : "Atvienot", - "Admin defined" : "Administrators definētās", - "Saved" : "Saglabāts", - "Saving …" : "Saglabā ...", - "Save" : "Saglabāt", - "Invalid mount point" : "Nederīgs montēšanas punkts", - "%s" : "%s", - "Access key" : "Pieejas atslēga", - "Secret key" : "Slepenā atslēga", - "None" : "Nav", - "OAuth1" : "OAuth1", - "App key" : "Lietotnes atslēga", - "OAuth2" : "OAuth2", - "Client ID" : "Klienta ID", - "Username" : "Lietotājvārds", - "Password" : "Parole", - "Domain" : "Domain", - "API key" : "API atslēga", - "Username and password" : "Lietotājvārds un parole", - "RSA public key" : "RSA publiskā atslēga", - "Public key" : "Publiska atslēga", - "Amazon S3" : "Amazon S3", - "Hostname" : "Resursa nosaukums", - "Port" : "Ports", - "Region" : "Reģions", - "Enable SSL" : "Iespējot SSL", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Attālinātā apakšmape", - "Secure https://" : "Secure https://", - "FTP" : "FTP", - "Host" : "Resursdators", - "Secure ftps://" : "Secure ftps://", - "Local" : "Lokāls", - "Location" : "Vieta", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "SFTP with secret key login" : "SFTP pieteikšanās ar slepeno atslēgu", - "Share" : "Koplietot", - "Show hidden files" : "Rādīt slēptās datnes", - "OpenStack Object Storage" : "OpenStack Object krātuve", - "Service name" : "Servisa nosaukums", - "External storage" : "Ārējā krātuve", - "External mount error" : "Ārējā montēšanas kļūda", - "Storage type" : "Krātuves tips", - "Unknown" : "Nezināms", - "Scope" : "Darbības joma", - "Personal" : "Personīgi", - "System" : "Sistēma", - "Open documentation" : "Atvērt dokumentāciju", - "Folder name" : "Mapes nosaukums", - "Authentication" : "Autentifikācija", - "Configuration" : "Konfigurācija", - "Available for" : "Pieejams", - "Add storage" : "Pievienot krātuvi", - "Advanced settings" : "Paplašināti iestatījumi", - "Allow users to mount external storage" : "Atļaut lietotājiem uzstādīt ārējās krātuves", - "Grant access" : "Piešķirt pieeju", - "Error configuring OAuth1" : "Konfigurēšanas kļūda OAuth1", - "Please provide a valid app key and secret." : "Lūdzu, norādiet derīgu lietotnes atslēgu un noslēpumu.", - "Error configuring OAuth2" : "Konfigurēšanas kļūda OAuth2", - "Generate keys" : "Izveidot atslēgas", - "Error generating key pair" : "Kļūda, ģenerējot atslēgu pāri", - "Empty response from the server" : "Tukša atbilde no servera", - "Couldn't get the information from the remote server: {code} {type}" : "Nevarējām iegūt informāciju no attālā servera: {code} {type}", - "There was an error with message: " : "Radās kļūda ar ziņu:", - "external-storage" : "ārējā krātuve", - "Name" : "Nosaukums" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/mk.js b/apps/files_external/l10n/mk.js index 3a48979c95e..a0b0b96a451 100644 --- a/apps/files_external/l10n/mk.js +++ b/apps/files_external/l10n/mk.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Дозволи пристап", - "Error configuring OAuth1" : "Грешка во конфигурацијата на OAuth1", - "Please provide a valid app key and secret." : "Внесете валиден клуч на апликацијата и лозинка.", "Error configuring OAuth2" : "Грешка во конфигурацијата на OAuth2", "Generate keys" : "Генерирај клучеви", "Error generating key pair" : "Грешка при генерирање на клучеви", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Компатибилно со Mac NFD енкрипција (бавно)", - "Enable encryption" : "Овозможи енкрипција", - "Enable previews" : "Овозможи прегледување", - "Enable sharing" : "Овозможи споделување", - "Check for changes" : "Провери за промени", - "Never" : "Никогаш", - "Once every direct access" : "Еднаш секој пристап", - "Read only" : "Само читај", - "Disconnect" : "Исклучи", - "Admin defined" : "Дефинирано од администраторот", - "Delete storage?" : "Избриши складиште?", - "Saved" : "Снимено", - "Saving …" : "Зачувува ...", - "Save" : "Сними", "Storage with ID \"%d\" not found" : "Складиште со ID \"%d\" не е пронајдено", "Invalid mount point" : "Погрешна точка на монтирање", "Insufficient data: %s" : "Недоволни податоци: %s", @@ -30,9 +13,6 @@ OC.L10N.register( "Secret key" : "Таен клуч", "Builtin" : "Вграден", "None" : "Ништо", - "OAuth1" : "OAuth1", - "App key" : "Клуч на апликацијата", - "App secret" : "Тајна на апликацијата", "OAuth2" : "OAuth2", "Client ID" : "Клиент ИД", "Client secret" : "Тајна на клиент", @@ -77,42 +57,48 @@ OC.L10N.register( "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не е инсалиран. Монтирањето на %2$s не е возможно. Контактирајте го администраторот.", "External storage" : "Надворешно складиште", "External storage support" : "Поддршка за надворешно складиште", + "Confirm" : "Потврди", "Open in Files" : "Отвори во датотеките", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Се појави грешка со ова надворешно складиште. Дали сакате да ја прегледате оваа конфигурација на страницата со поставки?", "External mount error" : "Грешка при надворешно монтирање", + "List of external storage." : "Листа на надворешни складишта.", + "There is no external storage configured. You can configure them in your Personal settings." : "Нема конфигурирано надворешно складирање. Можете да ги конфигурирате во вашите лични поставки.", + "There is no external storage configured and you don't have the permission to configure them." : "Нема конфигурирано надворешно складирање и немате дозвола да го конфигурирате.", + "No external storage" : "Нема надворешно складиште", "Storage type" : "Вид на складиште", "Unknown" : "Непознат", "Scope" : "Опсег", "Personal" : "Лично", "System" : "Систем", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилно со Mac NFD енкрипција (бавно)", + "Enable encryption" : "Овозможи енкрипција", + "Enable previews" : "Овозможи прегледување", + "Enable sharing" : "Овозможи споделување", + "Check for changes" : "Провери за промени", + "Never" : "Никогаш", + "Once every direct access" : "Еднаш секој пристап", + "Read only" : "Само читај", + "Disconnect" : "Исклучи", + "Admin defined" : "Дефинирано од администраторот", + "Delete storage?" : "Избриши складиште?", + "Click to recheck the configuration" : "Кликни за проверка на конфигурацијата", + "Saved" : "Снимено", + "Saving …" : "Зачувува ...", + "Save" : "Сними", "No external storage configured or you don't have the permission to configure them" : "Немате конфигурирано надворешно складиште или немате дозвола да го конфигурирате", "Open documentation" : "Отвори ја документацијата", "Folder name" : "Име на папка", "Authentication" : "Автентикација", "Configuration" : "Конфигурација", "Available for" : "Достапно за", - "Click to recheck the configuration" : "Кликни за проверка на конфигурацијата", "Add storage" : "Додади складиште", "Advanced settings" : "Напредни параметри", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобалните акредитиви можат да се искористат за пристапување во повеќе надворешни складишта кој користат исти акредитиви.", - "Empty response from the server" : "Нема одговор од серверот", - "Couldn't access. Please log out and in again to activate this mount point" : "Неможе да се пристапи. Ве молиме одјавете се и повторно најавете се за да се активира монтираната точка.", - "Couldn't get the information from the remote server: {code} {type}" : "Неможат да се преземат информациите од серверот: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Неможат да се преземе листата на надворешните монтирани точки: {type}", - "There was an error with message: " : "Настана грешка со порака:", - "external-storage" : "Надворешно складиште", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Неможат да се преземе листата на надворешните монтирани точки: Празен одговор од серверот", - "Please enter the credentials for the {mount} mount" : "Внесете акредитиви за {mount}", - "Username" : "Корисничко име", - "Credentials saved" : "Акредитивите се зачувани", - "Credentials saving failed" : "Неуспешно зачувување на акредитивите", - "Credentials required" : "Акредитивите се задолжителни", - "Storage with ID \"%d\" is not user editable" : "Складиштето со ID \"%d\" неможе да се измени од корисник", - "Username and password" : "Корисничко име и лозинка", - "Global credentials, user entered" : "Глобални акредитиви, внесени од корисник", - "User entered, store in database" : "Внесени од корисник, зачувани во базата со податоци", - "Name" : "Име", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Надворешното складирање ви овозможува да ги монтирате услугите и уредите за надворешно складирање како секундарни уреди за складирање на Nextcloud. Исто така може да им дозволите на корисниците да монтираат свои услуги за надворешно складирање.", - "All users" : "Сите корисници", - "Allow users to mount external storage" : "Дозволи на корисниците да монтираат надворешни складишта" + "Error configuring OAuth1" : "Грешка во конфигурацијата на OAuth1", + "Please provide a valid app key and secret." : "Внесете валиден клуч на апликацијата и лозинка.", + "OAuth1" : "OAuth1", + "App key" : "Клуч на апликацијата", + "App secret" : "Тајна на апликацијата" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files_external/l10n/mk.json b/apps/files_external/l10n/mk.json index 5f09014e363..cb6f34cc0fe 100644 --- a/apps/files_external/l10n/mk.json +++ b/apps/files_external/l10n/mk.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Дозволи пристап", - "Error configuring OAuth1" : "Грешка во конфигурацијата на OAuth1", - "Please provide a valid app key and secret." : "Внесете валиден клуч на апликацијата и лозинка.", "Error configuring OAuth2" : "Грешка во конфигурацијата на OAuth2", "Generate keys" : "Генерирај клучеви", "Error generating key pair" : "Грешка при генерирање на клучеви", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Компатибилно со Mac NFD енкрипција (бавно)", - "Enable encryption" : "Овозможи енкрипција", - "Enable previews" : "Овозможи прегледување", - "Enable sharing" : "Овозможи споделување", - "Check for changes" : "Провери за промени", - "Never" : "Никогаш", - "Once every direct access" : "Еднаш секој пристап", - "Read only" : "Само читај", - "Disconnect" : "Исклучи", - "Admin defined" : "Дефинирано од администраторот", - "Delete storage?" : "Избриши складиште?", - "Saved" : "Снимено", - "Saving …" : "Зачувува ...", - "Save" : "Сними", "Storage with ID \"%d\" not found" : "Складиште со ID \"%d\" не е пронајдено", "Invalid mount point" : "Погрешна точка на монтирање", "Insufficient data: %s" : "Недоволни податоци: %s", @@ -28,9 +11,6 @@ "Secret key" : "Таен клуч", "Builtin" : "Вграден", "None" : "Ништо", - "OAuth1" : "OAuth1", - "App key" : "Клуч на апликацијата", - "App secret" : "Тајна на апликацијата", "OAuth2" : "OAuth2", "Client ID" : "Клиент ИД", "Client secret" : "Тајна на клиент", @@ -75,42 +55,48 @@ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не е инсалиран. Монтирањето на %2$s не е возможно. Контактирајте го администраторот.", "External storage" : "Надворешно складиште", "External storage support" : "Поддршка за надворешно складиште", + "Confirm" : "Потврди", "Open in Files" : "Отвори во датотеките", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Се појави грешка со ова надворешно складиште. Дали сакате да ја прегледате оваа конфигурација на страницата со поставки?", "External mount error" : "Грешка при надворешно монтирање", + "List of external storage." : "Листа на надворешни складишта.", + "There is no external storage configured. You can configure them in your Personal settings." : "Нема конфигурирано надворешно складирање. Можете да ги конфигурирате во вашите лични поставки.", + "There is no external storage configured and you don't have the permission to configure them." : "Нема конфигурирано надворешно складирање и немате дозвола да го конфигурирате.", + "No external storage" : "Нема надворешно складиште", "Storage type" : "Вид на складиште", "Unknown" : "Непознат", "Scope" : "Опсег", "Personal" : "Лично", "System" : "Систем", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилно со Mac NFD енкрипција (бавно)", + "Enable encryption" : "Овозможи енкрипција", + "Enable previews" : "Овозможи прегледување", + "Enable sharing" : "Овозможи споделување", + "Check for changes" : "Провери за промени", + "Never" : "Никогаш", + "Once every direct access" : "Еднаш секој пристап", + "Read only" : "Само читај", + "Disconnect" : "Исклучи", + "Admin defined" : "Дефинирано од администраторот", + "Delete storage?" : "Избриши складиште?", + "Click to recheck the configuration" : "Кликни за проверка на конфигурацијата", + "Saved" : "Снимено", + "Saving …" : "Зачувува ...", + "Save" : "Сними", "No external storage configured or you don't have the permission to configure them" : "Немате конфигурирано надворешно складиште или немате дозвола да го конфигурирате", "Open documentation" : "Отвори ја документацијата", "Folder name" : "Име на папка", "Authentication" : "Автентикација", "Configuration" : "Конфигурација", "Available for" : "Достапно за", - "Click to recheck the configuration" : "Кликни за проверка на конфигурацијата", "Add storage" : "Додади складиште", "Advanced settings" : "Напредни параметри", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобалните акредитиви можат да се искористат за пристапување во повеќе надворешни складишта кој користат исти акредитиви.", - "Empty response from the server" : "Нема одговор од серверот", - "Couldn't access. Please log out and in again to activate this mount point" : "Неможе да се пристапи. Ве молиме одјавете се и повторно најавете се за да се активира монтираната точка.", - "Couldn't get the information from the remote server: {code} {type}" : "Неможат да се преземат информациите од серверот: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Неможат да се преземе листата на надворешните монтирани точки: {type}", - "There was an error with message: " : "Настана грешка со порака:", - "external-storage" : "Надворешно складиште", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Неможат да се преземе листата на надворешните монтирани точки: Празен одговор од серверот", - "Please enter the credentials for the {mount} mount" : "Внесете акредитиви за {mount}", - "Username" : "Корисничко име", - "Credentials saved" : "Акредитивите се зачувани", - "Credentials saving failed" : "Неуспешно зачувување на акредитивите", - "Credentials required" : "Акредитивите се задолжителни", - "Storage with ID \"%d\" is not user editable" : "Складиштето со ID \"%d\" неможе да се измени од корисник", - "Username and password" : "Корисничко име и лозинка", - "Global credentials, user entered" : "Глобални акредитиви, внесени од корисник", - "User entered, store in database" : "Внесени од корисник, зачувани во базата со податоци", - "Name" : "Име", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Надворешното складирање ви овозможува да ги монтирате услугите и уредите за надворешно складирање како секундарни уреди за складирање на Nextcloud. Исто така може да им дозволите на корисниците да монтираат свои услуги за надворешно складирање.", - "All users" : "Сите корисници", - "Allow users to mount external storage" : "Дозволи на корисниците да монтираат надворешни складишта" + "Error configuring OAuth1" : "Грешка во конфигурацијата на OAuth1", + "Please provide a valid app key and secret." : "Внесете валиден клуч на апликацијата и лозинка.", + "OAuth1" : "OAuth1", + "App key" : "Клуч на апликацијата", + "App secret" : "Тајна на апликацијата" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/mn.js b/apps/files_external/l10n/mn.js deleted file mode 100644 index 546c4370441..00000000000 --- a/apps/files_external/l10n/mn.js +++ /dev/null @@ -1,9 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Username" : "Хэрэглэгчийн нэр", - "Password" : "Нууц үг", - "Save" : "Хадгалах", - "Share" : "Түгээх" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/mn.json b/apps/files_external/l10n/mn.json deleted file mode 100644 index 61fc25d3458..00000000000 --- a/apps/files_external/l10n/mn.json +++ /dev/null @@ -1,7 +0,0 @@ -{ "translations": { - "Username" : "Хэрэглэгчийн нэр", - "Password" : "Нууц үг", - "Save" : "Хадгалах", - "Share" : "Түгээх" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/ms_MY.js b/apps/files_external/l10n/ms_MY.js deleted file mode 100644 index 986d64538a6..00000000000 --- a/apps/files_external/l10n/ms_MY.js +++ /dev/null @@ -1,16 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Peribadi", - "Username" : "Nama pengguna", - "Password" : "Kata laluan", - "Save" : "Simpan", - "Region" : "Wilayah", - "URL" : "URL", - "Location" : "Lokasi", - "ownCloud" : "ownCloud", - "Share" : "Kongsi", - "Name" : "Nama", - "Delete" : "Padam" -}, -"nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/ms_MY.json b/apps/files_external/l10n/ms_MY.json deleted file mode 100644 index 3658a124898..00000000000 --- a/apps/files_external/l10n/ms_MY.json +++ /dev/null @@ -1,14 +0,0 @@ -{ "translations": { - "Personal" : "Peribadi", - "Username" : "Nama pengguna", - "Password" : "Kata laluan", - "Save" : "Simpan", - "Region" : "Wilayah", - "URL" : "URL", - "Location" : "Lokasi", - "ownCloud" : "ownCloud", - "Share" : "Kongsi", - "Name" : "Nama", - "Delete" : "Padam" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index 9d459ef4382..9bf05d11811 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -2,29 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Gi tilgang", - "Error configuring OAuth1" : "Feil ved oppsett av OAuth1", - "Please provide a valid app key and secret." : "Oppgi gyldig appnøkkel og hemmelighet.", "Error configuring OAuth2" : "Feil ved oppsett av OAuth2", "Generate keys" : "Generer nøkler", "Error generating key pair" : "Feil ved nøkkelgenerering", - "Type to select account or group." : "Skriv for å velge konto eller gruppe.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", - "Enable encryption" : "Aktiver kryptering", - "Enable previews" : "Skru på forhåndsvisninger", - "Enable sharing" : "Aktiver deling", - "Check for changes" : "Se etter endringer", - "Never" : "Aldri", - "Once every direct access" : "En gang pr. direkte tilgang", - "Read only" : "Skrivebeskyttet", - "Disconnect" : "Koble fra", - "Admin defined" : "Admin-definert", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll er deaktivert på grunn av det store antallet konfigurerte lagringsenheter. Klikk for å sjekke status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på at du vil koble fra denne eksterne lagringen? Det vil gjøre lagringen utilgjengelig i Nextcloud og vil føre til sletting av disse filene og mappene på enhver synkroniseringsklient som for øyeblikket er tilkoblet, men vil ikke slette noen filer og mapper på selve den eksterne lagringen.", - "Delete storage?" : "Slett lagringsplass", - "Saved" : "Lagret", - "Saving …" : "Lagrer...", - "Save" : "Lagre", "Forbidden to manage local mounts" : "Forbudt å administrere lokale monteringer", "Storage with ID \"%d\" not found" : "Lager med ID \"%d\" ikke funnet", "Invalid backend or authentication mechanism class" : "Ugyldig bakende eller type autentiseringsmekanisme", @@ -42,9 +22,6 @@ OC.L10N.register( "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "App-nøkkel", - "App secret" : "App-hemmelighet", "OAuth2" : "OAuth2", "Client ID" : "Klient-ID", "Client secret" : "Klient-hemmelighet", @@ -113,9 +90,10 @@ OC.L10N.register( "External storage support" : "Støtte for ekstern lagring", "Adds basic external storage support" : "Legger til enkel ekstern lagringsstøtte", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Dette programmet gjør det mulig for administratorer å konfigurere tilkoblinger til eksterne lagringsleverandører, for eksempel FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mer. Administrasjon kan velge hvilke typer lagring som skal aktiveres, og kan montere disse lagringsstedene for en konto, en gruppe eller hele systemet. Brukere vil se en ny mappe dukke opp i roten Nextcloud-katalogen, som de kan få tilgang til og bruke som alle andre Nextcloud-mapper. Ekstern lagring gjør det også mulig for folk å dele filer som er lagret på disse eksterne plasseringene. I disse tilfellene brukes legitimasjonen til eieren av filen når mottakeren ber om filen fra ekstern lagring, og sikrer dermed at mottakeren har tilgang til den delte filen.\n\nEkstern lagring kan konfigureres ved hjelp av grafisk grensesnitt (GUI) eller på kommandolinjen. Dette andre alternativet gir administrasjonen mer fleksibilitet for massekonfigurering av eksterne lagringsmonteringer og innstilling av monteringsprioriteter. Du finner mer informasjon i GUI-dokumentasjonen for ekstern lagring og dokumentasjonen for konfigurasjonsfilen for ekstern lagring.", - "Enter missing credentials" : "Skriv inn manglende påloggingsinformasjon", + "Confirm" : "Bekreft", "Unable to update this external storage config. {statusMessage}" : "Kan ikke oppdatere denne konfigurasjonen for ekstern lagring. {statusMessage}.", "New configuration successfully saved" : "Ny konfigurasjon lagret", + "Enter missing credentials" : "Skriv inn manglende påloggingsinformasjon", "There was an error with this external storage." : "Det oppstod en feil med denne eksterne lagringen.", "We were unable to check the external storage {basename}" : "Vi kunne ikke sjekke den eksterne lagringen {basename}", "Examine this faulty external storage configuration" : "Undersøk denne defekte eksterne lagringskonfigurasjonen", @@ -131,6 +109,25 @@ OC.L10N.register( "Scope" : "Omfang", "Personal" : "Personlig", "System" : "System", + "Type to select account or group." : "Skriv for å velge konto eller gruppe.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", + "Enable encryption" : "Aktiver kryptering", + "Enable previews" : "Skru på forhåndsvisninger", + "Enable sharing" : "Aktiver deling", + "Check for changes" : "Se etter endringer", + "Never" : "Aldri", + "Once every direct access" : "En gang pr. direkte tilgang", + "Read only" : "Skrivebeskyttet", + "Disconnect" : "Koble fra", + "Admin defined" : "Admin-definert", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll er deaktivert på grunn av det store antallet konfigurerte lagringsenheter. Klikk for å sjekke status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på at du vil koble fra denne eksterne lagringen? Det vil gjøre lagringen utilgjengelig i Nextcloud og vil føre til sletting av disse filene og mappene på enhver synkroniseringsklient som for øyeblikket er tilkoblet, men vil ikke slette noen filer og mapper på selve den eksterne lagringen.", + "Delete storage?" : "Slett lagringsplass", + "Click to recheck the configuration" : "Klikk for å sjekke oppsettet igjen", + "Saved" : "Lagret", + "Saving …" : "Lagrer...", + "Save" : "Lagre", "No external storage configured or you don't have the permission to configure them" : "Ingen ekstern lagring konfigurert eller at du mangler tillatelse for å konfigurere dem", "Open documentation" : "Åpne dokumentasjon", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Ekstern lagring lar deg montere eksterne lagringstjenester og enheter som sekundære Nextcloud-lagringsenheter. Du kan også tillate brukere å montere sine egne eksterne lagringstjenester.", @@ -138,36 +135,15 @@ OC.L10N.register( "Authentication" : "Autentisering", "Configuration" : "Oppsett", "Available for" : "Tilgjengelig for", - "Click to recheck the configuration" : "Klikk for å sjekke oppsettet igjen", "Add storage" : "Legg til lagringsplass", "All people" : "Alle personer", "Advanced settings" : "Avanserte innstillinger", "Allow people to mount external storage" : "Tillatt personer å montere ekstern lagring", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale påloggingsdetaljer kan brukes til å autentisere med flere eksterne lagringer som krever de samme påloggingsdetaljer.", - "Type to select user or group." : "Skriv for å velge bruker eller gruppe.", - "Empty response from the server" : "Tomt svar fra serveren", - "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", - "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjernserveren/ remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", - "There was an error with message: " : "Det oppsto en feil med melding: ", - "external-storage" : "eksternlagring", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra serveren", - "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", - "Username" : "Brukernavn", - "Credentials saved" : "Påloggingsdetaljer lagret", - "Credentials saving failed" : "Lagring av påloggingsdetaljer mislyktes", - "Credentials required" : "Påloggingsdetaljer kreves", - "Storage with ID \"%d\" is not user editable" : "Lager med ID \"%d\" kan ikke redigeres av bruker", - "Username and password" : "Brukernavn og passord", - "Global credentials, user entered" : "Global påloggingsdetalj, bruker angitt", - "User entered, store in database" : "Brukerangitt, lagre i databasen", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Deaktivering vil tillate bruk av et filsystem uten store og små bokstaver, men kommer med en ytelsesstraff.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Sjekk ACL-ene til hver fil eller mappe i en katalog for å filtrere ut elementer der brukeren ikke har leserettigheter, kan påvirke ytelsen", - "Username as share" : "Brukernavn som delt ressurs", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikasjonen gjør det mulig for administratorer å konfigurere tilkoblinger til eksterne lagringsleverandører, for eksempel FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mer. Administratorer kan velge hvilke typer lagring som skal aktiveres og kan montere disse lagringsstedene for en bruker, en gruppe eller hele systemet. Brukere vil se en ny mappe vises i deres Nextcloud-rotkatalog, som de kan få tilgang til og bruke som enhver annen Nextcloud-mappe. Ekstern lagring lar også brukere dele filer som er lagret på disse eksterne stedene. I disse tilfellene brukes legitimasjonen for eieren av filen når mottakeren ber om filen fra ekstern lagring, og sikrer dermed at mottakeren får tilgang til den delte filen.\n\nEkstern lagring kan konfigureres ved hjelp av GUI eller på kommandolinjen . Dette andre alternativet gir en avansert bruker mer fleksibilitet for å konfigurere eksterne lagringer og angi monteringsprioriteter, gjerne mange om gangen. Mer informasjon er tilgjengelig i GUI-dokumentasjonen for ekstern lagring og dokumentasjonen for konfigurasjonsfilen for ekstern lagring.", - "Name" : "Navn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstern lagring lar deg montere eksterne lagringstjenester og enheter som sekundære Nextcloud-lagringsenheter. Du kan også tillate brukere å montere sine egne eksterne lagringstjenester.", - "All users" : "Alle brukere", - "Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre" + "Error configuring OAuth1" : "Feil ved oppsett av OAuth1", + "Please provide a valid app key and secret." : "Oppgi gyldig appnøkkel og hemmelighet.", + "OAuth1" : "OAuth1", + "App key" : "App-nøkkel", + "App secret" : "App-hemmelighet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index bd981647341..5b21075eb8b 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -1,28 +1,8 @@ { "translations": { "Grant access" : "Gi tilgang", - "Error configuring OAuth1" : "Feil ved oppsett av OAuth1", - "Please provide a valid app key and secret." : "Oppgi gyldig appnøkkel og hemmelighet.", "Error configuring OAuth2" : "Feil ved oppsett av OAuth2", "Generate keys" : "Generer nøkler", "Error generating key pair" : "Feil ved nøkkelgenerering", - "Type to select account or group." : "Skriv for å velge konto eller gruppe.", - "(Group)" : "(Gruppe)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", - "Enable encryption" : "Aktiver kryptering", - "Enable previews" : "Skru på forhåndsvisninger", - "Enable sharing" : "Aktiver deling", - "Check for changes" : "Se etter endringer", - "Never" : "Aldri", - "Once every direct access" : "En gang pr. direkte tilgang", - "Read only" : "Skrivebeskyttet", - "Disconnect" : "Koble fra", - "Admin defined" : "Admin-definert", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll er deaktivert på grunn av det store antallet konfigurerte lagringsenheter. Klikk for å sjekke status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på at du vil koble fra denne eksterne lagringen? Det vil gjøre lagringen utilgjengelig i Nextcloud og vil føre til sletting av disse filene og mappene på enhver synkroniseringsklient som for øyeblikket er tilkoblet, men vil ikke slette noen filer og mapper på selve den eksterne lagringen.", - "Delete storage?" : "Slett lagringsplass", - "Saved" : "Lagret", - "Saving …" : "Lagrer...", - "Save" : "Lagre", "Forbidden to manage local mounts" : "Forbudt å administrere lokale monteringer", "Storage with ID \"%d\" not found" : "Lager med ID \"%d\" ikke funnet", "Invalid backend or authentication mechanism class" : "Ugyldig bakende eller type autentiseringsmekanisme", @@ -40,9 +20,6 @@ "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "App-nøkkel", - "App secret" : "App-hemmelighet", "OAuth2" : "OAuth2", "Client ID" : "Klient-ID", "Client secret" : "Klient-hemmelighet", @@ -111,9 +88,10 @@ "External storage support" : "Støtte for ekstern lagring", "Adds basic external storage support" : "Legger til enkel ekstern lagringsstøtte", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Dette programmet gjør det mulig for administratorer å konfigurere tilkoblinger til eksterne lagringsleverandører, for eksempel FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mer. Administrasjon kan velge hvilke typer lagring som skal aktiveres, og kan montere disse lagringsstedene for en konto, en gruppe eller hele systemet. Brukere vil se en ny mappe dukke opp i roten Nextcloud-katalogen, som de kan få tilgang til og bruke som alle andre Nextcloud-mapper. Ekstern lagring gjør det også mulig for folk å dele filer som er lagret på disse eksterne plasseringene. I disse tilfellene brukes legitimasjonen til eieren av filen når mottakeren ber om filen fra ekstern lagring, og sikrer dermed at mottakeren har tilgang til den delte filen.\n\nEkstern lagring kan konfigureres ved hjelp av grafisk grensesnitt (GUI) eller på kommandolinjen. Dette andre alternativet gir administrasjonen mer fleksibilitet for massekonfigurering av eksterne lagringsmonteringer og innstilling av monteringsprioriteter. Du finner mer informasjon i GUI-dokumentasjonen for ekstern lagring og dokumentasjonen for konfigurasjonsfilen for ekstern lagring.", - "Enter missing credentials" : "Skriv inn manglende påloggingsinformasjon", + "Confirm" : "Bekreft", "Unable to update this external storage config. {statusMessage}" : "Kan ikke oppdatere denne konfigurasjonen for ekstern lagring. {statusMessage}.", "New configuration successfully saved" : "Ny konfigurasjon lagret", + "Enter missing credentials" : "Skriv inn manglende påloggingsinformasjon", "There was an error with this external storage." : "Det oppstod en feil med denne eksterne lagringen.", "We were unable to check the external storage {basename}" : "Vi kunne ikke sjekke den eksterne lagringen {basename}", "Examine this faulty external storage configuration" : "Undersøk denne defekte eksterne lagringskonfigurasjonen", @@ -129,6 +107,25 @@ "Scope" : "Omfang", "Personal" : "Personlig", "System" : "System", + "Type to select account or group." : "Skriv for å velge konto eller gruppe.", + "(Group)" : "(Gruppe)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", + "Enable encryption" : "Aktiver kryptering", + "Enable previews" : "Skru på forhåndsvisninger", + "Enable sharing" : "Aktiver deling", + "Check for changes" : "Se etter endringer", + "Never" : "Aldri", + "Once every direct access" : "En gang pr. direkte tilgang", + "Read only" : "Skrivebeskyttet", + "Disconnect" : "Koble fra", + "Admin defined" : "Admin-definert", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll er deaktivert på grunn av det store antallet konfigurerte lagringsenheter. Klikk for å sjekke status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Er du sikker på at du vil koble fra denne eksterne lagringen? Det vil gjøre lagringen utilgjengelig i Nextcloud og vil føre til sletting av disse filene og mappene på enhver synkroniseringsklient som for øyeblikket er tilkoblet, men vil ikke slette noen filer og mapper på selve den eksterne lagringen.", + "Delete storage?" : "Slett lagringsplass", + "Click to recheck the configuration" : "Klikk for å sjekke oppsettet igjen", + "Saved" : "Lagret", + "Saving …" : "Lagrer...", + "Save" : "Lagre", "No external storage configured or you don't have the permission to configure them" : "Ingen ekstern lagring konfigurert eller at du mangler tillatelse for å konfigurere dem", "Open documentation" : "Åpne dokumentasjon", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Ekstern lagring lar deg montere eksterne lagringstjenester og enheter som sekundære Nextcloud-lagringsenheter. Du kan også tillate brukere å montere sine egne eksterne lagringstjenester.", @@ -136,36 +133,15 @@ "Authentication" : "Autentisering", "Configuration" : "Oppsett", "Available for" : "Tilgjengelig for", - "Click to recheck the configuration" : "Klikk for å sjekke oppsettet igjen", "Add storage" : "Legg til lagringsplass", "All people" : "Alle personer", "Advanced settings" : "Avanserte innstillinger", "Allow people to mount external storage" : "Tillatt personer å montere ekstern lagring", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale påloggingsdetaljer kan brukes til å autentisere med flere eksterne lagringer som krever de samme påloggingsdetaljer.", - "Type to select user or group." : "Skriv for å velge bruker eller gruppe.", - "Empty response from the server" : "Tomt svar fra serveren", - "Couldn't access. Please log out and in again to activate this mount point" : "Fikk ikke tilgang. Logg ut og inn igjen for å aktivere dette oppkoblingspunktet.", - "Couldn't get the information from the remote server: {code} {type}" : "Kunne ikke få informasjon fra fjernserveren/ remote server: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Klarte ikke å hente listen over eksterne oppkoblingspunkter: {type}", - "There was an error with message: " : "Det oppsto en feil med melding: ", - "external-storage" : "eksternlagring", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra serveren", - "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", - "Username" : "Brukernavn", - "Credentials saved" : "Påloggingsdetaljer lagret", - "Credentials saving failed" : "Lagring av påloggingsdetaljer mislyktes", - "Credentials required" : "Påloggingsdetaljer kreves", - "Storage with ID \"%d\" is not user editable" : "Lager med ID \"%d\" kan ikke redigeres av bruker", - "Username and password" : "Brukernavn og passord", - "Global credentials, user entered" : "Global påloggingsdetalj, bruker angitt", - "User entered, store in database" : "Brukerangitt, lagre i databasen", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Deaktivering vil tillate bruk av et filsystem uten store og små bokstaver, men kommer med en ytelsesstraff.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Sjekk ACL-ene til hver fil eller mappe i en katalog for å filtrere ut elementer der brukeren ikke har leserettigheter, kan påvirke ytelsen", - "Username as share" : "Brukernavn som delt ressurs", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denne applikasjonen gjør det mulig for administratorer å konfigurere tilkoblinger til eksterne lagringsleverandører, for eksempel FTP-servere, S3- eller SWIFT-objektlagre, andre Nextcloud-servere, WebDAV-servere og mer. Administratorer kan velge hvilke typer lagring som skal aktiveres og kan montere disse lagringsstedene for en bruker, en gruppe eller hele systemet. Brukere vil se en ny mappe vises i deres Nextcloud-rotkatalog, som de kan få tilgang til og bruke som enhver annen Nextcloud-mappe. Ekstern lagring lar også brukere dele filer som er lagret på disse eksterne stedene. I disse tilfellene brukes legitimasjonen for eieren av filen når mottakeren ber om filen fra ekstern lagring, og sikrer dermed at mottakeren får tilgang til den delte filen.\n\nEkstern lagring kan konfigureres ved hjelp av GUI eller på kommandolinjen . Dette andre alternativet gir en avansert bruker mer fleksibilitet for å konfigurere eksterne lagringer og angi monteringsprioriteter, gjerne mange om gangen. Mer informasjon er tilgjengelig i GUI-dokumentasjonen for ekstern lagring og dokumentasjonen for konfigurasjonsfilen for ekstern lagring.", - "Name" : "Navn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Ekstern lagring lar deg montere eksterne lagringstjenester og enheter som sekundære Nextcloud-lagringsenheter. Du kan også tillate brukere å montere sine egne eksterne lagringstjenester.", - "All users" : "Alle brukere", - "Allow users to mount external storage" : "Tillat at brukere kobler opp eksterne lagre" + "Error configuring OAuth1" : "Feil ved oppsett av OAuth1", + "Please provide a valid app key and secret." : "Oppgi gyldig appnøkkel og hemmelighet.", + "OAuth1" : "OAuth1", + "App key" : "App-nøkkel", + "App secret" : "App-hemmelighet" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index d502c488bd3..51789ec380c 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -1,28 +1,12 @@ OC.L10N.register( "files_external", { - "Grant access" : "Sta toegang toe", - "Error configuring OAuth1" : "Fout bij configureren OAuth1", - "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", + "Grant access" : "Toegang verlenen", "Error configuring OAuth2" : "Fout bij configureren OAuth2", - "Generate keys" : "Genereer sleutels", + "Generate keys" : "Sleutels genereren", "Error generating key pair" : "Fout bij genereren sleutelpaar", - "(Group)" : "(Groep)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", - "Enable encryption" : "Versleuteling inschakelen", - "Enable previews" : "Activeren voorbeelden", - "Enable sharing" : "Activeren delen", - "Check for changes" : "Controleren op wijzigingen", - "Never" : "Nooit", - "Once every direct access" : "Een keer bij elke directe toegang", - "Read only" : "Alleen lezen", - "Disconnect" : "Verbreek verbinding", - "Admin defined" : "Beheerder gedefinieerd", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Weet je zeker dat je deze externe opslag wilt loskoppelen? Het maakt de opslag niet langer beschikbaar in Nextcloud en leidt tot het verwijderen van de bestanden en mappen op elke synchronisatieclient die momenteel is verbonden. Het verwijdert geen bestanden en mappen op de externe opslag zelf.", - "Delete storage?" : "Opslag verwijderen?", - "Saved" : "Bewaard", - "Saving …" : "Opslaan ...", - "Save" : "Bewaren", + "You are not logged in" : "Je bent niet ingelogd", + "Permission denied" : "Toestemming geweigerd", "Forbidden to manage local mounts" : "Niet toegestaan lokale koppelpunten te beheren", "Storage with ID \"%d\" not found" : "Opslag met ID \"%d\" niet gevonden", "Invalid backend or authentication mechanism class" : "Ongeldige backend of authenticatie mechanisme klasse", @@ -35,13 +19,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Onvoldoende authenticatiemechanisme parameters", "Insufficient data: %s" : "Onvoldoende gegevens: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Opslag met ID \"%d\" is niet bewerkbaar door niet-beheerders", "Access key" : "Access Key", "Secret key" : "Geheime sleutel", "Builtin" : "Ingebouwd", "None" : "Geen", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -53,14 +35,18 @@ OC.L10N.register( "OpenStack v3" : "OpenStack v3", "Domain" : "Domein", "Rackspace" : "Rackspace", - "API key" : "API sleutel", - "Global credentials" : "Algemene inloggegevens", + "API key" : "API-sleutel", + "Global credentials" : "Globale inloggegevens", "Log-in credentials, save in database" : "Inloggegevens, bewaren in de database", + "Login and password" : "Login en wachtwoord", "Log-in credentials, save in session" : "Inloggegevens, opslaan in sessie", + "Global credentials, manually entered" : "Globale inloggegevens, handmatig ingevoerd", + "Manually entered, store in database" : "Handmatig ingevoerd, opslaan in database", "RSA public key" : "RSA publieke sleutel", "Public key" : "Publieke sleutel", "RSA private key" : "RSA privésleutel", "Private key" : "Privésleutel", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos standaardomgeving, standaard ingesteld op \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos ticket Apache modus", "Kerberos ticket" : "Kerberos ticket", "Amazon S3" : "Amazon S3", @@ -68,9 +54,12 @@ OC.L10N.register( "Hostname" : "Hostnaam", "Port" : "Poort", "Region" : "Regio", - "Enable SSL" : "Activeren SSL", - "Enable Path Style" : "Activeren pad stijl", - "Legacy (v2) authentication" : "Legacy (v2) authenticatie", + "Storage Class" : "Opslagklasse", + "Enable SSL" : "SSL inschakelen", + "Enable Path Style" : "Padstijl inschakelen", + "Legacy (v2) authentication" : "Verouderde (v2) authenticatie", + "Enable multipart copy" : "Meervoudig kopiëren inschakelen", + "SSE-C encryption key" : "SSE-C versleutelingscode", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Externe submap", @@ -87,9 +76,13 @@ OC.L10N.register( "SMB/CIFS" : "SMB/CIFS", "Share" : "Share", "Show hidden files" : "Laat verborgen bestanden zien", - "Verify ACL access when listing files" : "Controleer ACL bij bestandsoverzichten", + "Case sensitive file system" : "Hoofdlettergevoelig bestandssysteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Door dit uit te schakelen kan een hoofdletterongevoelig bestandssysteem worden gebruikt, zij het met verminderde prestaties", + "Verify ACL access when listing files" : "ACL controleren bij bestandsoverzichten", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een map om items eruit te filteren waarvan het account geen leesrechten heeft. Dit geeft verminderde prestaties.", "Timeout" : "Time-out", - "SMB/CIFS using OC login" : "SMB/CIFS via OC inlog", + "SMB/CIFS using OC login" : "SMB/CIFS via OC-inlog", + "Login as share" : "Login als share", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Servicenaam", "Request timeout (seconds)" : "Aanvraag time-out (seconds)", @@ -97,46 +90,73 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Aankoppelen van %s is niet mogelijk. Vraag je beheerder dit te installeren.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" is niet geïnstalleerd. Aankoppelen van %2$s is niet mogelijk. Vraag je beheerder om dit te installeren.", "External storage" : "Externe opslag", - "External storage support" : "Externe opslag ondersteuning", - "Adds basic external storage support" : "Toevoegen basale ondersteuning voor externe opslag", - "External mount error" : "Extern koppelpunt fout", + "External storage support" : "Ondersteuning voor externe opslag", + "Adds basic external storage support" : "Voegt basale ondersteuning voor externe opslag toe", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Met deze applicatie kunnen beheerders verbindingen configureren met externe opslagproviders, zoals FTP-servers, S3- of SWIFT-objectstores, andere Nextcloud-servers, WebDAV-servers en meer. De beneerder kan kiezen welke soorten opslag ze inschakelen en kan deze opslaglocaties koppelen voor een account, een groep of het hele systeem. Gebruikers zullen een nieuwe map zien verschijnen in hun root Nextcloud-map, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Met externe opslag kunnen mensen ook bestanden delen die op deze externe locaties zijn opgeslagen. In deze gevallen worden de inloggegevens van de eigenaar van het bestand gebruikt wanneer de ontvanger het bestand vanuit externe opslag opvraagt, waardoor wordt gegarandeerd dat de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan worden geconfigureerd met behulp van de GUI of op de opdrachtregel. Deze tweede optie biedt de administratie meer flexibiliteit voor het configureren van externe opslagbevestigingen in bulk en het stellen van prioriteiten voor aankoppelen. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor het configuratiebestand voor externe opslag.", + "Confirm" : "Bevestigen", + "Storage credentials" : "Opslagreferenties", + "To access the storage, you need to provide the authentication credentials." : "Om toegang te krijgen tot de opslag, moeten de authenticatiegegevens worden geleverd.", + "Enter the storage login" : "Voer de loginnaam in voor de opslag", + "Enter the storage password" : "Voer het wachtwoord in voor de opslag", + "Unable to update this external storage config. {statusMessage}" : "Kan deze configuratie van de externe opslag niet bijwerken.{statusMessage}", + "New configuration successfully saved" : "Nieuwe configuratie succesvol opgeslagen", + "Enter missing credentials" : "Voer de ontbrekende inloggegevens in", + "Credentials successfully set" : "Inloggegevens succesvol ingesteld", + "Error while setting credentials: {error}" : "Fout tijdens het instellen van inloggegevens: {error}", + "Checking storage …" : "Controle van opslag …", + "There was an error with this external storage." : "Er is een fout opgetreden bij deze externe opslag.", + "We were unable to check the external storage {basename}" : "We konden de externe opslag {basename} niet controleren", + "Examine this faulty external storage configuration" : "Onderzoek deze foutieve externe opslagconfiguratie", + "Open in Files" : "Openen in Bestanden", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Er is een fout opgetreden bij deze externe opslag. Wil je de configuratie voor dit aankoppelpunt bekijken op de instellingenpagina?", + "External mount error" : "Fout met extern aankoppelpunt", + "List of external storage." : "Lijst van externe opslag.", + "There is no external storage configured. You can configure them in your Personal settings." : "Er is geen externe opslag geconfigureerd. Je kunt deze configureren in Persoonlijke instellingen.", + "There is no external storage configured and you don't have the permission to configure them." : "Er is geen externe opslag geconfigureerd en je hebt geen toestemming om deze te configureren.", + "No external storage" : "Geen externe opslag", "Storage type" : "Opslagtype", "Unknown" : "Onbekend", - "Scope" : "Scope", + "Scope" : "Toepassingsgebied", "Personal" : "Persoonlijk", "System" : "Systeem", + "Type to select account or group." : "Typ om account of groep te selecteren.", + "(Group)" : "(Groep)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", + "Enable encryption" : "Versleuteling inschakelen", + "Enable previews" : "Voorbeeldweergave inschakelen", + "Enable sharing" : "Delen inschakelen", + "Check for changes" : "Controleren op wijzigingen", + "Never" : "Nooit", + "Once every direct access" : "Een keer bij elke directe toegang", + "Read only" : "Alleen-lezen", + "Disconnect" : "Verbinding verbreken", + "Unknown backend: {backendName}" : "Onbekend back-end: {backendName}", + "Admin defined" : "Beheerder gedefinieerd", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatische statuscontrole is uitgeschakeld vanwege het grote aantal geconfigureerde opslagplaatsen. Klik om de status te controleren", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Weet je zeker dat je deze externe opslag wilt loskoppelen? Het maakt de opslag niet langer beschikbaar in Nextcloud en leidt tot het verwijderen van de bestanden en mappen op elke synchronisatieclient die momenteel is verbonden. Het verwijdert geen bestanden en mappen op de externe opslag zelf.", + "Delete storage?" : "Opslag verwijderen?", + "Click to recheck the configuration" : "Klik om de configuratie opnieuw te controleren", + "Saved" : "Bewaard", + "Saving …" : "Opslaan …", + "Save" : "Opslaan", + "Failed to save global credentials" : "Het opslaan van globale inloggegevens is mislukt", + "Failed to save global credentials: {message}" : "Het opslaan van globale inloggegevens is mislukt: {message}", "No external storage configured or you don't have the permission to configure them" : "Geen externe opslag geconfigureerd of je hebt geen toestemming om deze te configureren", "Open documentation" : "Documentatie openen", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Met externe opslag kun je externe opslagservices en -apparaten koppelen als secundaire Nextcloud-opslagapparaten. Je kunt mensen ook toestaan hun eigen externe opslagdiensten aan te koppelen.", "Folder name" : "Mapnaam", "Authentication" : "Authenticatie", "Configuration" : "Configuratie", "Available for" : "Beschikbaar voor", - "Click to recheck the configuration" : "Klik om de configuratie opnieuw te controleren", - "Add storage" : "Toevoegen opslag", + "Add storage" : "Opslag toevoegen", + "All people" : "Iedereen", "Advanced settings" : "Geavanceerde instellingen", + "Allow people to mount external storage" : "Toestaan dat mensen externe opslag aankoppelen", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale inloggegevens kunnen worden gebruikt met meerdere externe opslagsystemen met dezelfde inloggegevens.", - "Empty response from the server" : "Lege reactie van de server", - "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren", - "Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}", - "There was an error with message: " : "Er was een fout met de volgende melding:", - "external-storage" : "externe opslag", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg", - "Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount", - "Username" : "Gebruikersnaam", - "Credentials saved" : "Inloggegevens opgeslagen", - "Credentials saving failed" : "Opslaan inloggegevens mislukt", - "Credentials required" : "Inloggegevens vereist", - "Storage with ID \"%d\" is not user editable" : "Opslag met ID \"%d\" is niet door gebruikers te bewerken", - "Username and password" : "Gebruikersnaam en wachtwoord", - "Global credentials, user entered" : "Algemene inloggegevens, door gebruiker opgegeven", - "User entered, store in database" : "Gebruiker opgegeven, opslaan in de database", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een directory om objecten uit te filteren waar de gebruiker geen leesmachtiging heeft, betekent wel prestatieverlies", - "Username as share" : "Gebruikersnaam als share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.", - "Name" : "Naam", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externe opslag laat je externe opslag diensten en apparaten aankoppelen als secundaire Nextcloud opslag. Je kunt ook toestaan dat gebruikers hun eigen externe opslagdiensten aankoppelen.", - "All users" : "Alle gebruikers", - "Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen" + "Error configuring OAuth1" : "Fout bij configureren OAuth1", + "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index 742052dd977..5765903f6ee 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -1,26 +1,10 @@ { "translations": { - "Grant access" : "Sta toegang toe", - "Error configuring OAuth1" : "Fout bij configureren OAuth1", - "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", + "Grant access" : "Toegang verlenen", "Error configuring OAuth2" : "Fout bij configureren OAuth2", - "Generate keys" : "Genereer sleutels", + "Generate keys" : "Sleutels genereren", "Error generating key pair" : "Fout bij genereren sleutelpaar", - "(Group)" : "(Groep)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", - "Enable encryption" : "Versleuteling inschakelen", - "Enable previews" : "Activeren voorbeelden", - "Enable sharing" : "Activeren delen", - "Check for changes" : "Controleren op wijzigingen", - "Never" : "Nooit", - "Once every direct access" : "Een keer bij elke directe toegang", - "Read only" : "Alleen lezen", - "Disconnect" : "Verbreek verbinding", - "Admin defined" : "Beheerder gedefinieerd", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Weet je zeker dat je deze externe opslag wilt loskoppelen? Het maakt de opslag niet langer beschikbaar in Nextcloud en leidt tot het verwijderen van de bestanden en mappen op elke synchronisatieclient die momenteel is verbonden. Het verwijdert geen bestanden en mappen op de externe opslag zelf.", - "Delete storage?" : "Opslag verwijderen?", - "Saved" : "Bewaard", - "Saving …" : "Opslaan ...", - "Save" : "Bewaren", + "You are not logged in" : "Je bent niet ingelogd", + "Permission denied" : "Toestemming geweigerd", "Forbidden to manage local mounts" : "Niet toegestaan lokale koppelpunten te beheren", "Storage with ID \"%d\" not found" : "Opslag met ID \"%d\" niet gevonden", "Invalid backend or authentication mechanism class" : "Ongeldige backend of authenticatie mechanisme klasse", @@ -33,13 +17,11 @@ "Unsatisfied authentication mechanism parameters" : "Onvoldoende authenticatiemechanisme parameters", "Insufficient data: %s" : "Onvoldoende gegevens: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Opslag met ID \"%d\" is niet bewerkbaar door niet-beheerders", "Access key" : "Access Key", "Secret key" : "Geheime sleutel", "Builtin" : "Ingebouwd", "None" : "Geen", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Client secret", @@ -51,14 +33,18 @@ "OpenStack v3" : "OpenStack v3", "Domain" : "Domein", "Rackspace" : "Rackspace", - "API key" : "API sleutel", - "Global credentials" : "Algemene inloggegevens", + "API key" : "API-sleutel", + "Global credentials" : "Globale inloggegevens", "Log-in credentials, save in database" : "Inloggegevens, bewaren in de database", + "Login and password" : "Login en wachtwoord", "Log-in credentials, save in session" : "Inloggegevens, opslaan in sessie", + "Global credentials, manually entered" : "Globale inloggegevens, handmatig ingevoerd", + "Manually entered, store in database" : "Handmatig ingevoerd, opslaan in database", "RSA public key" : "RSA publieke sleutel", "Public key" : "Publieke sleutel", "RSA private key" : "RSA privésleutel", "Private key" : "Privésleutel", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos standaardomgeving, standaard ingesteld op \"WORKGROUP\"", "Kerberos ticket Apache mode" : "Kerberos ticket Apache modus", "Kerberos ticket" : "Kerberos ticket", "Amazon S3" : "Amazon S3", @@ -66,9 +52,12 @@ "Hostname" : "Hostnaam", "Port" : "Poort", "Region" : "Regio", - "Enable SSL" : "Activeren SSL", - "Enable Path Style" : "Activeren pad stijl", - "Legacy (v2) authentication" : "Legacy (v2) authenticatie", + "Storage Class" : "Opslagklasse", + "Enable SSL" : "SSL inschakelen", + "Enable Path Style" : "Padstijl inschakelen", + "Legacy (v2) authentication" : "Verouderde (v2) authenticatie", + "Enable multipart copy" : "Meervoudig kopiëren inschakelen", + "SSE-C encryption key" : "SSE-C versleutelingscode", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Externe submap", @@ -85,9 +74,13 @@ "SMB/CIFS" : "SMB/CIFS", "Share" : "Share", "Show hidden files" : "Laat verborgen bestanden zien", - "Verify ACL access when listing files" : "Controleer ACL bij bestandsoverzichten", + "Case sensitive file system" : "Hoofdlettergevoelig bestandssysteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Door dit uit te schakelen kan een hoofdletterongevoelig bestandssysteem worden gebruikt, zij het met verminderde prestaties", + "Verify ACL access when listing files" : "ACL controleren bij bestandsoverzichten", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een map om items eruit te filteren waarvan het account geen leesrechten heeft. Dit geeft verminderde prestaties.", "Timeout" : "Time-out", - "SMB/CIFS using OC login" : "SMB/CIFS via OC inlog", + "SMB/CIFS using OC login" : "SMB/CIFS via OC-inlog", + "Login as share" : "Login als share", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Servicenaam", "Request timeout (seconds)" : "Aanvraag time-out (seconds)", @@ -95,46 +88,73 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Aankoppelen van %s is niet mogelijk. Vraag je beheerder dit te installeren.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" is niet geïnstalleerd. Aankoppelen van %2$s is niet mogelijk. Vraag je beheerder om dit te installeren.", "External storage" : "Externe opslag", - "External storage support" : "Externe opslag ondersteuning", - "Adds basic external storage support" : "Toevoegen basale ondersteuning voor externe opslag", - "External mount error" : "Extern koppelpunt fout", + "External storage support" : "Ondersteuning voor externe opslag", + "Adds basic external storage support" : "Voegt basale ondersteuning voor externe opslag toe", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Met deze applicatie kunnen beheerders verbindingen configureren met externe opslagproviders, zoals FTP-servers, S3- of SWIFT-objectstores, andere Nextcloud-servers, WebDAV-servers en meer. De beneerder kan kiezen welke soorten opslag ze inschakelen en kan deze opslaglocaties koppelen voor een account, een groep of het hele systeem. Gebruikers zullen een nieuwe map zien verschijnen in hun root Nextcloud-map, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Met externe opslag kunnen mensen ook bestanden delen die op deze externe locaties zijn opgeslagen. In deze gevallen worden de inloggegevens van de eigenaar van het bestand gebruikt wanneer de ontvanger het bestand vanuit externe opslag opvraagt, waardoor wordt gegarandeerd dat de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan worden geconfigureerd met behulp van de GUI of op de opdrachtregel. Deze tweede optie biedt de administratie meer flexibiliteit voor het configureren van externe opslagbevestigingen in bulk en het stellen van prioriteiten voor aankoppelen. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor het configuratiebestand voor externe opslag.", + "Confirm" : "Bevestigen", + "Storage credentials" : "Opslagreferenties", + "To access the storage, you need to provide the authentication credentials." : "Om toegang te krijgen tot de opslag, moeten de authenticatiegegevens worden geleverd.", + "Enter the storage login" : "Voer de loginnaam in voor de opslag", + "Enter the storage password" : "Voer het wachtwoord in voor de opslag", + "Unable to update this external storage config. {statusMessage}" : "Kan deze configuratie van de externe opslag niet bijwerken.{statusMessage}", + "New configuration successfully saved" : "Nieuwe configuratie succesvol opgeslagen", + "Enter missing credentials" : "Voer de ontbrekende inloggegevens in", + "Credentials successfully set" : "Inloggegevens succesvol ingesteld", + "Error while setting credentials: {error}" : "Fout tijdens het instellen van inloggegevens: {error}", + "Checking storage …" : "Controle van opslag …", + "There was an error with this external storage." : "Er is een fout opgetreden bij deze externe opslag.", + "We were unable to check the external storage {basename}" : "We konden de externe opslag {basename} niet controleren", + "Examine this faulty external storage configuration" : "Onderzoek deze foutieve externe opslagconfiguratie", + "Open in Files" : "Openen in Bestanden", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Er is een fout opgetreden bij deze externe opslag. Wil je de configuratie voor dit aankoppelpunt bekijken op de instellingenpagina?", + "External mount error" : "Fout met extern aankoppelpunt", + "List of external storage." : "Lijst van externe opslag.", + "There is no external storage configured. You can configure them in your Personal settings." : "Er is geen externe opslag geconfigureerd. Je kunt deze configureren in Persoonlijke instellingen.", + "There is no external storage configured and you don't have the permission to configure them." : "Er is geen externe opslag geconfigureerd en je hebt geen toestemming om deze te configureren.", + "No external storage" : "Geen externe opslag", "Storage type" : "Opslagtype", "Unknown" : "Onbekend", - "Scope" : "Scope", + "Scope" : "Toepassingsgebied", "Personal" : "Persoonlijk", "System" : "Systeem", + "Type to select account or group." : "Typ om account of groep te selecteren.", + "(Group)" : "(Groep)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", + "Enable encryption" : "Versleuteling inschakelen", + "Enable previews" : "Voorbeeldweergave inschakelen", + "Enable sharing" : "Delen inschakelen", + "Check for changes" : "Controleren op wijzigingen", + "Never" : "Nooit", + "Once every direct access" : "Een keer bij elke directe toegang", + "Read only" : "Alleen-lezen", + "Disconnect" : "Verbinding verbreken", + "Unknown backend: {backendName}" : "Onbekend back-end: {backendName}", + "Admin defined" : "Beheerder gedefinieerd", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatische statuscontrole is uitgeschakeld vanwege het grote aantal geconfigureerde opslagplaatsen. Klik om de status te controleren", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Weet je zeker dat je deze externe opslag wilt loskoppelen? Het maakt de opslag niet langer beschikbaar in Nextcloud en leidt tot het verwijderen van de bestanden en mappen op elke synchronisatieclient die momenteel is verbonden. Het verwijdert geen bestanden en mappen op de externe opslag zelf.", + "Delete storage?" : "Opslag verwijderen?", + "Click to recheck the configuration" : "Klik om de configuratie opnieuw te controleren", + "Saved" : "Bewaard", + "Saving …" : "Opslaan …", + "Save" : "Opslaan", + "Failed to save global credentials" : "Het opslaan van globale inloggegevens is mislukt", + "Failed to save global credentials: {message}" : "Het opslaan van globale inloggegevens is mislukt: {message}", "No external storage configured or you don't have the permission to configure them" : "Geen externe opslag geconfigureerd of je hebt geen toestemming om deze te configureren", "Open documentation" : "Documentatie openen", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Met externe opslag kun je externe opslagservices en -apparaten koppelen als secundaire Nextcloud-opslagapparaten. Je kunt mensen ook toestaan hun eigen externe opslagdiensten aan te koppelen.", "Folder name" : "Mapnaam", "Authentication" : "Authenticatie", "Configuration" : "Configuratie", "Available for" : "Beschikbaar voor", - "Click to recheck the configuration" : "Klik om de configuratie opnieuw te controleren", - "Add storage" : "Toevoegen opslag", + "Add storage" : "Opslag toevoegen", + "All people" : "Iedereen", "Advanced settings" : "Geavanceerde instellingen", + "Allow people to mount external storage" : "Toestaan dat mensen externe opslag aankoppelen", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale inloggegevens kunnen worden gebruikt met meerdere externe opslagsystemen met dezelfde inloggegevens.", - "Empty response from the server" : "Lege reactie van de server", - "Couldn't access. Please log out and in again to activate this mount point" : "Kon geen toegang krijgen. Log uit en opnieuw in om dit koppelpunt te activeren", - "Couldn't get the information from the remote server: {code} {type}" : "Kon geen informatie van de externe server krijgen: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kon geen overzicht met externe koppelpunten krijgen: {type}", - "There was an error with message: " : "Er was een fout met de volgende melding:", - "external-storage" : "externe opslag", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kon geen overzicht met Windows netwerk koppelpunten krijgen: Maak de server reactie leeg", - "Please enter the credentials for the {mount} mount" : "Geef de inloggegevens op voor de {mount} mount", - "Username" : "Gebruikersnaam", - "Credentials saved" : "Inloggegevens opgeslagen", - "Credentials saving failed" : "Opslaan inloggegevens mislukt", - "Credentials required" : "Inloggegevens vereist", - "Storage with ID \"%d\" is not user editable" : "Opslag met ID \"%d\" is niet door gebruikers te bewerken", - "Username and password" : "Gebruikersnaam en wachtwoord", - "Global credentials, user entered" : "Algemene inloggegevens, door gebruiker opgegeven", - "User entered, store in database" : "Gebruiker opgegeven, opslaan in de database", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een directory om objecten uit te filteren waar de gebruiker geen leesmachtiging heeft, betekent wel prestatieverlies", - "Username as share" : "Gebruikersnaam als share", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Met deze applicatie kunnen beheerders verbindingen met externe opslagproviders configureren, zoals FTP-servers, S3- of SWIFT-objectwinkels, andere Nextcloud-servers, WebDAV-servers en meer. Beheerders kunnen kiezen welke opslagtypen moeten worden ingeschakeld en kunnen deze opslaglocaties koppelen aan een gebruiker, een groep of het hele systeem. Gebruikers zien in hun hoofdmap een nieuwe map verschijnen, die ze kunnen openen en gebruiken zoals elke andere Nextcloud-map. Externe opslag stelt gebruikers ook in staat bestanden te delen die zijn opgeslagen op deze externe locaties. In deze gevallen worden de inloggegevens voor de eigenaar van het bestand gebruikt wanneer de ontvanger vanuit externe opslag het bestand opvraagt, waardoor de ontvanger toegang heeft tot het gedeelde bestand.\n\nExterne opslag kan met behulp van de GUI of via de opdrachtregel worden geconfigureerd. Deze tweede optie biedt de geavanceerde gebruiker meer flexibiliteit bij het configureren van bulk externe opslagaankoppelpunten en het instellen van aankoppel-prioriteiten. Meer informatie is beschikbaar in de GUI-documentatie voor externe opslag en de documentatie voor de configuratie van externe opslag.", - "Name" : "Naam", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externe opslag laat je externe opslag diensten en apparaten aankoppelen als secundaire Nextcloud opslag. Je kunt ook toestaan dat gebruikers hun eigen externe opslagdiensten aankoppelen.", - "All users" : "Alle gebruikers", - "Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen" + "Error configuring OAuth1" : "Fout bij configureren OAuth1", + "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "App secret" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/nn_NO.js b/apps/files_external/l10n/nn_NO.js deleted file mode 100644 index 00be7c7e386..00000000000 --- a/apps/files_external/l10n/nn_NO.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "Personleg", - "Username" : "Brukarnamn", - "Password" : "Passord", - "Save" : "Lagra", - "Region" : "Region/fylke", - "WebDAV" : "WebDAV", - "URL" : "Nettstad", - "Host" : "Tenar", - "Location" : "Stad", - "ownCloud" : "ownCloud", - "Share" : "Del", - "Name" : "Namn", - "Folder name" : "Mappenamn", - "Configuration" : "Innstillingar", - "Delete" : "Slett" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nn_NO.json b/apps/files_external/l10n/nn_NO.json deleted file mode 100644 index 6f2aeceb13b..00000000000 --- a/apps/files_external/l10n/nn_NO.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Personal" : "Personleg", - "Username" : "Brukarnamn", - "Password" : "Passord", - "Save" : "Lagra", - "Region" : "Region/fylke", - "WebDAV" : "WebDAV", - "URL" : "Nettstad", - "Host" : "Tenar", - "Location" : "Stad", - "ownCloud" : "ownCloud", - "Share" : "Del", - "Name" : "Namn", - "Folder name" : "Mappenamn", - "Configuration" : "Innstillingar", - "Delete" : "Slett" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/oc.js b/apps/files_external/l10n/oc.js deleted file mode 100644 index d66ff356e42..00000000000 --- a/apps/files_external/l10n/oc.js +++ /dev/null @@ -1,107 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons de requèsta a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons d'aacès a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.", - "Please provide a valid app key and secret." : "Provesissètz una clau d'aplicacion e un senhal valids.", - "Step 1 failed. Exception: %s" : "L’etapa 1 a fracassat. Error : %s", - "Step 2 failed. Exception: %s" : "L’etapa 2 a fracassat. Error : %s", - "External storage" : "Emmagazinatge extèrne", - "Personal" : "Personal", - "System" : "Sistèma", - "Grant access" : "Autorizar l'accès", - "Error configuring OAuth1" : "Error al moment de la configuracion d'OAuth1", - "Error configuring OAuth2" : "Error al moment de la configuracion d'OAuth2", - "Generate keys" : "Generar de claus", - "Error generating key pair" : "Error al moment de la generacion de las claus", - "All users. Type to select user or group." : "Totes los utilizaires. Clicatz aicí per restrénher.", - "(group)" : "(grop)", - "Saved" : "Enregistrat", - "Username" : "Nom d'utilizaire", - "Password" : "Senhal", - "Save" : "Enregistrar", - "Storage with id \"%i\" not found" : "Emmagazinatge amb l'id \"%i\" pas trobat", - "Invalid backend or authentication mechanism class" : "Servici o metòde d'autentificacion pas valable", - "Invalid mount point" : "Punt de montatge invalid", - "Objectstore forbidden" : "\"Objectstore\" interdich", - "Invalid storage backend \"%s\"" : "Servici d'emmagazinatge invalid : \"%s\"", - "Not permitted to use backend \"%s\"" : "Pas autorizat a utilizar lo servici \"%s\"", - "Not permitted to use authentication mechanism \"%s\"" : "Pas autorizat a utilizar lo mecanisme d'autentificacion \"%s\"", - "Unsatisfied backend parameters" : "Paramètres mancants pel servici", - "Unsatisfied authentication mechanism parameters" : "Paramètres mancants pel metòde d'autentificacion", - "Insufficient data: %s" : "Donadas insufisentas : %s", - "%s" : "%s", - "Access key" : "Clau d'accès", - "Secret key" : "Clau secreta", - "Builtin" : "Integrat", - "None" : "Pas cap", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", - "OAuth2" : "OAuth2", - "Client ID" : "ID Client", - "Client secret" : "Secret client", - "OpenStack" : "OpenStack", - "Tenant name" : "Tenant name", - "Identity endpoint URL" : "Identity endpoint URL", - "Rackspace" : "Rackspace", - "API key" : "Clau API", - "Username and password" : "Nom d'utilizaire e senhal", - "RSA public key" : "Clau publica RSA", - "Public key" : "Clau publica", - "Amazon S3" : "Amazon S3", - "Bucket" : "Bucket", - "Hostname" : "Nom de l'òste", - "Port" : "Pòrt", - "Region" : "Region", - "Enable SSL" : "Activar SSL", - "Enable Path Style" : "Accès per path", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Sosdorsièr distant", - "Secure https://" : "Securizacion https://", - "Dropbox" : "Dropbox", - "FTP" : "FTP", - "Host" : "Òste", - "Secure ftps://" : "Securizacion ftps://", - "Google Drive" : "Google Drive", - "Local" : "Local", - "Location" : "Emplaçament", - "ownCloud" : "ownCloud", - "SFTP" : "SFTP", - "Root" : "Raiç", - "SFTP with secret key login" : "SFTP amb un identificant secret", - "SMB / CIFS" : "SMB / CIFS", - "Share" : "Partejar", - "Domain" : "Domeni", - "SMB / CIFS using OC login" : "SMB / CIFS en utilizant los identificants OC", - "Username as share" : "Nom d'utilizaire coma nom de partiment", - "OpenStack Object Storage" : "OpenStack Object Storage", - "Service name" : "Nom del servici", - "Request timeout (seconds)" : "Timeout de las requèstas (en segondas)", - "<b>Note:</b> " : "<b>Atencion :</b>", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion :</b> La presa en carga de cURL per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> La presa en carga del FTP per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> \"%s\" es pas installat. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "No external storage configured" : "Aucun emmagazinatge externe configurat", - "You can add external storages in the personal settings" : "Podètz apondre des emmagazinatges externes dins los paramètres personals", - "Name" : "Nom", - "Storage type" : "Tipe d'emmagazinatge", - "Scope" : "Portada", - "Enable encryption" : "Activar lo chiframent", - "Enable previews" : "Activar las previsualizacions", - "Check for changes" : "Recercar las modificacions", - "Never" : "Pas jamai", - "Once every direct access" : "Un còp a cada accès dirècte", - "External Storage" : "Emmagazinatge externe", - "Folder name" : "Nom del dorsièr", - "Authentication" : "Autentificacion", - "Configuration" : "Configuracion", - "Available for" : "Disponible per", - "Add storage" : "Apondre un supòrt d'emmagazinatge", - "Advanced settings" : "Paramètres avançats", - "Delete" : "Suprimir", - "Allow users to mount external storage" : "Autorizar los utilizaires a montar l'espaci d'emmagazinatge extèrne", - "Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents" -}, -"nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/oc.json b/apps/files_external/l10n/oc.json deleted file mode 100644 index c64cddb474e..00000000000 --- a/apps/files_external/l10n/oc.json +++ /dev/null @@ -1,105 +0,0 @@ -{ "translations": { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons de requèsta a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "L'obtencion dels getons d'aacès a fracassat. Verificatz que vòstra clau d'aplicacion e vòstre senhal son corrèctes.", - "Please provide a valid app key and secret." : "Provesissètz una clau d'aplicacion e un senhal valids.", - "Step 1 failed. Exception: %s" : "L’etapa 1 a fracassat. Error : %s", - "Step 2 failed. Exception: %s" : "L’etapa 2 a fracassat. Error : %s", - "External storage" : "Emmagazinatge extèrne", - "Personal" : "Personal", - "System" : "Sistèma", - "Grant access" : "Autorizar l'accès", - "Error configuring OAuth1" : "Error al moment de la configuracion d'OAuth1", - "Error configuring OAuth2" : "Error al moment de la configuracion d'OAuth2", - "Generate keys" : "Generar de claus", - "Error generating key pair" : "Error al moment de la generacion de las claus", - "All users. Type to select user or group." : "Totes los utilizaires. Clicatz aicí per restrénher.", - "(group)" : "(grop)", - "Saved" : "Enregistrat", - "Username" : "Nom d'utilizaire", - "Password" : "Senhal", - "Save" : "Enregistrar", - "Storage with id \"%i\" not found" : "Emmagazinatge amb l'id \"%i\" pas trobat", - "Invalid backend or authentication mechanism class" : "Servici o metòde d'autentificacion pas valable", - "Invalid mount point" : "Punt de montatge invalid", - "Objectstore forbidden" : "\"Objectstore\" interdich", - "Invalid storage backend \"%s\"" : "Servici d'emmagazinatge invalid : \"%s\"", - "Not permitted to use backend \"%s\"" : "Pas autorizat a utilizar lo servici \"%s\"", - "Not permitted to use authentication mechanism \"%s\"" : "Pas autorizat a utilizar lo mecanisme d'autentificacion \"%s\"", - "Unsatisfied backend parameters" : "Paramètres mancants pel servici", - "Unsatisfied authentication mechanism parameters" : "Paramètres mancants pel metòde d'autentificacion", - "Insufficient data: %s" : "Donadas insufisentas : %s", - "%s" : "%s", - "Access key" : "Clau d'accès", - "Secret key" : "Clau secreta", - "Builtin" : "Integrat", - "None" : "Pas cap", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "App secret", - "OAuth2" : "OAuth2", - "Client ID" : "ID Client", - "Client secret" : "Secret client", - "OpenStack" : "OpenStack", - "Tenant name" : "Tenant name", - "Identity endpoint URL" : "Identity endpoint URL", - "Rackspace" : "Rackspace", - "API key" : "Clau API", - "Username and password" : "Nom d'utilizaire e senhal", - "RSA public key" : "Clau publica RSA", - "Public key" : "Clau publica", - "Amazon S3" : "Amazon S3", - "Bucket" : "Bucket", - "Hostname" : "Nom de l'òste", - "Port" : "Pòrt", - "Region" : "Region", - "Enable SSL" : "Activar SSL", - "Enable Path Style" : "Accès per path", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Sosdorsièr distant", - "Secure https://" : "Securizacion https://", - "Dropbox" : "Dropbox", - "FTP" : "FTP", - "Host" : "Òste", - "Secure ftps://" : "Securizacion ftps://", - "Google Drive" : "Google Drive", - "Local" : "Local", - "Location" : "Emplaçament", - "ownCloud" : "ownCloud", - "SFTP" : "SFTP", - "Root" : "Raiç", - "SFTP with secret key login" : "SFTP amb un identificant secret", - "SMB / CIFS" : "SMB / CIFS", - "Share" : "Partejar", - "Domain" : "Domeni", - "SMB / CIFS using OC login" : "SMB / CIFS en utilizant los identificants OC", - "Username as share" : "Nom d'utilizaire coma nom de partiment", - "OpenStack Object Storage" : "OpenStack Object Storage", - "Service name" : "Nom del servici", - "Request timeout (seconds)" : "Timeout de las requèstas (en segondas)", - "<b>Note:</b> " : "<b>Atencion :</b>", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion :</b> La presa en carga de cURL per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> La presa en carga del FTP per PHP es pas activada o installada. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Atencion : </b> \"%s\" es pas installat. Lo montatge de %s es pas possible. Contactatz vòstre administrator sistèma per l'installar.", - "No external storage configured" : "Aucun emmagazinatge externe configurat", - "You can add external storages in the personal settings" : "Podètz apondre des emmagazinatges externes dins los paramètres personals", - "Name" : "Nom", - "Storage type" : "Tipe d'emmagazinatge", - "Scope" : "Portada", - "Enable encryption" : "Activar lo chiframent", - "Enable previews" : "Activar las previsualizacions", - "Check for changes" : "Recercar las modificacions", - "Never" : "Pas jamai", - "Once every direct access" : "Un còp a cada accès dirècte", - "External Storage" : "Emmagazinatge externe", - "Folder name" : "Nom del dorsièr", - "Authentication" : "Autentificacion", - "Configuration" : "Configuracion", - "Available for" : "Disponible per", - "Add storage" : "Apondre un supòrt d'emmagazinatge", - "Advanced settings" : "Paramètres avançats", - "Delete" : "Suprimir", - "Allow users to mount external storage" : "Autorizar los utilizaires a montar l'espaci d'emmagazinatge extèrne", - "Allow users to mount the following external storage" : "Autorizar los utilizaires a montar los emmagazinatges extèrnes seguents" -},"pluralForm" :"nplurals=2; plural=(n > 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index 4a0e2f05974..29c2f293533 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -2,28 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Udziel dostępu", - "Error configuring OAuth1" : "Błąd konfiguracji OAuth1", - "Please provide a valid app key and secret." : "Podaj prawidłowy klucz aplikacji i tajny klucz.", "Error configuring OAuth2" : "Błąd konfiguracji OAuth2", "Generate keys" : "Wygeneruj klucze", "Error generating key pair" : "Błąd podczas generowania pary kluczy", - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", - "Enable encryption" : "Włącz szyfrowanie", - "Enable previews" : "Włącz podgląd", - "Enable sharing" : "Włącz udostępnianie", - "Check for changes" : "Sprawdź zmiany", - "Never" : "Nigdy", - "Once every direct access" : "Jeden raz przy każdym dostępie", - "Read only" : "Tylko do odczytu", - "Disconnect" : "Rozłącz się", - "Admin defined" : "Zdefiniowane przez Administratora", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatyczne sprawdzanie statusu jest wyłączone z powodu dużej liczby skonfigurowanych magazynów, kliknij, aby sprawdzić status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Czy na pewno chcesz odłączyć tę pamięć zewnętrzną? Spowoduje to, że pamięć będzie niedostępna w Nextcloud i doprowadzi do usunięcia tych plików i folderów na dowolnym kliencie synchronizacji, który jest aktualnie podłączony, ale nie usunie żadnych plików i folderów z samej pamięci zewnętrznej.", - "Delete storage?" : "Usunąć magazyn?", - "Saved" : "Zapisano", - "Saving …" : "Zapisywanie…", - "Save" : "Zapisz", + "You are not logged in" : "Nie jesteś zalogowany", + "Permission denied" : "Odmowa zgody", "Forbidden to manage local mounts" : "Zabronione zarządzanie lokalnym montowaniem", "Storage with ID \"%d\" not found" : "Nie znaleziono magazynu o ID \"%d\"", "Invalid backend or authentication mechanism class" : "Nieprawidłowy mechanizm uwierzytelniania powrotu lub klasy", @@ -36,18 +19,16 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia", "Insufficient data: %s" : "Niewystarczające dane: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Magazyn o identyfikatorze „%d” nie może być edytowany przez osoby niebędące administratorami", "Access key" : "Klucz dostępu", "Secret key" : "Tajny klucz", "Builtin" : "Wbudowane", "None" : "Nic", - "OAuth1" : "OAuth1", - "App key" : "Klucz aplikacji", - "App secret" : "Tajny klucz aplikacji", "OAuth2" : "OAuth2", "Client ID" : "ID klienta", "Client secret" : "Tajny klucz klienta", "OpenStack v2" : "OpenStack v2", - "Login" : "Zaloguj", + "Login" : "Logowanie", "Password" : "Hasło", "Tenant name" : "Nazwa dzierżawcy", "Identity endpoint URL" : "Adres URL punktu końcowego tożsamości", @@ -57,7 +38,10 @@ OC.L10N.register( "API key" : "Klucz API", "Global credentials" : "Globalne poświadczenia", "Log-in credentials, save in database" : "Poświadczenia logowania, zapisz w bazie danych", + "Login and password" : "Login i hasło", "Log-in credentials, save in session" : "Poświadczenia logowania, zapisz w sesji", + "Global credentials, manually entered" : "Globalne dane uwierzytelniające, wprowadzone ręcznie", + "Manually entered, store in database" : "Wpisane ręcznie, zapisane w bazie danych", "RSA public key" : "Klucz publiczny RSA", "Public key" : "Klucz publiczny", "RSA private key" : "Klucz prywatny RSA", @@ -74,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "Włącz SSL", "Enable Path Style" : "Włącz styl ścieżki", "Legacy (v2) authentication" : "Uwierzytelnianie starszej wersji (v2)", + "Enable multipart copy" : "Włącz kopiowanie wieloczęściowe", + "SSE-C encryption key" : "Klucz szyfrowania SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Zdalny podkatalog", @@ -91,9 +77,12 @@ OC.L10N.register( "Share" : "Udostępnij", "Show hidden files" : "Pokaż ukryte pliki", "Case sensitive file system" : "System plików uwzględniający wielkość liter", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Wyłączenie tej opcji umożliwi użycie systemu plików niewrażliwego na wielkość liter, ale wiąże się to ze spadkiem wydajności", "Verify ACL access when listing files" : "Zweryfikuj dostęp ACL podczas wyświetlania plików", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Sprawdź listy ACL każdego pliku lub katalogu w katalogu, aby odfiltrować elementy, w przypadku których konto nie ma uprawnień do odczytu, co wiąże się ze spadkiem wydajności", "Timeout" : "Przekroczono limit czasu", "SMB/CIFS using OC login" : "SMB/CIFS przy użyciu logowania OC", + "Login as share" : "Zaloguj się jako udostępnienie", "OpenStack Object Storage" : "Magazyn obiektów OpenStack", "Service name" : "Nazwa usługi", "Request timeout (seconds)" : "Limit czasu żądania (sekundy)", @@ -103,9 +92,18 @@ OC.L10N.register( "External storage" : "Magazyn zewnętrzny", "External storage support" : "Wsparcie zewnętrznego magazynu", "Adds basic external storage support" : "Dodaje podstawową obsługę magazynów zewnętrznych", - "Enter missing credentials" : "Wprowadź brakujące dane uwierzytelniające", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikacja umożliwia administratorom konfigurowanie połączeń z zewnętrznymi dostawcami pamięci masowej, takimi jak serwery FTP, magazyny obiektów S3 lub SWIFT, inne serwery Nextcloud, serwery WebDAV i inne. Administracja może wybrać, które typy pamięci masowej włączyć i może zamontować te lokalizacje pamięci masowej dla konta, grupy lub całego systemu. Użytkownicy zobaczą nowy katalog pojawiający się w ich katalogu głównym Nextcloud, do którego mogą uzyskać dostęp i używać go tak jak każdego innego katalogu Nextcloud. Pamięć zewnętrzna umożliwia również użytkownikom udostępnianie plików przechowywanych w tych lokalizacjach zewnętrznych. W takich przypadkach poświadczenia właściciela pliku są używane, gdy odbiorca żąda pliku z pamięci zewnętrznej, zapewniając w ten sposób, że odbiorca może uzyskać dostęp do udostępnionego pliku.\n\nPamięć zewnętrzną można skonfigurować za pomocą interfejsu graficznego lub wiersza poleceń. Ta druga opcja zapewnia administracji większą elastyczność w konfigurowaniu masowych montowań pamięci zewnętrznej i ustawianiu priorytetów montowania. Więcej informacji można znaleźć w dokumentacji interfejsu graficznego pamięci zewnętrznej i dokumentacji pliku konfiguracji pamięci zewnętrznej.", + "Confirm" : "Potwierdź", + "Storage credentials" : "Poświadczenia pamięci zewnętrznej", + "To access the storage, you need to provide the authentication credentials." : "Aby uzyskać dostęp do pamięci zewnętrznej, musisz podać dane uwierzytelniające.", + "Enter the storage login" : "Wprowadź login do pamięci zewnętrznej", + "Enter the storage password" : "Wprowadź hasło do pamięci zewnętrznej", "Unable to update this external storage config. {statusMessage}" : "Nie można zaktualizować konfiguracji tej pamięci zewnętrznej. {statusMessage}", "New configuration successfully saved" : "Nowa konfiguracja została pomyślnie zapisana", + "Enter missing credentials" : "Wprowadź brakujące dane uwierzytelniające", + "Credentials successfully set" : "Dane uwierzytelniające zostały pomyślnie ustawione", + "Error while setting credentials: {error}" : "Błąd podczas ustawiania danych uwierzytelniających: {error}", + "Checking storage …" : "Sprawdzanie pamięci masowej…", "There was an error with this external storage." : "Wystąpił błąd związany z pamięcią zewnętrzną.", "We were unable to check the external storage {basename}" : "Nie można sprawdzić pamięci zewnętrznej {basename}", "Examine this faulty external storage configuration" : "Sprawdź wadliwą konfigurację pamięci zewnętrznej", @@ -121,40 +119,44 @@ OC.L10N.register( "Scope" : "Zakres", "Personal" : "Osobiste", "System" : "System", + "Type to select account or group." : "Wpisz, aby wybrać konto lub grupę.", + "(Group)" : "(Grupa)", + "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", + "Enable encryption" : "Włącz szyfrowanie", + "Enable previews" : "Włącz podgląd", + "Enable sharing" : "Włącz udostępnianie", + "Check for changes" : "Sprawdź zmiany", + "Never" : "Nigdy", + "Once every direct access" : "Jeden raz przy każdym dostępie", + "Read only" : "Tylko do odczytu", + "Disconnect" : "Rozłącz się", + "Unknown backend: {backendName}" : "Nieznane zaplecze: {backendName}", + "Admin defined" : "Zdefiniowane przez Administratora", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatyczne sprawdzanie statusu jest wyłączone z powodu dużej liczby skonfigurowanych magazynów, kliknij, aby sprawdzić status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Czy na pewno chcesz odłączyć tę pamięć zewnętrzną? Spowoduje to, że pamięć będzie niedostępna w Nextcloud i doprowadzi do usunięcia tych plików i katalogów na dowolnym kliencie synchronizacji, który jest aktualnie podłączony, ale nie usunie żadnych plików i katalogów z samej pamięci zewnętrznej.", + "Delete storage?" : "Usunąć magazyn?", + "Click to recheck the configuration" : "Kliknij, aby ponownie sprawdzić konfigurację", + "Saved" : "Zapisano", + "Saving …" : "Zapisywanie…", + "Save" : "Zapisz", + "Failed to save global credentials" : "Nie udało się zapisać globalnych danych uwierzytelniających", + "Failed to save global credentials: {message}" : "Nie udało się zapisać globalnych danych uwierzytelniających: {message}", "No external storage configured or you don't have the permission to configure them" : "Brak magazynów zewnętrznych lub nie masz uprawnień do ich konfiguracji", "Open documentation" : "Otwórz dokumentację", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Pamięć zewnętrzna umożliwia montowanie zewnętrznych usług i urządzeń pamięci masowej jako dodatkowych urządzeń pamięci masowej Nextcloud. Możesz także zezwolić użytkownikom na instalowanie własnych zewnętrznych usług pamięci masowej.", "Folder name" : "Nazwa katalogu", "Authentication" : "Uwierzytelnienie", "Configuration" : "Konfiguracja", "Available for" : "Dostępne dla", - "Click to recheck the configuration" : "Kliknij, aby ponownie sprawdzić konfigurację", "Add storage" : "Dodaj zewnętrzne magazyny", + "All people" : "Wszystkie osoby", "Advanced settings" : "Ustawienia zaawansowane", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poświadczenia globalne mogą być używane do uwierzytelniania z wieloma zewnętrznymi magazynami, o ile posiadają takie same poświadczenia.", - "Type to select user or group." : "Wpisz, aby wybrać użytkownika lub grupę.", - "Empty response from the server" : "Puste odpowiedzi z serwera", - "Couldn't access. Please log out and in again to activate this mount point" : "Brak dostępu. Wyloguj się i zaloguj ponownie, aby aktywować ten punkt montowania", - "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}", - "There was an error with message: " : "Wystąpił błąd o treści:", - "external-storage" : "magazyn zewnętrzny", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nie można pobrać listy punktów montowania dysku sieciowego systemu Windows: Pusta odpowiedź z serwera", - "Please enter the credentials for the {mount} mount" : "Wprowadź dane uwierzytelniające dla zamontowania {mount}", - "Username" : "Nazwa użytkownika", - "Credentials saved" : "Poświadczenia zapisane", - "Credentials saving failed" : "Zapisywanie poświadczeń nie powiodło się", - "Credentials required" : "Wymagane poświadczenia", - "Storage with ID \"%d\" is not user editable" : "Magazyn o ID \"%d\" nie może być edytowany przez użytkownika", - "Username and password" : "Nazwa użytkownika i hasło", - "Global credentials, user entered" : "Globalne poświadczenia, wprowadzone przez użytkownika", - "User entered, store in database" : "Wprowadzony użytkownik, zapisz w bazie danych", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wyłączenie tej opcji umożliwi użycie systemu plików niewrażliwego na wielkość liter, ale wiąże się to ze spadkiem wydajności", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Sprawdź listy ACL każdego pliku lub katalogu w katalogu, aby odfiltrować elementy, w których użytkownik nie ma uprawnień do odczytu, wiąże się to z obniżeniem wydajności", - "Username as share" : "Nazwa użytkownika jako udostępniona", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikacja umożliwia administratorom konfigurowanie połączeń z zewnętrznymi dostawcami magazynów danych, takimi jak serwery FTP, magazyny obiektów S3 lub SWIFT, serwery Nextcloud, serwery WebDAV i inne. Administratorzy mogą wybrać typy magazynów do włączania, dla użytkownika, grupy lub całego systemu. Po włączeniu, użytkownicy w katalogu głównym Nextcloud zobaczą nowy katalog, do którego mogą uzyskać dostęp i używać jak każdy inny katalog Nextcloud. Magazyn zewnętrzny pozwala użytkownikom udostępniać pliki przechowywane w tych lokalizacjach. W takich przypadkach, gdy adresat/odbiorca zażąda pliku z magazynu zewnętrznego używane są poświadczenia właściciela pliku.\n\nMagazyn zewnętrzny może być konfigurowany za pomocą GUI lub w wierszu poleceń. Ta druga opcja zapewnia zaawansowanemu użytkownikowi większą elastyczność w konfigurowaniu zewnętrznych magazynów i ustawianiu priorytetów montowania. Więcej informacji można znaleźć w dokumentacji GUI oraz dokumentacji pliku konfiguracyjnego magazynów zewnętrznych.", - "Name" : "Nazwa", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Magazyny zewnętrzne umożliwiają podłączanie zewnętrznych usług pamięci masowej i urządzeń jako dodatkowych urządzeń magazynujących Nextcloud. Możesz także zezwolić użytkownikom na montowanie własnych magazynów zewnętrznych.", - "All users" : "Wszyscy użytkownicy", - "Allow users to mount external storage" : "Zezwalaj użytkownikom na montowanie magazynów zewnętrznych" + "Allow people to mount external storage" : "Zezwalaj innym na montowanie pamięci zewnętrznej", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globalne dane uwierzytelniające mogą być używane do uwierzytelniania z wieloma zewnętrznymi magazynami, o ile posiadają takie same dane uwierzytelniające.", + "Error configuring OAuth1" : "Błąd konfiguracji OAuth1", + "Please provide a valid app key and secret." : "Podaj prawidłowy klucz aplikacji i tajny klucz.", + "OAuth1" : "OAuth1", + "App key" : "Klucz aplikacji", + "App secret" : "Tajny klucz aplikacji" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index 52d7b1bfaaf..5e03e0fc0b6 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -1,27 +1,10 @@ { "translations": { "Grant access" : "Udziel dostępu", - "Error configuring OAuth1" : "Błąd konfiguracji OAuth1", - "Please provide a valid app key and secret." : "Podaj prawidłowy klucz aplikacji i tajny klucz.", "Error configuring OAuth2" : "Błąd konfiguracji OAuth2", "Generate keys" : "Wygeneruj klucze", "Error generating key pair" : "Błąd podczas generowania pary kluczy", - "(Group)" : "(Grupa)", - "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", - "Enable encryption" : "Włącz szyfrowanie", - "Enable previews" : "Włącz podgląd", - "Enable sharing" : "Włącz udostępnianie", - "Check for changes" : "Sprawdź zmiany", - "Never" : "Nigdy", - "Once every direct access" : "Jeden raz przy każdym dostępie", - "Read only" : "Tylko do odczytu", - "Disconnect" : "Rozłącz się", - "Admin defined" : "Zdefiniowane przez Administratora", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatyczne sprawdzanie statusu jest wyłączone z powodu dużej liczby skonfigurowanych magazynów, kliknij, aby sprawdzić status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Czy na pewno chcesz odłączyć tę pamięć zewnętrzną? Spowoduje to, że pamięć będzie niedostępna w Nextcloud i doprowadzi do usunięcia tych plików i folderów na dowolnym kliencie synchronizacji, który jest aktualnie podłączony, ale nie usunie żadnych plików i folderów z samej pamięci zewnętrznej.", - "Delete storage?" : "Usunąć magazyn?", - "Saved" : "Zapisano", - "Saving …" : "Zapisywanie…", - "Save" : "Zapisz", + "You are not logged in" : "Nie jesteś zalogowany", + "Permission denied" : "Odmowa zgody", "Forbidden to manage local mounts" : "Zabronione zarządzanie lokalnym montowaniem", "Storage with ID \"%d\" not found" : "Nie znaleziono magazynu o ID \"%d\"", "Invalid backend or authentication mechanism class" : "Nieprawidłowy mechanizm uwierzytelniania powrotu lub klasy", @@ -34,18 +17,16 @@ "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia", "Insufficient data: %s" : "Niewystarczające dane: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Magazyn o identyfikatorze „%d” nie może być edytowany przez osoby niebędące administratorami", "Access key" : "Klucz dostępu", "Secret key" : "Tajny klucz", "Builtin" : "Wbudowane", "None" : "Nic", - "OAuth1" : "OAuth1", - "App key" : "Klucz aplikacji", - "App secret" : "Tajny klucz aplikacji", "OAuth2" : "OAuth2", "Client ID" : "ID klienta", "Client secret" : "Tajny klucz klienta", "OpenStack v2" : "OpenStack v2", - "Login" : "Zaloguj", + "Login" : "Logowanie", "Password" : "Hasło", "Tenant name" : "Nazwa dzierżawcy", "Identity endpoint URL" : "Adres URL punktu końcowego tożsamości", @@ -55,7 +36,10 @@ "API key" : "Klucz API", "Global credentials" : "Globalne poświadczenia", "Log-in credentials, save in database" : "Poświadczenia logowania, zapisz w bazie danych", + "Login and password" : "Login i hasło", "Log-in credentials, save in session" : "Poświadczenia logowania, zapisz w sesji", + "Global credentials, manually entered" : "Globalne dane uwierzytelniające, wprowadzone ręcznie", + "Manually entered, store in database" : "Wpisane ręcznie, zapisane w bazie danych", "RSA public key" : "Klucz publiczny RSA", "Public key" : "Klucz publiczny", "RSA private key" : "Klucz prywatny RSA", @@ -72,6 +56,8 @@ "Enable SSL" : "Włącz SSL", "Enable Path Style" : "Włącz styl ścieżki", "Legacy (v2) authentication" : "Uwierzytelnianie starszej wersji (v2)", + "Enable multipart copy" : "Włącz kopiowanie wieloczęściowe", + "SSE-C encryption key" : "Klucz szyfrowania SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Zdalny podkatalog", @@ -89,9 +75,12 @@ "Share" : "Udostępnij", "Show hidden files" : "Pokaż ukryte pliki", "Case sensitive file system" : "System plików uwzględniający wielkość liter", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Wyłączenie tej opcji umożliwi użycie systemu plików niewrażliwego na wielkość liter, ale wiąże się to ze spadkiem wydajności", "Verify ACL access when listing files" : "Zweryfikuj dostęp ACL podczas wyświetlania plików", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Sprawdź listy ACL każdego pliku lub katalogu w katalogu, aby odfiltrować elementy, w przypadku których konto nie ma uprawnień do odczytu, co wiąże się ze spadkiem wydajności", "Timeout" : "Przekroczono limit czasu", "SMB/CIFS using OC login" : "SMB/CIFS przy użyciu logowania OC", + "Login as share" : "Zaloguj się jako udostępnienie", "OpenStack Object Storage" : "Magazyn obiektów OpenStack", "Service name" : "Nazwa usługi", "Request timeout (seconds)" : "Limit czasu żądania (sekundy)", @@ -101,9 +90,18 @@ "External storage" : "Magazyn zewnętrzny", "External storage support" : "Wsparcie zewnętrznego magazynu", "Adds basic external storage support" : "Dodaje podstawową obsługę magazynów zewnętrznych", - "Enter missing credentials" : "Wprowadź brakujące dane uwierzytelniające", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikacja umożliwia administratorom konfigurowanie połączeń z zewnętrznymi dostawcami pamięci masowej, takimi jak serwery FTP, magazyny obiektów S3 lub SWIFT, inne serwery Nextcloud, serwery WebDAV i inne. Administracja może wybrać, które typy pamięci masowej włączyć i może zamontować te lokalizacje pamięci masowej dla konta, grupy lub całego systemu. Użytkownicy zobaczą nowy katalog pojawiający się w ich katalogu głównym Nextcloud, do którego mogą uzyskać dostęp i używać go tak jak każdego innego katalogu Nextcloud. Pamięć zewnętrzna umożliwia również użytkownikom udostępnianie plików przechowywanych w tych lokalizacjach zewnętrznych. W takich przypadkach poświadczenia właściciela pliku są używane, gdy odbiorca żąda pliku z pamięci zewnętrznej, zapewniając w ten sposób, że odbiorca może uzyskać dostęp do udostępnionego pliku.\n\nPamięć zewnętrzną można skonfigurować za pomocą interfejsu graficznego lub wiersza poleceń. Ta druga opcja zapewnia administracji większą elastyczność w konfigurowaniu masowych montowań pamięci zewnętrznej i ustawianiu priorytetów montowania. Więcej informacji można znaleźć w dokumentacji interfejsu graficznego pamięci zewnętrznej i dokumentacji pliku konfiguracji pamięci zewnętrznej.", + "Confirm" : "Potwierdź", + "Storage credentials" : "Poświadczenia pamięci zewnętrznej", + "To access the storage, you need to provide the authentication credentials." : "Aby uzyskać dostęp do pamięci zewnętrznej, musisz podać dane uwierzytelniające.", + "Enter the storage login" : "Wprowadź login do pamięci zewnętrznej", + "Enter the storage password" : "Wprowadź hasło do pamięci zewnętrznej", "Unable to update this external storage config. {statusMessage}" : "Nie można zaktualizować konfiguracji tej pamięci zewnętrznej. {statusMessage}", "New configuration successfully saved" : "Nowa konfiguracja została pomyślnie zapisana", + "Enter missing credentials" : "Wprowadź brakujące dane uwierzytelniające", + "Credentials successfully set" : "Dane uwierzytelniające zostały pomyślnie ustawione", + "Error while setting credentials: {error}" : "Błąd podczas ustawiania danych uwierzytelniających: {error}", + "Checking storage …" : "Sprawdzanie pamięci masowej…", "There was an error with this external storage." : "Wystąpił błąd związany z pamięcią zewnętrzną.", "We were unable to check the external storage {basename}" : "Nie można sprawdzić pamięci zewnętrznej {basename}", "Examine this faulty external storage configuration" : "Sprawdź wadliwą konfigurację pamięci zewnętrznej", @@ -119,40 +117,44 @@ "Scope" : "Zakres", "Personal" : "Osobiste", "System" : "System", + "Type to select account or group." : "Wpisz, aby wybrać konto lub grupę.", + "(Group)" : "(Grupa)", + "Compatibility with Mac NFD encoding (slow)" : "Zgodność z kodowaniem Mac NFD (powolny)", + "Enable encryption" : "Włącz szyfrowanie", + "Enable previews" : "Włącz podgląd", + "Enable sharing" : "Włącz udostępnianie", + "Check for changes" : "Sprawdź zmiany", + "Never" : "Nigdy", + "Once every direct access" : "Jeden raz przy każdym dostępie", + "Read only" : "Tylko do odczytu", + "Disconnect" : "Rozłącz się", + "Unknown backend: {backendName}" : "Nieznane zaplecze: {backendName}", + "Admin defined" : "Zdefiniowane przez Administratora", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatyczne sprawdzanie statusu jest wyłączone z powodu dużej liczby skonfigurowanych magazynów, kliknij, aby sprawdzić status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Czy na pewno chcesz odłączyć tę pamięć zewnętrzną? Spowoduje to, że pamięć będzie niedostępna w Nextcloud i doprowadzi do usunięcia tych plików i katalogów na dowolnym kliencie synchronizacji, który jest aktualnie podłączony, ale nie usunie żadnych plików i katalogów z samej pamięci zewnętrznej.", + "Delete storage?" : "Usunąć magazyn?", + "Click to recheck the configuration" : "Kliknij, aby ponownie sprawdzić konfigurację", + "Saved" : "Zapisano", + "Saving …" : "Zapisywanie…", + "Save" : "Zapisz", + "Failed to save global credentials" : "Nie udało się zapisać globalnych danych uwierzytelniających", + "Failed to save global credentials: {message}" : "Nie udało się zapisać globalnych danych uwierzytelniających: {message}", "No external storage configured or you don't have the permission to configure them" : "Brak magazynów zewnętrznych lub nie masz uprawnień do ich konfiguracji", "Open documentation" : "Otwórz dokumentację", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Pamięć zewnętrzna umożliwia montowanie zewnętrznych usług i urządzeń pamięci masowej jako dodatkowych urządzeń pamięci masowej Nextcloud. Możesz także zezwolić użytkownikom na instalowanie własnych zewnętrznych usług pamięci masowej.", "Folder name" : "Nazwa katalogu", "Authentication" : "Uwierzytelnienie", "Configuration" : "Konfiguracja", "Available for" : "Dostępne dla", - "Click to recheck the configuration" : "Kliknij, aby ponownie sprawdzić konfigurację", "Add storage" : "Dodaj zewnętrzne magazyny", + "All people" : "Wszystkie osoby", "Advanced settings" : "Ustawienia zaawansowane", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Poświadczenia globalne mogą być używane do uwierzytelniania z wieloma zewnętrznymi magazynami, o ile posiadają takie same poświadczenia.", - "Type to select user or group." : "Wpisz, aby wybrać użytkownika lub grupę.", - "Empty response from the server" : "Puste odpowiedzi z serwera", - "Couldn't access. Please log out and in again to activate this mount point" : "Brak dostępu. Wyloguj się i zaloguj ponownie, aby aktywować ten punkt montowania", - "Couldn't get the information from the remote server: {code} {type}" : "Nie można otrzymać informacji od zdalnego serwera: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nie udało się uzyskać listy zewnętrznych punktów montowania: {type}", - "There was an error with message: " : "Wystąpił błąd o treści:", - "external-storage" : "magazyn zewnętrzny", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nie można pobrać listy punktów montowania dysku sieciowego systemu Windows: Pusta odpowiedź z serwera", - "Please enter the credentials for the {mount} mount" : "Wprowadź dane uwierzytelniające dla zamontowania {mount}", - "Username" : "Nazwa użytkownika", - "Credentials saved" : "Poświadczenia zapisane", - "Credentials saving failed" : "Zapisywanie poświadczeń nie powiodło się", - "Credentials required" : "Wymagane poświadczenia", - "Storage with ID \"%d\" is not user editable" : "Magazyn o ID \"%d\" nie może być edytowany przez użytkownika", - "Username and password" : "Nazwa użytkownika i hasło", - "Global credentials, user entered" : "Globalne poświadczenia, wprowadzone przez użytkownika", - "User entered, store in database" : "Wprowadzony użytkownik, zapisz w bazie danych", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Wyłączenie tej opcji umożliwi użycie systemu plików niewrażliwego na wielkość liter, ale wiąże się to ze spadkiem wydajności", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Sprawdź listy ACL każdego pliku lub katalogu w katalogu, aby odfiltrować elementy, w których użytkownik nie ma uprawnień do odczytu, wiąże się to z obniżeniem wydajności", - "Username as share" : "Nazwa użytkownika jako udostępniona", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Aplikacja umożliwia administratorom konfigurowanie połączeń z zewnętrznymi dostawcami magazynów danych, takimi jak serwery FTP, magazyny obiektów S3 lub SWIFT, serwery Nextcloud, serwery WebDAV i inne. Administratorzy mogą wybrać typy magazynów do włączania, dla użytkownika, grupy lub całego systemu. Po włączeniu, użytkownicy w katalogu głównym Nextcloud zobaczą nowy katalog, do którego mogą uzyskać dostęp i używać jak każdy inny katalog Nextcloud. Magazyn zewnętrzny pozwala użytkownikom udostępniać pliki przechowywane w tych lokalizacjach. W takich przypadkach, gdy adresat/odbiorca zażąda pliku z magazynu zewnętrznego używane są poświadczenia właściciela pliku.\n\nMagazyn zewnętrzny może być konfigurowany za pomocą GUI lub w wierszu poleceń. Ta druga opcja zapewnia zaawansowanemu użytkownikowi większą elastyczność w konfigurowaniu zewnętrznych magazynów i ustawianiu priorytetów montowania. Więcej informacji można znaleźć w dokumentacji GUI oraz dokumentacji pliku konfiguracyjnego magazynów zewnętrznych.", - "Name" : "Nazwa", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Magazyny zewnętrzne umożliwiają podłączanie zewnętrznych usług pamięci masowej i urządzeń jako dodatkowych urządzeń magazynujących Nextcloud. Możesz także zezwolić użytkownikom na montowanie własnych magazynów zewnętrznych.", - "All users" : "Wszyscy użytkownicy", - "Allow users to mount external storage" : "Zezwalaj użytkownikom na montowanie magazynów zewnętrznych" + "Allow people to mount external storage" : "Zezwalaj innym na montowanie pamięci zewnętrznej", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globalne dane uwierzytelniające mogą być używane do uwierzytelniania z wieloma zewnętrznymi magazynami, o ile posiadają takie same dane uwierzytelniające.", + "Error configuring OAuth1" : "Błąd konfiguracji OAuth1", + "Please provide a valid app key and secret." : "Podaj prawidłowy klucz aplikacji i tajny klucz.", + "OAuth1" : "OAuth1", + "App key" : "Klucz aplikacji", + "App secret" : "Tajny klucz aplikacji" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 118efdffac0..82946a4347d 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Garantir acesso", - "Error configuring OAuth1" : "Erro configurando OAuth1", - "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar o par de chaves", - "Type to select account or group." : "Digite para selecionar conta ou grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", - "Enable encryption" : "Ativar criptografia", - "Enable previews" : "Ativar visualizações prévias", - "Enable sharing" : "Ativar compartilhamento", - "Check for changes" : "Verifique se há alterações", - "Never" : "Nunca", - "Once every direct access" : "Uma vez a cada acesso direto", - "Read only" : "Somente leitura", - "Disconnect" : "Desconectar", - "Admin defined" : "Definido pelo administrador", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão desses arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta no próprio armazenamento externo.", - "Delete storage?" : "Excluir armazenamento?", - "Saved" : "Salvo", - "Saving …" : "Salvando...", - "Save" : "Salvar", + "You are not logged in" : "Você não está logado", + "Permission denied" : "Permissão negada", "Forbidden to manage local mounts" : "Proibido gerenciar montagens locais", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", "Invalid backend or authentication mechanism class" : "Plataforma de serviço ou classe de mecanismo de autenticação inválido", @@ -42,14 +24,11 @@ OC.L10N.register( "Secret key" : "Chave secreta", "Builtin" : "integrado", "None" : "Nenhum", - "OAuth1" : "OAuth1", - "App key" : "Chave do aplicativo", - "App secret" : "Segredo do aplicativo", "OAuth2" : "OAuth2", "Client ID" : "ID do Cliente", "Client secret" : "Segredo do cliente", "OpenStack v2" : "OpenStack v2", - "Login" : "Entrar", + "Login" : "Nome de login", "Password" : "Senha", "Tenant name" : "Nome do inquilino", "Identity endpoint URL" : "URL do destino da identidade", @@ -58,17 +37,17 @@ OC.L10N.register( "Rackspace" : "Espaço no rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", - "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Login and password" : "Login e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", + "Log-in credentials, save in database" : "Credenciais de acesso, armazenar no banco de dados", + "Login and password" : "Nome de login e senha", + "Log-in credentials, save in session" : "Credenciais de login, armazenar na sessão", "Global credentials, manually entered" : "Credenciais globais, inseridas manualmente", - "Manually entered, store in database" : "Inserido manualmente, armazenado no banco de dados", + "Manually entered, store in database" : "Inseridos manualmente, armazenados no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "RSA private key" : "Chave privada RSA", "Private key" : "Chave privada", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "reino padrão do Kerberos, padrão para \"WORKGROUP\"", - "Kerberos ticket Apache mode" : "Bilhete Kerberos Modo Apache", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Reino padrão do Kerberos, o padrão é \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Modo Apache de ticket Kerberos", "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Cesta", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Ativar Estilo do Caminho", "Legacy (v2) authentication" : "Autenticação (v2) herdada", "Enable multipart copy" : "Habilitar cópia multiparte", + "SSE-C encryption key" : "Chave de criptografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subpasta remota", @@ -96,13 +76,13 @@ OC.L10N.register( "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartilhar", "Show hidden files" : "Mostrar arquivos ocultos", - "Case sensitive file system" : "Sistema de arquivos sensível a maiúsculas", - "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativá-lo permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", + "Case sensitive file system" : "Sistema de arquivos diferenciando maiúsculas/minúsculas", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativar está opção permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", "Verify ACL access when listing files" : "Verifique o acesso da ACL ao listar arquivos", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, o que acarreta uma penalidade de desempenho", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verificar as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, tem uma penalidade de desempenho", "Timeout" : "Tempo limite", - "SMB/CIFS using OC login" : "SMB/CIFS usandoo login OC", - "Login as share" : "Faça login como compartilhar", + "SMB/CIFS using OC login" : "SMB/CIFS usando login OC", + "Login as share" : "Faça login como compartilhamento", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo limite para requisição (segundos)", @@ -112,17 +92,25 @@ OC.L10N.register( "External storage" : "Armazenamento Externo", "External storage support" : "Suporte a armazenamento externo", "Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento ativar e pode montar esses locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.", - "Enter missing credentials" : "Digite as credenciais ausentes", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento a serem ativados e pode montar estes locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta do Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nestes locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciais de armazenamento", + "To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.", + "Enter the storage login" : "Digite o nome de login de armazenamento", + "Enter the storage password" : "Digite a senha de armazenamento", "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", + "Enter missing credentials" : "Digite as credenciais ausentes", + "Credentials successfully set" : "Credenciais definidas com sucesso", + "Error while setting credentials: {error}" : "Erro ao definir as credenciais: {error}", + "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", - "Open in Files" : "Abrir em arquivos", + "Open in Files" : "Abrir em Arquivos", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Ocorreu um erro com este armazenamento externo. Deseja revisar esta configuração do ponto de montagem na página de configurações?", "External mount error" : "Erro de montagem externa", - "List of external storage." : "Lista de armazenamento externo.", + "List of external storage." : "Lista de armazenamentos externos.", "There is no external storage configured. You can configure them in your Personal settings." : "Não há armazenamento externo configurado. Você pode configurá-los em suas configurações pessoais.", "There is no external storage configured and you don't have the permission to configure them." : "Não há armazenamento externo configurado e você não tem permissão para configurá-los.", "No external storage" : "Sem armazenamento externo", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Alcance", "Personal" : "Pessoal", "System" : "Sistema", + "Type to select account or group." : "Digite para selecionar conta ou grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", + "Enable encryption" : "Ativar criptografia", + "Enable previews" : "Ativar visualizações prévias", + "Enable sharing" : "Ativar compartilhamento", + "Check for changes" : "Verifique se há alterações", + "Never" : "Nunca", + "Once every direct access" : "Uma vez a cada acesso direto", + "Read only" : "Somente leitura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Back-end desconhecido: {backendName}", + "Admin defined" : "Definido pelo administrador", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão destes arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta do armazenamento externo em si.", + "Delete storage?" : "Excluir armazenamento?", + "Click to recheck the configuration" : "Clique para rechecar a configuração", + "Saved" : "Salvo", + "Saving …" : "Salvando...", + "Save" : "Salvar", + "Failed to save global credentials" : "Falha ao salvar as credenciais globais", + "Failed to save global credentials: {message}" : "Falha ao salvar as credenciais globais: {message}", "No external storage configured or you don't have the permission to configure them" : "Sem armazenamento externo configurado ou você não tem permissão para configurá-los", "Open documentation" : "Abrir documentação", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O armazenamento externo permite montar serviços e dispositivos de armazenamento externos como dispositivos de armazenamento Nextcloud secundários. Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível para", - "Click to recheck the configuration" : "Clique para rechecar a configuração", "Add storage" : "Adic. armazenamento", "All people" : "Todas as pessoas", "Advanced settings" : "Configurações avançadas", "Allow people to mount external storage" : "Permitir que as pessoas montem armazenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Credenciais globais podem ser usadas para autenticar com vários armazenamentos externos que possuem as mesmas credenciais.", - "Type to select user or group." : "Digite para selecionar usuário ou grupo.", - "Empty response from the server" : "Resposta vazia do servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem", - "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", - "There was an error with message: " : "Houve um erro com a mensagem:", - "external-storage" : "armazenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor", - "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", - "Username" : "Nome de Usuário", - "Credentials saved" : "Credenciais salvas", - "Credentials saving failed" : "Erro ao salvar as credenciais", - "Credentials required" : "Credenciais necessárias", - "Storage with ID \"%d\" is not user editable" : "A armazenagem com o ID \"%d\" não é editável pelo usuário", - "Username and password" : "Nome de usuário e senha", - "Global credentials, user entered" : "Credenciais globais, usuário inserido", - "User entered, store in database" : "Usuário adicionado, armazenado no banco de dados", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desabilitar esta opção permitirá usar um servidor de arquivos não sensível a maiúsculas, no entanto haverá degradação na performance", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens nos quais o usuário não tem permissão de leitura. Vem com uma penalidade de desempenho", - "Username as share" : "Nome de usuário como compartilhamento", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montar esses locais de armazenamento para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "O armazenamento externo permite que você monte serviços e dispositivos como dispositivos de armazenamento secundários Nextcloud. Você também pode permitir que os usuários montem seus próprios serviços de armazenamento externo.", - "All users" : "Todos os usuários", - "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo" + "Error configuring OAuth1" : "Erro configurando OAuth1", + "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", + "OAuth1" : "OAuth1", + "App key" : "Chave do aplicativo", + "App secret" : "Segredo do aplicativo" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 9a283b2de82..e9e9eb52208 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Garantir acesso", - "Error configuring OAuth1" : "Erro configurando OAuth1", - "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar o par de chaves", - "Type to select account or group." : "Digite para selecionar conta ou grupo.", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", - "Enable encryption" : "Ativar criptografia", - "Enable previews" : "Ativar visualizações prévias", - "Enable sharing" : "Ativar compartilhamento", - "Check for changes" : "Verifique se há alterações", - "Never" : "Nunca", - "Once every direct access" : "Uma vez a cada acesso direto", - "Read only" : "Somente leitura", - "Disconnect" : "Desconectar", - "Admin defined" : "Definido pelo administrador", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão desses arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta no próprio armazenamento externo.", - "Delete storage?" : "Excluir armazenamento?", - "Saved" : "Salvo", - "Saving …" : "Salvando...", - "Save" : "Salvar", + "You are not logged in" : "Você não está logado", + "Permission denied" : "Permissão negada", "Forbidden to manage local mounts" : "Proibido gerenciar montagens locais", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", "Invalid backend or authentication mechanism class" : "Plataforma de serviço ou classe de mecanismo de autenticação inválido", @@ -40,14 +22,11 @@ "Secret key" : "Chave secreta", "Builtin" : "integrado", "None" : "Nenhum", - "OAuth1" : "OAuth1", - "App key" : "Chave do aplicativo", - "App secret" : "Segredo do aplicativo", "OAuth2" : "OAuth2", "Client ID" : "ID do Cliente", "Client secret" : "Segredo do cliente", "OpenStack v2" : "OpenStack v2", - "Login" : "Entrar", + "Login" : "Nome de login", "Password" : "Senha", "Tenant name" : "Nome do inquilino", "Identity endpoint URL" : "URL do destino da identidade", @@ -56,17 +35,17 @@ "Rackspace" : "Espaço no rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", - "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Login and password" : "Login e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", + "Log-in credentials, save in database" : "Credenciais de acesso, armazenar no banco de dados", + "Login and password" : "Nome de login e senha", + "Log-in credentials, save in session" : "Credenciais de login, armazenar na sessão", "Global credentials, manually entered" : "Credenciais globais, inseridas manualmente", - "Manually entered, store in database" : "Inserido manualmente, armazenado no banco de dados", + "Manually entered, store in database" : "Inseridos manualmente, armazenados no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "RSA private key" : "Chave privada RSA", "Private key" : "Chave privada", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "reino padrão do Kerberos, padrão para \"WORKGROUP\"", - "Kerberos ticket Apache mode" : "Bilhete Kerberos Modo Apache", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Reino padrão do Kerberos, o padrão é \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Modo Apache de ticket Kerberos", "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Cesta", @@ -78,6 +57,7 @@ "Enable Path Style" : "Ativar Estilo do Caminho", "Legacy (v2) authentication" : "Autenticação (v2) herdada", "Enable multipart copy" : "Habilitar cópia multiparte", + "SSE-C encryption key" : "Chave de criptografia SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Subpasta remota", @@ -94,13 +74,13 @@ "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartilhar", "Show hidden files" : "Mostrar arquivos ocultos", - "Case sensitive file system" : "Sistema de arquivos sensível a maiúsculas", - "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativá-lo permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", + "Case sensitive file system" : "Sistema de arquivos diferenciando maiúsculas/minúsculas", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativar está opção permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", "Verify ACL access when listing files" : "Verifique o acesso da ACL ao listar arquivos", - "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, o que acarreta uma penalidade de desempenho", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verificar as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, tem uma penalidade de desempenho", "Timeout" : "Tempo limite", - "SMB/CIFS using OC login" : "SMB/CIFS usandoo login OC", - "Login as share" : "Faça login como compartilhar", + "SMB/CIFS using OC login" : "SMB/CIFS usando login OC", + "Login as share" : "Faça login como compartilhamento", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo limite para requisição (segundos)", @@ -110,17 +90,25 @@ "External storage" : "Armazenamento Externo", "External storage support" : "Suporte a armazenamento externo", "Adds basic external storage support" : "Adiciona suporte básico para armazenamento externo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento ativar e pode montar esses locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.", - "Enter missing credentials" : "Digite as credenciais ausentes", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Este aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. A administração pode escolher quais tipos de armazenamento a serem ativados e pode montar estes locais de armazenamento para uma conta, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer em seu diretório raiz Nextcloud, que eles podem acessar e usar como qualquer outra pasta do Nextcloud. O armazenamento externo também permite que as pessoas compartilhem arquivos armazenados nestes locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo assim que o destinatário possa acessar o arquivo compartilhado. \n\nO armazenamento externo pode ser configurado usando a GUI ou na linha de comando. Esta segunda opção fornece à administração mais flexibilidade para configurar montagens de armazenamento externo em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do arquivo de configuração de armazenamento externo.", + "Confirm" : "Confirmar", + "Storage credentials" : "Credenciais de armazenamento", + "To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.", + "Enter the storage login" : "Digite o nome de login de armazenamento", + "Enter the storage password" : "Digite a senha de armazenamento", "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", + "Enter missing credentials" : "Digite as credenciais ausentes", + "Credentials successfully set" : "Credenciais definidas com sucesso", + "Error while setting credentials: {error}" : "Erro ao definir as credenciais: {error}", + "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", - "Open in Files" : "Abrir em arquivos", + "Open in Files" : "Abrir em Arquivos", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Ocorreu um erro com este armazenamento externo. Deseja revisar esta configuração do ponto de montagem na página de configurações?", "External mount error" : "Erro de montagem externa", - "List of external storage." : "Lista de armazenamento externo.", + "List of external storage." : "Lista de armazenamentos externos.", "There is no external storage configured. You can configure them in your Personal settings." : "Não há armazenamento externo configurado. Você pode configurá-los em suas configurações pessoais.", "There is no external storage configured and you don't have the permission to configure them." : "Não há armazenamento externo configurado e você não tem permissão para configurá-los.", "No external storage" : "Sem armazenamento externo", @@ -129,6 +117,28 @@ "Scope" : "Alcance", "Personal" : "Pessoal", "System" : "Sistema", + "Type to select account or group." : "Digite para selecionar conta ou grupo.", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", + "Enable encryption" : "Ativar criptografia", + "Enable previews" : "Ativar visualizações prévias", + "Enable sharing" : "Ativar compartilhamento", + "Check for changes" : "Verifique se há alterações", + "Never" : "Nunca", + "Once every direct access" : "Uma vez a cada acesso direto", + "Read only" : "Somente leitura", + "Disconnect" : "Desconectar", + "Unknown backend: {backendName}" : "Back-end desconhecido: {backendName}", + "Admin defined" : "Definido pelo administrador", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão destes arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta do armazenamento externo em si.", + "Delete storage?" : "Excluir armazenamento?", + "Click to recheck the configuration" : "Clique para rechecar a configuração", + "Saved" : "Salvo", + "Saving …" : "Salvando...", + "Save" : "Salvar", + "Failed to save global credentials" : "Falha ao salvar as credenciais globais", + "Failed to save global credentials: {message}" : "Falha ao salvar as credenciais globais: {message}", "No external storage configured or you don't have the permission to configure them" : "Sem armazenamento externo configurado ou você não tem permissão para configurá-los", "Open documentation" : "Abrir documentação", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "O armazenamento externo permite montar serviços e dispositivos de armazenamento externos como dispositivos de armazenamento Nextcloud secundários. Você também pode permitir que as pessoas montem seus próprios serviços de armazenamento externo.", @@ -136,36 +146,15 @@ "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível para", - "Click to recheck the configuration" : "Clique para rechecar a configuração", "Add storage" : "Adic. armazenamento", "All people" : "Todas as pessoas", "Advanced settings" : "Configurações avançadas", "Allow people to mount external storage" : "Permitir que as pessoas montem armazenamento externo", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Credenciais globais podem ser usadas para autenticar com vários armazenamentos externos que possuem as mesmas credenciais.", - "Type to select user or group." : "Digite para selecionar usuário ou grupo.", - "Empty response from the server" : "Resposta vazia do servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível acessar. Refaça o login para ativar este ponto de montagem", - "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter as informações do servidor remoto: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Não foi possível obter a lista de pontos de montagem externos: {type}", - "There was an error with message: " : "Houve um erro com a mensagem:", - "external-storage" : "armazenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não foi possível buscar a lista de pontos de montagem da unidade de rede do Windows: Resposta vazia do servidor", - "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", - "Username" : "Nome de Usuário", - "Credentials saved" : "Credenciais salvas", - "Credentials saving failed" : "Erro ao salvar as credenciais", - "Credentials required" : "Credenciais necessárias", - "Storage with ID \"%d\" is not user editable" : "A armazenagem com o ID \"%d\" não é editável pelo usuário", - "Username and password" : "Nome de usuário e senha", - "Global credentials, user entered" : "Credenciais globais, usuário inserido", - "User entered, store in database" : "Usuário adicionado, armazenado no banco de dados", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Desabilitar esta opção permitirá usar um servidor de arquivos não sensível a maiúsculas, no entanto haverá degradação na performance", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens nos quais o usuário não tem permissão de leitura. Vem com uma penalidade de desempenho", - "Username as share" : "Nome de usuário como compartilhamento", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Esse aplicativo permite que os administradores configurem conexões com provedores de armazenamento externos, como servidores FTP, armazenamentos de objetos S3 ou SWIFT, outros servidores Nextcloud, servidores WebDAV e muito mais. Os administradores podem escolher quais tipos de armazenamento serão habilitados e podem montar esses locais de armazenamento para um usuário, um grupo ou todo o sistema. Os usuários verão uma nova pasta aparecer no diretório raiz do Nextcloud, que eles podem acessar e usar como qualquer outra pasta. O armazenamento externo também permite que os usuários compartilhem arquivos armazenados nesses locais externos. Nesses casos, as credenciais do proprietário do arquivo são usadas quando o destinatário solicita o arquivo do armazenamento externo, garantindo, assim, que o destinatário possa acessar o arquivo compartilhado.\n\nO armazenamento externo pode ser configurado usando a GUI ou pela linha de comando. Essa segunda opção fornece ao usuário avançado mais flexibilidade para configurar montagens em massa e definir prioridades de montagem. Mais informações estão disponíveis na documentação da GUI de armazenamento externo e na documentação do Arquivo de Configuração de armazenamento externo.", - "Name" : "Nome", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "O armazenamento externo permite que você monte serviços e dispositivos como dispositivos de armazenamento secundários Nextcloud. Você também pode permitir que os usuários montem seus próprios serviços de armazenamento externo.", - "All users" : "Todos os usuários", - "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo" + "Error configuring OAuth1" : "Erro configurando OAuth1", + "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", + "OAuth1" : "OAuth1", + "App key" : "Chave do aplicativo", + "App secret" : "Segredo do aplicativo" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js index 702ac4d9bf6..bde520eb191 100644 --- a/apps/files_external/l10n/pt_PT.js +++ b/apps/files_external/l10n/pt_PT.js @@ -2,26 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Conceder acesso", - "Error configuring OAuth1" : "Erro ao configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", "Error configuring OAuth2" : "Erro ao configurar OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar chave par", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)", - "Enable encryption" : "Activar encriptação", - "Enable previews" : "Ativar pré-visualizações", - "Enable sharing" : "Ativar partilha", - "Check for changes" : "Verificar se há alterações", - "Never" : "Nunca", - "Once every direct access" : "Uma vez em cada acesso direto", - "Read only" : "Apenas leitura", - "Disconnect" : "Desligado", - "Admin defined" : "Administrador definido", - "Delete storage?" : "Apagar armazenamento?", - "Saved" : "Guardado", - "Saving …" : "A guardar...", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "Armazenamento com ID \"%d\" não encontrado", "Invalid backend or authentication mechanism class" : "Parâmetros do mecanismo de autenticação inválidos", "Invalid mount point" : "Ponto de montagem inválido", @@ -37,12 +20,9 @@ OC.L10N.register( "Secret key" : "Código secreto", "Builtin" : "Integrado", "None" : "Nenhum", - "OAuth1" : "OAuth1", - "App key" : "Chave da App", - "App secret" : "Segredo da app", "OAuth2" : "OAuth2", - "Client ID" : "Id. do Cliente", - "Client secret" : "Segredo do cliente\\\\", + "Client ID" : "Id. de Cliente", + "Client secret" : "Segredo de cliente", "Login" : "Iniciar sessão", "Password" : "Palavra-passe", "Tenant name" : "Nome do locatário", @@ -52,7 +32,7 @@ OC.L10N.register( "API key" : "Chave API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de Log-in, guardar na base de dados", - "Log-in credentials, save in session" : "Credenciais de login, guardar na sessão", + "Log-in credentials, save in session" : "Credenciais de início de sessão, guardar na sessão", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "Amazon S3" : "Amazon S3", @@ -75,22 +55,38 @@ OC.L10N.register( "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Root", - "SFTP with secret key login" : "SFTP com login por chave secreta", - "Share" : "Compartilhar", + "SFTP with secret key login" : "SFTP com início de sessão por chave secreta", + "Share" : "Partilhar", "Show hidden files" : "Mostrar ficheiros ocultos", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Pedido expira (segundos)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte cURL em PHP não está activo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporteF TP em PHP não está activo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte cURL em PHP não está ativo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporteF TP em PHP não está ativo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", "External storage" : "Armazenamento Externo", "External storage support" : "Suporte para armazenamento externo", + "Confirm" : "Confirmar", "External mount error" : "Erro de montagem externa", "Storage type" : "Tipo de Armazenamento", "Unknown" : "Desconhecido", "Scope" : "Âmbito", "Personal" : "Pessoal", "System" : "Sistema", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)", + "Enable encryption" : "Ativar encriptação", + "Enable previews" : "Ativar pré-visualizações", + "Enable sharing" : "Ativar partilha", + "Check for changes" : "Verificar se há alterações", + "Never" : "Nunca", + "Once every direct access" : "Uma vez em cada acesso direto", + "Read only" : "Apenas leitura", + "Disconnect" : "Desligado", + "Admin defined" : "Administrador definido", + "Delete storage?" : "Apagar armazenamento?", + "Saved" : "Guardado", + "Saving …" : "A guardar...", + "Save" : "Guardar", "Open documentation" : "Abrir documentação", "Folder name" : "Nome da pasta", "Authentication" : "Autenticação", @@ -98,23 +94,10 @@ OC.L10N.register( "Available for" : "Disponível para ", "Add storage" : "Adicionar armazenamento", "Advanced settings" : "Definições avançadas", - "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível aceder. Por favor faça logout e volte-se a autenticar para activar este ponto de montagem.", - "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter informação do servidor remoto: {código}{tipo}", - "Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}", - "There was an error with message: " : "Houve um erro com a mensagem:", - "external-storage" : "armazenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não fo possível obter lista de pontos de montagem de rede Windows: Resposta vazia do servidor", - "Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}", - "Username" : "Nome de utilizador", - "Credentials saved" : "Credenciais guardadas", - "Credentials saving failed" : "Falha ao guardar as credenciais", - "Credentials required" : "Credenciais necessárias", - "Storage with ID \"%d\" is not user editable" : "Armazenamento com ID \"%d\" não é evitável por utilizadores", - "Username and password" : "Nome de utilizador e palavra-passe", - "User entered, store in database" : "Inseridos pelo utilizador, armazenar na base de dados", - "Username as share" : "Nome de utilizador como partilha", - "Name" : "Nome", - "Allow users to mount external storage" : "Permitir que os utilizadores montem armazenamento externo" + "Error configuring OAuth1" : "Erro ao configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", + "OAuth1" : "OAuth1", + "App key" : "Chave da App", + "App secret" : "Segredo da app" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json index a0d196b5333..4f334dd1643 100644 --- a/apps/files_external/l10n/pt_PT.json +++ b/apps/files_external/l10n/pt_PT.json @@ -1,25 +1,8 @@ { "translations": { "Grant access" : "Conceder acesso", - "Error configuring OAuth1" : "Erro ao configurar OAuth1", - "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", "Error configuring OAuth2" : "Erro ao configurar OAuth2", "Generate keys" : "Gerar chaves", "Error generating key pair" : "Erro ao gerar chave par", - "(Group)" : "(Grupo)", - "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)", - "Enable encryption" : "Activar encriptação", - "Enable previews" : "Ativar pré-visualizações", - "Enable sharing" : "Ativar partilha", - "Check for changes" : "Verificar se há alterações", - "Never" : "Nunca", - "Once every direct access" : "Uma vez em cada acesso direto", - "Read only" : "Apenas leitura", - "Disconnect" : "Desligado", - "Admin defined" : "Administrador definido", - "Delete storage?" : "Apagar armazenamento?", - "Saved" : "Guardado", - "Saving …" : "A guardar...", - "Save" : "Guardar", "Storage with ID \"%d\" not found" : "Armazenamento com ID \"%d\" não encontrado", "Invalid backend or authentication mechanism class" : "Parâmetros do mecanismo de autenticação inválidos", "Invalid mount point" : "Ponto de montagem inválido", @@ -35,12 +18,9 @@ "Secret key" : "Código secreto", "Builtin" : "Integrado", "None" : "Nenhum", - "OAuth1" : "OAuth1", - "App key" : "Chave da App", - "App secret" : "Segredo da app", "OAuth2" : "OAuth2", - "Client ID" : "Id. do Cliente", - "Client secret" : "Segredo do cliente\\\\", + "Client ID" : "Id. de Cliente", + "Client secret" : "Segredo de cliente", "Login" : "Iniciar sessão", "Password" : "Palavra-passe", "Tenant name" : "Nome do locatário", @@ -50,7 +30,7 @@ "API key" : "Chave API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de Log-in, guardar na base de dados", - "Log-in credentials, save in session" : "Credenciais de login, guardar na sessão", + "Log-in credentials, save in session" : "Credenciais de início de sessão, guardar na sessão", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "Amazon S3" : "Amazon S3", @@ -73,22 +53,38 @@ "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Root", - "SFTP with secret key login" : "SFTP com login por chave secreta", - "Share" : "Compartilhar", + "SFTP with secret key login" : "SFTP com início de sessão por chave secreta", + "Share" : "Partilhar", "Show hidden files" : "Mostrar ficheiros ocultos", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Pedido expira (segundos)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte cURL em PHP não está activo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporteF TP em PHP não está activo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte cURL em PHP não está ativo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporteF TP em PHP não está ativo ou instalado. Não é possível montar %s. Por favor peça ao seu administrador de sistema que o instale.", "External storage" : "Armazenamento Externo", "External storage support" : "Suporte para armazenamento externo", + "Confirm" : "Confirmar", "External mount error" : "Erro de montagem externa", "Storage type" : "Tipo de Armazenamento", "Unknown" : "Desconhecido", "Scope" : "Âmbito", "Personal" : "Pessoal", "System" : "Sistema", + "(Group)" : "(Grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação NFD Mac (lenta)", + "Enable encryption" : "Ativar encriptação", + "Enable previews" : "Ativar pré-visualizações", + "Enable sharing" : "Ativar partilha", + "Check for changes" : "Verificar se há alterações", + "Never" : "Nunca", + "Once every direct access" : "Uma vez em cada acesso direto", + "Read only" : "Apenas leitura", + "Disconnect" : "Desligado", + "Admin defined" : "Administrador definido", + "Delete storage?" : "Apagar armazenamento?", + "Saved" : "Guardado", + "Saving …" : "A guardar...", + "Save" : "Guardar", "Open documentation" : "Abrir documentação", "Folder name" : "Nome da pasta", "Authentication" : "Autenticação", @@ -96,23 +92,10 @@ "Available for" : "Disponível para ", "Add storage" : "Adicionar armazenamento", "Advanced settings" : "Definições avançadas", - "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please log out and in again to activate this mount point" : "Não foi possível aceder. Por favor faça logout e volte-se a autenticar para activar este ponto de montagem.", - "Couldn't get the information from the remote server: {code} {type}" : "Não foi possível obter informação do servidor remoto: {código}{tipo}", - "Couldn't get the list of external mount points: {type}" : "Não foi possível conseguir a lista de pontos de montagem externos: {type}", - "There was an error with message: " : "Houve um erro com a mensagem:", - "external-storage" : "armazenamento externo", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Não fo possível obter lista de pontos de montagem de rede Windows: Resposta vazia do servidor", - "Please enter the credentials for the {mount} mount" : "Por favor, introduza as credenciais para {mount}", - "Username" : "Nome de utilizador", - "Credentials saved" : "Credenciais guardadas", - "Credentials saving failed" : "Falha ao guardar as credenciais", - "Credentials required" : "Credenciais necessárias", - "Storage with ID \"%d\" is not user editable" : "Armazenamento com ID \"%d\" não é evitável por utilizadores", - "Username and password" : "Nome de utilizador e palavra-passe", - "User entered, store in database" : "Inseridos pelo utilizador, armazenar na base de dados", - "Username as share" : "Nome de utilizador como partilha", - "Name" : "Nome", - "Allow users to mount external storage" : "Permitir que os utilizadores montem armazenamento externo" + "Error configuring OAuth1" : "Erro ao configurar OAuth1", + "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", + "OAuth1" : "OAuth1", + "App key" : "Chave da App", + "App secret" : "Segredo da app" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ro.js b/apps/files_external/l10n/ro.js deleted file mode 100644 index dd2d412484d..00000000000 --- a/apps/files_external/l10n/ro.js +++ /dev/null @@ -1,85 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Grant access" : "Permite accesul", - "Error configuring OAuth1" : "Eroare la configurarea OAuth1", - "Error configuring OAuth2" : "Eroare la configurarea OAuth2", - "Generate keys" : "Generează chei", - "Error generating key pair" : "Eroarea la generarea cheilor", - "(Group)" : "(Grup)", - "Enable encryption" : "Activează criptarea", - "Enable previews" : "Activează previzualizările", - "Enable sharing" : "Activează partajarea", - "Check for changes" : "Verifică dacă au intervenit modificări", - "Never" : "Niciodată", - "Once every direct access" : "O dată la fiecare acces direct", - "Read only" : "Doar citire", - "Disconnect" : "Deconectare", - "Admin defined" : "Administrator definit", - "Saved" : "Salvat", - "Saving …" : "Se salvează", - "Save" : "Salvează", - "Insufficient data: %s" : "Date insuficiente: %s", - "%s" : "%s", - "Access key" : "Cheie de acces", - "Secret key" : "Cheie secretă", - "Builtin" : "Inclus", - "None" : "Niciuna", - "OAuth1" : "OAuth1", - "App key" : "Cheie aplicație", - "App secret" : "Secret aplicație", - "OAuth2" : "OAuth2", - "Client ID" : "ID client", - "Client secret" : "Secret client", - "Login" : "Autentificare", - "Password" : "Parolă", - "Tenant name" : "Nume titular", - "Domain" : "Domeniu", - "API key" : "Cheie API", - "RSA public key" : "Cheie publică RSA", - "Public key" : "Cheie publică", - "Amazon S3" : "Amazon S3", - "Hostname" : "Nume mașină", - "Port" : "Port", - "Region" : "Regiune", - "Enable SSL" : "Activează SSL", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Secure https://" : "https:// sigur", - "FTP" : "FTP", - "Host" : "Gazdă", - "Secure ftps://" : "ftps:// sigur", - "Local" : "Local", - "Location" : "Locație", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "SFTP with secret key login" : "SFTP cu cheie secretă de autentificare", - "Share" : "Partajează", - "Show hidden files" : "Arată fișierele ascunse", - "Service name" : "Nume serviciu", - "External storage" : "Stocare externă", - "Open in Files" : "Deschide în Fișiere", - "Storage type" : "Tip stocare", - "Unknown" : "Necunoscut", - "Scope" : "Scop", - "Personal" : "Personal", - "System" : "Sistem", - "Open documentation" : "Deschide documentația", - "Folder name" : "Denumire director", - "Authentication" : "Autentificare", - "Configuration" : "Configurație", - "Available for" : "Disponibil pentru", - "Add storage" : "Adauga stocare", - "Advanced settings" : "Setări avansate", - "Empty response from the server" : "Răspuns nul de la server", - "There was an error with message: " : "A apărut o eroare cu mesajul:", - "external-storage" : "Stocare externă", - "Username" : "Nume utilizator", - "Credentials saved" : "Detalii de autentificare salvate", - "Credentials saving failed" : "Salvarea detaliilor de autentificare a eșuat", - "Credentials required" : "Detalii de autentificare necesare", - "Username and password" : "Nume de utilizator și parolă", - "Name" : "Nume" -}, -"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/files_external/l10n/ro.json b/apps/files_external/l10n/ro.json deleted file mode 100644 index a21b756bd6f..00000000000 --- a/apps/files_external/l10n/ro.json +++ /dev/null @@ -1,83 +0,0 @@ -{ "translations": { - "Grant access" : "Permite accesul", - "Error configuring OAuth1" : "Eroare la configurarea OAuth1", - "Error configuring OAuth2" : "Eroare la configurarea OAuth2", - "Generate keys" : "Generează chei", - "Error generating key pair" : "Eroarea la generarea cheilor", - "(Group)" : "(Grup)", - "Enable encryption" : "Activează criptarea", - "Enable previews" : "Activează previzualizările", - "Enable sharing" : "Activează partajarea", - "Check for changes" : "Verifică dacă au intervenit modificări", - "Never" : "Niciodată", - "Once every direct access" : "O dată la fiecare acces direct", - "Read only" : "Doar citire", - "Disconnect" : "Deconectare", - "Admin defined" : "Administrator definit", - "Saved" : "Salvat", - "Saving …" : "Se salvează", - "Save" : "Salvează", - "Insufficient data: %s" : "Date insuficiente: %s", - "%s" : "%s", - "Access key" : "Cheie de acces", - "Secret key" : "Cheie secretă", - "Builtin" : "Inclus", - "None" : "Niciuna", - "OAuth1" : "OAuth1", - "App key" : "Cheie aplicație", - "App secret" : "Secret aplicație", - "OAuth2" : "OAuth2", - "Client ID" : "ID client", - "Client secret" : "Secret client", - "Login" : "Autentificare", - "Password" : "Parolă", - "Tenant name" : "Nume titular", - "Domain" : "Domeniu", - "API key" : "Cheie API", - "RSA public key" : "Cheie publică RSA", - "Public key" : "Cheie publică", - "Amazon S3" : "Amazon S3", - "Hostname" : "Nume mașină", - "Port" : "Port", - "Region" : "Regiune", - "Enable SSL" : "Activează SSL", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Secure https://" : "https:// sigur", - "FTP" : "FTP", - "Host" : "Gazdă", - "Secure ftps://" : "ftps:// sigur", - "Local" : "Local", - "Location" : "Locație", - "Nextcloud" : "Nextcloud", - "SFTP" : "SFTP", - "Root" : "Root", - "SFTP with secret key login" : "SFTP cu cheie secretă de autentificare", - "Share" : "Partajează", - "Show hidden files" : "Arată fișierele ascunse", - "Service name" : "Nume serviciu", - "External storage" : "Stocare externă", - "Open in Files" : "Deschide în Fișiere", - "Storage type" : "Tip stocare", - "Unknown" : "Necunoscut", - "Scope" : "Scop", - "Personal" : "Personal", - "System" : "Sistem", - "Open documentation" : "Deschide documentația", - "Folder name" : "Denumire director", - "Authentication" : "Autentificare", - "Configuration" : "Configurație", - "Available for" : "Disponibil pentru", - "Add storage" : "Adauga stocare", - "Advanced settings" : "Setări avansate", - "Empty response from the server" : "Răspuns nul de la server", - "There was an error with message: " : "A apărut o eroare cu mesajul:", - "external-storage" : "Stocare externă", - "Username" : "Nume utilizator", - "Credentials saved" : "Detalii de autentificare salvate", - "Credentials saving failed" : "Salvarea detaliilor de autentificare a eșuat", - "Credentials required" : "Detalii de autentificare necesare", - "Username and password" : "Nume de utilizator și parolă", - "Name" : "Nume" -},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index a5c10fefe7a..5a1f42a2396 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -2,28 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Предоставить доступ", - "Error configuring OAuth1" : "Ошибка настройки OAuth1", - "Please provide a valid app key and secret." : "Укажите верные ключ и секрет приложения.", "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания пары ключей", - "(Group)" : "(Группа)", - "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", - "Enable encryption" : "Включить шифрование", - "Enable previews" : "Включить предварительный просмотр", - "Enable sharing" : "Разрешить предоставление общего доступа", - "Check for changes" : "Проверять изменения", - "Never" : "Никогда", - "Once every direct access" : "Каждый раз при прямом доступе", - "Read only" : "Только чтение", - "Disconnect" : "Отключить", - "Admin defined" : "Определено администратором", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматическая проверка статуса отключена из-за большого количества настроенных хранилищ, нажмите для проверки статуса", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Вы уверены, что хотите отключить это внешнее хранилище? Это сделает хранилище недоступным в Nextcloud и приведёт к удалению этих файлов и папок на любом клиенте синхронизации, который в данный момент подключён, но не удалит файлы и папки на самом внешнем хранилище.", - "Delete storage?" : "Удалить хранилище?", - "Saved" : "Сохранено", - "Saving …" : "Сохранение ...", - "Save" : "Сохранить", + "You are not logged in" : "Вход в систему не выполнен", + "Permission denied" : "Доступ запрещён", "Forbidden to manage local mounts" : "Запрещено изменять параметры подключения файловых систем", "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Недопустимый механизм или класс авторизации", @@ -36,13 +19,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Хранилище с идентификатором \"%d\" не доступно для редактирования лицами, не являющимися администраторами ", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", "None" : "Отсутствует", - "OAuth1" : "OAuth1", - "App key" : "Ключ приложения", - "App secret" : "Секретный ключ ", "OAuth2" : "OAuth2", "Client ID" : "Идентификатор клиента", "Client secret" : "Клиентский ключ ", @@ -57,7 +38,10 @@ OC.L10N.register( "API key" : "Ключ API", "Global credentials" : "Глобальные учётные данные", "Log-in credentials, save in database" : "Учётные данные, хранить в базе данных", + "Login and password" : "Логин и пароль", "Log-in credentials, save in session" : "Учётные данные, хранить в сессии", + "Global credentials, manually entered" : "Глобальные учетные данные, введенные вручную", + "Manually entered, store in database" : "Вводится вручную, сохраняется в базе данных", "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "RSA private key" : "Закрытый ключ RSA", @@ -74,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "Использовать SSL", "Enable Path Style" : "Использовать стиль пути", "Legacy (v2) authentication" : "Устаревшая (v2) проверка подлинности", + "Enable multipart copy" : "Включить составное копирование", + "SSE-C encryption key" : "Ключ шифрования SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Подкаталог на другом сервере", @@ -91,9 +77,12 @@ OC.L10N.register( "Share" : "Общий ресурс", "Show hidden files" : "Показать скрытые файлы", "Case sensitive file system" : "Файловая система чувствительная к регистру", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Его отключение позволит использовать файловую систему без учета регистра, но приведет к снижению производительности", "Verify ACL access when listing files" : "Проверять права ACL при получении списка файлов", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Проверьте список контроля доступа для каждого файла или папки внутри каталога, чтобы отфильтровать элементы, для которых учетная запись не имеет прав на чтение, что приводит к снижению производительности", "Timeout" : "Тайм-аут", "SMB/CIFS using OC login" : "SMB/CIFS с использованием реквизитов входа", + "Login as share" : "Войдите в систему как общий доступ", "OpenStack Object Storage" : "Хранилище объектов OpenStack", "Service name" : "Название сервиса", "Request timeout (seconds)" : "Таймаут запроса (в секундах)", @@ -103,9 +92,18 @@ OC.L10N.register( "External storage" : "Внешнее хранилище", "External storage support" : "Поддержка внешних хранилищ", "Adds basic external storage support" : "Базовая поддержка внешних хранилищ", - "Enter missing credentials" : "Ввод пропущенных учётных данных", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Это приложение позволяет администраторам настраивать подключения к внешним поставщикам хранилища, таким как FTP-серверы, хранилища объектов S3 или SWIFT, другие серверы Nextcloud, WebDAV-серверы и многое другое. Администрация может выбрать, какие типы хранилищ включить, и подключить эти хранилища для учетной записи, группы или всей системы. Пользователи увидят, что в их корневом каталоге Nextcloud появится новая папка, доступ к которой они смогут получить и использовать, как и любую другую папку Nextcloud. Внешнее хранилище также позволяет пользователям предоставлять общий доступ к файлам, хранящимся в этих внешних хранилищах. В этих случаях учетные данные владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель сможет получить доступ к общему файлу.\n \n Внешнее хранилище можно настроить с помощью графического интерфейса пользователя или в командной строке. Этот второй вариант предоставляет администрации больше гибкости при настройке массового подключения внешнего хранилища и установлении приоритетов подключения. Дополнительная информация доступна в документации по графическому интерфейсу внешнего хранилища и документации по файлу конфигурации внешнего хранилища.", + "Confirm" : "Подтвердить", + "Storage credentials" : "Параметры хранилища", + "To access the storage, you need to provide the authentication credentials." : "Для получения доступа в хранилище, вам нужно указать четные данные для аутентификации.", + "Enter the storage login" : "Введите имя пользователя хранилища", + "Enter the storage password" : "Введите пароль от хранилища", "Unable to update this external storage config. {statusMessage}" : "Не удалось обновить эту конфигурацию внешних хранилищ. {statusMessage}", "New configuration successfully saved" : "Новая конфигурация успешно сохранена", + "Enter missing credentials" : "Ввод пропущенных учётных данных", + "Credentials successfully set" : "Учётные данные успешно заданы", + "Error while setting credentials: {error}" : "Ошибка при установке учётных данных: {error}", + "Checking storage …" : "Проверка хранилища …", "There was an error with this external storage." : "Произошла ошибка с этим внешним хранилищем.", "We were unable to check the external storage {basename}" : "Нам не удалось проверить внешнее хранилище {basename}", "Examine this faulty external storage configuration" : "Проверьте эту конфигурацию внешнего хранилища, она содержит ошибки", @@ -121,40 +119,44 @@ OC.L10N.register( "Scope" : "Область", "Personal" : "Личное", "System" : "Система", + "Type to select account or group." : "Введите, чтобы выбрать учетную запись или группу.", + "(Group)" : "(Группа)", + "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", + "Enable encryption" : "Включить шифрование", + "Enable previews" : "Включить предварительный просмотр", + "Enable sharing" : "Разрешить предоставление общего доступа", + "Check for changes" : "Проверять изменения", + "Never" : "Никогда", + "Once every direct access" : "Каждый раз при прямом доступе", + "Read only" : "Только чтение", + "Disconnect" : "Отключить", + "Unknown backend: {backendName}" : "Неизвестный бэкэнд: {backendName}", + "Admin defined" : "Определено администратором", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматическая проверка статуса отключена из-за большого количества настроенных хранилищ, нажмите для проверки статуса", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Вы уверены, что хотите отключить это внешнее хранилище? Это сделает хранилище недоступным в Nextcloud и приведёт к удалению этих файлов и папок на любом клиенте синхронизации, который в данный момент подключён, но не удалит файлы и папки на самом внешнем хранилище.", + "Delete storage?" : "Удалить хранилище?", + "Click to recheck the configuration" : "Нажмите для повторной проверки конфигурации", + "Saved" : "Сохранено", + "Saving …" : "Сохранение ...", + "Save" : "Сохранить", + "Failed to save global credentials" : "Не удалось сохранить глобальные учётные данные", + "Failed to save global credentials: {message}" : "Не удалось сохранить глобальные учётные данные: {message}", "No external storage configured or you don't have the permission to configure them" : "Нет настроенного внешнего хранилища или у вас нет прав доступа для их настройки", "Open documentation" : "Открыть документацию", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние службы и устройства хранения в качестве дополнительных устройств хранения данных Nextcloud. Вы также можете разрешить людям подключать свои собственные внешние службы хранения данных.", "Folder name" : "Имя папки", "Authentication" : "Способ авторизации", "Configuration" : "Конфигурация", "Available for" : "Доступно для", - "Click to recheck the configuration" : "Нажмите для повторной проверки конфигурации", "Add storage" : "Добавить хранилище", + "All people" : "Все люди", "Advanced settings" : "Расширенные настройки", + "Allow people to mount external storage" : "Разрешить пользователям подключать внешнее хранилище", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальные учетные данные могут использоваться для аутентификации с несколькими внешними хранилищами, которые имеют одинаковые учетные данные.", - "Type to select user or group." : "Введите имя пользователя или группы.", - "Empty response from the server" : "Получен пустой ответ сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему", - "Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию от удалённого сервера: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", - "There was an error with message: " : "Произошла ошибка:", - "external-storage" : "внешнее-хранилище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера", - "Please enter the credentials for the {mount} mount" : "Укажите учётные данные для точки подключения «{mount}»", - "Username" : "Имя пользователя", - "Credentials saved" : "Учётные данные сохранены", - "Credentials saving failed" : "Ошибка сохранения учётных данных", - "Credentials required" : "Требуются учётные данные", - "Storage with ID \"%d\" is not user editable" : "Пользователям не разрешено изменение параметров хранилища «%d»", - "Username and password" : "Имя пользователя и пароль", - "Global credentials, user entered" : "Глобальные учетные данные, введенные пользователем", - "User entered, store in database" : "Указанные пользователем, хранить в базе данных", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Отключение этого параметра позволит использовать файловую систему с учетом регистра, но приведет к снижению производительности", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "При получении списка файлов возможно проверять права доступа и исключать из списка файлы, к которым отсутствуют права чтения. Такая проверка снижает производительность.", - "Username as share" : "Имя пользователя в качестве имени общего ресурса", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Это приложение позволяет администраторам настраивать подключения к провайдерам внешних хранилищ, таким как FTP-серверы, хранилища объектов S3 или SWIFT, другие серверы Nextcloud, серверы WebDAV и т. Д. Администраторы могут выбирать типы хранилищ для использования и монтировать эти места хранения для пользователя, группы или всей системы. Пользователи увидят, что в их корневой директории Nextcloud появилась новая папка, которую они могут использовать, как и любую другую папку Nextcloud. Внешние хранилища также позволяют пользователям обмениваться файлами, хранящимися в них. В этих случаях учетные данные для владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель может получить доступ к общему файлу. Внешнее хранилище можно настроить с помощью GUI или в командной строке. Второй вариант предоставляет продвинутому пользователю большую гибкость для настройки внешнего хранилища и установки приоритетов монтирования. Дополнительная информация доступна в документации по GUI внешного хранилища и документации файла конфигурации внешнего хранилища.", - "Name" : "Имя", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние устройства хранения и устройства в качестве вторичных устройств хранения Nextcloud. Вы также можете разрешить пользователям устанавливать собственные внешние службы хранения.", - "All users" : "Все пользователи", - "Allow users to mount external storage" : "Разрешить пользователями подключать внешние хранилища" + "Error configuring OAuth1" : "Ошибка настройки OAuth1", + "Please provide a valid app key and secret." : "Укажите верные ключ и секрет приложения.", + "OAuth1" : "OAuth1", + "App key" : "Ключ приложения", + "App secret" : "Секретный ключ " }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index 12d40010e62..16d4cfcbe60 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -1,27 +1,10 @@ { "translations": { "Grant access" : "Предоставить доступ", - "Error configuring OAuth1" : "Ошибка настройки OAuth1", - "Please provide a valid app key and secret." : "Укажите верные ключ и секрет приложения.", "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания пары ключей", - "(Group)" : "(Группа)", - "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", - "Enable encryption" : "Включить шифрование", - "Enable previews" : "Включить предварительный просмотр", - "Enable sharing" : "Разрешить предоставление общего доступа", - "Check for changes" : "Проверять изменения", - "Never" : "Никогда", - "Once every direct access" : "Каждый раз при прямом доступе", - "Read only" : "Только чтение", - "Disconnect" : "Отключить", - "Admin defined" : "Определено администратором", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматическая проверка статуса отключена из-за большого количества настроенных хранилищ, нажмите для проверки статуса", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Вы уверены, что хотите отключить это внешнее хранилище? Это сделает хранилище недоступным в Nextcloud и приведёт к удалению этих файлов и папок на любом клиенте синхронизации, который в данный момент подключён, но не удалит файлы и папки на самом внешнем хранилище.", - "Delete storage?" : "Удалить хранилище?", - "Saved" : "Сохранено", - "Saving …" : "Сохранение ...", - "Save" : "Сохранить", + "You are not logged in" : "Вход в систему не выполнен", + "Permission denied" : "Доступ запрещён", "Forbidden to manage local mounts" : "Запрещено изменять параметры подключения файловых систем", "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Недопустимый механизм или класс авторизации", @@ -34,13 +17,11 @@ "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Хранилище с идентификатором \"%d\" не доступно для редактирования лицами, не являющимися администраторами ", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", "None" : "Отсутствует", - "OAuth1" : "OAuth1", - "App key" : "Ключ приложения", - "App secret" : "Секретный ключ ", "OAuth2" : "OAuth2", "Client ID" : "Идентификатор клиента", "Client secret" : "Клиентский ключ ", @@ -55,7 +36,10 @@ "API key" : "Ключ API", "Global credentials" : "Глобальные учётные данные", "Log-in credentials, save in database" : "Учётные данные, хранить в базе данных", + "Login and password" : "Логин и пароль", "Log-in credentials, save in session" : "Учётные данные, хранить в сессии", + "Global credentials, manually entered" : "Глобальные учетные данные, введенные вручную", + "Manually entered, store in database" : "Вводится вручную, сохраняется в базе данных", "RSA public key" : "Открытый ключ RSA", "Public key" : "Открытый ключ", "RSA private key" : "Закрытый ключ RSA", @@ -72,6 +56,8 @@ "Enable SSL" : "Использовать SSL", "Enable Path Style" : "Использовать стиль пути", "Legacy (v2) authentication" : "Устаревшая (v2) проверка подлинности", + "Enable multipart copy" : "Включить составное копирование", + "SSE-C encryption key" : "Ключ шифрования SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Подкаталог на другом сервере", @@ -89,9 +75,12 @@ "Share" : "Общий ресурс", "Show hidden files" : "Показать скрытые файлы", "Case sensitive file system" : "Файловая система чувствительная к регистру", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Его отключение позволит использовать файловую систему без учета регистра, но приведет к снижению производительности", "Verify ACL access when listing files" : "Проверять права ACL при получении списка файлов", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Проверьте список контроля доступа для каждого файла или папки внутри каталога, чтобы отфильтровать элементы, для которых учетная запись не имеет прав на чтение, что приводит к снижению производительности", "Timeout" : "Тайм-аут", "SMB/CIFS using OC login" : "SMB/CIFS с использованием реквизитов входа", + "Login as share" : "Войдите в систему как общий доступ", "OpenStack Object Storage" : "Хранилище объектов OpenStack", "Service name" : "Название сервиса", "Request timeout (seconds)" : "Таймаут запроса (в секундах)", @@ -101,9 +90,18 @@ "External storage" : "Внешнее хранилище", "External storage support" : "Поддержка внешних хранилищ", "Adds basic external storage support" : "Базовая поддержка внешних хранилищ", - "Enter missing credentials" : "Ввод пропущенных учётных данных", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Это приложение позволяет администраторам настраивать подключения к внешним поставщикам хранилища, таким как FTP-серверы, хранилища объектов S3 или SWIFT, другие серверы Nextcloud, WebDAV-серверы и многое другое. Администрация может выбрать, какие типы хранилищ включить, и подключить эти хранилища для учетной записи, группы или всей системы. Пользователи увидят, что в их корневом каталоге Nextcloud появится новая папка, доступ к которой они смогут получить и использовать, как и любую другую папку Nextcloud. Внешнее хранилище также позволяет пользователям предоставлять общий доступ к файлам, хранящимся в этих внешних хранилищах. В этих случаях учетные данные владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель сможет получить доступ к общему файлу.\n \n Внешнее хранилище можно настроить с помощью графического интерфейса пользователя или в командной строке. Этот второй вариант предоставляет администрации больше гибкости при настройке массового подключения внешнего хранилища и установлении приоритетов подключения. Дополнительная информация доступна в документации по графическому интерфейсу внешнего хранилища и документации по файлу конфигурации внешнего хранилища.", + "Confirm" : "Подтвердить", + "Storage credentials" : "Параметры хранилища", + "To access the storage, you need to provide the authentication credentials." : "Для получения доступа в хранилище, вам нужно указать четные данные для аутентификации.", + "Enter the storage login" : "Введите имя пользователя хранилища", + "Enter the storage password" : "Введите пароль от хранилища", "Unable to update this external storage config. {statusMessage}" : "Не удалось обновить эту конфигурацию внешних хранилищ. {statusMessage}", "New configuration successfully saved" : "Новая конфигурация успешно сохранена", + "Enter missing credentials" : "Ввод пропущенных учётных данных", + "Credentials successfully set" : "Учётные данные успешно заданы", + "Error while setting credentials: {error}" : "Ошибка при установке учётных данных: {error}", + "Checking storage …" : "Проверка хранилища …", "There was an error with this external storage." : "Произошла ошибка с этим внешним хранилищем.", "We were unable to check the external storage {basename}" : "Нам не удалось проверить внешнее хранилище {basename}", "Examine this faulty external storage configuration" : "Проверьте эту конфигурацию внешнего хранилища, она содержит ошибки", @@ -119,40 +117,44 @@ "Scope" : "Область", "Personal" : "Личное", "System" : "Система", + "Type to select account or group." : "Введите, чтобы выбрать учетную запись или группу.", + "(Group)" : "(Группа)", + "Compatibility with Mac NFD encoding (slow)" : "Совместимость с кодировкой Mac NFD (медленно)", + "Enable encryption" : "Включить шифрование", + "Enable previews" : "Включить предварительный просмотр", + "Enable sharing" : "Разрешить предоставление общего доступа", + "Check for changes" : "Проверять изменения", + "Never" : "Никогда", + "Once every direct access" : "Каждый раз при прямом доступе", + "Read only" : "Только чтение", + "Disconnect" : "Отключить", + "Unknown backend: {backendName}" : "Неизвестный бэкэнд: {backendName}", + "Admin defined" : "Определено администратором", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматическая проверка статуса отключена из-за большого количества настроенных хранилищ, нажмите для проверки статуса", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Вы уверены, что хотите отключить это внешнее хранилище? Это сделает хранилище недоступным в Nextcloud и приведёт к удалению этих файлов и папок на любом клиенте синхронизации, который в данный момент подключён, но не удалит файлы и папки на самом внешнем хранилище.", + "Delete storage?" : "Удалить хранилище?", + "Click to recheck the configuration" : "Нажмите для повторной проверки конфигурации", + "Saved" : "Сохранено", + "Saving …" : "Сохранение ...", + "Save" : "Сохранить", + "Failed to save global credentials" : "Не удалось сохранить глобальные учётные данные", + "Failed to save global credentials: {message}" : "Не удалось сохранить глобальные учётные данные: {message}", "No external storage configured or you don't have the permission to configure them" : "Нет настроенного внешнего хранилища или у вас нет прав доступа для их настройки", "Open documentation" : "Открыть документацию", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние службы и устройства хранения в качестве дополнительных устройств хранения данных Nextcloud. Вы также можете разрешить людям подключать свои собственные внешние службы хранения данных.", "Folder name" : "Имя папки", "Authentication" : "Способ авторизации", "Configuration" : "Конфигурация", "Available for" : "Доступно для", - "Click to recheck the configuration" : "Нажмите для повторной проверки конфигурации", "Add storage" : "Добавить хранилище", + "All people" : "Все люди", "Advanced settings" : "Расширенные настройки", + "Allow people to mount external storage" : "Разрешить пользователям подключать внешнее хранилище", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальные учетные данные могут использоваться для аутентификации с несколькими внешними хранилищами, которые имеют одинаковые учетные данные.", - "Type to select user or group." : "Введите имя пользователя или группы.", - "Empty response from the server" : "Получен пустой ответ сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не удалось получить доступ. Для активации этой точки подключения выйдите и снова войдите в систему", - "Couldn't get the information from the remote server: {code} {type}" : "Не удалось получить информацию от удалённого сервера: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не удалось получить список внешних точек монтирования: {type}", - "There was an error with message: " : "Произошла ошибка:", - "external-storage" : "внешнее-хранилище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не удалось получить список точек подключения сетевых дисков Windows: пустой ответ от сервера", - "Please enter the credentials for the {mount} mount" : "Укажите учётные данные для точки подключения «{mount}»", - "Username" : "Имя пользователя", - "Credentials saved" : "Учётные данные сохранены", - "Credentials saving failed" : "Ошибка сохранения учётных данных", - "Credentials required" : "Требуются учётные данные", - "Storage with ID \"%d\" is not user editable" : "Пользователям не разрешено изменение параметров хранилища «%d»", - "Username and password" : "Имя пользователя и пароль", - "Global credentials, user entered" : "Глобальные учетные данные, введенные пользователем", - "User entered, store in database" : "Указанные пользователем, хранить в базе данных", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Отключение этого параметра позволит использовать файловую систему с учетом регистра, но приведет к снижению производительности", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "При получении списка файлов возможно проверять права доступа и исключать из списка файлы, к которым отсутствуют права чтения. Такая проверка снижает производительность.", - "Username as share" : "Имя пользователя в качестве имени общего ресурса", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Это приложение позволяет администраторам настраивать подключения к провайдерам внешних хранилищ, таким как FTP-серверы, хранилища объектов S3 или SWIFT, другие серверы Nextcloud, серверы WebDAV и т. Д. Администраторы могут выбирать типы хранилищ для использования и монтировать эти места хранения для пользователя, группы или всей системы. Пользователи увидят, что в их корневой директории Nextcloud появилась новая папка, которую они могут использовать, как и любую другую папку Nextcloud. Внешние хранилища также позволяют пользователям обмениваться файлами, хранящимися в них. В этих случаях учетные данные для владельца файла используются, когда получатель запрашивает файл из внешнего хранилища, тем самым гарантируя, что получатель может получить доступ к общему файлу. Внешнее хранилище можно настроить с помощью GUI или в командной строке. Второй вариант предоставляет продвинутому пользователю большую гибкость для настройки внешнего хранилища и установки приоритетов монтирования. Дополнительная информация доступна в документации по GUI внешного хранилища и документации файла конфигурации внешнего хранилища.", - "Name" : "Имя", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние устройства хранения и устройства в качестве вторичных устройств хранения Nextcloud. Вы также можете разрешить пользователям устанавливать собственные внешние службы хранения.", - "All users" : "Все пользователи", - "Allow users to mount external storage" : "Разрешить пользователями подключать внешние хранилища" + "Error configuring OAuth1" : "Ошибка настройки OAuth1", + "Please provide a valid app key and secret." : "Укажите верные ключ и секрет приложения.", + "OAuth1" : "OAuth1", + "App key" : "Ключ приложения", + "App secret" : "Секретный ключ " },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sc.js b/apps/files_external/l10n/sc.js index cd8ea671303..b9fa13995b5 100644 --- a/apps/files_external/l10n/sc.js +++ b/apps/files_external/l10n/sc.js @@ -2,25 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Permite s'atzessu", - "Error configuring OAuth1" : "Errore de cunfiguratzione OAuth1", - "Please provide a valid app key and secret." : "Fruni una crae bàlida e segreta.", "Error configuring OAuth2" : "Errore de cunfiguratzione OAuth2", "Generate keys" : "Gènera craes", "Error generating key pair" : "Errore creende sa croba de craes", - "(Group)" : "(Grupu)", - "Compatibility with Mac NFD encoding (slow)" : " Compatibilidade cun sa codìfica Mac NFD (lentu)", - "Enable encryption" : "Ativa tzifradura", - "Enable previews" : "Ativa anteprimas", - "Enable sharing" : "Ativa cumpartzidura", - "Check for changes" : "Controlla is càmbios", - "Never" : "Mais", - "Once every direct access" : "Una borta pro ogni atzessu diretu", - "Read only" : "Letura sola", - "Admin defined" : "Definidu dae s'amministradore", - "Delete storage?" : "Nche cheres cantzellare sa memòria?", - "Saved" : "Sarvadu", - "Saving …" : "Sarvende ...", - "Save" : "Sarva", "Storage with ID \"%d\" not found" : "Archiviatzione cun ID \"%d\" no agatadu", "Invalid backend or authentication mechanism class" : "Su motore o sa casta de su mecanìsmu non balent", "Invalid mount point" : "Puntu de montàgiu imbàlidu", @@ -36,9 +20,6 @@ OC.L10N.register( "Secret key" : "Crae segreta", "Builtin" : "Integrada", "None" : "Perunu", - "OAuth1" : "OAuth1", - "App key" : "Crae de s'aplicatzione", - "App secret" : "Segretu de s'aplicatzione", "OAuth2" : "OAuth2", "Client ID" : "ID cliente", "Client secret" : "Segretu de su cliente", @@ -95,6 +76,8 @@ OC.L10N.register( "External storage" : "Archiviatzione de foras", "External storage support" : "Suportu archiviatzione de foras", "Adds basic external storage support" : "Agiunghet suportu de base pro archiviatziones de foras", + "Confirm" : "Cunfirma", + "New configuration successfully saved" : "Cunfiguratzione noa sarvada", "Open in Files" : "Aberi in Archìvios", "External mount error" : "Errore de montàgiu esternu", "Storage type" : "Genia de archiviatzione", @@ -102,38 +85,34 @@ OC.L10N.register( "Scope" : "Àmbitu", "Personal" : "Personale", "System" : "Sistema", + "(Group)" : "(Grupu)", + "Compatibility with Mac NFD encoding (slow)" : " Compatibilidade cun sa codìfica Mac NFD (lentu)", + "Enable encryption" : "Ativa tzifradura", + "Enable previews" : "Ativa anteprimas", + "Enable sharing" : "Ativa cumpartzidura", + "Check for changes" : "Controlla is càmbios", + "Never" : "Mais", + "Once every direct access" : "Una borta pro ogni atzessu diretu", + "Read only" : "Letura sola", + "Admin defined" : "Definidu dae s'amministradore", + "Delete storage?" : "Nche cheres cantzellare sa memòria?", + "Click to recheck the configuration" : "Incarca pro controllare torra sa cunfiguratzione", + "Saved" : "Sarvadu", + "Saving …" : "Sarvende ...", + "Save" : "Sarva", "No external storage configured or you don't have the permission to configure them" : "Peruna archiviatzione de foras cunfigurada o non tenes is permissos pro ddas cunfigurare", "Open documentation" : "Aberi sa documentatzione", "Folder name" : "Nùmene de sa cartella", "Authentication" : "Autenticatzione", "Configuration" : "Cunfiguratzione", "Available for" : "A disponimentu pro", - "Click to recheck the configuration" : "Incarca pro controllare torra sa cunfiguratzione", "Add storage" : "Agiunghe archiviatzione", "Advanced settings" : "Cunfiguratziones avantzadas", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Is credentziales globales si podent impreare puru pro s'autenticatzione cun prus archiviatziones de foras chi tenent is matessi credentziales.", - "Empty response from the server" : "Risposta bòida dae su serbidore", - "Couldn't access. Please log out and in again to activate this mount point" : "No at fatu a atzèdere. Essi·nche e torra·nche a intrare pro ativare su puntu de montàgiu", - "Couldn't get the information from the remote server: {code} {type}" : "No at fatu a otènnere is informatziones dae su serbidore remotu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No at fatu a otènnere sa lista de is puntos de montàgiu de foras: {type}", - "There was an error with message: " : "B'at àpidu un'errore cun su messàgiu:", - "external-storage" : "archiviatzione-de foras", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : " No at fatu a otènnere s'elencu de is puntos de montàgiu de is unidades de rete. Windows: risposta bòida dae su serbidore", - "Please enter the credentials for the {mount} mount" : "Inserta·nche is credentziales pro montare {mount} ", - "Username" : "Nùmene utente", - "Credentials saved" : "Credentziales sarvadas", - "Credentials saving failed" : "No at fatu a sarvare is credentziales", - "Credentials required" : "Credentziales rechertas", - "Storage with ID \"%d\" is not user editable" : "Archiviatzione cun ID \"%d\" no est modìficabile dae s'utente", - "Username and password" : "Nùmene de utente e crae", - "Global credentials, user entered" : "Credentziales globales, insertadas dae s'utente", - "User entered, store in database" : "Insertadas dae s'utente, alloga in sa base de datos", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla s'ACL de cada archìviu o cartella intro de una cartella sorgente pro filtrare elementos in ue s'utente no tenet permissos, càusat mènguas in is prestatziones", - "Username as share" : "Nùmene utente comente cumpartzidura", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Custa aplicatzione permitit a s'amministratzione de cunfigurare is connessiones a frunidores de archiviatzione de foras, comente serbidores FTP, S3 o archìvios de ogetos SWIFT, àteros serbidores Nextcloud, serbidores WebDAV, e àteru. S'amministratzione podet seberare sa genia de archiviatzione de ativare e montare is archiviatziones pro un'utente, unu grupu, o totu su sistema. Is utentes ant a bìdere chi s'at a mustrare una cartella noa in sa cartella sorgente Nextcloud issoro, in sa chi podent intrare e impreare comente is àteras cartellas de Nextcloud. S'archiviatzione esterna permitit puru de cumpartzire archìvios in custos ispàtzios de foras. In custos casos, is credentziales de chie est mere de s'archìviu sunt impreadas cando sa persone destinatària rechedet s'archìviu dae archiviatzione de foras, segurende·si chi sa persone destinatària potzat tènnere atzessu.\n\nS'archiviatzione de foras si podet cuunfigurare cun GUI o sa lìnia de cumandu. Custu sèberu de duos frunit prus flessibilidade a s'utèntzia avantzada pro una cunfiguratzione massiva de is puntos de montàgiu de is archiviatziones de foras e sa cunfiguratzione de is prioridades de is puntos de montàgiu. Àteras informatziones a disponimentu in s'archiviatzione esterna de sa documentatzione GUI e in sa documentatzione de is archìvios de cunfiguratzione de is archiviatziones de foras.", - "Name" : "Nùmene", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "S'archiviatzione de foras ti permitit de montare servìtzios de archiviatzione de foras e dispositivos che a dispositivos de archiviatzione secondàrios de Nextcloud. Podes permìtere a is utentes de montare is sevìtzios de archiviatzione de foras issoro.", - "All users" : "Totu is utentes", - "Allow users to mount external storage" : "Permiti a is utentes de montare archiviatziones de foras" + "Error configuring OAuth1" : "Errore de cunfiguratzione OAuth1", + "Please provide a valid app key and secret." : "Fruni una crae bàlida e segreta.", + "OAuth1" : "OAuth1", + "App key" : "Crae de s'aplicatzione", + "App secret" : "Segretu de s'aplicatzione" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/sc.json b/apps/files_external/l10n/sc.json index dfd9b8982df..f10b71eb40f 100644 --- a/apps/files_external/l10n/sc.json +++ b/apps/files_external/l10n/sc.json @@ -1,24 +1,8 @@ { "translations": { "Grant access" : "Permite s'atzessu", - "Error configuring OAuth1" : "Errore de cunfiguratzione OAuth1", - "Please provide a valid app key and secret." : "Fruni una crae bàlida e segreta.", "Error configuring OAuth2" : "Errore de cunfiguratzione OAuth2", "Generate keys" : "Gènera craes", "Error generating key pair" : "Errore creende sa croba de craes", - "(Group)" : "(Grupu)", - "Compatibility with Mac NFD encoding (slow)" : " Compatibilidade cun sa codìfica Mac NFD (lentu)", - "Enable encryption" : "Ativa tzifradura", - "Enable previews" : "Ativa anteprimas", - "Enable sharing" : "Ativa cumpartzidura", - "Check for changes" : "Controlla is càmbios", - "Never" : "Mais", - "Once every direct access" : "Una borta pro ogni atzessu diretu", - "Read only" : "Letura sola", - "Admin defined" : "Definidu dae s'amministradore", - "Delete storage?" : "Nche cheres cantzellare sa memòria?", - "Saved" : "Sarvadu", - "Saving …" : "Sarvende ...", - "Save" : "Sarva", "Storage with ID \"%d\" not found" : "Archiviatzione cun ID \"%d\" no agatadu", "Invalid backend or authentication mechanism class" : "Su motore o sa casta de su mecanìsmu non balent", "Invalid mount point" : "Puntu de montàgiu imbàlidu", @@ -34,9 +18,6 @@ "Secret key" : "Crae segreta", "Builtin" : "Integrada", "None" : "Perunu", - "OAuth1" : "OAuth1", - "App key" : "Crae de s'aplicatzione", - "App secret" : "Segretu de s'aplicatzione", "OAuth2" : "OAuth2", "Client ID" : "ID cliente", "Client secret" : "Segretu de su cliente", @@ -93,6 +74,8 @@ "External storage" : "Archiviatzione de foras", "External storage support" : "Suportu archiviatzione de foras", "Adds basic external storage support" : "Agiunghet suportu de base pro archiviatziones de foras", + "Confirm" : "Cunfirma", + "New configuration successfully saved" : "Cunfiguratzione noa sarvada", "Open in Files" : "Aberi in Archìvios", "External mount error" : "Errore de montàgiu esternu", "Storage type" : "Genia de archiviatzione", @@ -100,38 +83,34 @@ "Scope" : "Àmbitu", "Personal" : "Personale", "System" : "Sistema", + "(Group)" : "(Grupu)", + "Compatibility with Mac NFD encoding (slow)" : " Compatibilidade cun sa codìfica Mac NFD (lentu)", + "Enable encryption" : "Ativa tzifradura", + "Enable previews" : "Ativa anteprimas", + "Enable sharing" : "Ativa cumpartzidura", + "Check for changes" : "Controlla is càmbios", + "Never" : "Mais", + "Once every direct access" : "Una borta pro ogni atzessu diretu", + "Read only" : "Letura sola", + "Admin defined" : "Definidu dae s'amministradore", + "Delete storage?" : "Nche cheres cantzellare sa memòria?", + "Click to recheck the configuration" : "Incarca pro controllare torra sa cunfiguratzione", + "Saved" : "Sarvadu", + "Saving …" : "Sarvende ...", + "Save" : "Sarva", "No external storage configured or you don't have the permission to configure them" : "Peruna archiviatzione de foras cunfigurada o non tenes is permissos pro ddas cunfigurare", "Open documentation" : "Aberi sa documentatzione", "Folder name" : "Nùmene de sa cartella", "Authentication" : "Autenticatzione", "Configuration" : "Cunfiguratzione", "Available for" : "A disponimentu pro", - "Click to recheck the configuration" : "Incarca pro controllare torra sa cunfiguratzione", "Add storage" : "Agiunghe archiviatzione", "Advanced settings" : "Cunfiguratziones avantzadas", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Is credentziales globales si podent impreare puru pro s'autenticatzione cun prus archiviatziones de foras chi tenent is matessi credentziales.", - "Empty response from the server" : "Risposta bòida dae su serbidore", - "Couldn't access. Please log out and in again to activate this mount point" : "No at fatu a atzèdere. Essi·nche e torra·nche a intrare pro ativare su puntu de montàgiu", - "Couldn't get the information from the remote server: {code} {type}" : "No at fatu a otènnere is informatziones dae su serbidore remotu: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "No at fatu a otènnere sa lista de is puntos de montàgiu de foras: {type}", - "There was an error with message: " : "B'at àpidu un'errore cun su messàgiu:", - "external-storage" : "archiviatzione-de foras", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : " No at fatu a otènnere s'elencu de is puntos de montàgiu de is unidades de rete. Windows: risposta bòida dae su serbidore", - "Please enter the credentials for the {mount} mount" : "Inserta·nche is credentziales pro montare {mount} ", - "Username" : "Nùmene utente", - "Credentials saved" : "Credentziales sarvadas", - "Credentials saving failed" : "No at fatu a sarvare is credentziales", - "Credentials required" : "Credentziales rechertas", - "Storage with ID \"%d\" is not user editable" : "Archiviatzione cun ID \"%d\" no est modìficabile dae s'utente", - "Username and password" : "Nùmene de utente e crae", - "Global credentials, user entered" : "Credentziales globales, insertadas dae s'utente", - "User entered, store in database" : "Insertadas dae s'utente, alloga in sa base de datos", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla s'ACL de cada archìviu o cartella intro de una cartella sorgente pro filtrare elementos in ue s'utente no tenet permissos, càusat mènguas in is prestatziones", - "Username as share" : "Nùmene utente comente cumpartzidura", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Custa aplicatzione permitit a s'amministratzione de cunfigurare is connessiones a frunidores de archiviatzione de foras, comente serbidores FTP, S3 o archìvios de ogetos SWIFT, àteros serbidores Nextcloud, serbidores WebDAV, e àteru. S'amministratzione podet seberare sa genia de archiviatzione de ativare e montare is archiviatziones pro un'utente, unu grupu, o totu su sistema. Is utentes ant a bìdere chi s'at a mustrare una cartella noa in sa cartella sorgente Nextcloud issoro, in sa chi podent intrare e impreare comente is àteras cartellas de Nextcloud. S'archiviatzione esterna permitit puru de cumpartzire archìvios in custos ispàtzios de foras. In custos casos, is credentziales de chie est mere de s'archìviu sunt impreadas cando sa persone destinatària rechedet s'archìviu dae archiviatzione de foras, segurende·si chi sa persone destinatària potzat tènnere atzessu.\n\nS'archiviatzione de foras si podet cuunfigurare cun GUI o sa lìnia de cumandu. Custu sèberu de duos frunit prus flessibilidade a s'utèntzia avantzada pro una cunfiguratzione massiva de is puntos de montàgiu de is archiviatziones de foras e sa cunfiguratzione de is prioridades de is puntos de montàgiu. Àteras informatziones a disponimentu in s'archiviatzione esterna de sa documentatzione GUI e in sa documentatzione de is archìvios de cunfiguratzione de is archiviatziones de foras.", - "Name" : "Nùmene", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "S'archiviatzione de foras ti permitit de montare servìtzios de archiviatzione de foras e dispositivos che a dispositivos de archiviatzione secondàrios de Nextcloud. Podes permìtere a is utentes de montare is sevìtzios de archiviatzione de foras issoro.", - "All users" : "Totu is utentes", - "Allow users to mount external storage" : "Permiti a is utentes de montare archiviatziones de foras" + "Error configuring OAuth1" : "Errore de cunfiguratzione OAuth1", + "Please provide a valid app key and secret." : "Fruni una crae bàlida e segreta.", + "OAuth1" : "OAuth1", + "App key" : "Crae de s'aplicatzione", + "App secret" : "Segretu de s'aplicatzione" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sk.js b/apps/files_external/l10n/sk.js index 08f1f4d9685..f8c9608e833 100644 --- a/apps/files_external/l10n/sk.js +++ b/apps/files_external/l10n/sk.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Povoliť prístup", - "Error configuring OAuth1" : "Chyba konfigurovania OAuth1", - "Please provide a valid app key and secret." : "Zadajte prosím platný aplikačný kľúč a heslo (secret).", "Error configuring OAuth2" : "Chyba konfigurovania OAuth2", "Generate keys" : "Vytvoriť kľúče", "Error generating key pair" : "Chyba pri vytváraní dvojice kľúčov", - "Type to select account or group." : "Zadajte text pre výber účtu alebo skupiny.", - "(Group)" : "(Skupina)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)", - "Enable encryption" : "Povoliť šifrovanie", - "Enable previews" : "Povoliť náhľady", - "Enable sharing" : "Povoliť sprístupňovanie", - "Check for changes" : "Zisťovať zmeny", - "Never" : "Nikdy", - "Once every direct access" : "S každým priamym prístupom", - "Read only" : "Len na čítanie", - "Disconnect" : "Odpojiť", - "Admin defined" : "Nastavené správcom", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatická kontrola stavu je zakázaná z dôvodu veľkého počtu nakonfigurovaných úložísk, kliknutím skontrolujte stav", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Naozaj chcete odpojiť toto externé úložisko? Úložisko bude nedostupné v Nextcloud a povedie k vymazaniu súborov a priečinkov na akomkoľvek synchronizovanom klientovi, ktorý je aktuálne pripojený, ale neodstráni žiadne súbory a priečinky na samotnom externom úložisku.", - "Delete storage?" : "Zmazať externé úložisko?", - "Saved" : "Uložené", - "Saving …" : "Ukladá sa...", - "Save" : "Uložiť", + "You are not logged in" : "Nie ste prihlásený", + "Permission denied" : "Prístup zamietnutý", "Forbidden to manage local mounts" : "Zakázané spravovať lokálne pripojenia", "Storage with ID \"%d\" not found" : "Úložisko s ID \"%d\" sa nenašlo", "Invalid backend or authentication mechanism class" : "Neplatný backend, prípadne trieda mechanizmu autentifikácie", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Tajný kľúč", "Builtin" : "Vstavaný", "None" : "Žiadny", - "OAuth1" : "OAuth1", - "App key" : "Kľúč aplikácie", - "App secret" : "Heslo aplikácie", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Heslo klienta", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Povoliť štýl cesty", "Legacy (v2) authentication" : "Staršie (v2) overovanie", "Enable multipart copy" : "Povoliť kópiu mutlipart správy", + "SSE-C encryption key" : "Šifrovací kľúč SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Vzdialený podpriečinok", @@ -94,7 +74,7 @@ OC.L10N.register( "Root" : "Root", "SFTP with secret key login" : "SFTP prihlásenie pomocou tajného kľúča", "SMB/CIFS" : "SMB/CIFS", - "Share" : "Sprístupniť", + "Share" : "Zdieľaný priečinok", "Show hidden files" : "Zobraziť skryté súbory", "Case sensitive file system" : "Súborový systém rozlišujúci veľkosti písmen", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Zakázaním, bude možné používať súborový systém bez ohľadu na veľkosť písmen, ale s tým je spojený pokles výkonu.", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "Podpora externého úložiska", "Adds basic external storage support" : "Pridáva základnú podporu externého úložiska", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Táto aplikácia umožňuje správcom nastaviť prepojenia na poskytovateľov externých úložísk, ako napríklad servery FTP, S3 alebo SWIFT objektové úložiská, iné Nextcloudu servery, WebDAV servery a pod. Správci môžu zvoliť, ktoré typy úložísk zapnúť a prípadne ich pripojiť pre účet, skupinu alebo celý systém. Užívatelia uvidia nový priečinok v ich koreňovom Nextcloud priečinku, do ktorého môžu pristupovať a používať ako akýkoľvek iný priečinok v Nextcloude. Externé úložisko tiež umožňuje ľuďom sprístupňovať v ňom uložené súbory. V takých prípadoch sa použijú prihlasovacie údaje vlastníka súboru keď si príjemca vyžiada súbor z externého úložiska, čím je zaistené, že príjemca môže pristupovať k sprístupnenému súboru.\n\nExterné úložisko je možné nastaviť pomocou web rozhrania alebo z príkazového riadku. Druhá možnosť poskytuje správcom väčšie možnosti prispôsobenia pre nastavenie viac typov pripojení externých úložísk a nastavenia priorít pre pripájanie. Viac informácií je k dispozícii v dokumentácii k externým úložiskám vo web rozhraní a dokumentácii k súboru s nastaveniami pre externé úložiská.", - "Enter missing credentials" : "Zadajte chýbajúce prihlasovacie údaje", + "Confirm" : "Potvrdiť", + "Storage credentials" : "Poverenia k úložisku", + "To access the storage, you need to provide the authentication credentials." : "Ak chcete získať prístup k úložisku, musíte zadať autentifikačné poverenia.", + "Enter the storage login" : "Zadajte prihlasovacie meno do úložiska", + "Enter the storage password" : "Zadajte heslo do úložiska", "Unable to update this external storage config. {statusMessage}" : "Nepodarilo sa aktualizovať konfiguráciu externého úložiska. {statusMessage}", "New configuration successfully saved" : "Nová konfigurácia úspešne uložená", + "Enter missing credentials" : "Zadajte chýbajúce prihlasovacie údaje", + "Credentials successfully set" : "Prístupové údaje boli úspešne nastavené", + "Error while setting credentials: {error}" : "Chyba pri nastavovaní prístupových údajov: {error}", + "Checking storage …" : "Kontrolujem úložisko ...", "There was an error with this external storage." : "Vyskytla sa chyba s externým úložiskom.", "We were unable to check the external storage {basename}" : "Nepodarilo sa nám skontrolovať externé úložisko {basename}", "Examine this faulty external storage configuration" : "Skúste preskúmať chybnú konfiguráciu externého úložiska", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Rozsah", "Personal" : "Osobné", "System" : "Systém", + "Type to select account or group." : "Zadajte text pre výber účtu alebo skupiny.", + "(Group)" : "(Skupina)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)", + "Enable encryption" : "Povoliť šifrovanie", + "Enable previews" : "Povoliť náhľady", + "Enable sharing" : "Povoliť zdieľanie", + "Check for changes" : "Zisťovať zmeny", + "Never" : "Nikdy", + "Once every direct access" : "S každým priamym prístupom", + "Read only" : "Len na čítanie", + "Disconnect" : "Odpojiť", + "Unknown backend: {backendName}" : "Neznámy backend: {backendName}", + "Admin defined" : "Nastavené správcom", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatická kontrola stavu je zakázaná z dôvodu veľkého počtu nakonfigurovaných úložísk, kliknutím skontrolujte stav", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Naozaj chcete odpojiť toto externé úložisko? Úložisko bude nedostupné v Nextcloud a povedie k vymazaniu súborov a priečinkov na akomkoľvek synchronizovanom klientovi, ktorý je aktuálne pripojený, ale neodstráni žiadne súbory a priečinky na samotnom externom úložisku.", + "Delete storage?" : "Zmazať externé úložisko?", + "Click to recheck the configuration" : "Kliknite na opätovnú kontrolu konfigurácie", + "Saved" : "Uložené", + "Saving …" : "Ukladá sa...", + "Save" : "Uložiť", + "Failed to save global credentials" : "Nepodarilo sa uložiť globálne prihlasovacie údaje", + "Failed to save global credentials: {message}" : "Nepodarilo sa uložiť globálne prihlasovacie údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Žiadne externé úložisko nie je nakonfigurované alebo nemáte práva ich konfigurovať", "Open documentation" : "Otvoriť dokumentáciu", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť ľuďom pripájať ich vlastné služby externých úložísk.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Autentifikácia", "Configuration" : "Nastavenia", "Available for" : "K dispozícii pre", - "Click to recheck the configuration" : "Kliknite na opätovnú kontrolu konfigurácie", "Add storage" : "Pridať úložisko", "All people" : "Všetci ľudia", "Advanced settings" : "Rozšírené nastavenia", "Allow people to mount external storage" : "Povoliť užívateľom pripojiť externé úložiská", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globálne prihlasovacie údaje je možné použiť pre overenie s viacerými externými úložiskami, ktoré majú rovnaké prihlasovacie údaje.", - "Type to select user or group." : "Začnite písať pre výber užívateľa alebo skupiny.", - "Empty response from the server" : "Prázdna odpoveď zo servera", - "Couldn't access. Please log out and in again to activate this mount point" : "Nedá sa pripojiť. Pre aktiváciu tohto prípojného bodu sa prosím odhláste a znovu prihláste", - "Couldn't get the information from the remote server: {code} {type}" : "Zo vzdialeného servera sa nedá získať informácia: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nedá sa získať zoznam externých prípojných bodov: {type}", - "There was an error with message: " : "Nastala chyba s týmto hlásením:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nedá sa získať zoznam sieťových úložísk systému Windows: prázdna odpoveď zo servera", - "Please enter the credentials for the {mount} mount" : "Zadajte prosím prihlasovacie údaje k prípojnému bodu {mount}", - "Username" : "Používateľské meno", - "Credentials saved" : "Prihlasovacie údaje uložené", - "Credentials saving failed" : "Uloženie prihlasovacích údajov zlyhalo", - "Credentials required" : "Vyžadované prihlasovacie údaje", - "Storage with ID \"%d\" is not user editable" : "Úložisko s ID \"%d\" nie je upraviteľné používateľmi", - "Username and password" : "Meno a heslo", - "Global credentials, user entered" : "Globálne oprávnenia, užívateľ zadaný", - "User entered, store in database" : "Používateľ zadaný, uložiť v databáze", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Zakázaním, bude možné používať súborový systém bez ohľadu na veľkosť písmen, ale s tým je spojený pokles výkonu.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrola ACL každého súboru alebo priečinka vnútri adresára pre vyfiltrovanie položiek, ku ktorým používateľ nemá oprávnenie pre čítanie poznamená výkon", - "Username as share" : "Používateľské meno ako sprístupnený priečinok", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Táto aplikácia umožňuje správcom nastaviť prepojenia na poskytovateľov externých úložísk, ako napríklad servery FTP, S3 alebo SWIFT objektové úložiská, Google Disk, Dropbox, iné Nextcloudu servery, WebDAV servery a pod. Správci môžu zvoliť, ktoré typy úložísk zapnúť a prípadne ich pripojiť pre používateľov, skupiny alebo celý systém. Používatelia uvidia nový priečinok v ich koreňovom Nextcloud priečinku, do ktorého môžu pristupovať a používať ako akýkoľvek iný priečinok v Nextcloude. Používatelia tiež môžu z týchto externých úložísk sprístupňovať v ňom uložené súbory. V takých prípadoch sa použíjú prihlasovacie údaje vlastníka súboru keď si príjemca vyžiada súbor z externého úložiska, čím je zaistené, že príjemca môže pristupovať k sprístupnenému súboru.\n\nExterné úložisko je možné nastaviť pomocou web rozhrania alebo z príkazového riadku. Druhá možnosť poskytuje skúsenejším správcom väčšie možnosti prispôsobenia pre nastavenie viac typov pripojení externých úložísk a nastavenia priorít pre pripájanie. Viac informácií je k dispozícii v dokumentácii k externým úložiskám vo web rozhraní a dokumentácii k súboru s nastaveniami pre externé úložiská.", - "Name" : "Názov", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť používateľom pripájať ich vlastné služby externých úložísk.", - "All users" : "Všetci používatelia", - "Allow users to mount external storage" : "Povoliť používateľom pripojiť externé úložiská" + "Error configuring OAuth1" : "Chyba konfigurovania OAuth1", + "Please provide a valid app key and secret." : "Zadajte prosím platný aplikačný kľúč a heslo (secret).", + "OAuth1" : "OAuth1", + "App key" : "Kľúč aplikácie", + "App secret" : "Heslo aplikácie" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_external/l10n/sk.json b/apps/files_external/l10n/sk.json index 69565d70e79..fcacd8330d6 100644 --- a/apps/files_external/l10n/sk.json +++ b/apps/files_external/l10n/sk.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Povoliť prístup", - "Error configuring OAuth1" : "Chyba konfigurovania OAuth1", - "Please provide a valid app key and secret." : "Zadajte prosím platný aplikačný kľúč a heslo (secret).", "Error configuring OAuth2" : "Chyba konfigurovania OAuth2", "Generate keys" : "Vytvoriť kľúče", "Error generating key pair" : "Chyba pri vytváraní dvojice kľúčov", - "Type to select account or group." : "Zadajte text pre výber účtu alebo skupiny.", - "(Group)" : "(Skupina)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)", - "Enable encryption" : "Povoliť šifrovanie", - "Enable previews" : "Povoliť náhľady", - "Enable sharing" : "Povoliť sprístupňovanie", - "Check for changes" : "Zisťovať zmeny", - "Never" : "Nikdy", - "Once every direct access" : "S každým priamym prístupom", - "Read only" : "Len na čítanie", - "Disconnect" : "Odpojiť", - "Admin defined" : "Nastavené správcom", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatická kontrola stavu je zakázaná z dôvodu veľkého počtu nakonfigurovaných úložísk, kliknutím skontrolujte stav", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Naozaj chcete odpojiť toto externé úložisko? Úložisko bude nedostupné v Nextcloud a povedie k vymazaniu súborov a priečinkov na akomkoľvek synchronizovanom klientovi, ktorý je aktuálne pripojený, ale neodstráni žiadne súbory a priečinky na samotnom externom úložisku.", - "Delete storage?" : "Zmazať externé úložisko?", - "Saved" : "Uložené", - "Saving …" : "Ukladá sa...", - "Save" : "Uložiť", + "You are not logged in" : "Nie ste prihlásený", + "Permission denied" : "Prístup zamietnutý", "Forbidden to manage local mounts" : "Zakázané spravovať lokálne pripojenia", "Storage with ID \"%d\" not found" : "Úložisko s ID \"%d\" sa nenašlo", "Invalid backend or authentication mechanism class" : "Neplatný backend, prípadne trieda mechanizmu autentifikácie", @@ -40,9 +22,6 @@ "Secret key" : "Tajný kľúč", "Builtin" : "Vstavaný", "None" : "Žiadny", - "OAuth1" : "OAuth1", - "App key" : "Kľúč aplikácie", - "App secret" : "Heslo aplikácie", "OAuth2" : "OAuth2", "Client ID" : "Client ID", "Client secret" : "Heslo klienta", @@ -78,6 +57,7 @@ "Enable Path Style" : "Povoliť štýl cesty", "Legacy (v2) authentication" : "Staršie (v2) overovanie", "Enable multipart copy" : "Povoliť kópiu mutlipart správy", + "SSE-C encryption key" : "Šifrovací kľúč SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Vzdialený podpriečinok", @@ -92,7 +72,7 @@ "Root" : "Root", "SFTP with secret key login" : "SFTP prihlásenie pomocou tajného kľúča", "SMB/CIFS" : "SMB/CIFS", - "Share" : "Sprístupniť", + "Share" : "Zdieľaný priečinok", "Show hidden files" : "Zobraziť skryté súbory", "Case sensitive file system" : "Súborový systém rozlišujúci veľkosti písmen", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Zakázaním, bude možné používať súborový systém bez ohľadu na veľkosť písmen, ale s tým je spojený pokles výkonu.", @@ -111,9 +91,17 @@ "External storage support" : "Podpora externého úložiska", "Adds basic external storage support" : "Pridáva základnú podporu externého úložiska", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Táto aplikácia umožňuje správcom nastaviť prepojenia na poskytovateľov externých úložísk, ako napríklad servery FTP, S3 alebo SWIFT objektové úložiská, iné Nextcloudu servery, WebDAV servery a pod. Správci môžu zvoliť, ktoré typy úložísk zapnúť a prípadne ich pripojiť pre účet, skupinu alebo celý systém. Užívatelia uvidia nový priečinok v ich koreňovom Nextcloud priečinku, do ktorého môžu pristupovať a používať ako akýkoľvek iný priečinok v Nextcloude. Externé úložisko tiež umožňuje ľuďom sprístupňovať v ňom uložené súbory. V takých prípadoch sa použijú prihlasovacie údaje vlastníka súboru keď si príjemca vyžiada súbor z externého úložiska, čím je zaistené, že príjemca môže pristupovať k sprístupnenému súboru.\n\nExterné úložisko je možné nastaviť pomocou web rozhrania alebo z príkazového riadku. Druhá možnosť poskytuje správcom väčšie možnosti prispôsobenia pre nastavenie viac typov pripojení externých úložísk a nastavenia priorít pre pripájanie. Viac informácií je k dispozícii v dokumentácii k externým úložiskám vo web rozhraní a dokumentácii k súboru s nastaveniami pre externé úložiská.", - "Enter missing credentials" : "Zadajte chýbajúce prihlasovacie údaje", + "Confirm" : "Potvrdiť", + "Storage credentials" : "Poverenia k úložisku", + "To access the storage, you need to provide the authentication credentials." : "Ak chcete získať prístup k úložisku, musíte zadať autentifikačné poverenia.", + "Enter the storage login" : "Zadajte prihlasovacie meno do úložiska", + "Enter the storage password" : "Zadajte heslo do úložiska", "Unable to update this external storage config. {statusMessage}" : "Nepodarilo sa aktualizovať konfiguráciu externého úložiska. {statusMessage}", "New configuration successfully saved" : "Nová konfigurácia úspešne uložená", + "Enter missing credentials" : "Zadajte chýbajúce prihlasovacie údaje", + "Credentials successfully set" : "Prístupové údaje boli úspešne nastavené", + "Error while setting credentials: {error}" : "Chyba pri nastavovaní prístupových údajov: {error}", + "Checking storage …" : "Kontrolujem úložisko ...", "There was an error with this external storage." : "Vyskytla sa chyba s externým úložiskom.", "We were unable to check the external storage {basename}" : "Nepodarilo sa nám skontrolovať externé úložisko {basename}", "Examine this faulty external storage configuration" : "Skúste preskúmať chybnú konfiguráciu externého úložiska", @@ -129,6 +117,28 @@ "Scope" : "Rozsah", "Personal" : "Osobné", "System" : "Systém", + "Type to select account or group." : "Zadajte text pre výber účtu alebo skupiny.", + "(Group)" : "(Skupina)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilita s Mac NFD enkódovaním (pomalé)", + "Enable encryption" : "Povoliť šifrovanie", + "Enable previews" : "Povoliť náhľady", + "Enable sharing" : "Povoliť zdieľanie", + "Check for changes" : "Zisťovať zmeny", + "Never" : "Nikdy", + "Once every direct access" : "S každým priamym prístupom", + "Read only" : "Len na čítanie", + "Disconnect" : "Odpojiť", + "Unknown backend: {backendName}" : "Neznámy backend: {backendName}", + "Admin defined" : "Nastavené správcom", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatická kontrola stavu je zakázaná z dôvodu veľkého počtu nakonfigurovaných úložísk, kliknutím skontrolujte stav", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Naozaj chcete odpojiť toto externé úložisko? Úložisko bude nedostupné v Nextcloud a povedie k vymazaniu súborov a priečinkov na akomkoľvek synchronizovanom klientovi, ktorý je aktuálne pripojený, ale neodstráni žiadne súbory a priečinky na samotnom externom úložisku.", + "Delete storage?" : "Zmazať externé úložisko?", + "Click to recheck the configuration" : "Kliknite na opätovnú kontrolu konfigurácie", + "Saved" : "Uložené", + "Saving …" : "Ukladá sa...", + "Save" : "Uložiť", + "Failed to save global credentials" : "Nepodarilo sa uložiť globálne prihlasovacie údaje", + "Failed to save global credentials: {message}" : "Nepodarilo sa uložiť globálne prihlasovacie údaje: {message}", "No external storage configured or you don't have the permission to configure them" : "Žiadne externé úložisko nie je nakonfigurované alebo nemáte práva ich konfigurovať", "Open documentation" : "Otvoriť dokumentáciu", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť ľuďom pripájať ich vlastné služby externých úložísk.", @@ -136,36 +146,15 @@ "Authentication" : "Autentifikácia", "Configuration" : "Nastavenia", "Available for" : "K dispozícii pre", - "Click to recheck the configuration" : "Kliknite na opätovnú kontrolu konfigurácie", "Add storage" : "Pridať úložisko", "All people" : "Všetci ľudia", "Advanced settings" : "Rozšírené nastavenia", "Allow people to mount external storage" : "Povoliť užívateľom pripojiť externé úložiská", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globálne prihlasovacie údaje je možné použiť pre overenie s viacerými externými úložiskami, ktoré majú rovnaké prihlasovacie údaje.", - "Type to select user or group." : "Začnite písať pre výber užívateľa alebo skupiny.", - "Empty response from the server" : "Prázdna odpoveď zo servera", - "Couldn't access. Please log out and in again to activate this mount point" : "Nedá sa pripojiť. Pre aktiváciu tohto prípojného bodu sa prosím odhláste a znovu prihláste", - "Couldn't get the information from the remote server: {code} {type}" : "Zo vzdialeného servera sa nedá získať informácia: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Nedá sa získať zoznam externých prípojných bodov: {type}", - "There was an error with message: " : "Nastala chyba s týmto hlásením:", - "external-storage" : "external-storage", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Nedá sa získať zoznam sieťových úložísk systému Windows: prázdna odpoveď zo servera", - "Please enter the credentials for the {mount} mount" : "Zadajte prosím prihlasovacie údaje k prípojnému bodu {mount}", - "Username" : "Používateľské meno", - "Credentials saved" : "Prihlasovacie údaje uložené", - "Credentials saving failed" : "Uloženie prihlasovacích údajov zlyhalo", - "Credentials required" : "Vyžadované prihlasovacie údaje", - "Storage with ID \"%d\" is not user editable" : "Úložisko s ID \"%d\" nie je upraviteľné používateľmi", - "Username and password" : "Meno a heslo", - "Global credentials, user entered" : "Globálne oprávnenia, užívateľ zadaný", - "User entered, store in database" : "Používateľ zadaný, uložiť v databáze", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Zakázaním, bude možné používať súborový systém bez ohľadu na veľkosť písmen, ale s tým je spojený pokles výkonu.", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrola ACL každého súboru alebo priečinka vnútri adresára pre vyfiltrovanie položiek, ku ktorým používateľ nemá oprávnenie pre čítanie poznamená výkon", - "Username as share" : "Používateľské meno ako sprístupnený priečinok", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Táto aplikácia umožňuje správcom nastaviť prepojenia na poskytovateľov externých úložísk, ako napríklad servery FTP, S3 alebo SWIFT objektové úložiská, Google Disk, Dropbox, iné Nextcloudu servery, WebDAV servery a pod. Správci môžu zvoliť, ktoré typy úložísk zapnúť a prípadne ich pripojiť pre používateľov, skupiny alebo celý systém. Používatelia uvidia nový priečinok v ich koreňovom Nextcloud priečinku, do ktorého môžu pristupovať a používať ako akýkoľvek iný priečinok v Nextcloude. Používatelia tiež môžu z týchto externých úložísk sprístupňovať v ňom uložené súbory. V takých prípadoch sa použíjú prihlasovacie údaje vlastníka súboru keď si príjemca vyžiada súbor z externého úložiska, čím je zaistené, že príjemca môže pristupovať k sprístupnenému súboru.\n\nExterné úložisko je možné nastaviť pomocou web rozhrania alebo z príkazového riadku. Druhá možnosť poskytuje skúsenejším správcom väčšie možnosti prispôsobenia pre nastavenie viac typov pripojení externých úložísk a nastavenia priorít pre pripájanie. Viac informácií je k dispozícii v dokumentácii k externým úložiskám vo web rozhraní a dokumentácii k súboru s nastaveniami pre externé úložiská.", - "Name" : "Názov", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externé úložisko umožňuje pripojiť služby externých úložísk a zariadení ako sekundárne zariadenia na ukladanie pre Nextcloud. Môžete tiež umožniť používateľom pripájať ich vlastné služby externých úložísk.", - "All users" : "Všetci používatelia", - "Allow users to mount external storage" : "Povoliť používateľom pripojiť externé úložiská" + "Error configuring OAuth1" : "Chyba konfigurovania OAuth1", + "Please provide a valid app key and secret." : "Zadajte prosím platný aplikačný kľúč a heslo (secret).", + "OAuth1" : "OAuth1", + "App key" : "Kľúč aplikácie", + "App secret" : "Heslo aplikácie" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index ec47cc77c62..69a1566e54b 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -2,28 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Odobri dostop", - "Error configuring OAuth1" : "Napaka nastavljanja OAuth1", - "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo PIN.", "Error configuring OAuth2" : "Napaka nastavljanja OAuth2", "Generate keys" : "Ustvari ključe", "Error generating key pair" : "Prišlo je do napake med ustvarjanjem para ključev", - "(Group)" : "(skupina)", - "Compatibility with Mac NFD encoding (slow)" : " Usklajenost s šifriranjem Mac NFD (počasno)", - "Enable encryption" : "Omogoči šifriranje", - "Enable previews" : "Omogoči predoglede", - "Enable sharing" : "Omogoči souporabo", - "Check for changes" : "Preveri za spremembe", - "Never" : "Nikoli", - "Once every direct access" : "Enkrat ob neposrednem dostopu", - "Read only" : "Le za branje", - "Disconnect" : "Prekini povezavo", - "Admin defined" : "Skrbnik je določen", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Samodejno preverjanje stanja je onemogočeno zaradi večjega števila nastavljenih shramb. Stanje je mogoče določiti ročno s klikom.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", - "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", - "Saved" : "Shranjeno", - "Saving …" : "Poteka shranjevanje ...", - "Save" : "Shrani", "Forbidden to manage local mounts" : "Ni ustreznih dovoljenj za urejanje krajevnih priklopnih točk", "Storage with ID \"%d\" not found" : "Shrambe z ID »%d« ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", @@ -40,9 +21,6 @@ OC.L10N.register( "Secret key" : "Skrivni ključ", "Builtin" : "Vgrajeno", "None" : "Brez", - "OAuth1" : "OAuth1", - "App key" : "Programski ključ", - "App secret" : "Skrivni programski ključ", "OAuth2" : "OAuth2", "Client ID" : "ID odjemalca", "Client secret" : "Skrivni ključ odjemalca", @@ -102,49 +80,48 @@ OC.L10N.register( "External storage" : "Zunanja shramba", "External storage support" : "Podpora zunanji dhrambi", "Adds basic external storage support" : "Doda osnovno zunanjo podporo shrambe", - "Enter missing credentials" : "Vpiši manjkajoča poverila", + "Confirm" : "Potrdi", "New configuration successfully saved" : "Nove nastavitve so uspešno shranjene", - "There was an error with this external storage." : "Prišlo je do napake z zunanjo shrambo", - "Open in Files" : "Open in Files", + "Enter missing credentials" : "Vpiši manjkajoča poverila", + "There was an error with this external storage." : "Prišlo je do napake zunanje shrambe.", + "Open in Files" : "Odpri v mapi", "External mount error" : "Notranja napaka priklopa", "Storage type" : "Vrsta shrambe", "Unknown" : "Neznano", "Scope" : "Obseg", "Personal" : "Osebno", "System" : "Sistem", + "(Group)" : "(skupina)", + "Compatibility with Mac NFD encoding (slow)" : " Usklajenost s šifriranjem Mac NFD (počasno)", + "Enable encryption" : "Omogoči šifriranje", + "Enable previews" : "Omogoči predoglede", + "Enable sharing" : "Omogoči souporabo", + "Check for changes" : "Preveri za spremembe", + "Never" : "Nikoli", + "Once every direct access" : "Enkrat ob neposrednem dostopu", + "Read only" : "Le za branje", + "Disconnect" : "Prekini povezavo", + "Admin defined" : "Skrbnik je določen", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Samodejno preverjanje stanja je onemogočeno zaradi večjega števila nastavljenih shramb. Stanje je mogoče določiti ročno s klikom.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", + "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", + "Click to recheck the configuration" : "Kliknite za ponovno preverjanje nastavitev", + "Saved" : "Shranjeno", + "Saving …" : "Poteka shranjevanje ...", + "Save" : "Shrani", "No external storage configured or you don't have the permission to configure them" : "Ni nastavljene zunanje shrambe oziroma ni ustreznih dovoljenj za uporabo.", "Open documentation" : "Odpri dokumentacijo-", "Folder name" : "Ime mape", "Authentication" : "Overitev", "Configuration" : "Nastavitve", "Available for" : "Na voljo za", - "Click to recheck the configuration" : "Kliknite za ponovno preverjanje nastavitev", "Add storage" : "Dodaj shrambo", "Advanced settings" : "Napredne nastavitve", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Splošna poverila je mogoče uporabiti za overitev z več zunanjimi shrambami, ki uporabljajo enaka poverila.", - "Type to select user or group." : "Vpišite niz za izbor uporabnika ali skupine.", - "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", - "Couldn't access. Please log out and in again to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.", - "Couldn't get the information from the remote server: {code} {type}" : "Ni mogoče pridobiti podrobnosti z oddaljenega strežnika: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", - "There was an error with message: " : "Prišlo je do napake s sporočilom:", - "external-storage" : "zunanja-shramba", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ni mogoče pridobiti seznama omrežnih priklopnih točk Windows: ni odziva s strežnika.", - "Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}", - "Username" : "Uporabniško ime", - "Credentials saved" : "Poverila so shranjena", - "Credentials saving failed" : "Shranjevanje poveril je spodletelo", - "Credentials required" : "Zahtevana so poverila", - "Storage with ID \"%d\" is not user editable" : "Shrambe z ID »%d« ni mogoče uporabniško urediti.", - "Username and password" : "Uporabniško ime in geslo", - "Global credentials, user entered" : "Uporabniško vpisana splošna poverila", - "User entered, store in database" : "Uporabnik vpisan, shranjeno v podatkovni zbirki", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Preverite ACL vsake datoteke ali mape, da filtrirate vire, za katere uporabnik nima dovoljenja za branje. Opravilo je lahko časovno iz zmogljivostno zahtevno.", - "Username as share" : "Uporabniško ime za souporabo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Program omogoča skrbnikom nastavljanje zunanjih shramb in ponudnikov, kot so strežniki FTP, shrambe S3 ali SWIFT, drugih strežnikov Nextcloud, strežnikov WebDAV in še mnogo več. Skrbniki lahko določijo, katere vrste pomnilnikov bodo omogočili in jih odprli za uporabnika, skupino ali za celoten sistem. Uporabniki bodo v svojem korenskem imeniku Nextcloud videli novo dodano mapo, do katere lahko dostopajo enako kot do drugih map Nextcloud. Zunanji pomnilnik uporabnikom omogoča tudi skupno rabo datotek, shranjenih na zunanjih naslovih. V teh primerih se poverilnice lastnika datoteke uporabijo, ko prejemnik datoteko zahteva iz zunanjega pomnilnika, to zagotovi, da lahko prejemnik dostopa do vseh datoteke v skupni rabi.\n\nZunanji pomnilnik je mogoče povezati prek spletnega vmesnika ali prek ukazne vrstice. Slednja možnost omogoča zahtevnejšim uporabnikom večjo prilagodljivost paketnega nastavljanja zunanjih nosilcev za shranjevanje in določanje prednosti namestitve in uporabe. Več podrobnosti je zbranih v dokumentaciji spletnega vmesnika za zunanji pomnilnik in dokumentaciji o nastavitvenih datotekah zunanjega pomnilnika.", - "Name" : "Ime", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Zunanja shramba omogoča uporabo in priklop zunanjih storitev za shranjevanje in povezane naprave kot dodatna skladišča Nextcloud. Dovoliti je mogoče tudi priklapljanje uporabniških zunanjih shramb v skupno okolje.", - "All users" : "Vsi uporabniki", - "Allow users to mount external storage" : "Dovoli uporabnikom priklapljanje zunanje shrambe" + "Error configuring OAuth1" : "Napaka nastavljanja OAuth1", + "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo PIN.", + "OAuth1" : "OAuth1", + "App key" : "Programski ključ", + "App secret" : "Skrivni programski ključ" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index 4f629816fa8..f389b797a4c 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -1,27 +1,8 @@ { "translations": { "Grant access" : "Odobri dostop", - "Error configuring OAuth1" : "Napaka nastavljanja OAuth1", - "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo PIN.", "Error configuring OAuth2" : "Napaka nastavljanja OAuth2", "Generate keys" : "Ustvari ključe", "Error generating key pair" : "Prišlo je do napake med ustvarjanjem para ključev", - "(Group)" : "(skupina)", - "Compatibility with Mac NFD encoding (slow)" : " Usklajenost s šifriranjem Mac NFD (počasno)", - "Enable encryption" : "Omogoči šifriranje", - "Enable previews" : "Omogoči predoglede", - "Enable sharing" : "Omogoči souporabo", - "Check for changes" : "Preveri za spremembe", - "Never" : "Nikoli", - "Once every direct access" : "Enkrat ob neposrednem dostopu", - "Read only" : "Le za branje", - "Disconnect" : "Prekini povezavo", - "Admin defined" : "Skrbnik je določen", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Samodejno preverjanje stanja je onemogočeno zaradi večjega števila nastavljenih shramb. Stanje je mogoče določiti ročno s klikom.", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", - "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", - "Saved" : "Shranjeno", - "Saving …" : "Poteka shranjevanje ...", - "Save" : "Shrani", "Forbidden to manage local mounts" : "Ni ustreznih dovoljenj za urejanje krajevnih priklopnih točk", "Storage with ID \"%d\" not found" : "Shrambe z ID »%d« ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", @@ -38,9 +19,6 @@ "Secret key" : "Skrivni ključ", "Builtin" : "Vgrajeno", "None" : "Brez", - "OAuth1" : "OAuth1", - "App key" : "Programski ključ", - "App secret" : "Skrivni programski ključ", "OAuth2" : "OAuth2", "Client ID" : "ID odjemalca", "Client secret" : "Skrivni ključ odjemalca", @@ -100,49 +78,48 @@ "External storage" : "Zunanja shramba", "External storage support" : "Podpora zunanji dhrambi", "Adds basic external storage support" : "Doda osnovno zunanjo podporo shrambe", - "Enter missing credentials" : "Vpiši manjkajoča poverila", + "Confirm" : "Potrdi", "New configuration successfully saved" : "Nove nastavitve so uspešno shranjene", - "There was an error with this external storage." : "Prišlo je do napake z zunanjo shrambo", - "Open in Files" : "Open in Files", + "Enter missing credentials" : "Vpiši manjkajoča poverila", + "There was an error with this external storage." : "Prišlo je do napake zunanje shrambe.", + "Open in Files" : "Odpri v mapi", "External mount error" : "Notranja napaka priklopa", "Storage type" : "Vrsta shrambe", "Unknown" : "Neznano", "Scope" : "Obseg", "Personal" : "Osebno", "System" : "Sistem", + "(Group)" : "(skupina)", + "Compatibility with Mac NFD encoding (slow)" : " Usklajenost s šifriranjem Mac NFD (počasno)", + "Enable encryption" : "Omogoči šifriranje", + "Enable previews" : "Omogoči predoglede", + "Enable sharing" : "Omogoči souporabo", + "Check for changes" : "Preveri za spremembe", + "Never" : "Nikoli", + "Once every direct access" : "Enkrat ob neposrednem dostopu", + "Read only" : "Le za branje", + "Disconnect" : "Prekini povezavo", + "Admin defined" : "Skrbnik je določen", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Samodejno preverjanje stanja je onemogočeno zaradi večjega števila nastavljenih shramb. Stanje je mogoče določiti ročno s klikom.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", + "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", + "Click to recheck the configuration" : "Kliknite za ponovno preverjanje nastavitev", + "Saved" : "Shranjeno", + "Saving …" : "Poteka shranjevanje ...", + "Save" : "Shrani", "No external storage configured or you don't have the permission to configure them" : "Ni nastavljene zunanje shrambe oziroma ni ustreznih dovoljenj za uporabo.", "Open documentation" : "Odpri dokumentacijo-", "Folder name" : "Ime mape", "Authentication" : "Overitev", "Configuration" : "Nastavitve", "Available for" : "Na voljo za", - "Click to recheck the configuration" : "Kliknite za ponovno preverjanje nastavitev", "Add storage" : "Dodaj shrambo", "Advanced settings" : "Napredne nastavitve", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Splošna poverila je mogoče uporabiti za overitev z več zunanjimi shrambami, ki uporabljajo enaka poverila.", - "Type to select user or group." : "Vpišite niz za izbor uporabnika ali skupine.", - "Empty response from the server" : "S strežnika je prejet odziv brez vsebine.", - "Couldn't access. Please log out and in again to activate this mount point" : "Dostop ni mogoč. Za priklop točke se odjavite in ponovno prijavite.", - "Couldn't get the information from the remote server: {code} {type}" : "Ni mogoče pridobiti podrobnosti z oddaljenega strežnika: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", - "There was an error with message: " : "Prišlo je do napake s sporočilom:", - "external-storage" : "zunanja-shramba", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Ni mogoče pridobiti seznama omrežnih priklopnih točk Windows: ni odziva s strežnika.", - "Please enter the credentials for the {mount} mount" : "Vpišite poverila za priklopno točko {mount}", - "Username" : "Uporabniško ime", - "Credentials saved" : "Poverila so shranjena", - "Credentials saving failed" : "Shranjevanje poveril je spodletelo", - "Credentials required" : "Zahtevana so poverila", - "Storage with ID \"%d\" is not user editable" : "Shrambe z ID »%d« ni mogoče uporabniško urediti.", - "Username and password" : "Uporabniško ime in geslo", - "Global credentials, user entered" : "Uporabniško vpisana splošna poverila", - "User entered, store in database" : "Uporabnik vpisan, shranjeno v podatkovni zbirki", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Preverite ACL vsake datoteke ali mape, da filtrirate vire, za katere uporabnik nima dovoljenja za branje. Opravilo je lahko časovno iz zmogljivostno zahtevno.", - "Username as share" : "Uporabniško ime za souporabo", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Program omogoča skrbnikom nastavljanje zunanjih shramb in ponudnikov, kot so strežniki FTP, shrambe S3 ali SWIFT, drugih strežnikov Nextcloud, strežnikov WebDAV in še mnogo več. Skrbniki lahko določijo, katere vrste pomnilnikov bodo omogočili in jih odprli za uporabnika, skupino ali za celoten sistem. Uporabniki bodo v svojem korenskem imeniku Nextcloud videli novo dodano mapo, do katere lahko dostopajo enako kot do drugih map Nextcloud. Zunanji pomnilnik uporabnikom omogoča tudi skupno rabo datotek, shranjenih na zunanjih naslovih. V teh primerih se poverilnice lastnika datoteke uporabijo, ko prejemnik datoteko zahteva iz zunanjega pomnilnika, to zagotovi, da lahko prejemnik dostopa do vseh datoteke v skupni rabi.\n\nZunanji pomnilnik je mogoče povezati prek spletnega vmesnika ali prek ukazne vrstice. Slednja možnost omogoča zahtevnejšim uporabnikom večjo prilagodljivost paketnega nastavljanja zunanjih nosilcev za shranjevanje in določanje prednosti namestitve in uporabe. Več podrobnosti je zbranih v dokumentaciji spletnega vmesnika za zunanji pomnilnik in dokumentaciji o nastavitvenih datotekah zunanjega pomnilnika.", - "Name" : "Ime", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Zunanja shramba omogoča uporabo in priklop zunanjih storitev za shranjevanje in povezane naprave kot dodatna skladišča Nextcloud. Dovoliti je mogoče tudi priklapljanje uporabniških zunanjih shramb v skupno okolje.", - "All users" : "Vsi uporabniki", - "Allow users to mount external storage" : "Dovoli uporabnikom priklapljanje zunanje shrambe" + "Error configuring OAuth1" : "Napaka nastavljanja OAuth1", + "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo PIN.", + "OAuth1" : "OAuth1", + "App key" : "Programski ključ", + "App secret" : "Skrivni programski ključ" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index c794b100fe8..95e0d6c6196 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -2,23 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "Akordoji hyrje", - "Error configuring OAuth1" : "Gabim gjatë formësimit të OAuth1", - "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", "Error configuring OAuth2" : "Gabim gjatë formësimit të OAuth2", "Generate keys" : "Prodho kyçe", "Error generating key pair" : "Gabim gjatë prodhimit të çiftit të kyçeve", - "Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)", - "Enable encryption" : "Aktivizoni fshehtëzim", - "Enable previews" : "Aktivizoni paraparje", - "Enable sharing" : "Aktivizo ndarjet", - "Check for changes" : "Kontrollo për ndryshime", - "Never" : "Kurrë", - "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", - "Read only" : "Vetëm i lexueshëm", - "Disconnect" : "Shkëputu", - "Admin defined" : "Përcaktuar nga përgjegjësi", - "Saved" : "U ruajt", - "Save" : "Ruaje", "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet", "Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme", "Invalid mount point" : "Pikë montimi e pavlefshme", @@ -34,9 +20,6 @@ OC.L10N.register( "Secret key" : "Kyç i fshehtë", "Builtin" : "I brendshëm", "None" : "Asnjë", - "OAuth1" : "OAuth1", - "App key" : "Kyç aplikacioni", - "App secret" : "E fshehtë aplikacioni", "OAuth2" : "OAuth2", "Client ID" : "ID klienti", "Client secret" : "E fshehtë klienti", @@ -81,12 +64,25 @@ OC.L10N.register( "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "External storage" : "Depozitë e jashtme", "External storage support" : "Suport i kujtesë së jashtme", + "Confirm" : "Konfirmo", "External mount error" : "Gabim i jashtëm montimi", "Storage type" : "Lloj depozite", "Unknown" : "I panjohur", "Scope" : "Shtrirje", "Personal" : "Personale", "System" : "Sistem", + "Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)", + "Enable encryption" : "Aktivizoni fshehtëzim", + "Enable previews" : "Aktivizoni paraparje", + "Enable sharing" : "Aktivizo ndarjet", + "Check for changes" : "Kontrollo për ndryshime", + "Never" : "Kurrë", + "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", + "Read only" : "Vetëm i lexueshëm", + "Disconnect" : "Shkëputu", + "Admin defined" : "Përcaktuar nga përgjegjësi", + "Saved" : "U ruajt", + "Save" : "Ruaje", "Open documentation" : "Dokumentacion i hapur", "Folder name" : "Emër dosjeje", "Authentication" : "Mirëfilltësim", @@ -94,23 +90,10 @@ OC.L10N.register( "Available for" : "E gatshme për", "Add storage" : "Shtoni depozitë", "Advanced settings" : "Rregullime të mëtejshme", - "Empty response from the server" : "Përgjigje e zbrazët prej serverit", - "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", - "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}", - "There was an error with message: " : "Pati një gabim me këtë mesazh:", - "external-storage" : "ruajtje-jashtme", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", - "Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}", - "Username" : "Emër përdoruesi", - "Credentials saved" : "Kredencialet u ruajtën", - "Credentials saving failed" : "Ruajtja e kredencialeve dështoi", - "Credentials required" : "Lypsen kredenciale", - "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues", - "Username and password" : "Emër përdoruesi dhe fjalëkalim", - "User entered, store in database" : "Përdoruesi u identifikua, ruaj në bazë të dhënash", - "Username as share" : "Emër përdoruesi si emër ndarjeje", - "Name" : "Emër", - "Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme" + "Error configuring OAuth1" : "Gabim gjatë formësimit të OAuth1", + "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", + "OAuth1" : "OAuth1", + "App key" : "Kyç aplikacioni", + "App secret" : "E fshehtë aplikacioni" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index e2f58b30856..c8479c25251 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -1,22 +1,8 @@ { "translations": { "Grant access" : "Akordoji hyrje", - "Error configuring OAuth1" : "Gabim gjatë formësimit të OAuth1", - "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", "Error configuring OAuth2" : "Gabim gjatë formësimit të OAuth2", "Generate keys" : "Prodho kyçe", "Error generating key pair" : "Gabim gjatë prodhimit të çiftit të kyçeve", - "Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)", - "Enable encryption" : "Aktivizoni fshehtëzim", - "Enable previews" : "Aktivizoni paraparje", - "Enable sharing" : "Aktivizo ndarjet", - "Check for changes" : "Kontrollo për ndryshime", - "Never" : "Kurrë", - "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", - "Read only" : "Vetëm i lexueshëm", - "Disconnect" : "Shkëputu", - "Admin defined" : "Përcaktuar nga përgjegjësi", - "Saved" : "U ruajt", - "Save" : "Ruaje", "Storage with ID \"%d\" not found" : "Ruajtja me ID \"%d\" nuk u gjet", "Invalid backend or authentication mechanism class" : "Mekanizëm shërbimi ose klasë mekanizmi mirëfilltësimi e palvefshme", "Invalid mount point" : "Pikë montimi e pavlefshme", @@ -32,9 +18,6 @@ "Secret key" : "Kyç i fshehtë", "Builtin" : "I brendshëm", "None" : "Asnjë", - "OAuth1" : "OAuth1", - "App key" : "Kyç aplikacioni", - "App secret" : "E fshehtë aplikacioni", "OAuth2" : "OAuth2", "Client ID" : "ID klienti", "Client secret" : "E fshehtë klienti", @@ -79,12 +62,25 @@ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "External storage" : "Depozitë e jashtme", "External storage support" : "Suport i kujtesë së jashtme", + "Confirm" : "Konfirmo", "External mount error" : "Gabim i jashtëm montimi", "Storage type" : "Lloj depozite", "Unknown" : "I panjohur", "Scope" : "Shtrirje", "Personal" : "Personale", "System" : "Sistem", + "Compatibility with Mac NFD encoding (slow)" : "Pëerputhshmëri me kodim Mac NFD (e ngadaltë)", + "Enable encryption" : "Aktivizoni fshehtëzim", + "Enable previews" : "Aktivizoni paraparje", + "Enable sharing" : "Aktivizo ndarjet", + "Check for changes" : "Kontrollo për ndryshime", + "Never" : "Kurrë", + "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", + "Read only" : "Vetëm i lexueshëm", + "Disconnect" : "Shkëputu", + "Admin defined" : "Përcaktuar nga përgjegjësi", + "Saved" : "U ruajt", + "Save" : "Ruaje", "Open documentation" : "Dokumentacion i hapur", "Folder name" : "Emër dosjeje", "Authentication" : "Mirëfilltësim", @@ -92,23 +88,10 @@ "Available for" : "E gatshme për", "Add storage" : "Shtoni depozitë", "Advanced settings" : "Rregullime të mëtejshme", - "Empty response from the server" : "Përgjigje e zbrazët prej serverit", - "Couldn't access. Please log out and in again to activate this mount point" : "Nuk mund të ketë akses. Ju lutemi, dilni dhe hyni që të aktivizohet kjo pikë montimi", - "Couldn't get the information from the remote server: {code} {type}" : "Nuk u morën dot të dhëna nga shërbyesi në largësi: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "S’u mor dot lista e pikave të jashtme të montimit: {type}", - "There was an error with message: " : "Pati një gabim me këtë mesazh:", - "external-storage" : "ruajtje-jashtme", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "S’u mor dot lista e pikave të montimit Windows network drive: përgjigje e zbrazët nga shërbyesi", - "Please enter the credentials for the {mount} mount" : "Ju lutemi, jepni kredencialet për pikën e montimit {mount}", - "Username" : "Emër përdoruesi", - "Credentials saved" : "Kredencialet u ruajtën", - "Credentials saving failed" : "Ruajtja e kredencialeve dështoi", - "Credentials required" : "Lypsen kredenciale", - "Storage with ID \"%d\" is not user editable" : "Ruajtja me ID \"%d\" nuk është i editueshëm nga përdorues", - "Username and password" : "Emër përdoruesi dhe fjalëkalim", - "User entered, store in database" : "Përdoruesi u identifikua, ruaj në bazë të dhënash", - "Username as share" : "Emër përdoruesi si emër ndarjeje", - "Name" : "Emër", - "Allow users to mount external storage" : "Lejoju përdoruesve të montojnë depozita të jashtme" + "Error configuring OAuth1" : "Gabim gjatë formësimit të OAuth1", + "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", + "OAuth1" : "OAuth1", + "App key" : "Kyç aplikacioni", + "App secret" : "E fshehtë aplikacioni" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sr.js b/apps/files_external/l10n/sr.js index d34364bd34e..b65875c084d 100644 --- a/apps/files_external/l10n/sr.js +++ b/apps/files_external/l10n/sr.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Одобри приступ", - "Error configuring OAuth1" : "Грешка у подешавању OAuth1", - "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", "Error configuring OAuth2" : "Грешка у подешавању OAuth2", "Generate keys" : "Генериши кључеве", "Error generating key pair" : "Грешка при генерисању пара кључева", - "Type to select account or group." : "Куцајте да изаберете налог или групу.", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са Mac NFD кодирањем (споро)", - "Enable encryption" : "Укључи шифровање", - "Enable previews" : "Укључи прегледе", - "Enable sharing" : "Укључи дељење", - "Check for changes" : "Проверавај за измене", - "Never" : "Никад", - "Once every direct access" : "Једном при сваком директном приступу", - "Read only" : "Само за читање", - "Disconnect" : "Раскачи се", - "Admin defined" : "Дефинисао администратор", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Аутоматска провера статуса је искључена због превеликог броја конфигурисаних складишта, кликните да проверите статус", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Да ли сте сигурни да желите да искључите ово спољно складиште? Nextcloud неће моћи више да га користи, па ће се ови фајлови и фолдери обрисати на било ком синхронизационом клијенту који је тренутно повезан, мада се неће обрисати ниједан фајл или фолдер на самом спољном складишту.", - "Delete storage?" : "Обриши складиште?", - "Saved" : "Сачувано", - "Saving …" : "Чувам…", - "Save" : "Сачувај", + "You are not logged in" : "Нисте пријављени", + "Permission denied" : "Одбијена је дозвола", "Forbidden to manage local mounts" : "Забрањено је управљање локалним монтирањима", "Storage with ID \"%d\" not found" : "Складиште са идентификацијом „%d” није пронађено", "Invalid backend or authentication mechanism class" : "Неисправан позадински механизам или начин провере идентитета", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Тајни кључ ", "Builtin" : "Уграђено", "None" : "Ништа", - "OAuth1" : "OAuth1", - "App key" : "Кључ апликације", - "App secret" : "Тајна апликације", "OAuth2" : "OAuth2", "Client ID" : "ИД клијента", "Client secret" : "Тајна клијента", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Омогући стил путање", "Legacy (v2) authentication" : "Стара (v2) провера идентитета", "Enable multipart copy" : "Укључи копирање из више делова", + "SSE-C encryption key" : "SSE-C кључ шифровања", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Удаљена потфасцикла", @@ -113,9 +93,17 @@ OC.L10N.register( "External storage support" : "Подршка за спољашње складиште", "Adds basic external storage support" : "Додаје основу подршку за спољна складишта", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Nextcloud сервери, WebDAV сервери и још много других. Администрација може да одабере које типове складишта жели да се омогући и може да монтира локације ових складишта посебно за налог, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Nextcloud фасциклу. Спољашња складишта такође омогућавају особама и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графичким интерфејсом или командном линијом. Друга опција администрацији пружа више флексибилности када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у ГКИ документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.", - "Enter missing credentials" : "Унесите корисничке акредитиве који недостају", + "Confirm" : "Потврди", + "Storage credentials" : "Акредитиви складишта", + "To access the storage, you need to provide the authentication credentials." : "Да бисте приступили складишту, потребно је да наведете информације за потврду идентитета.", + "Enter the storage login" : "Унесите име за пријаву на складиште", + "Enter the storage password" : "Унесите лозинку за складиште", "Unable to update this external storage config. {statusMessage}" : "Не може да се ажурира конфигурација овог спољног складишта. {statusMessage}", "New configuration successfully saved" : "Нова конфигурација је успешно сачувана", + "Enter missing credentials" : "Унесите корисничке акредитиве који недостају", + "Credentials successfully set" : "Акредитиви су успешно постављени", + "Error while setting credentials: {error}" : "Грешка приликом постављања акредитива: {error}", + "Checking storage …" : "Проверава се складиште …", "There was an error with this external storage." : "Дошло је до грешке у вези са овим спољним складиштем.", "We were unable to check the external storage {basename}" : "Нисмо успели да проверимо спољно складиште {basename}", "Examine this faulty external storage configuration" : "Испитајте ову неисправну конфигурацију спољног складишта", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Опсег", "Personal" : "Лично", "System" : "Систем", + "Type to select account or group." : "Куцајте да изаберете налог или групу.", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са Mac NFD кодирањем (споро)", + "Enable encryption" : "Укључи шифровање", + "Enable previews" : "Укључи прегледе", + "Enable sharing" : "Укључи дељење", + "Check for changes" : "Проверавај за измене", + "Never" : "Никад", + "Once every direct access" : "Једном при сваком директном приступу", + "Read only" : "Само за читање", + "Disconnect" : "Раскачи се", + "Unknown backend: {backendName}" : "Непознат позадински механизам: {backendName}", + "Admin defined" : "Дефинисао администратор", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Аутоматска провера статуса је искључена због превеликог броја конфигурисаних складишта, кликните да проверите статус", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Да ли сте сигурни да желите да искључите ово спољно складиште? Nextcloud неће моћи више да га користи, па ће се ови фајлови и фолдери обрисати на било ком синхронизационом клијенту који је тренутно повезан, мада се неће обрисати ниједан фајл или фолдер на самом спољном складишту.", + "Delete storage?" : "Обриши складиште?", + "Click to recheck the configuration" : "Кликните овде да поново проверите конфигурацију", + "Saved" : "Сачувано", + "Saving …" : "Чувам…", + "Save" : "Сачувај", + "Failed to save global credentials" : "Није успело чување глобалних акредитива", + "Failed to save global credentials: {message}" : "Није успело чување глобалних акредитива: {message}", "No external storage configured or you don't have the permission to configure them" : "Нема конфигурисаних спољашњих складишта или немате потребне дозволе да их конфигуришете", "Open documentation" : "Отвори документацију", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Спољно складиште вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта као Nextcloud уређаје за складиштење. Такође можете дозволити људима да сами монтирају њихове сопствене сервисе спољних складишта.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Провера идентитета", "Configuration" : "Подешавање", "Available for" : "Доступно за", - "Click to recheck the configuration" : "Кликните овде да поново проверите конфигурацију", "Add storage" : "Додај складиште", "All people" : "Све особе", "Advanced settings" : "Напредне поставке", "Allow people to mount external storage" : "Дозволи људима да монтирају спољашња складишта", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобални акредитиви се могу користити за пријављивање на више спољних складишта које примају исте акредитиве.", - "Type to select user or group." : "Куцајте да изаберете корисника или групу.", - "Empty response from the server" : "Празан одговор са сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не могу да приступим. Одјавите се и пријавите поново да активирате ову тачку монтирања", - "Couldn't get the information from the remote server: {code} {type}" : "Не могу да дохватим информације са удаљеног сервера: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не могу да дохватим листу спољних тачака монтирања: {type}", - "There was an error with message: " : "Догодила се грешка уз поруку:", - "external-storage" : "спољашње-складиште", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не могу да добавим листу тачака монтирања Виндоуз мрежних дискова: празан одговор са сервера", - "Please enter the credentials for the {mount} mount" : "Унесите акредитиве за {mount} тачку монтирања", - "Username" : "Корисничко име", - "Credentials saved" : "Акредитиви снимљени", - "Credentials saving failed" : "Снимање акредитива није успело", - "Credentials required" : "Потребни акредитиви", - "Storage with ID \"%d\" is not user editable" : "Корисник не може да мења складиште са идентификацијом „%d”", - "Username and password" : "Корисничко име и лозинка", - "Global credentials, user entered" : "Глобални акредитиви, корисник унео", - "User entered, store in database" : "Корисник уноси, чува се у бази", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Ако се искључи, омогућиће се употреба фајл система који не прави разлику у величини слова, али ће се умањити перформансе", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Провери ACL (листу контроле приступа) сваког фајла или фасцикле унутар директоријума да исфилтрираш ставке где корисник нема право читања, али уз удар на перформансе", - "Username as share" : "Корисничко име као дељење", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.", - "Name" : "Назив", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Спољно складиште Вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта, и да се виде као Некстклауд уређају за складиштење. Такође можете дозволити корисницима да сами монтирају њихова сопствене сервисе спољних складишта.", - "All users" : "Сви корисници", - "Allow users to mount external storage" : "Дозволи корисницима да монтирају спољашња складишта" + "Error configuring OAuth1" : "Грешка у подешавању OAuth1", + "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", + "OAuth1" : "OAuth1", + "App key" : "Кључ апликације", + "App secret" : "Тајна апликације" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_external/l10n/sr.json b/apps/files_external/l10n/sr.json index 2dd7dd852fb..3917d296846 100644 --- a/apps/files_external/l10n/sr.json +++ b/apps/files_external/l10n/sr.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Одобри приступ", - "Error configuring OAuth1" : "Грешка у подешавању OAuth1", - "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", "Error configuring OAuth2" : "Грешка у подешавању OAuth2", "Generate keys" : "Генериши кључеве", "Error generating key pair" : "Грешка при генерисању пара кључева", - "Type to select account or group." : "Куцајте да изаберете налог или групу.", - "(Group)" : "(Група)", - "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са Mac NFD кодирањем (споро)", - "Enable encryption" : "Укључи шифровање", - "Enable previews" : "Укључи прегледе", - "Enable sharing" : "Укључи дељење", - "Check for changes" : "Проверавај за измене", - "Never" : "Никад", - "Once every direct access" : "Једном при сваком директном приступу", - "Read only" : "Само за читање", - "Disconnect" : "Раскачи се", - "Admin defined" : "Дефинисао администратор", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Аутоматска провера статуса је искључена због превеликог броја конфигурисаних складишта, кликните да проверите статус", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Да ли сте сигурни да желите да искључите ово спољно складиште? Nextcloud неће моћи више да га користи, па ће се ови фајлови и фолдери обрисати на било ком синхронизационом клијенту који је тренутно повезан, мада се неће обрисати ниједан фајл или фолдер на самом спољном складишту.", - "Delete storage?" : "Обриши складиште?", - "Saved" : "Сачувано", - "Saving …" : "Чувам…", - "Save" : "Сачувај", + "You are not logged in" : "Нисте пријављени", + "Permission denied" : "Одбијена је дозвола", "Forbidden to manage local mounts" : "Забрањено је управљање локалним монтирањима", "Storage with ID \"%d\" not found" : "Складиште са идентификацијом „%d” није пронађено", "Invalid backend or authentication mechanism class" : "Неисправан позадински механизам или начин провере идентитета", @@ -40,9 +22,6 @@ "Secret key" : "Тајни кључ ", "Builtin" : "Уграђено", "None" : "Ништа", - "OAuth1" : "OAuth1", - "App key" : "Кључ апликације", - "App secret" : "Тајна апликације", "OAuth2" : "OAuth2", "Client ID" : "ИД клијента", "Client secret" : "Тајна клијента", @@ -78,6 +57,7 @@ "Enable Path Style" : "Омогући стил путање", "Legacy (v2) authentication" : "Стара (v2) провера идентитета", "Enable multipart copy" : "Укључи копирање из више делова", + "SSE-C encryption key" : "SSE-C кључ шифровања", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Удаљена потфасцикла", @@ -111,9 +91,17 @@ "External storage support" : "Подршка за спољашње складиште", "Adds basic external storage support" : "Додаје основу подршку за спољна складишта", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Nextcloud сервери, WebDAV сервери и још много других. Администрација може да одабере које типове складишта жели да се омогући и може да монтира локације ових складишта посебно за налог, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Nextcloud фасциклу. Спољашња складишта такође омогућавају особама и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графичким интерфејсом или командном линијом. Друга опција администрацији пружа више флексибилности када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у ГКИ документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.", - "Enter missing credentials" : "Унесите корисничке акредитиве који недостају", + "Confirm" : "Потврди", + "Storage credentials" : "Акредитиви складишта", + "To access the storage, you need to provide the authentication credentials." : "Да бисте приступили складишту, потребно је да наведете информације за потврду идентитета.", + "Enter the storage login" : "Унесите име за пријаву на складиште", + "Enter the storage password" : "Унесите лозинку за складиште", "Unable to update this external storage config. {statusMessage}" : "Не може да се ажурира конфигурација овог спољног складишта. {statusMessage}", "New configuration successfully saved" : "Нова конфигурација је успешно сачувана", + "Enter missing credentials" : "Унесите корисничке акредитиве који недостају", + "Credentials successfully set" : "Акредитиви су успешно постављени", + "Error while setting credentials: {error}" : "Грешка приликом постављања акредитива: {error}", + "Checking storage …" : "Проверава се складиште …", "There was an error with this external storage." : "Дошло је до грешке у вези са овим спољним складиштем.", "We were unable to check the external storage {basename}" : "Нисмо успели да проверимо спољно складиште {basename}", "Examine this faulty external storage configuration" : "Испитајте ову неисправну конфигурацију спољног складишта", @@ -129,6 +117,28 @@ "Scope" : "Опсег", "Personal" : "Лично", "System" : "Систем", + "Type to select account or group." : "Куцајте да изаберете налог или групу.", + "(Group)" : "(Група)", + "Compatibility with Mac NFD encoding (slow)" : "Компатибилност са Mac NFD кодирањем (споро)", + "Enable encryption" : "Укључи шифровање", + "Enable previews" : "Укључи прегледе", + "Enable sharing" : "Укључи дељење", + "Check for changes" : "Проверавај за измене", + "Never" : "Никад", + "Once every direct access" : "Једном при сваком директном приступу", + "Read only" : "Само за читање", + "Disconnect" : "Раскачи се", + "Unknown backend: {backendName}" : "Непознат позадински механизам: {backendName}", + "Admin defined" : "Дефинисао администратор", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Аутоматска провера статуса је искључена због превеликог броја конфигурисаних складишта, кликните да проверите статус", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Да ли сте сигурни да желите да искључите ово спољно складиште? Nextcloud неће моћи више да га користи, па ће се ови фајлови и фолдери обрисати на било ком синхронизационом клијенту који је тренутно повезан, мада се неће обрисати ниједан фајл или фолдер на самом спољном складишту.", + "Delete storage?" : "Обриши складиште?", + "Click to recheck the configuration" : "Кликните овде да поново проверите конфигурацију", + "Saved" : "Сачувано", + "Saving …" : "Чувам…", + "Save" : "Сачувај", + "Failed to save global credentials" : "Није успело чување глобалних акредитива", + "Failed to save global credentials: {message}" : "Није успело чување глобалних акредитива: {message}", "No external storage configured or you don't have the permission to configure them" : "Нема конфигурисаних спољашњих складишта или немате потребне дозволе да их конфигуришете", "Open documentation" : "Отвори документацију", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Спољно складиште вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта као Nextcloud уређаје за складиштење. Такође можете дозволити људима да сами монтирају њихове сопствене сервисе спољних складишта.", @@ -136,36 +146,15 @@ "Authentication" : "Провера идентитета", "Configuration" : "Подешавање", "Available for" : "Доступно за", - "Click to recheck the configuration" : "Кликните овде да поново проверите конфигурацију", "Add storage" : "Додај складиште", "All people" : "Све особе", "Advanced settings" : "Напредне поставке", "Allow people to mount external storage" : "Дозволи људима да монтирају спољашња складишта", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобални акредитиви се могу користити за пријављивање на више спољних складишта које примају исте акредитиве.", - "Type to select user or group." : "Куцајте да изаберете корисника или групу.", - "Empty response from the server" : "Празан одговор са сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не могу да приступим. Одјавите се и пријавите поново да активирате ову тачку монтирања", - "Couldn't get the information from the remote server: {code} {type}" : "Не могу да дохватим информације са удаљеног сервера: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Не могу да дохватим листу спољних тачака монтирања: {type}", - "There was an error with message: " : "Догодила се грешка уз поруку:", - "external-storage" : "спољашње-складиште", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Не могу да добавим листу тачака монтирања Виндоуз мрежних дискова: празан одговор са сервера", - "Please enter the credentials for the {mount} mount" : "Унесите акредитиве за {mount} тачку монтирања", - "Username" : "Корисничко име", - "Credentials saved" : "Акредитиви снимљени", - "Credentials saving failed" : "Снимање акредитива није успело", - "Credentials required" : "Потребни акредитиви", - "Storage with ID \"%d\" is not user editable" : "Корисник не може да мења складиште са идентификацијом „%d”", - "Username and password" : "Корисничко име и лозинка", - "Global credentials, user entered" : "Глобални акредитиви, корисник унео", - "User entered, store in database" : "Корисник уноси, чува се у бази", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Ако се искључи, омогућиће се употреба фајл система који не прави разлику у величини слова, али ће се умањити перформансе", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Провери ACL (листу контроле приступа) сваког фајла или фасцикле унутар директоријума да исфилтрираш ставке где корисник нема право читања, али уз удар на перформансе", - "Username as share" : "Корисничко име као дељење", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ова апликација омогућава администраторима да подесе конекције на спољашња складишта, као што су FTP сервери, S3 или SWIFT објектна складишта, други Некстклауд сервери, WebDAV сервери и још много других. Администратори могу да одаберу које типове складишта желе да омогуће и могу да монтирају локације ових складишта посебно за корисника, за групу или за цео систем. Корисници ће видети нову фасциклу која ће се појавити у кореном директоријуму, којој могу да приступају и да је користе као и било коју другу Некстклауд фасциклу. Спољашња складишта такође омогућавају корисницима и да деле фајлове смештене на овим спољашњим локацијама. У овим случајевима, када неко затражи приступ фајлу из спољашњег складишта користе се акредитиви власника фајла, омогућавајући тако да прималац може да приступи дељеном фајлу.\n\nСпољашње складиште се може конфигурисати графички или командном линијом. Друга опција пружа више флексибилности напредним корисницима када треба монтирати велики број складишта и подесити велики број приоритета монтирања. Више информација је доступно у GUI документацији спољашњег складишта и у документацији Конфигурационог Фајла спољашњег складишта.", - "Name" : "Назив", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Спољно складиште Вам омогућава да монтирате сервисе и уређаје који нуде спољна складишта, и да се виде као Некстклауд уређају за складиштење. Такође можете дозволити корисницима да сами монтирају њихова сопствене сервисе спољних складишта.", - "All users" : "Сви корисници", - "Allow users to mount external storage" : "Дозволи корисницима да монтирају спољашња складишта" + "Error configuring OAuth1" : "Грешка у подешавању OAuth1", + "Please provide a valid app key and secret." : "Наведите исправан апликативни кључ и тајну.", + "OAuth1" : "OAuth1", + "App key" : "Кључ апликације", + "App secret" : "Тајна апликације" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sr@latin.js b/apps/files_external/l10n/sr@latin.js deleted file mode 100644 index 2cc12ecf4aa..00000000000 --- a/apps/files_external/l10n/sr@latin.js +++ /dev/null @@ -1,55 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Step 1 failed. Exception: %s" : "Korak 1 nije uspeo. Izuzetak: %s", - "Step 2 failed. Exception: %s" : "Korak 2 nije uspeo. Izuzetak: %s", - "External storage" : "Spoljašnje skladište", - "Personal" : "Lično", - "System" : "Sistemsko", - "Grant access" : "Dozvoli pristup", - "All users. Type to select user or group." : "Svi korisnici. Kucajte da biste izabrali korisnika ili grupu.", - "(group)" : "(grupa)", - "Saved" : "Sačuvano", - "Username" : "Korisničko ime", - "Password" : "Lozinka", - "Save" : "Sačuvaj", - "App key" : "Ključ Aplikacije", - "App secret" : "Tajna lozinka Aplikacije", - "Client ID" : "Identifikator klijenta", - "Client secret" : "Tajna lozinka klijenta", - "Amazon S3" : "Amazon S3", - "Bucket" : "Korpa", - "Hostname" : "Ime računara", - "Port" : "Port", - "Region" : "Regija", - "Enable SSL" : "Uključi SSL", - "Enable Path Style" : "Omogući stil putanje", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Udaljeni poddirektorijum", - "Secure https://" : "Sigurni https://", - "Host" : "Računar", - "Secure ftps://" : "Sigurni ftps://", - "Local" : "Lokalno", - "Location" : "Lokacija", - "Root" : "Koren", - "Share" : "Podeli", - "SMB / CIFS using OC login" : "SMB / CIFS koji koristi OC prijavljivanje", - "Username as share" : "Korisničko ime i deljeni direktorijum", - "OpenStack Object Storage" : "OpenStack skladište objekata", - "<b>Note:</b> " : "<b>Obratite pažnju:</b>", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju</b> Podrška za cURL u PHP-u nije uključena ili instalirana. Montiranje %s nije moguće. Molimo Vas da se obratite Vašem sistem administratoru da je instalira.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju:</b> FTP podrška u PHP-u nije uključena ili instalirana. Montiranje %s nije moguće. Molimo Vas da tražite od Vašeg sistem administratora da je instalira.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju:</b> \"%s\" nije instaliran. Monitranje %s nije moguće. Molimo Vas da se obratite Vašem sistem administratoru da to instalira.", - "Name" : "Ime", - "Storage type" : "Tip skladišta", - "Scope" : "Opseg", - "External Storage" : "Spoljašnje skladište", - "Folder name" : "Ime fascikle", - "Configuration" : "Podešavanje", - "Available for" : "Dostupno za", - "Add storage" : "Dodaj skladište", - "Delete" : "Obriši", - "Allow users to mount the following external storage" : "Omogući korisnicima da namontiraju sledeće spoljašnje skladište" -}, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_external/l10n/sr@latin.json b/apps/files_external/l10n/sr@latin.json deleted file mode 100644 index 2460d2544a4..00000000000 --- a/apps/files_external/l10n/sr@latin.json +++ /dev/null @@ -1,53 +0,0 @@ -{ "translations": { - "Step 1 failed. Exception: %s" : "Korak 1 nije uspeo. Izuzetak: %s", - "Step 2 failed. Exception: %s" : "Korak 2 nije uspeo. Izuzetak: %s", - "External storage" : "Spoljašnje skladište", - "Personal" : "Lično", - "System" : "Sistemsko", - "Grant access" : "Dozvoli pristup", - "All users. Type to select user or group." : "Svi korisnici. Kucajte da biste izabrali korisnika ili grupu.", - "(group)" : "(grupa)", - "Saved" : "Sačuvano", - "Username" : "Korisničko ime", - "Password" : "Lozinka", - "Save" : "Sačuvaj", - "App key" : "Ključ Aplikacije", - "App secret" : "Tajna lozinka Aplikacije", - "Client ID" : "Identifikator klijenta", - "Client secret" : "Tajna lozinka klijenta", - "Amazon S3" : "Amazon S3", - "Bucket" : "Korpa", - "Hostname" : "Ime računara", - "Port" : "Port", - "Region" : "Regija", - "Enable SSL" : "Uključi SSL", - "Enable Path Style" : "Omogući stil putanje", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Remote subfolder" : "Udaljeni poddirektorijum", - "Secure https://" : "Sigurni https://", - "Host" : "Računar", - "Secure ftps://" : "Sigurni ftps://", - "Local" : "Lokalno", - "Location" : "Lokacija", - "Root" : "Koren", - "Share" : "Podeli", - "SMB / CIFS using OC login" : "SMB / CIFS koji koristi OC prijavljivanje", - "Username as share" : "Korisničko ime i deljeni direktorijum", - "OpenStack Object Storage" : "OpenStack skladište objekata", - "<b>Note:</b> " : "<b>Obratite pažnju:</b>", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju</b> Podrška za cURL u PHP-u nije uključena ili instalirana. Montiranje %s nije moguće. Molimo Vas da se obratite Vašem sistem administratoru da je instalira.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju:</b> FTP podrška u PHP-u nije uključena ili instalirana. Montiranje %s nije moguće. Molimo Vas da tražite od Vašeg sistem administratora da je instalira.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Obratite pažnju:</b> \"%s\" nije instaliran. Monitranje %s nije moguće. Molimo Vas da se obratite Vašem sistem administratoru da to instalira.", - "Name" : "Ime", - "Storage type" : "Tip skladišta", - "Scope" : "Opseg", - "External Storage" : "Spoljašnje skladište", - "Folder name" : "Ime fascikle", - "Configuration" : "Podešavanje", - "Available for" : "Dostupno za", - "Add storage" : "Dodaj skladište", - "Delete" : "Obriši", - "Allow users to mount the following external storage" : "Omogući korisnicima da namontiraju sledeće spoljašnje skladište" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js index 1b2e97d304c..4c75412e50c 100644 --- a/apps/files_external/l10n/sv.js +++ b/apps/files_external/l10n/sv.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Bevilja åtkomst", - "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1", - "Please provide a valid app key and secret." : "Ange en giltig applikationsnyckel och hemlig fras.", "Error configuring OAuth2" : "Misslyckades konfigurera OAuth2", "Generate keys" : "Generera nycklar", "Error generating key pair" : "Fel vid generering av nyckelpar", - "Type to select account or group." : "Skriv för att välja konto eller grupp.", - "(Group)" : "(Grupp)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", - "Enable encryption" : "Aktivera kryptering", - "Enable previews" : "Aktivera förhandsgranskningar", - "Enable sharing" : "Aktivera delning", - "Check for changes" : "Sök efter ändringar", - "Never" : "Aldrig", - "Once every direct access" : "En gång vid varje direktåtkomst", - "Read only" : "Skrivskyddad", - "Disconnect" : "Koppla från", - "Admin defined" : "Admin definerad", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll är inaktiverad på grund av det stora antalet konfigurerade lagringar, klicka för att kontrollera status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Är du säker på att du vill koppla bort den här externa lagringen? Det kommer att göra lagringen otillgänglig i Nextcloud och kommer att leda till en radering av dessa filer och mappar på alla synkroniseringsklienter som för närvarande är anslutna men kommer inte att radera några filer och mappar på den externa lagringen i sig.", - "Delete storage?" : "Ta bort lagring?", - "Saved" : "Sparad", - "Saving …" : "Sparar ...", - "Save" : "Spara", + "You are not logged in" : "Du är inte inloggad", + "Permission denied" : "Åtkomst nekad", "Forbidden to manage local mounts" : "Förbjudet att hantera lokala monteringar", "Storage with ID \"%d\" not found" : "Lagringsutrymme med ID \"%d\" hittades inte", "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Hemlig nyckel", "Builtin" : "Inbyggt", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "Appnyckel", - "App secret" : "Apphemlighet", "OAuth2" : "OAuth2", "Client ID" : "Klient ID", "Client secret" : "Klienthemlighet", @@ -79,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "Aktivera SSL", "Enable Path Style" : "Aktivera Path Style", "Legacy (v2) authentication" : "Legacy (v2) autentisering", + "Enable multipart copy" : "Aktivera flerdelad kopiering", + "SSE-C encryption key" : "SSE-C krypteringsnyckel", "WebDAV" : "WebDAV", "URL" : "Webbadress", "Remote subfolder" : "Extern undermapp", @@ -111,9 +92,18 @@ OC.L10N.register( "External storage" : "Extern lagring", "External storage support" : "Stöd för extern lagring", "Adds basic external storage support" : "Lägger till grundläggande stöd för extern lagring", - "Enter missing credentials" : "Ange saknade inloggningsuppgifter", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denna applikation tillåter serveradministratörer konfigurera anslutningar till externa lagringsleverantörer, så som FTP-servrar, S3 eller SWIFT -servrar, andra Nextcloud-servrar, WebDAV-servrar, med flera. Administrationen kan välja vilka typer av lagring som är aktiverade och kan montera dessa lagringsplatser för ett konto, en grupp eller för hela servern. Användare kommer se en ny mapp dyka upp i deras dokument-rot, vilken de kan använda som en vanlig mapp. Extern lagring tillåter också delning av filer lagrade i dessa externa platser. I de fallen används fil-ägarens uppgifter när mottagaren begär filen från den externa lagringen, vilket på så vis garanterar att mottagaren får tillgång till den delade filen.\n\nExtern lagring kan konfigureras genom det grafiska gränssnittet eller kommandoraden. Det sistnämnda alternativet erbjuder administrationen mer flexibilitet vid konfigurering av flertalet lagringsplatser samt monteringsprioriteter. Mer information finns tillgänglig i dokumentationen för användargränssnittet samt för konfigurationsfilen.", + "Confirm" : "Bekräfta", + "Storage credentials" : "Uppgifter för lagring", + "To access the storage, you need to provide the authentication credentials." : "För att komma åt lagringen måste du ange autentiseringsuppgifterna.", + "Enter the storage login" : "Ange inloggning för lagringen", + "Enter the storage password" : "Ange lösenord för lagringen", "Unable to update this external storage config. {statusMessage}" : "Det gick inte att uppdatera denna externa lagringskonfiguration. {statusMessage}", "New configuration successfully saved" : "Ny konfiguration har sparats", + "Enter missing credentials" : "Ange saknade inloggningsuppgifter", + "Credentials successfully set" : "Autentiseringsuppgifter har sparats", + "Error while setting credentials: {error}" : "Fel vid inställning av autentiseringsuppgifter: {error}", + "Checking storage …" : "Kontrollerar lagring …", "There was an error with this external storage." : "Det uppstod ett fel med denna externa lagring.", "We were unable to check the external storage {basename}" : "Vi kunde inte kontrollera den externa lagringen {basename}", "Examine this faulty external storage configuration" : "Undersök denna felaktiga externa lagringskonfiguration", @@ -129,6 +119,28 @@ OC.L10N.register( "Scope" : "Sammanhang", "Personal" : "Privat", "System" : "System", + "Type to select account or group." : "Skriv för att välja konto eller grupp.", + "(Group)" : "(Grupp)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", + "Enable encryption" : "Aktivera kryptering", + "Enable previews" : "Aktivera förhandsgranskningar", + "Enable sharing" : "Aktivera delning", + "Check for changes" : "Sök efter ändringar", + "Never" : "Aldrig", + "Once every direct access" : "En gång vid varje direktåtkomst", + "Read only" : "Skrivskyddad", + "Disconnect" : "Koppla från", + "Unknown backend: {backendName}" : "Okänd backend: {backendName}", + "Admin defined" : "Admin definerad", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll är inaktiverad på grund av det stora antalet konfigurerade lagringar, klicka för att kontrollera status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Är du säker på att du vill koppla bort den här externa lagringen? Det kommer att göra lagringen otillgänglig i Nextcloud och kommer att leda till en radering av dessa filer och mappar på alla synkroniseringsklienter som för närvarande är anslutna men kommer inte att radera några filer och mappar på den externa lagringen i sig.", + "Delete storage?" : "Ta bort lagring?", + "Click to recheck the configuration" : "Klicka för att kontrollera inställningarna igen", + "Saved" : "Sparad", + "Saving …" : "Sparar ...", + "Save" : "Spara", + "Failed to save global credentials" : "Kunde inte spara globala autentiseringsuppgifter", + "Failed to save global credentials: {message}" : "Kunde inte spara globala autentiseringsuppgifter: {message}", "No external storage configured or you don't have the permission to configure them" : "Ingen extern lagring konfigurerad eller så har du inte behörighet att konfigurera dem", "Open documentation" : "Öppna dokumentationen", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externt lagringsutrymme gör det möjligt att montera externa lagringstjänster och enheter som sekundära Nextcloud-lagringsenheter. Du kan också tillåta användare att montera sina egna externa lagringstjänster.", @@ -136,36 +148,15 @@ OC.L10N.register( "Authentication" : "Autentisering", "Configuration" : "Konfiguration", "Available for" : "Tillgänglig för", - "Click to recheck the configuration" : "Klicka för att kontrollera inställningarna igen", "Add storage" : "Lägg till lagring", "All people" : "Alla användare", "Advanced settings" : "Avancerade inställningar", "Allow people to mount external storage" : "Tillåt användare att montera extern lagring", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globala användaruppgifter kan användas för att autentisera med flera externa lagrings-instanser som använder samma användaruppgifter.", - "Type to select user or group." : "Skriv för att välja användare eller grupp.", - "Empty response from the server" : "Tomt svar från servern", - "Couldn't access. Please log out and in again to activate this mount point" : "Kunde inte ansluta. Försök logga ut och in igen för att aktivera denna monteringspunkt", - "Couldn't get the information from the remote server: {code} {type}" : "Det gick inte att få informationen från fjärrservern: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}", - "There was an error with message: " : "Det fanns ett fel med meddelande:", - "external-storage" : "extern-lagring", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kunde inte hämta lista med Windows nätverksmonteringspunkter: Tomt svar från servern", - "Please enter the credentials for the {mount} mount" : "Ange uppgifterna för {mount} montering", - "Username" : "Användarnamn", - "Credentials saved" : "Sparade uppgifter", - "Credentials saving failed" : "Misslyckades med att spara uppgifterna", - "Credentials required" : "Uppgifter krävs", - "Storage with ID \"%d\" is not user editable" : "Lagringsutrymme med ID \"%d\" är inte redigerbart för användare", - "Username and password" : "Användarnamn och lösenord", - "Global credentials, user entered" : "Globala uppgifter, användare angav", - "User entered, store in database" : "Användare lades till, lagras i databasen", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Inaktivering gör det möjligt att använda ett skiftlägesokänsligt filsystem, men det kommer att påverka prestandan", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrollera ACL:er för varje fil eller mapp inuti en sökväg för att filtrera bort element för vilka användaren saknar läsbehörighet, innebär en viss prestandaminskning.", - "Username as share" : "Användarnamn till utdelning", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Appen ger administratörer möjlighet att konfigurera kopplingar till extern lagring, ftp-servrar, S3- eller SWIFT-objektlager, andra Nextcloud-servrar, WebDAV-servrar, eller andra typer. Administratörerna kan välja vilka typer av lagring som ska tillåtas, för en användare, en grupp, eller hela systemet. Användare kommer att se en ny folder i sin Nextcloud-rotkatalog. den kan användas precis som andra foldrar. Extern lagring ger också möjlighet att dela filerna på den externa lagringen. Då används den lokala användarens användaruppgifter när de filerna används av externa användare.\n\nExtern lagring kan konfigureras i GUI:t eller på kommandoraden. Det senare alternativet ger mer flexibilitet för monteringspunkter för bulk-lagring. Mer information finns i GUI-dokumentationen och i dokumentationen för extern lagrings-konfigurationsfilen.", - "Name" : "Namn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externt lagringsutrymme gör det möjligt att montera externa lagringstjänster och enheter som sekundära Nextcloud-lagringsenheter. Du kan också tillåta användare att montera sina egna externa lagringstjänster.", - "All users" : "Alla användare", - "Allow users to mount external storage" : "Tillåt användare att montera extern lagring" + "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1", + "Please provide a valid app key and secret." : "Ange en giltig applikationsnyckel och hemlig fras.", + "OAuth1" : "OAuth1", + "App key" : "Appnyckel", + "App secret" : "Apphemlighet" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json index b451763fbd0..5c5516bbe01 100644 --- a/apps/files_external/l10n/sv.json +++ b/apps/files_external/l10n/sv.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Bevilja åtkomst", - "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1", - "Please provide a valid app key and secret." : "Ange en giltig applikationsnyckel och hemlig fras.", "Error configuring OAuth2" : "Misslyckades konfigurera OAuth2", "Generate keys" : "Generera nycklar", "Error generating key pair" : "Fel vid generering av nyckelpar", - "Type to select account or group." : "Skriv för att välja konto eller grupp.", - "(Group)" : "(Grupp)", - "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", - "Enable encryption" : "Aktivera kryptering", - "Enable previews" : "Aktivera förhandsgranskningar", - "Enable sharing" : "Aktivera delning", - "Check for changes" : "Sök efter ändringar", - "Never" : "Aldrig", - "Once every direct access" : "En gång vid varje direktåtkomst", - "Read only" : "Skrivskyddad", - "Disconnect" : "Koppla från", - "Admin defined" : "Admin definerad", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll är inaktiverad på grund av det stora antalet konfigurerade lagringar, klicka för att kontrollera status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Är du säker på att du vill koppla bort den här externa lagringen? Det kommer att göra lagringen otillgänglig i Nextcloud och kommer att leda till en radering av dessa filer och mappar på alla synkroniseringsklienter som för närvarande är anslutna men kommer inte att radera några filer och mappar på den externa lagringen i sig.", - "Delete storage?" : "Ta bort lagring?", - "Saved" : "Sparad", - "Saving …" : "Sparar ...", - "Save" : "Spara", + "You are not logged in" : "Du är inte inloggad", + "Permission denied" : "Åtkomst nekad", "Forbidden to manage local mounts" : "Förbjudet att hantera lokala monteringar", "Storage with ID \"%d\" not found" : "Lagringsutrymme med ID \"%d\" hittades inte", "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass", @@ -40,9 +22,6 @@ "Secret key" : "Hemlig nyckel", "Builtin" : "Inbyggt", "None" : "Ingen", - "OAuth1" : "OAuth1", - "App key" : "Appnyckel", - "App secret" : "Apphemlighet", "OAuth2" : "OAuth2", "Client ID" : "Klient ID", "Client secret" : "Klienthemlighet", @@ -77,6 +56,8 @@ "Enable SSL" : "Aktivera SSL", "Enable Path Style" : "Aktivera Path Style", "Legacy (v2) authentication" : "Legacy (v2) autentisering", + "Enable multipart copy" : "Aktivera flerdelad kopiering", + "SSE-C encryption key" : "SSE-C krypteringsnyckel", "WebDAV" : "WebDAV", "URL" : "Webbadress", "Remote subfolder" : "Extern undermapp", @@ -109,9 +90,18 @@ "External storage" : "Extern lagring", "External storage support" : "Stöd för extern lagring", "Adds basic external storage support" : "Lägger till grundläggande stöd för extern lagring", - "Enter missing credentials" : "Ange saknade inloggningsuppgifter", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Denna applikation tillåter serveradministratörer konfigurera anslutningar till externa lagringsleverantörer, så som FTP-servrar, S3 eller SWIFT -servrar, andra Nextcloud-servrar, WebDAV-servrar, med flera. Administrationen kan välja vilka typer av lagring som är aktiverade och kan montera dessa lagringsplatser för ett konto, en grupp eller för hela servern. Användare kommer se en ny mapp dyka upp i deras dokument-rot, vilken de kan använda som en vanlig mapp. Extern lagring tillåter också delning av filer lagrade i dessa externa platser. I de fallen används fil-ägarens uppgifter när mottagaren begär filen från den externa lagringen, vilket på så vis garanterar att mottagaren får tillgång till den delade filen.\n\nExtern lagring kan konfigureras genom det grafiska gränssnittet eller kommandoraden. Det sistnämnda alternativet erbjuder administrationen mer flexibilitet vid konfigurering av flertalet lagringsplatser samt monteringsprioriteter. Mer information finns tillgänglig i dokumentationen för användargränssnittet samt för konfigurationsfilen.", + "Confirm" : "Bekräfta", + "Storage credentials" : "Uppgifter för lagring", + "To access the storage, you need to provide the authentication credentials." : "För att komma åt lagringen måste du ange autentiseringsuppgifterna.", + "Enter the storage login" : "Ange inloggning för lagringen", + "Enter the storage password" : "Ange lösenord för lagringen", "Unable to update this external storage config. {statusMessage}" : "Det gick inte att uppdatera denna externa lagringskonfiguration. {statusMessage}", "New configuration successfully saved" : "Ny konfiguration har sparats", + "Enter missing credentials" : "Ange saknade inloggningsuppgifter", + "Credentials successfully set" : "Autentiseringsuppgifter har sparats", + "Error while setting credentials: {error}" : "Fel vid inställning av autentiseringsuppgifter: {error}", + "Checking storage …" : "Kontrollerar lagring …", "There was an error with this external storage." : "Det uppstod ett fel med denna externa lagring.", "We were unable to check the external storage {basename}" : "Vi kunde inte kontrollera den externa lagringen {basename}", "Examine this faulty external storage configuration" : "Undersök denna felaktiga externa lagringskonfiguration", @@ -127,6 +117,28 @@ "Scope" : "Sammanhang", "Personal" : "Privat", "System" : "System", + "Type to select account or group." : "Skriv för att välja konto eller grupp.", + "(Group)" : "(Grupp)", + "Compatibility with Mac NFD encoding (slow)" : "Kompatibilitet med Mac NFD kodning (slö)", + "Enable encryption" : "Aktivera kryptering", + "Enable previews" : "Aktivera förhandsgranskningar", + "Enable sharing" : "Aktivera delning", + "Check for changes" : "Sök efter ändringar", + "Never" : "Aldrig", + "Once every direct access" : "En gång vid varje direktåtkomst", + "Read only" : "Skrivskyddad", + "Disconnect" : "Koppla från", + "Unknown backend: {backendName}" : "Okänd backend: {backendName}", + "Admin defined" : "Admin definerad", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Automatisk statuskontroll är inaktiverad på grund av det stora antalet konfigurerade lagringar, klicka för att kontrollera status", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Är du säker på att du vill koppla bort den här externa lagringen? Det kommer att göra lagringen otillgänglig i Nextcloud och kommer att leda till en radering av dessa filer och mappar på alla synkroniseringsklienter som för närvarande är anslutna men kommer inte att radera några filer och mappar på den externa lagringen i sig.", + "Delete storage?" : "Ta bort lagring?", + "Click to recheck the configuration" : "Klicka för att kontrollera inställningarna igen", + "Saved" : "Sparad", + "Saving …" : "Sparar ...", + "Save" : "Spara", + "Failed to save global credentials" : "Kunde inte spara globala autentiseringsuppgifter", + "Failed to save global credentials: {message}" : "Kunde inte spara globala autentiseringsuppgifter: {message}", "No external storage configured or you don't have the permission to configure them" : "Ingen extern lagring konfigurerad eller så har du inte behörighet att konfigurera dem", "Open documentation" : "Öppna dokumentationen", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externt lagringsutrymme gör det möjligt att montera externa lagringstjänster och enheter som sekundära Nextcloud-lagringsenheter. Du kan också tillåta användare att montera sina egna externa lagringstjänster.", @@ -134,36 +146,15 @@ "Authentication" : "Autentisering", "Configuration" : "Konfiguration", "Available for" : "Tillgänglig för", - "Click to recheck the configuration" : "Klicka för att kontrollera inställningarna igen", "Add storage" : "Lägg till lagring", "All people" : "Alla användare", "Advanced settings" : "Avancerade inställningar", "Allow people to mount external storage" : "Tillåt användare att montera extern lagring", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globala användaruppgifter kan användas för att autentisera med flera externa lagrings-instanser som använder samma användaruppgifter.", - "Type to select user or group." : "Skriv för att välja användare eller grupp.", - "Empty response from the server" : "Tomt svar från servern", - "Couldn't access. Please log out and in again to activate this mount point" : "Kunde inte ansluta. Försök logga ut och in igen för att aktivera denna monteringspunkt", - "Couldn't get the information from the remote server: {code} {type}" : "Det gick inte att få informationen från fjärrservern: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Kunde inte hämta listan för externa monteringspunkter: {type}", - "There was an error with message: " : "Det fanns ett fel med meddelande:", - "external-storage" : "extern-lagring", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Kunde inte hämta lista med Windows nätverksmonteringspunkter: Tomt svar från servern", - "Please enter the credentials for the {mount} mount" : "Ange uppgifterna för {mount} montering", - "Username" : "Användarnamn", - "Credentials saved" : "Sparade uppgifter", - "Credentials saving failed" : "Misslyckades med att spara uppgifterna", - "Credentials required" : "Uppgifter krävs", - "Storage with ID \"%d\" is not user editable" : "Lagringsutrymme med ID \"%d\" är inte redigerbart för användare", - "Username and password" : "Användarnamn och lösenord", - "Global credentials, user entered" : "Globala uppgifter, användare angav", - "User entered, store in database" : "Användare lades till, lagras i databasen", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Inaktivering gör det möjligt att använda ett skiftlägesokänsligt filsystem, men det kommer att påverka prestandan", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Kontrollera ACL:er för varje fil eller mapp inuti en sökväg för att filtrera bort element för vilka användaren saknar läsbehörighet, innebär en viss prestandaminskning.", - "Username as share" : "Användarnamn till utdelning", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Appen ger administratörer möjlighet att konfigurera kopplingar till extern lagring, ftp-servrar, S3- eller SWIFT-objektlager, andra Nextcloud-servrar, WebDAV-servrar, eller andra typer. Administratörerna kan välja vilka typer av lagring som ska tillåtas, för en användare, en grupp, eller hela systemet. Användare kommer att se en ny folder i sin Nextcloud-rotkatalog. den kan användas precis som andra foldrar. Extern lagring ger också möjlighet att dela filerna på den externa lagringen. Då används den lokala användarens användaruppgifter när de filerna används av externa användare.\n\nExtern lagring kan konfigureras i GUI:t eller på kommandoraden. Det senare alternativet ger mer flexibilitet för monteringspunkter för bulk-lagring. Mer information finns i GUI-dokumentationen och i dokumentationen för extern lagrings-konfigurationsfilen.", - "Name" : "Namn", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externt lagringsutrymme gör det möjligt att montera externa lagringstjänster och enheter som sekundära Nextcloud-lagringsenheter. Du kan också tillåta användare att montera sina egna externa lagringstjänster.", - "All users" : "Alla användare", - "Allow users to mount external storage" : "Tillåt användare att montera extern lagring" + "Error configuring OAuth1" : "Misslyckades konfigurera OAuth1", + "Please provide a valid app key and secret." : "Ange en giltig applikationsnyckel och hemlig fras.", + "OAuth1" : "OAuth1", + "App key" : "Appnyckel", + "App secret" : "Apphemlighet" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sw.js b/apps/files_external/l10n/sw.js new file mode 100644 index 00000000000..37c8a3fcca8 --- /dev/null +++ b/apps/files_external/l10n/sw.js @@ -0,0 +1,162 @@ +OC.L10N.register( + "files_external", + { + "Grant access" : "Toa ufikiaji", + "Error configuring OAuth2" : "Hitilafu katika kusanidi OAuth2", + "Generate keys" : "Tengeneza funguo", + "Error generating key pair" : "Hitilafu katika kuzalisha jozi za funguo", + "You are not logged in" : " Hujaingia", + "Permission denied" : " Ruhusa imekataliwa", + "Forbidden to manage local mounts" : " Hairuhusiwi kudhibiti vipandikizi vya ndani", + "Storage with ID \"%d\" not found" : "Hifadhi yenye kitambulisho \"%d\" haijapatikana", + "Invalid backend or authentication mechanism class" : "Aina batili ya nyuma au utaratibu wa uthibitishaji", + "Invalid mount point" : "Sehemu ya kupachika ni batili", + "Objectstore forbidden" : "Hifadhi ya vitu imezuiliwa", + "Invalid storage backend \"%s\"" : "Nyuma ya hifadhi ni batili \"%s\"", + "Not permitted to use backend \"%s\"" : "Hairuhusiwi kutumia backend \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Hairuhusiwi kutumia utaratibu wa uthibitishaji \"%s\"", + "Unsatisfied backend parameters" : "Vigezo vya mandharinyuma ambavyo havijaridhika", + "Unsatisfied authentication mechanism parameters" : "Vigezo vya utaratibu wa uthibitishaji ambavyo havijaridhika", + "Insufficient data: %s" : " Data hazitoshi: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Hifadhi iliyo na kitambulisho \"%d\" haiwezi kuhaririwa na wasio wasimamizi", + "Access key" : " Ufunguo wa ufikiaji", + "Secret key" : " Ufunguo wa siri", + "Builtin" : "Builtin", + "None" : "Hakuna", + "OAuth2" : "OAuth2", + "Client ID" : "Kitambulisho cha mteja", + "Client secret" : "Siri ya mteja", + "OpenStack v2" : "OpenStack v2", + "Login" : "Ingia", + "Password" : "Nenosiri", + "Tenant name" : "Jina la mpangaji", + "Identity endpoint URL" : "URL ya mwisho wa kitambulisho", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Umiliki", + "Rackspace" : "Rackspace", + "API key" : "Ufunguo wa API", + "Global credentials" : " Vitambulisho vya kimataifa", + "Log-in credentials, save in database" : "Kitambulisho cha kuingia, hifadhi katika hifadhidata", + "Login and password" : "Ingia na nenosiri", + "Log-in credentials, save in session" : "Kitambulisho cha kuingia, hifadhi katika kipindi", + "Global credentials, manually entered" : "Vitambulisho vya kimataifa, vimeingizwa kwa mikono", + "Manually entered, store in database" : "Imeingizwa kwa mikono, hifadhi kwenye hifadhidata", + "RSA public key" : "Ufunguo wa umma wa RSA", + "Public key" : "Ufunguo wa umma", + "RSA private key" : "Ufunguo wa kibinafsi wa RSA", + "Private key" : " Ufunguo wa kibinafsi", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Ufalme chaguo-msingi wa Kerberos, chaguomsingi kuwa \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Njia ya Apache ya tikiti ya Kerberos", + "Kerberos ticket" : "Tikiti za Kerberos", + "Amazon S3" : "Amazon S3", + "Bucket" : " Ndoo", + "Hostname" : "Jina la mwenyeji", + "Port" : "Port", + "Region" : "Kanda", + "Storage Class" : " Daraja la Uhifadhi", + "Enable SSL" : "Washa SSL", + "Enable Path Style" : "Washa Mtindo wa Njia", + "Legacy (v2) authentication" : "Uthibitishaji wa urithi (v2).", + "Enable multipart copy" : "Washa nakala za sehemu nyingi", + "SSE-C encryption key" : " Kitufe cha usimbaji cha SSE-C", + "WebDAV" : "WavutiDAV", + "URL" : "Url", + "Remote subfolder" : " Folda ndogo ya mbali", + "Secure https://" : "Salama https://", + "FTP" : "FTP", + "Host" : "Host", + "Secure ftps://" : "Salama ftps://", + "Local" : "Kawaida", + "Location" : "Mahali/eneo", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Mzizi", + "SFTP with secret key login" : " SFTP na kuingia kwa ufunguo wa siri", + "SMB/CIFS" : "SMB/CIFS", + "Share" : "Shirikisha", + "Show hidden files" : "Onesha mafaili yaliyofichwa", + "Case sensitive file system" : "Mfumo wa faili nyeti wa kesi", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Kuizima kutaruhusu kutumia mfumo wa faili usiojali kesi, lakini inakuja na adhabu ya utendakazi", + "Verify ACL access when listing files" : "Thibitisha ufikiaji wa ACL unapoorodhesha faili", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Angalia ACL za kila faili au folda ndani ya saraka ili kuchuja vitu ambapo akaunti haina ruhusa ya kusoma, inakuja na adhabu ya utendaji.", + "Timeout" : "Muda umeisha", + "SMB/CIFS using OC login" : "SMB/CIFS kwa kutumia kuingia kwa OC", + "Login as share" : "Ingia kama kushiriki", + "OpenStack Object Storage" : "Hifadhi ya Kitu cha OpenStack", + "Service name" : "Jina la huduma", + "Request timeout (seconds)" : "Muda wa ombi umeisha (sekunde)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Usaidizi wa cURL katika PHP haujawezeshwa au kusakinishwa. Upachikaji wa %s hauwezekani. Tafadhali muulize msimamizi wa mfumo wako aisakinishe.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Usaidizi wa FTP katika PHP haujawezeshwa au kusakinishwa. Upachikaji wa %s hauwezekani. Tafadhali muulize msimamizi wa mfumo wako aisakinishe.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" haijasakinishwa. Haiwezekani kupachika %2$s. Tafadhali muulize msimamizi wako wa mfumo aisakinishe.", + "External storage" : " Hifadhi ya nje", + "External storage support" : "Usaidizi wa hifadhi ya nje", + "Adds basic external storage support" : "Huongeza usaidizi msingi wa hifadhi ya nje", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Programu hii inawawezesha wasimamizi kusanidi miunganisho kwa watoa huduma wa hifadhi ya nje, kama vile seva za FTP, maduka ya vitu vya S3 au SWIFT, seva nyingine za Nextcloud, seva za WebDAV, na zaidi. Utawala unaweza kuchagua aina gani za hifadhi zitakazowezesha na unaweza kuweka maeneo haya ya hifadhi kwa akaunti, kikundi au mfumo mzima. Watumiaji wataona folda mpya ikitokea kwenye saraka yao ya mizizi ya Nextcloud, ambayo wanaweza kufikia na kutumia kama folda nyingine yoyote ya Nextcloud. Hifadhi ya nje pia inaruhusu watu kushiriki faili zilizohifadhiwa katika maeneo haya ya nje. Katika matukio haya, sifa za mmiliki wa faili hutumiwa wakati mpokeaji anaomba faili kutoka kwa hifadhi ya nje, na hivyo kuhakikisha kwamba mpokeaji anaweza kufikia faili iliyoshirikiwa.\n\nHifadhi ya nje inaweza kusanidiwa kwa kutumia GUI au kwenye mstari wa amri. Chaguo hili la pili hutoa usimamizi kwa urahisi zaidi wa kusanidi viweke vingi vya hifadhi ya nje na kuweka vipaumbele vya kupachika. Maelezo zaidi yanapatikana katika uhifadhi wa nje wa hati za GUI na uhifadhi wa nje wa hati za Faili ya Usanidi.", + "Confirm" : "Thibitisha", + "Storage credentials" : "Vitambulisho vya uhifadhi", + "To access the storage, you need to provide the authentication credentials." : "Ili kufikia hifadhi, unahitaji kutoa vitambulisho vya uthibitishaji.", + "Enter the storage login" : "Ingiza kuingia kwa hifadhi", + "Enter the storage password" : "Ingiza nenosiri la kuhifadhi", + "Unable to update this external storage config. {statusMessage}" : "Imeshindwa kusasisha usanidi huu wa hifadhi ya nje.{statusMessage}", + "New configuration successfully saved" : "Mpangilio mpya umehifadhiwa", + "Enter missing credentials" : "Weka vitambulisho ambavyo havipo", + "Credentials successfully set" : "Vitambulisho vimewekwa kikamilifu", + "Error while setting credentials: {error}" : "Hitilafu wakati wa kuweka vitambulisho: {error}", + "Checking storage …" : "Inakagua hifadhi...", + "There was an error with this external storage." : "Kulikuwa na hitilafu na hifadhi hii ya nje.", + "We were unable to check the external storage {basename}" : " Hatukuweza kuangalia hifadhi ya nje {basename}", + "Examine this faulty external storage configuration" : "Chunguza usanidi huu wa hifadhi ya nje wenye hitilafu", + "Open in Files" : "Fungua ndani ya faili", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Kulikuwa na hitilafu na hifadhi hii ya nje. Je, ungependa kukagua usanidi huu wa sehemu ya kupachika kwenye ukurasa wa mipangilio?", + "External mount error" : "Hitilafu ya kupachika nje", + "List of external storage." : "Orodha ya hifadhi za nje", + "There is no external storage configured. You can configure them in your Personal settings." : "Hakuna hifadhi ya nje iliyosanidiwa. Unaweza kuzisanidi katika mipangilio yako ya Kibinafsi.", + "There is no external storage configured and you don't have the permission to configure them." : "Hakuna hifadhi ya nje iliyosanidiwa na huna ruhusa ya kuzisanidi.", + "No external storage" : "Hakuna hifadhi ya nje", + "Storage type" : "Aina za hifadhi", + "Unknown" : "Haijulikani", + "Scope" : "Upeo", + "Personal" : "Binafsi", + "System" : "Mfumo", + "Type to select account or group." : "Andika ili kuchagua akaunti au kikundi.", + "(Group)" : "(Kundi)", + "Compatibility with Mac NFD encoding (slow)" : "Utangamano na usimbaji wa Mac NFD (polepole)", + "Enable encryption" : "Washa usimbaji fiche", + "Enable previews" : "Washa uhakiki", + "Enable sharing" : "Washa ushiriki", + "Check for changes" : "Angalia mabadiliko", + "Never" : "Kamwe", + "Once every direct access" : "Mara moja kila ufikiaji wa moja kwa moja", + "Read only" : "Kusoma pekee", + "Disconnect" : "Tenganisha", + "Unknown backend: {backendName}" : "Mandhari ya nyuma yasiyojulikana: {backendName}", + "Admin defined" : "Msimamizi amefafanuliwa", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Ukaguzi wa hali otomatiki umezimwa kutokana na idadi kubwa ya hifadhi zilizosanidiwa, bofya ili kuangalia hali", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Je, una uhakika unataka kukata hifadhi hii ya nje? Itafanya hifadhi isipatikane katika Nextcloud na itasababisha kufutwa kwa faili na folda hizi kwenye kiteja chochote cha kusawazisha ambacho kimeunganishwa kwa sasa lakini hakitafuta faili na folda zozote kwenye hifadhi ya nje yenyewe.", + "Delete storage?" : "Futa hifadhi?", + "Click to recheck the configuration" : "Bofya ili kuangalia upya usanidi", + "Saved" : "Imehifadhiwa", + "Saving …" : "Inahifadhi...", + "Save" : "Hifadhi", + "Failed to save global credentials" : " Imeshindwa kuhifadhi vitambulisho vya kimataifa", + "Failed to save global credentials: {message}" : "Imeshindwa kuhifadhi vitambulisho vya kimataifa: {message}", + "No external storage configured or you don't have the permission to configure them" : "Hakuna hifadhi ya nje iliyosanidiwa au huna ruhusa ya kuzisanidi", + "Open documentation" : "Fungua nyaraka", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Hifadhi ya nje hukuwezesha kupachika huduma na vifaa vya hifadhi ya nje kama vifaa vya pili vya uhifadhi vya Nextcloud. Unaweza pia kuruhusu watu kupachika huduma zao za hifadhi ya nje", + "Folder name" : "Jina la kisanduku", + "Authentication" : "Uthibitisho", + "Configuration" : "Usanidi", + "Available for" : "Inapatikani kwa", + "Add storage" : "Ongeza hifadhi", + "All people" : "Watu wote", + "Advanced settings" : "Mipangilio ya kiwangi cha juu", + "Allow people to mount external storage" : "Ruhusu watu kupachika hifadhi ya nje", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Vitambulisho vya kimataifa vinaweza kutumika kuthibitisha kwa hifadhi nyingi za nje ambazo zina vitambulisho sawa.", + "Error configuring OAuth1" : "Hitilafu katika kusanidi OAuth1", + "Please provide a valid app key and secret." : "Tafadhali toa ufunguo halali wa programu na siri.", + "OAuth1" : "OAuth1", + "App key" : "Kitufe cha programu", + "App secret" : "Siri ya programu" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/sw.json b/apps/files_external/l10n/sw.json new file mode 100644 index 00000000000..796898da75f --- /dev/null +++ b/apps/files_external/l10n/sw.json @@ -0,0 +1,160 @@ +{ "translations": { + "Grant access" : "Toa ufikiaji", + "Error configuring OAuth2" : "Hitilafu katika kusanidi OAuth2", + "Generate keys" : "Tengeneza funguo", + "Error generating key pair" : "Hitilafu katika kuzalisha jozi za funguo", + "You are not logged in" : " Hujaingia", + "Permission denied" : " Ruhusa imekataliwa", + "Forbidden to manage local mounts" : " Hairuhusiwi kudhibiti vipandikizi vya ndani", + "Storage with ID \"%d\" not found" : "Hifadhi yenye kitambulisho \"%d\" haijapatikana", + "Invalid backend or authentication mechanism class" : "Aina batili ya nyuma au utaratibu wa uthibitishaji", + "Invalid mount point" : "Sehemu ya kupachika ni batili", + "Objectstore forbidden" : "Hifadhi ya vitu imezuiliwa", + "Invalid storage backend \"%s\"" : "Nyuma ya hifadhi ni batili \"%s\"", + "Not permitted to use backend \"%s\"" : "Hairuhusiwi kutumia backend \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Hairuhusiwi kutumia utaratibu wa uthibitishaji \"%s\"", + "Unsatisfied backend parameters" : "Vigezo vya mandharinyuma ambavyo havijaridhika", + "Unsatisfied authentication mechanism parameters" : "Vigezo vya utaratibu wa uthibitishaji ambavyo havijaridhika", + "Insufficient data: %s" : " Data hazitoshi: %s", + "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Hifadhi iliyo na kitambulisho \"%d\" haiwezi kuhaririwa na wasio wasimamizi", + "Access key" : " Ufunguo wa ufikiaji", + "Secret key" : " Ufunguo wa siri", + "Builtin" : "Builtin", + "None" : "Hakuna", + "OAuth2" : "OAuth2", + "Client ID" : "Kitambulisho cha mteja", + "Client secret" : "Siri ya mteja", + "OpenStack v2" : "OpenStack v2", + "Login" : "Ingia", + "Password" : "Nenosiri", + "Tenant name" : "Jina la mpangaji", + "Identity endpoint URL" : "URL ya mwisho wa kitambulisho", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Umiliki", + "Rackspace" : "Rackspace", + "API key" : "Ufunguo wa API", + "Global credentials" : " Vitambulisho vya kimataifa", + "Log-in credentials, save in database" : "Kitambulisho cha kuingia, hifadhi katika hifadhidata", + "Login and password" : "Ingia na nenosiri", + "Log-in credentials, save in session" : "Kitambulisho cha kuingia, hifadhi katika kipindi", + "Global credentials, manually entered" : "Vitambulisho vya kimataifa, vimeingizwa kwa mikono", + "Manually entered, store in database" : "Imeingizwa kwa mikono, hifadhi kwenye hifadhidata", + "RSA public key" : "Ufunguo wa umma wa RSA", + "Public key" : "Ufunguo wa umma", + "RSA private key" : "Ufunguo wa kibinafsi wa RSA", + "Private key" : " Ufunguo wa kibinafsi", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Ufalme chaguo-msingi wa Kerberos, chaguomsingi kuwa \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Njia ya Apache ya tikiti ya Kerberos", + "Kerberos ticket" : "Tikiti za Kerberos", + "Amazon S3" : "Amazon S3", + "Bucket" : " Ndoo", + "Hostname" : "Jina la mwenyeji", + "Port" : "Port", + "Region" : "Kanda", + "Storage Class" : " Daraja la Uhifadhi", + "Enable SSL" : "Washa SSL", + "Enable Path Style" : "Washa Mtindo wa Njia", + "Legacy (v2) authentication" : "Uthibitishaji wa urithi (v2).", + "Enable multipart copy" : "Washa nakala za sehemu nyingi", + "SSE-C encryption key" : " Kitufe cha usimbaji cha SSE-C", + "WebDAV" : "WavutiDAV", + "URL" : "Url", + "Remote subfolder" : " Folda ndogo ya mbali", + "Secure https://" : "Salama https://", + "FTP" : "FTP", + "Host" : "Host", + "Secure ftps://" : "Salama ftps://", + "Local" : "Kawaida", + "Location" : "Mahali/eneo", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "Mzizi", + "SFTP with secret key login" : " SFTP na kuingia kwa ufunguo wa siri", + "SMB/CIFS" : "SMB/CIFS", + "Share" : "Shirikisha", + "Show hidden files" : "Onesha mafaili yaliyofichwa", + "Case sensitive file system" : "Mfumo wa faili nyeti wa kesi", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Kuizima kutaruhusu kutumia mfumo wa faili usiojali kesi, lakini inakuja na adhabu ya utendakazi", + "Verify ACL access when listing files" : "Thibitisha ufikiaji wa ACL unapoorodhesha faili", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Angalia ACL za kila faili au folda ndani ya saraka ili kuchuja vitu ambapo akaunti haina ruhusa ya kusoma, inakuja na adhabu ya utendaji.", + "Timeout" : "Muda umeisha", + "SMB/CIFS using OC login" : "SMB/CIFS kwa kutumia kuingia kwa OC", + "Login as share" : "Ingia kama kushiriki", + "OpenStack Object Storage" : "Hifadhi ya Kitu cha OpenStack", + "Service name" : "Jina la huduma", + "Request timeout (seconds)" : "Muda wa ombi umeisha (sekunde)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Usaidizi wa cURL katika PHP haujawezeshwa au kusakinishwa. Upachikaji wa %s hauwezekani. Tafadhali muulize msimamizi wa mfumo wako aisakinishe.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Usaidizi wa FTP katika PHP haujawezeshwa au kusakinishwa. Upachikaji wa %s hauwezekani. Tafadhali muulize msimamizi wa mfumo wako aisakinishe.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" haijasakinishwa. Haiwezekani kupachika %2$s. Tafadhali muulize msimamizi wako wa mfumo aisakinishe.", + "External storage" : " Hifadhi ya nje", + "External storage support" : "Usaidizi wa hifadhi ya nje", + "Adds basic external storage support" : "Huongeza usaidizi msingi wa hifadhi ya nje", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Programu hii inawawezesha wasimamizi kusanidi miunganisho kwa watoa huduma wa hifadhi ya nje, kama vile seva za FTP, maduka ya vitu vya S3 au SWIFT, seva nyingine za Nextcloud, seva za WebDAV, na zaidi. Utawala unaweza kuchagua aina gani za hifadhi zitakazowezesha na unaweza kuweka maeneo haya ya hifadhi kwa akaunti, kikundi au mfumo mzima. Watumiaji wataona folda mpya ikitokea kwenye saraka yao ya mizizi ya Nextcloud, ambayo wanaweza kufikia na kutumia kama folda nyingine yoyote ya Nextcloud. Hifadhi ya nje pia inaruhusu watu kushiriki faili zilizohifadhiwa katika maeneo haya ya nje. Katika matukio haya, sifa za mmiliki wa faili hutumiwa wakati mpokeaji anaomba faili kutoka kwa hifadhi ya nje, na hivyo kuhakikisha kwamba mpokeaji anaweza kufikia faili iliyoshirikiwa.\n\nHifadhi ya nje inaweza kusanidiwa kwa kutumia GUI au kwenye mstari wa amri. Chaguo hili la pili hutoa usimamizi kwa urahisi zaidi wa kusanidi viweke vingi vya hifadhi ya nje na kuweka vipaumbele vya kupachika. Maelezo zaidi yanapatikana katika uhifadhi wa nje wa hati za GUI na uhifadhi wa nje wa hati za Faili ya Usanidi.", + "Confirm" : "Thibitisha", + "Storage credentials" : "Vitambulisho vya uhifadhi", + "To access the storage, you need to provide the authentication credentials." : "Ili kufikia hifadhi, unahitaji kutoa vitambulisho vya uthibitishaji.", + "Enter the storage login" : "Ingiza kuingia kwa hifadhi", + "Enter the storage password" : "Ingiza nenosiri la kuhifadhi", + "Unable to update this external storage config. {statusMessage}" : "Imeshindwa kusasisha usanidi huu wa hifadhi ya nje.{statusMessage}", + "New configuration successfully saved" : "Mpangilio mpya umehifadhiwa", + "Enter missing credentials" : "Weka vitambulisho ambavyo havipo", + "Credentials successfully set" : "Vitambulisho vimewekwa kikamilifu", + "Error while setting credentials: {error}" : "Hitilafu wakati wa kuweka vitambulisho: {error}", + "Checking storage …" : "Inakagua hifadhi...", + "There was an error with this external storage." : "Kulikuwa na hitilafu na hifadhi hii ya nje.", + "We were unable to check the external storage {basename}" : " Hatukuweza kuangalia hifadhi ya nje {basename}", + "Examine this faulty external storage configuration" : "Chunguza usanidi huu wa hifadhi ya nje wenye hitilafu", + "Open in Files" : "Fungua ndani ya faili", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Kulikuwa na hitilafu na hifadhi hii ya nje. Je, ungependa kukagua usanidi huu wa sehemu ya kupachika kwenye ukurasa wa mipangilio?", + "External mount error" : "Hitilafu ya kupachika nje", + "List of external storage." : "Orodha ya hifadhi za nje", + "There is no external storage configured. You can configure them in your Personal settings." : "Hakuna hifadhi ya nje iliyosanidiwa. Unaweza kuzisanidi katika mipangilio yako ya Kibinafsi.", + "There is no external storage configured and you don't have the permission to configure them." : "Hakuna hifadhi ya nje iliyosanidiwa na huna ruhusa ya kuzisanidi.", + "No external storage" : "Hakuna hifadhi ya nje", + "Storage type" : "Aina za hifadhi", + "Unknown" : "Haijulikani", + "Scope" : "Upeo", + "Personal" : "Binafsi", + "System" : "Mfumo", + "Type to select account or group." : "Andika ili kuchagua akaunti au kikundi.", + "(Group)" : "(Kundi)", + "Compatibility with Mac NFD encoding (slow)" : "Utangamano na usimbaji wa Mac NFD (polepole)", + "Enable encryption" : "Washa usimbaji fiche", + "Enable previews" : "Washa uhakiki", + "Enable sharing" : "Washa ushiriki", + "Check for changes" : "Angalia mabadiliko", + "Never" : "Kamwe", + "Once every direct access" : "Mara moja kila ufikiaji wa moja kwa moja", + "Read only" : "Kusoma pekee", + "Disconnect" : "Tenganisha", + "Unknown backend: {backendName}" : "Mandhari ya nyuma yasiyojulikana: {backendName}", + "Admin defined" : "Msimamizi amefafanuliwa", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Ukaguzi wa hali otomatiki umezimwa kutokana na idadi kubwa ya hifadhi zilizosanidiwa, bofya ili kuangalia hali", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Je, una uhakika unataka kukata hifadhi hii ya nje? Itafanya hifadhi isipatikane katika Nextcloud na itasababisha kufutwa kwa faili na folda hizi kwenye kiteja chochote cha kusawazisha ambacho kimeunganishwa kwa sasa lakini hakitafuta faili na folda zozote kwenye hifadhi ya nje yenyewe.", + "Delete storage?" : "Futa hifadhi?", + "Click to recheck the configuration" : "Bofya ili kuangalia upya usanidi", + "Saved" : "Imehifadhiwa", + "Saving …" : "Inahifadhi...", + "Save" : "Hifadhi", + "Failed to save global credentials" : " Imeshindwa kuhifadhi vitambulisho vya kimataifa", + "Failed to save global credentials: {message}" : "Imeshindwa kuhifadhi vitambulisho vya kimataifa: {message}", + "No external storage configured or you don't have the permission to configure them" : "Hakuna hifadhi ya nje iliyosanidiwa au huna ruhusa ya kuzisanidi", + "Open documentation" : "Fungua nyaraka", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Hifadhi ya nje hukuwezesha kupachika huduma na vifaa vya hifadhi ya nje kama vifaa vya pili vya uhifadhi vya Nextcloud. Unaweza pia kuruhusu watu kupachika huduma zao za hifadhi ya nje", + "Folder name" : "Jina la kisanduku", + "Authentication" : "Uthibitisho", + "Configuration" : "Usanidi", + "Available for" : "Inapatikani kwa", + "Add storage" : "Ongeza hifadhi", + "All people" : "Watu wote", + "Advanced settings" : "Mipangilio ya kiwangi cha juu", + "Allow people to mount external storage" : "Ruhusu watu kupachika hifadhi ya nje", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Vitambulisho vya kimataifa vinaweza kutumika kuthibitisha kwa hifadhi nyingi za nje ambazo zina vitambulisho sawa.", + "Error configuring OAuth1" : "Hitilafu katika kusanidi OAuth1", + "Please provide a valid app key and secret." : "Tafadhali toa ufunguo halali wa programu na siri.", + "OAuth1" : "OAuth1", + "App key" : "Kitufe cha programu", + "App secret" : "Siri ya programu" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/files_external/l10n/th.js b/apps/files_external/l10n/th.js index 2729daba79a..2892a876040 100644 --- a/apps/files_external/l10n/th.js +++ b/apps/files_external/l10n/th.js @@ -2,21 +2,9 @@ OC.L10N.register( "files_external", { "Grant access" : "อนุญาตให้เข้าถึง", - "Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1", - "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง", "Error configuring OAuth2" : "ข้อผิดพลาดในการกำหนดค่า OAuth2", "Generate keys" : "สร้างคีย์", "Error generating key pair" : "ข้อผิดพลาดในการสร้างคู่ของคีย์", - "Enable encryption" : "เปิดใช้งานการเข้ารหัส", - "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง", - "Enable sharing" : "เปิดให้สามารถแชร์ได้", - "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง", - "Never" : "ไม่เคย", - "Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง", - "Admin defined" : "กำหนดโดยผู้ดูแลระบบ", - "Saved" : "บันทึกแล้ว", - "Saving …" : "กำลังบันทึก …", - "Save" : "บันทึก", "Invalid backend or authentication mechanism class" : "แบ็กเอนด์หรือกลไกการรับรองความถูกต้องไม่ถูกต้อง", "Invalid mount point" : "จุดเชื่อมต่อไม่ถูกต้อง", "Objectstore forbidden" : "ที่เก็บวัตถุไม่ได้รับอนุญาต", @@ -31,9 +19,6 @@ OC.L10N.register( "Secret key" : "คีย์ลับ", "Builtin" : "ในตัว", "None" : "ไม่มี", - "OAuth1" : "OAuth1", - "App key" : "คีย์แอป", - "App secret" : "ข้อมูลลับแอป", "OAuth2" : "OAuth2", "Client ID" : "รหัสไคลเอ็นต์", "Client secret" : "ข้อมูลลับไคลเอ็นต์", @@ -73,12 +58,23 @@ OC.L10N.register( "Service name" : "ชื่อบริการ", "Request timeout (seconds)" : "หมดเวลาคำขอ (วินาที)", "External storage" : "พื้นที่จัดเก็บข้อมูลภายนอก", + "Confirm" : "ยืนยัน", "External mount error" : "ข้อผิดพลาดจุดเชื่อมต่อภายนอก", "Storage type" : "ชนิดการจัดเก็บข้อมูล", "Unknown" : "ไม่ทราบ", "Scope" : "ขอบเขต", "Personal" : "ส่วนตัว", "System" : "ระบบ", + "Enable encryption" : "เปิดใช้งานการเข้ารหัส", + "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง", + "Enable sharing" : "เปิดให้สามารถแชร์ได้", + "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง", + "Never" : "ไม่เคย", + "Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง", + "Admin defined" : "กำหนดโดยผู้ดูแลระบบ", + "Saved" : "บันทึกแล้ว", + "Saving …" : "กำลังบันทึก …", + "Save" : "บันทึก", "Open documentation" : "เปิดเอกสารประกอบ", "Folder name" : "ชื่อโฟลเดอร์", "Authentication" : "การรับรองความถูกต้อง", @@ -86,19 +82,10 @@ OC.L10N.register( "Available for" : "ใช้ได้สำหรับ", "Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล", "Advanced settings" : "การตั้งค่าขั้นสูง", - "Empty response from the server" : "การตอบสนองจากเซิร์ฟเวอร์ว่างเปล่า", - "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", - "There was an error with message: " : "มีข้อผิดพลาดพร้อมข้อความ:", - "external-storage" : "external-storage", - "Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับจุดเชื่อมต่อ {mount} ", - "Username" : "ชื่อผู้ใช้", - "Credentials saved" : "บันทึกข้อมูลประจำตัวแล้ว", - "Credentials saving failed" : "บันทึกข้อมูลประจำตัวล้มเหลว", - "Credentials required" : "จำเป็นต้องระบุข้อมูลประจำตัว", - "Username and password" : "ชื่อผู้ใช้และรหัสผ่าน", - "User entered, store in database" : "ใส่โดยผู้ใช้ จัดเก็บในฐานข้อมูล", - "Username as share" : "ชื่อผู้ใช้ที่แชร์", - "Name" : "ชื่อ", - "Allow users to mount external storage" : "อนุญาตให้ผู้ใช้ติดตั้งการจัดเก็บข้อมูลภายนอก" + "Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1", + "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง", + "OAuth1" : "OAuth1", + "App key" : "คีย์แอป", + "App secret" : "ข้อมูลลับแอป" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/th.json b/apps/files_external/l10n/th.json index 45877eace95..fce0e67ca0e 100644 --- a/apps/files_external/l10n/th.json +++ b/apps/files_external/l10n/th.json @@ -1,20 +1,8 @@ { "translations": { "Grant access" : "อนุญาตให้เข้าถึง", - "Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1", - "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง", "Error configuring OAuth2" : "ข้อผิดพลาดในการกำหนดค่า OAuth2", "Generate keys" : "สร้างคีย์", "Error generating key pair" : "ข้อผิดพลาดในการสร้างคู่ของคีย์", - "Enable encryption" : "เปิดใช้งานการเข้ารหัส", - "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง", - "Enable sharing" : "เปิดให้สามารถแชร์ได้", - "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง", - "Never" : "ไม่เคย", - "Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง", - "Admin defined" : "กำหนดโดยผู้ดูแลระบบ", - "Saved" : "บันทึกแล้ว", - "Saving …" : "กำลังบันทึก …", - "Save" : "บันทึก", "Invalid backend or authentication mechanism class" : "แบ็กเอนด์หรือกลไกการรับรองความถูกต้องไม่ถูกต้อง", "Invalid mount point" : "จุดเชื่อมต่อไม่ถูกต้อง", "Objectstore forbidden" : "ที่เก็บวัตถุไม่ได้รับอนุญาต", @@ -29,9 +17,6 @@ "Secret key" : "คีย์ลับ", "Builtin" : "ในตัว", "None" : "ไม่มี", - "OAuth1" : "OAuth1", - "App key" : "คีย์แอป", - "App secret" : "ข้อมูลลับแอป", "OAuth2" : "OAuth2", "Client ID" : "รหัสไคลเอ็นต์", "Client secret" : "ข้อมูลลับไคลเอ็นต์", @@ -71,12 +56,23 @@ "Service name" : "ชื่อบริการ", "Request timeout (seconds)" : "หมดเวลาคำขอ (วินาที)", "External storage" : "พื้นที่จัดเก็บข้อมูลภายนอก", + "Confirm" : "ยืนยัน", "External mount error" : "ข้อผิดพลาดจุดเชื่อมต่อภายนอก", "Storage type" : "ชนิดการจัดเก็บข้อมูล", "Unknown" : "ไม่ทราบ", "Scope" : "ขอบเขต", "Personal" : "ส่วนตัว", "System" : "ระบบ", + "Enable encryption" : "เปิดใช้งานการเข้ารหัส", + "Enable previews" : "เปิดใช้งานการแสดงตัวอย่าง", + "Enable sharing" : "เปิดให้สามารถแชร์ได้", + "Check for changes" : "ตรวจสอบการเปลี่ยนแปลง", + "Never" : "ไม่เคย", + "Once every direct access" : "ทุก ๆ การเข้าถึงโดยตรง", + "Admin defined" : "กำหนดโดยผู้ดูแลระบบ", + "Saved" : "บันทึกแล้ว", + "Saving …" : "กำลังบันทึก …", + "Save" : "บันทึก", "Open documentation" : "เปิดเอกสารประกอบ", "Folder name" : "ชื่อโฟลเดอร์", "Authentication" : "การรับรองความถูกต้อง", @@ -84,19 +80,10 @@ "Available for" : "ใช้ได้สำหรับ", "Add storage" : "เพิ่มพื้นที่จัดเก็บข้อมูล", "Advanced settings" : "การตั้งค่าขั้นสูง", - "Empty response from the server" : "การตอบสนองจากเซิร์ฟเวอร์ว่างเปล่า", - "Couldn't get the list of external mount points: {type}" : "ไม่สามารถรับรายชื่อของจุดเชื่อมต่อภายนอก: {type}", - "There was an error with message: " : "มีข้อผิดพลาดพร้อมข้อความ:", - "external-storage" : "external-storage", - "Please enter the credentials for the {mount} mount" : "กรุณากรอกข้อมูลประจำตัวสำหรับจุดเชื่อมต่อ {mount} ", - "Username" : "ชื่อผู้ใช้", - "Credentials saved" : "บันทึกข้อมูลประจำตัวแล้ว", - "Credentials saving failed" : "บันทึกข้อมูลประจำตัวล้มเหลว", - "Credentials required" : "จำเป็นต้องระบุข้อมูลประจำตัว", - "Username and password" : "ชื่อผู้ใช้และรหัสผ่าน", - "User entered, store in database" : "ใส่โดยผู้ใช้ จัดเก็บในฐานข้อมูล", - "Username as share" : "ชื่อผู้ใช้ที่แชร์", - "Name" : "ชื่อ", - "Allow users to mount external storage" : "อนุญาตให้ผู้ใช้ติดตั้งการจัดเก็บข้อมูลภายนอก" + "Error configuring OAuth1" : "ข้อผิดพลาดในการกำหนดค่า OAuth1", + "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอปให้ถูกต้อง", + "OAuth1" : "OAuth1", + "App key" : "คีย์แอป", + "App secret" : "ข้อมูลลับแอป" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 26916e8adb2..c0ff5638635 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -2,38 +2,20 @@ OC.L10N.register( "files_external", { "Grant access" : "Erişim ver", - "Error configuring OAuth1" : "OAuth1 yapılandırması sorunu", - "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", "Error configuring OAuth2" : "OAuth2 yapılandırması sorunu", "Generate keys" : "Anahtarları oluştur", "Error generating key pair" : "Anahtar çifti oluşturulurken sorun çıktı", - "Type to select account or group." : "Hesap ya da grup seçmek için yazın. ", - "(Group)" : "(Grup)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", - "Enable encryption" : "Şifreleme kullanılsın", - "Enable previews" : "Ön izlemeler kullanılsın", - "Enable sharing" : "Paylaşım kullanılsın", - "Check for changes" : "Değişiklikleri denetle", - "Never" : "Asla", - "Once every direct access" : "Her doğrudan erişimde bir kez", - "Read only" : "Salt okunur", - "Disconnect" : "Bağlantıyı kes", - "Admin defined" : "Yönetici ayarlamış", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi devre dışı bırakıldı. Durumu denetlemek için tıklayın", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", - "Delete storage?" : "Depolama silinsin mi?", - "Saved" : "Kaydedildi", - "Saving …" : "Kaydediliyor …", - "Save" : "Kaydet", + "You are not logged in" : "Oturum açmamışsınız", + "Permission denied" : "İzin reddedildi", "Forbidden to manage local mounts" : "Yerel bağlantıları yönetme izni verilmemiş", "Storage with ID \"%d\" not found" : "\"%d\" kimlikli depolama bulunamadı", "Invalid backend or authentication mechanism class" : "Arka yüz ya da kimlik doğrulama yöntemi sınıfı geçersiz", "Invalid mount point" : "Bağlama noktası geçersiz", "Objectstore forbidden" : "Nesne deposuna erişim kapalı", - "Invalid storage backend \"%s\"" : "\"%s\" depolama arka ucu geçersiz", - "Not permitted to use backend \"%s\"" : "\"%s\" arka ucunun kullanımına izin verilmiyor", + "Invalid storage backend \"%s\"" : "\"%s\" depolama arka yüzü geçersiz", + "Not permitted to use backend \"%s\"" : "\"%s\" arka yüzünün kullanılmasına izin verilmiyor", "Not permitted to use authentication mechanism \"%s\"" : "\"%s\" kimlik doğrulama mekanizmasına izin verilmiyor", - "Unsatisfied backend parameters" : "Arka uç parametreleri yetersiz", + "Unsatisfied backend parameters" : "Arka yüz parametreleri yetersiz", "Unsatisfied authentication mechanism parameters" : "Kimlik doğrulama yöntemi parametreleri yetersiz", "Insufficient data: %s" : "Veriler yetersiz: %s", "%s" : "%s", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Gizli anahtar", "Builtin" : "Yerleşik", "None" : "Hiçbiri", - "OAuth1" : "OAuth1", - "App key" : "Uygulama anahtarı", - "App secret" : "Uygulama parolası", "OAuth2" : "OAuth2", "Client ID" : "İstemci kimliği", "Client secret" : "İstemci parolası", @@ -52,7 +31,7 @@ OC.L10N.register( "Login" : "Kullanıcı adı", "Password" : "Parola", "Tenant name" : "Kiracı adı", - "Identity endpoint URL" : "Kimlik arka uç noktası adresi", + "Identity endpoint URL" : "Kimlik arka yüzü noktası adresi", "OpenStack v3" : "OpenStack v3", "Domain" : "Etki alanı", "Rackspace" : "Rackspace", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Yol biçemi kullanılsın", "Legacy (v2) authentication" : "Eski (v2) kimlik doğrulama", "Enable multipart copy" : "Çok parçalı kopya kullanılsın", + "SSE-C encryption key" : "SSE-C şifreleme anahtarı", "WebDAV" : "WebDAV", "URL" : "Adres", "Remote subfolder" : "Uzak alt klasör", @@ -106,16 +86,24 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack nesne depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticinizle görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Kurulması için lütfen BT yöneticiniz ile görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Kurulması için lütfen BT yöneticiniz ile görüşün.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticiniz ile görüşün.", "External storage" : "Dış depolama", "External storage support" : "Dış depolama desteği", "Adds basic external storage support" : "Temel dış depolama desteği ekler", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.", - "Enter missing credentials" : "Eksik kimlik doğrulama bilgilerini yazın", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, kullanıma almak istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", + "Confirm" : "Onayla", + "Storage credentials" : "Depolama alanı kimlik doğrulama bilgileri", + "To access the storage, you need to provide the authentication credentials." : "Depolama alanına erişebilmek için kimlik doğrulama bilgilerini vermeniz gerekir.", + "Enter the storage login" : "Depolama alanı kullanıcı adını yazın", + "Enter the storage password" : "Depolama alanı parolasını yazın", "Unable to update this external storage config. {statusMessage}" : "Bu dış depolama birimi yapılandırması güncellenemedi. {statusMessage}", "New configuration successfully saved" : "Yeni yapılandırma kaydedildi", + "Enter missing credentials" : "Eksik kimlik doğrulama bilgilerini yazın", + "Credentials successfully set" : "Kimlik doğrulama bilgileri ayarlandı", + "Error while setting credentials: {error}" : "Kimlik doğrulama bilgileri ayarlanırken sorun çıktı: {error}", + "Checking storage …" : "Depolama alanı denetleniyor…", "There was an error with this external storage." : " Bu dış depolama birimi ile ilgili bir sorun çıktı.", "We were unable to check the external storage {basename}" : "{basename} dış depolama birimi denetlenemedi", "Examine this faulty external storage configuration" : "Bu sorunlu dış depolama birimi yapılandırmasını gözden geçirin", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "Kapsam", "Personal" : "Kişisel", "System" : "Sistem", + "Type to select account or group." : "Hesap ya da grup seçmek için yazın. ", + "(Group)" : "(Grup)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", + "Enable encryption" : "Şifreleme kullanılsın", + "Enable previews" : "Ön izlemeler kullanılsın", + "Enable sharing" : "Paylaşım kullanılsın", + "Check for changes" : "Değişiklikleri denetle", + "Never" : "Asla", + "Once every direct access" : "Her doğrudan erişimde bir kez", + "Read only" : "Salt okunur", + "Disconnect" : "Bağlantıyı kes", + "Unknown backend: {backendName}" : "Arka yüz bilinmiyor: {backendName}", + "Admin defined" : "Yönetici ayarlamış", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama alanı yapılandırılmış olduğundan otomatik durum denetimi kapatıldı. Durumu denetlemek için tıklayın", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", + "Delete storage?" : "Depolama silinsin mi?", + "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", + "Saved" : "Kaydedildi", + "Saving …" : "Kaydediliyor …", + "Save" : "Kaydet", + "Failed to save global credentials" : "Genel kimlik doğrulama bilgileri kaydedilemedi", + "Failed to save global credentials: {message}" : "Genel kimlik doğrulama bilgileri kaydedilemedi: {message}", "No external storage configured or you don't have the permission to configure them" : "Bir dış depolama yapılandırılmamış ya da yapılandırma izniniz yok", "Open documentation" : "Belgeleri aç", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kişilerin kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "Kimlik doğrulama", "Configuration" : "Yapılandırma", "Available for" : "Kullanabilecekler", - "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", "Add storage" : "Depolama ekle", "All people" : "Tüm kişiler", "Advanced settings" : "Gelişmiş ayarlar", "Allow people to mount external storage" : "Kişiler dış depolama bağlayabilsin", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Aynı kimlik doğrulama bilgilerini kullanan bir çok dış depolama aygıtına genel kimlik doğrulama bilgileri ile erişebilirsiniz.", - "Type to select user or group." : "Kullanıcı ya da grup seçmek için yazın. ", - "Empty response from the server" : "Sunucudan boş yanıt alındı", - "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", - "Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}", - "There was an error with message: " : "Şu ileti ile bir sorun çıktı:", - "external-storage" : "dış depolama", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", - "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın", - "Username" : "Kullanıcı adı", - "Credentials saved" : "Kimlik doğrulama bilgileri kaydedildi", - "Credentials saving failed" : "Kimlik doğrulama bilgileri kaydedilemedi", - "Credentials required" : "Kimlik doğrulama bilgileri gerekli", - "Storage with ID \"%d\" is not user editable" : "\"%d\" kimlikli depolama kullanıcı tarafından düzenlenebilir değil", - "Username and password" : "Kullanıcı adı ve parola", - "Global credentials, user entered" : "Genel kimlik doğrulama bilgileri, kullanıcı tarafından yazılmış", - "User entered, store in database" : "Kullanıcı yazdı, veri tabanında sakla", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Bu seçeneği kapatmak, büyük/küçük harfe duyarlı olmayan bir dosya sisteminin kullanılmasını sağlar, ancak başarım kaybına yol açar", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Tüm dosya ve klasörler için Erişim Denetimi Listesine bakılarak kullanıcının okuma yetkisi olmayan ögeler görüntülenmez. Bu özelliğin kullanılması başarımı düşürür", - "Username as share" : "Paylaşım olarak kullanıcı adı", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.", - "Name" : "Ad", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kullanıcıların kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.", - "All users" : "Tüm kullanıcılar", - "Allow users to mount external storage" : "Kullanıcılar dış depolama bağlayabilsin" + "Error configuring OAuth1" : "OAuth1 yapılandırması sorunu", + "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", + "OAuth1" : "OAuth1", + "App key" : "Uygulama anahtarı", + "App secret" : "Uygulama parolası" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index e6cd963b1be..3fbec4d0823 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -1,37 +1,19 @@ { "translations": { "Grant access" : "Erişim ver", - "Error configuring OAuth1" : "OAuth1 yapılandırması sorunu", - "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", "Error configuring OAuth2" : "OAuth2 yapılandırması sorunu", "Generate keys" : "Anahtarları oluştur", "Error generating key pair" : "Anahtar çifti oluşturulurken sorun çıktı", - "Type to select account or group." : "Hesap ya da grup seçmek için yazın. ", - "(Group)" : "(Grup)", - "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", - "Enable encryption" : "Şifreleme kullanılsın", - "Enable previews" : "Ön izlemeler kullanılsın", - "Enable sharing" : "Paylaşım kullanılsın", - "Check for changes" : "Değişiklikleri denetle", - "Never" : "Asla", - "Once every direct access" : "Her doğrudan erişimde bir kez", - "Read only" : "Salt okunur", - "Disconnect" : "Bağlantıyı kes", - "Admin defined" : "Yönetici ayarlamış", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi devre dışı bırakıldı. Durumu denetlemek için tıklayın", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", - "Delete storage?" : "Depolama silinsin mi?", - "Saved" : "Kaydedildi", - "Saving …" : "Kaydediliyor …", - "Save" : "Kaydet", + "You are not logged in" : "Oturum açmamışsınız", + "Permission denied" : "İzin reddedildi", "Forbidden to manage local mounts" : "Yerel bağlantıları yönetme izni verilmemiş", "Storage with ID \"%d\" not found" : "\"%d\" kimlikli depolama bulunamadı", "Invalid backend or authentication mechanism class" : "Arka yüz ya da kimlik doğrulama yöntemi sınıfı geçersiz", "Invalid mount point" : "Bağlama noktası geçersiz", "Objectstore forbidden" : "Nesne deposuna erişim kapalı", - "Invalid storage backend \"%s\"" : "\"%s\" depolama arka ucu geçersiz", - "Not permitted to use backend \"%s\"" : "\"%s\" arka ucunun kullanımına izin verilmiyor", + "Invalid storage backend \"%s\"" : "\"%s\" depolama arka yüzü geçersiz", + "Not permitted to use backend \"%s\"" : "\"%s\" arka yüzünün kullanılmasına izin verilmiyor", "Not permitted to use authentication mechanism \"%s\"" : "\"%s\" kimlik doğrulama mekanizmasına izin verilmiyor", - "Unsatisfied backend parameters" : "Arka uç parametreleri yetersiz", + "Unsatisfied backend parameters" : "Arka yüz parametreleri yetersiz", "Unsatisfied authentication mechanism parameters" : "Kimlik doğrulama yöntemi parametreleri yetersiz", "Insufficient data: %s" : "Veriler yetersiz: %s", "%s" : "%s", @@ -40,9 +22,6 @@ "Secret key" : "Gizli anahtar", "Builtin" : "Yerleşik", "None" : "Hiçbiri", - "OAuth1" : "OAuth1", - "App key" : "Uygulama anahtarı", - "App secret" : "Uygulama parolası", "OAuth2" : "OAuth2", "Client ID" : "İstemci kimliği", "Client secret" : "İstemci parolası", @@ -50,7 +29,7 @@ "Login" : "Kullanıcı adı", "Password" : "Parola", "Tenant name" : "Kiracı adı", - "Identity endpoint URL" : "Kimlik arka uç noktası adresi", + "Identity endpoint URL" : "Kimlik arka yüzü noktası adresi", "OpenStack v3" : "OpenStack v3", "Domain" : "Etki alanı", "Rackspace" : "Rackspace", @@ -78,6 +57,7 @@ "Enable Path Style" : "Yol biçemi kullanılsın", "Legacy (v2) authentication" : "Eski (v2) kimlik doğrulama", "Enable multipart copy" : "Çok parçalı kopya kullanılsın", + "SSE-C encryption key" : "SSE-C şifreleme anahtarı", "WebDAV" : "WebDAV", "URL" : "Adres", "Remote subfolder" : "Uzak alt klasör", @@ -104,16 +84,24 @@ "OpenStack Object Storage" : "OpenStack nesne depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurması için BT yöneticinizle görüşün.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticinizle görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Kurulması için lütfen BT yöneticiniz ile görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Kurulması için lütfen BT yöneticiniz ile görüşün.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticiniz ile görüşün.", "External storage" : "Dış depolama", "External storage support" : "Dış depolama desteği", "Adds basic external storage support" : "Temel dış depolama desteği ekler", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.", - "Enter missing credentials" : "Eksik kimlik doğrulama bilgilerini yazın", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, kullanıma almak istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", + "Confirm" : "Onayla", + "Storage credentials" : "Depolama alanı kimlik doğrulama bilgileri", + "To access the storage, you need to provide the authentication credentials." : "Depolama alanına erişebilmek için kimlik doğrulama bilgilerini vermeniz gerekir.", + "Enter the storage login" : "Depolama alanı kullanıcı adını yazın", + "Enter the storage password" : "Depolama alanı parolasını yazın", "Unable to update this external storage config. {statusMessage}" : "Bu dış depolama birimi yapılandırması güncellenemedi. {statusMessage}", "New configuration successfully saved" : "Yeni yapılandırma kaydedildi", + "Enter missing credentials" : "Eksik kimlik doğrulama bilgilerini yazın", + "Credentials successfully set" : "Kimlik doğrulama bilgileri ayarlandı", + "Error while setting credentials: {error}" : "Kimlik doğrulama bilgileri ayarlanırken sorun çıktı: {error}", + "Checking storage …" : "Depolama alanı denetleniyor…", "There was an error with this external storage." : " Bu dış depolama birimi ile ilgili bir sorun çıktı.", "We were unable to check the external storage {basename}" : "{basename} dış depolama birimi denetlenemedi", "Examine this faulty external storage configuration" : "Bu sorunlu dış depolama birimi yapılandırmasını gözden geçirin", @@ -129,6 +117,28 @@ "Scope" : "Kapsam", "Personal" : "Kişisel", "System" : "Sistem", + "Type to select account or group." : "Hesap ya da grup seçmek için yazın. ", + "(Group)" : "(Grup)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD şifrelemesiyle uyumlu (yavaş)", + "Enable encryption" : "Şifreleme kullanılsın", + "Enable previews" : "Ön izlemeler kullanılsın", + "Enable sharing" : "Paylaşım kullanılsın", + "Check for changes" : "Değişiklikleri denetle", + "Never" : "Asla", + "Once every direct access" : "Her doğrudan erişimde bir kez", + "Read only" : "Salt okunur", + "Disconnect" : "Bağlantıyı kes", + "Unknown backend: {backendName}" : "Arka yüz bilinmiyor: {backendName}", + "Admin defined" : "Yönetici ayarlamış", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama alanı yapılandırılmış olduğundan otomatik durum denetimi kapatıldı. Durumu denetlemek için tıklayın", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", + "Delete storage?" : "Depolama silinsin mi?", + "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", + "Saved" : "Kaydedildi", + "Saving …" : "Kaydediliyor …", + "Save" : "Kaydet", + "Failed to save global credentials" : "Genel kimlik doğrulama bilgileri kaydedilemedi", + "Failed to save global credentials: {message}" : "Genel kimlik doğrulama bilgileri kaydedilemedi: {message}", "No external storage configured or you don't have the permission to configure them" : "Bir dış depolama yapılandırılmamış ya da yapılandırma izniniz yok", "Open documentation" : "Belgeleri aç", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kişilerin kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.", @@ -136,36 +146,15 @@ "Authentication" : "Kimlik doğrulama", "Configuration" : "Yapılandırma", "Available for" : "Kullanabilecekler", - "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", "Add storage" : "Depolama ekle", "All people" : "Tüm kişiler", "Advanced settings" : "Gelişmiş ayarlar", "Allow people to mount external storage" : "Kişiler dış depolama bağlayabilsin", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Aynı kimlik doğrulama bilgilerini kullanan bir çok dış depolama aygıtına genel kimlik doğrulama bilgileri ile erişebilirsiniz.", - "Type to select user or group." : "Kullanıcı ya da grup seçmek için yazın. ", - "Empty response from the server" : "Sunucudan boş yanıt alındı", - "Couldn't access. Please log out and in again to activate this mount point" : "Erişilemedi. Lütfen bu bağlama noktasını etkinleştirmek için oturumunuzu kapatıp yeniden açın", - "Couldn't get the information from the remote server: {code} {type}" : "Uzak sunucudan bilgi alınamadı: {code} {type}", - "Couldn't get the list of external mount points: {type}" : "Dış bağlama noktalarının listesi alınamadı: {type}", - "There was an error with message: " : "Şu ileti ile bir sorun çıktı:", - "external-storage" : "dış depolama", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Windows ağ sürücüsü bağlama nokta listesi alınamadı: Sunucudan boş yanıt alındı", - "Please enter the credentials for the {mount} mount" : "{mount} bağlaması için kimlik doğrulama bilgilerini yazın", - "Username" : "Kullanıcı adı", - "Credentials saved" : "Kimlik doğrulama bilgileri kaydedildi", - "Credentials saving failed" : "Kimlik doğrulama bilgileri kaydedilemedi", - "Credentials required" : "Kimlik doğrulama bilgileri gerekli", - "Storage with ID \"%d\" is not user editable" : "\"%d\" kimlikli depolama kullanıcı tarafından düzenlenebilir değil", - "Username and password" : "Kullanıcı adı ve parola", - "Global credentials, user entered" : "Genel kimlik doğrulama bilgileri, kullanıcı tarafından yazılmış", - "User entered, store in database" : "Kullanıcı yazdı, veri tabanında sakla", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Bu seçeneği kapatmak, büyük/küçük harfe duyarlı olmayan bir dosya sisteminin kullanılmasını sağlar, ancak başarım kaybına yol açar", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Tüm dosya ve klasörler için Erişim Denetimi Listesine bakılarak kullanıcının okuma yetkisi olmayan ögeler görüntülenmez. Bu özelliğin kullanılması başarımı düşürür", - "Username as share" : "Paylaşım olarak kullanıcı adı", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler etkinleştirmek istedikleri depolama türünü seçebilir ve bu depolama konumlarını belirli bir kullanıcı, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolamayı kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama, bu konumlarda depolanan dosyaların kullanıcılar tarafından paylaşılmasına da izin verir. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama yapılandırması grafik arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, uzman kullanıcılar için toplu dış depolama bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama grafik arayüzü belgeleri ile dış depolama yapılandırma dosyası belgelerine bakabilirsiniz.", - "Name" : "Ad", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Dış depolama özelliği, dış depolama hizmet ve aygıtlarını ikincil Nextcloud depolama aygıtları olarak ekleyebilmenizi sağlar. Ayrıca kullanıcıların kendi dış depolama aygıtlarını ekleyebilmesine izin verebilirsiniz.", - "All users" : "Tüm kullanıcılar", - "Allow users to mount external storage" : "Kullanıcılar dış depolama bağlayabilsin" + "Error configuring OAuth1" : "OAuth1 yapılandırması sorunu", + "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", + "OAuth1" : "OAuth1", + "App key" : "Uygulama anahtarı", + "App secret" : "Uygulama parolası" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ug.js b/apps/files_external/l10n/ug.js index 3b9d121ccde..9270474a9a2 100644 --- a/apps/files_external/l10n/ug.js +++ b/apps/files_external/l10n/ug.js @@ -1,22 +1,154 @@ OC.L10N.register( "files_external", { - "External storage" : "سىرتقى ساقلىغۇچ", - "Personal" : "شەخسىي", - "Username" : "ئىشلەتكۈچى ئاتى", - "Password" : "ئىم", - "Save" : "ساقلا", + "Grant access" : "زىيارەت قىلىش ھوقۇقى", + "Error configuring OAuth2" : "OAuth2 نى تەڭشەشتە خاتالىق", + "Generate keys" : "ئاچقۇچ ھاسىل قىلىڭ", + "Error generating key pair" : "ئاچقۇچ جۈپ ھاسىل قىلىشتا خاتالىق", + "Forbidden to manage local mounts" : "يەرلىك تاغ تىزمىلىرىنى باشقۇرۇش چەكلەنگەن", + "Storage with ID \"%d\" not found" : "ID \"% d\" بىلەن ساقلاش تېپىلمىدى", + "Invalid backend or authentication mechanism class" : "ئىناۋەتسىز ئارقا بەلگە ياكى دەلىللەش مېخانىزمى سىنىپى", + "Invalid mount point" : "ئىناۋەتسىز ئورنىتىش نۇقتىسى", + "Objectstore forbidden" : "ئوبيېكت دۇكىنى چەكلەنگەن", + "Invalid storage backend \"%s\"" : "ئىناۋەتسىز ساقلاش ئارقا كۆرۈنۈشى \"% s\"", + "Not permitted to use backend \"%s\"" : "ئارقا سەھنىدىكى \"% s\" نى ئىشلىتىشكە بولمايدۇ", + "Not permitted to use authentication mechanism \"%s\"" : "دەلىللەش مېخانىزمىنى «% s» ئىشلىتىشكە بولمايدۇ", + "Unsatisfied backend parameters" : "رازى بولمىغان ئارقا پارامېتىرلار", + "Unsatisfied authentication mechanism parameters" : "رازى بولمىغان دەلىللەش مېخانىزمى پارامېتىرلىرى", + "Insufficient data: %s" : "سانلىق مەلۇمات يېتەرلىك ئەمەس:% s", + "%s" : "% s", + "Storage with ID \"%d\" is not editable by non-admins" : "كىملىك «% d» بولغان ساقلاشنى باشقۇرغۇچى بولمىغانلار تەھرىرلىمەيدۇ", + "Access key" : "زىيارەت ئاچقۇچى", + "Secret key" : "مەخپىي ئاچقۇچ", + "Builtin" : "Builtin", "None" : "يوق", + "OAuth2" : "OAuth2", + "Client ID" : "Client ID", + "Client secret" : "Client secret", + "OpenStack v2" : "OpenStack v2", + "Login" : "تىزىمغا كىرىڭ", + "Password" : "ئىم", + "Tenant name" : "ئىجارە ئالغۇچىنىڭ ئىسمى", + "Identity endpoint URL" : "كىملىك ئاخىرقى ئادرېسى", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Domain", + "Rackspace" : "Rackspace", + "API key" : "API ئاچقۇچى", + "Global credentials" : "يەر شارى كىنىشكىسى", + "Log-in credentials, save in database" : "تىزىمغا كىرىش كىنىشكىسى ، سانداندا ساقلاڭ", + "Login and password" : "كىرىش ۋە پارول", + "Log-in credentials, save in session" : "تىزىمغا كىرىش كىنىشكىسى ، يىغىندا ساقلاڭ", + "Global credentials, manually entered" : "يەر شارى كىنىشكىسى ، قولدا كىرگۈزۈلگەن", + "Manually entered, store in database" : "قولدا كىرگۈزۈڭ ، سانداندا ساقلاڭ", + "RSA public key" : "RSA ئاممىۋى ئاچقۇچ", + "Public key" : "ئاممىۋى ئاچقۇچ", + "RSA private key" : "RSA شەخسىي ئاچقۇچ", + "Private key" : "شەخسىي ئاچقۇچ", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos سۈكۈتتىكى رايون ، «WORKGROUP» غا سۈكۈت قىلىدۇ", + "Kerberos ticket Apache mode" : "Kerberos بېلەت Apache ھالىتى", + "Kerberos ticket" : "Kerberos بېلەت", + "Amazon S3" : "Amazon S3", + "Bucket" : "چېلەك", + "Hostname" : "ساھىبجامال", "Port" : "ئېغىز", + "Region" : "رايون", + "Storage Class" : "ساقلاش سىنىپى", + "Enable SSL" : "SSL نى قوزغىتىڭ", + "Enable Path Style" : "يول ئۇسلۇبىنى قوزغىتىڭ", + "Legacy (v2) authentication" : "مىراس (v2) دەلىللەش", + "Enable multipart copy" : "كۆپ بۆلەك كۆپەيتىشنى قوزغىتىڭ", "WebDAV" : "WebDAV", "URL" : "URL", + "Remote subfolder" : "Remote subfolder", + "Secure https://" : "بىخەتەر https: //", + "FTP" : "FTP", "Host" : "باش ئاپپارات", + "Secure ftps://" : "بىخەتەر ftps: //", + "Local" : "يەرلىك", "Location" : "ئورنى", - "ownCloud" : "ownCloud", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "يىلتىز", + "SFTP with secret key login" : "مەخپىي ئاچقۇچ بىلەن SFTP", + "SMB/CIFS" : "SMB / CIFS", "Share" : "ھەمبەھىر", - "Name" : "ئاتى", + "Show hidden files" : "يوشۇرۇن ھۆججەتلەرنى كۆرسەت", + "Case sensitive file system" : "دېلو سەزگۈر ھۆججەت سىستېمىسى", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "ئۇنى چەكلىسىڭىز دېلو سەزگۈر ھۆججەت سىستېمىسىنى ئىشلىتىشكە يول قويىدۇ ، ئەمما ئىقتىدار جازاسى بىلەن كېلىدۇ", + "Verify ACL access when listing files" : "ھۆججەتلەرنى تىزىشتا ACL زىيارىتىنى تەكشۈرۈپ بېقىڭ", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "مۇندەرىجە ئىچىدىكى ھەر بىر ھۆججەت ياكى ھۆججەت قىسقۇچنىڭ ACL لىرىنى تەكشۈرۈپ ، ھېسابات ئوقۇش ھوقۇقى بولمىغان ، ئىقتىدار جازاسى بېرىلگەن تۈرلەرنى سۈزۈڭ.", + "Timeout" : "ۋاقىت", + "SMB/CIFS using OC login" : "OC كىرىش ئارقىلىق SMB / CIFS", + "Login as share" : "ھەمبەھىر سۈپىتىدە كىرىڭ", + "OpenStack Object Storage" : "OpenStack ئوبيېكت ساقلاش", + "Service name" : "مۇلازىمەت ئىسمى", + "Request timeout (seconds)" : "تەلەپ قىلىش ۋاقتى (سېكۇنت)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP دىكى CURL قوللاش ئىقتىدارى قوزغىتىلمىغان ياكى ئورنىتىلمىغان. % S نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP دىكى FTP قوللاش ئىقتىدارى قوزغىتىلمىغان ياكى ئورنىتىلمىغان. % S نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1 $ s\" ئورنىتىلمىدى. %2 $ s نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "External storage" : "سىرتقى ساقلىغۇچ", + "External storage support" : "سىرتقى ساقلاش ياردىمى", + "Adds basic external storage support" : "ئاساسىي تاشقى ساقلاش قوللايدۇ", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "بۇ پروگرامما باشقۇرغۇچىنىڭ FTP مۇلازىمېتىرى ، S3 ياكى SWIFT ئوبيېكت دۇكىنى ، باشقا Nextcloud مۇلازىمېتىرلىرى ، WebDAV مۇلازىمېتىرلىرى قاتارلىق سىرتقى ساقلاش تەمىنلىگۈچىلەرگە ئۇلىنىشىنى تەڭشىيەلەيدۇ. باشقۇرۇش قايسى خىل ساقلاش بوشلۇقىنى قوزغىتالايدىغانلىقىنى تاللايدۇ ۋە بۇ ساقلاش ئورۇنلىرىنى ھېسابات ، گۇرۇپپا ياكى پۈتكۈل سىستېمىغا ئورنىتالايدۇ. ئىشلەتكۈچىلەر يىلتىزى Nextcloud مۇندەرىجىسىدە يېڭى ھۆججەت قىسقۇچنىڭ كۆرۈنگەنلىكىنى كۆرىدۇ ، ئۇلار باشقا Nextcloud ھۆججەت قىسقۇچلىرىغا ئوخشاش زىيارەت قىلالايدۇ ۋە ئىشلىتەلەيدۇ. تاشقى ساقلاش يەنە كىشىلەرنىڭ بۇ سىرتقى ئورۇنلاردا ساقلانغان ھۆججەتلەرنى ھەمبەھىرلىشىگە يول قويىدۇ. بۇ خىل ئەھۋال ئاستىدا ، ھۆججەت ئىگىسىنىڭ كىنىشكىسى تاپشۇرۇۋالغۇچى ھۆججەتنى سىرتقى ساقلاشتىن تەلەپ قىلغاندا ئىشلىتىلىدۇ ، بۇ ئارقىلىق تاپشۇرۇۋالغۇچىنىڭ ئورتاق ھۆججەتنى زىيارەت قىلىشىغا كاپالەتلىك قىلىدۇ.\n\nسىرتقى ساقلاشنى GUI ياكى بۇيرۇق قۇرىدا تەڭشەشكە بولىدۇ. بۇ ئىككىنچى تاللاش كۆپ مىقداردىكى تاشقى ساقلاش ئامبىرىنى تەڭشەش ۋە قاچىلاشنىڭ مۇھىم نۇقتىلىرىنى تەڭشەش ئۈچۈن باشقۇرۇشنى تېخىمۇ جانلىق تەمىنلەيدۇ. تېخىمۇ كۆپ ئۇچۇرلار سىرتقى ساقلاش GUI ھۆججىتى ۋە سىرتقى ساقلاش سەپلىمە ھۆججەت ھۆججىتىدە بار.", + "Confirm" : "جەزملەشتۈرۈڭ", + "Storage credentials" : "ساقلاش كىنىشكىسى", + "To access the storage, you need to provide the authentication credentials." : "ساقلاشقا ئېرىشىش ئۈچۈن ، دەلىللەش كىنىشكىسى بىلەن تەمىنلىشىڭىز كېرەك.", + "Enter the storage login" : "ساقلاش تىزىملىكىنى كىرگۈزۈڭ", + "Enter the storage password" : "ساقلاش پارولىنى كىرگۈزۈڭ", + "Unable to update this external storage config. {statusMessage}" : "بۇ سىرتقى ساقلاش سەپلىمىسىنى يېڭىلاشقا ئامالسىز. {statusMessage}", + "New configuration successfully saved" : "يېڭى سەپلىمە مۇۋەپپەقىيەتلىك ساقلاندى", + "Enter missing credentials" : "يوقاپ كەتكەن كىنىشكىنى كىرگۈزۈڭ", + "There was an error with this external storage." : "بۇ سىرتقى ساقلاشتا خاتالىق كۆرۈلدى.", + "We were unable to check the external storage {basename}" : "بىز سىرتقى ساقلاش {basename} نى تەكشۈرەلمىدۇق", + "Examine this faulty external storage configuration" : "بۇ خاتا سىرتقى ساقلاش سەپلىمىسىنى تەكشۈرۈپ بېقىڭ", + "Open in Files" : "ھۆججەتلەرنى ئېچىڭ", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "بۇ سىرتقى ساقلاشتا خاتالىق كۆرۈلدى. تەڭشەك بېتىدىكى بۇ قاچىلاش نۇقتىسىنى تەڭشەشنى خالامسىز؟", + "External mount error" : "سىرتقى ئورنىتىش خاتالىقى", + "List of external storage." : "سىرتقى ساقلاش تىزىملىكى.", + "There is no external storage configured. You can configure them in your Personal settings." : "سىرتقى ساقلاش بوشلۇقى سەپلەنمىگەن. ئۇلارنى شەخسىي تەڭشەكلىرىڭىزدە تەڭشىيەلەيسىز.", + "There is no external storage configured and you don't have the permission to configure them." : "سىرتقى ساقلاش بوشلۇقى سەپلەنمىگەن ، ئۇلارنى تەڭشەش ھوقۇقىڭىز يوق.", + "No external storage" : "سىرتقى ساقلاش بوشلۇقى يوق", + "Storage type" : "ساقلاش تىپى", + "Unknown" : "نامەلۇم", + "Scope" : "دائىرىسى", + "Personal" : "شەخسىي", + "System" : "سىستېما", + "Type to select account or group." : "ھېسابات ياكى گۇرۇپپا تاللاش ئۈچۈن كىرگۈزۈڭ.", + "(Group)" : "(گۇرۇپپا)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD كودلاش ئىقتىدارى (ئاستا)", + "Enable encryption" : "شىفىرلاشنى قوزغىتىڭ", + "Enable previews" : "ئالدىن كۆرۈشنى قوزغىتىڭ", + "Enable sharing" : "ئورتاقلىشىشنى قوزغىتىڭ", + "Check for changes" : "ئۆزگەرتىشلەرنى تەكشۈرۈڭ", + "Never" : "ھەرگىز بولمايدۇ", + "Once every direct access" : "ھەر قېتىم بىۋاسىتە زىيارەت قىلىش", + "Read only" : "پەقەت ئوقۇڭ", + "Disconnect" : "ئۈزۈڭ", + "Unknown backend: {backendName}" : "نامەلۇم ئارقا بەت: end backendName}", + "Admin defined" : "باشقۇرغۇچى ئېنىقلاندى", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تەڭشەلگەن دۇكانلارنىڭ كۆپلىكى سەۋەبىدىن ئاپتوماتىك ھالەتنى تەكشۈرۈش چەكلەنگەن ، ھالەتنى تەكشۈرۈش ئۈچۈن چېكىڭ", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "بۇ سىرتقى ساقلاشنى ئۈزۈۋېتىشنى خالامسىز؟ ئۇ Nextcloud دا ساقلاشنى ئىشلەتكىلى بولمايدۇ ھەمدە بۇ ھۆججەت ۋە ھۆججەت قىسقۇچلارنىڭ نۆۋەتتىكى ئۇلانغان ، ئەمما سىرتقى ساقلاشنىڭ ئۆزىدىكى ھۆججەت ۋە ھۆججەت قىسقۇچلارنى ئۆچۈرمەيدۇ.", + "Delete storage?" : "ساقلاشنى ئۆچۈرەمسىز؟", + "Click to recheck the configuration" : "بۇ تەڭشەكنى قايتا تەكشۈرۈڭ", + "Saved" : "ساقلاندى", + "Saving …" : "Saving…", + "Save" : "ساقلا", + "No external storage configured or you don't have the permission to configure them" : "ھېچقانداق سىرتقى ساقلىغۇچ سەپلەنمىگەن ياكى ئۇلارنى تەڭشەش ھوقۇقىڭىز يوق", + "Open documentation" : "ھۆججەتلەرنى ئېچىڭ", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "سىرتقى ساقلاش ئارقىلىق سىرتقى ساقلاش مۇلازىمىتى ۋە ئۈسكۈنىلىرىنى كېيىنكى Nextcloud ساقلاش ئۈسكۈنىسى قىلىپ ئورنىتالايسىز. سىز يەنە كىشىلەرنىڭ ئۆزىنىڭ سىرتقى ساقلاش مۇلازىمىتىنى ئورنىتىشىغا يول قويسىڭىز بولىدۇ.", "Folder name" : "قىسقۇچ ئاتى", + "Authentication" : "دەلىللەش", "Configuration" : "سەپلىمە", - "Delete" : "ئۆچۈر" + "Available for" : "ئىشلەتكىلى بولىدۇ", + "Add storage" : "ساقلاشنى قوشۇڭ", + "All people" : "بارلىق كىشىلەر", + "Advanced settings" : "ئىلغار تەڭشەكلەر", + "Allow people to mount external storage" : "كىشىلەرنىڭ سىرتقى ساقلىغۇچ ئورنىتىشىغا يول قويۇڭ", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "يەرشارى كىنىشكىسى ئوخشاش سالاھىيەتكە ئىگە كۆپ خىل تاشقى دۇكانلار بىلەن دەلىللەشكە ئىشلىتىلىدۇ.", + "Error configuring OAuth1" : "OAuth1 نى تەڭشەشتە خاتالىق", + "Please provide a valid app key and secret." : "ئۈنۈملۈك ئەپ ئاچقۇچى ۋە مەخپىي تەمىنلەڭ.", + "OAuth1" : "OAuth1", + "App key" : "ئەپ ئاچقۇچى", + "App secret" : "ئەپ مەخپىيىتى" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/ug.json b/apps/files_external/l10n/ug.json index 7238c7f85ba..e15bb1f6cbe 100644 --- a/apps/files_external/l10n/ug.json +++ b/apps/files_external/l10n/ug.json @@ -1,20 +1,152 @@ { "translations": { - "External storage" : "سىرتقى ساقلىغۇچ", - "Personal" : "شەخسىي", - "Username" : "ئىشلەتكۈچى ئاتى", - "Password" : "ئىم", - "Save" : "ساقلا", + "Grant access" : "زىيارەت قىلىش ھوقۇقى", + "Error configuring OAuth2" : "OAuth2 نى تەڭشەشتە خاتالىق", + "Generate keys" : "ئاچقۇچ ھاسىل قىلىڭ", + "Error generating key pair" : "ئاچقۇچ جۈپ ھاسىل قىلىشتا خاتالىق", + "Forbidden to manage local mounts" : "يەرلىك تاغ تىزمىلىرىنى باشقۇرۇش چەكلەنگەن", + "Storage with ID \"%d\" not found" : "ID \"% d\" بىلەن ساقلاش تېپىلمىدى", + "Invalid backend or authentication mechanism class" : "ئىناۋەتسىز ئارقا بەلگە ياكى دەلىللەش مېخانىزمى سىنىپى", + "Invalid mount point" : "ئىناۋەتسىز ئورنىتىش نۇقتىسى", + "Objectstore forbidden" : "ئوبيېكت دۇكىنى چەكلەنگەن", + "Invalid storage backend \"%s\"" : "ئىناۋەتسىز ساقلاش ئارقا كۆرۈنۈشى \"% s\"", + "Not permitted to use backend \"%s\"" : "ئارقا سەھنىدىكى \"% s\" نى ئىشلىتىشكە بولمايدۇ", + "Not permitted to use authentication mechanism \"%s\"" : "دەلىللەش مېخانىزمىنى «% s» ئىشلىتىشكە بولمايدۇ", + "Unsatisfied backend parameters" : "رازى بولمىغان ئارقا پارامېتىرلار", + "Unsatisfied authentication mechanism parameters" : "رازى بولمىغان دەلىللەش مېخانىزمى پارامېتىرلىرى", + "Insufficient data: %s" : "سانلىق مەلۇمات يېتەرلىك ئەمەس:% s", + "%s" : "% s", + "Storage with ID \"%d\" is not editable by non-admins" : "كىملىك «% d» بولغان ساقلاشنى باشقۇرغۇچى بولمىغانلار تەھرىرلىمەيدۇ", + "Access key" : "زىيارەت ئاچقۇچى", + "Secret key" : "مەخپىي ئاچقۇچ", + "Builtin" : "Builtin", "None" : "يوق", + "OAuth2" : "OAuth2", + "Client ID" : "Client ID", + "Client secret" : "Client secret", + "OpenStack v2" : "OpenStack v2", + "Login" : "تىزىمغا كىرىڭ", + "Password" : "ئىم", + "Tenant name" : "ئىجارە ئالغۇچىنىڭ ئىسمى", + "Identity endpoint URL" : "كىملىك ئاخىرقى ئادرېسى", + "OpenStack v3" : "OpenStack v3", + "Domain" : "Domain", + "Rackspace" : "Rackspace", + "API key" : "API ئاچقۇچى", + "Global credentials" : "يەر شارى كىنىشكىسى", + "Log-in credentials, save in database" : "تىزىمغا كىرىش كىنىشكىسى ، سانداندا ساقلاڭ", + "Login and password" : "كىرىش ۋە پارول", + "Log-in credentials, save in session" : "تىزىمغا كىرىش كىنىشكىسى ، يىغىندا ساقلاڭ", + "Global credentials, manually entered" : "يەر شارى كىنىشكىسى ، قولدا كىرگۈزۈلگەن", + "Manually entered, store in database" : "قولدا كىرگۈزۈڭ ، سانداندا ساقلاڭ", + "RSA public key" : "RSA ئاممىۋى ئاچقۇچ", + "Public key" : "ئاممىۋى ئاچقۇچ", + "RSA private key" : "RSA شەخسىي ئاچقۇچ", + "Private key" : "شەخسىي ئاچقۇچ", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos سۈكۈتتىكى رايون ، «WORKGROUP» غا سۈكۈت قىلىدۇ", + "Kerberos ticket Apache mode" : "Kerberos بېلەت Apache ھالىتى", + "Kerberos ticket" : "Kerberos بېلەت", + "Amazon S3" : "Amazon S3", + "Bucket" : "چېلەك", + "Hostname" : "ساھىبجامال", "Port" : "ئېغىز", + "Region" : "رايون", + "Storage Class" : "ساقلاش سىنىپى", + "Enable SSL" : "SSL نى قوزغىتىڭ", + "Enable Path Style" : "يول ئۇسلۇبىنى قوزغىتىڭ", + "Legacy (v2) authentication" : "مىراس (v2) دەلىللەش", + "Enable multipart copy" : "كۆپ بۆلەك كۆپەيتىشنى قوزغىتىڭ", "WebDAV" : "WebDAV", "URL" : "URL", + "Remote subfolder" : "Remote subfolder", + "Secure https://" : "بىخەتەر https: //", + "FTP" : "FTP", "Host" : "باش ئاپپارات", + "Secure ftps://" : "بىخەتەر ftps: //", + "Local" : "يەرلىك", "Location" : "ئورنى", - "ownCloud" : "ownCloud", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "يىلتىز", + "SFTP with secret key login" : "مەخپىي ئاچقۇچ بىلەن SFTP", + "SMB/CIFS" : "SMB / CIFS", "Share" : "ھەمبەھىر", - "Name" : "ئاتى", + "Show hidden files" : "يوشۇرۇن ھۆججەتلەرنى كۆرسەت", + "Case sensitive file system" : "دېلو سەزگۈر ھۆججەت سىستېمىسى", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "ئۇنى چەكلىسىڭىز دېلو سەزگۈر ھۆججەت سىستېمىسىنى ئىشلىتىشكە يول قويىدۇ ، ئەمما ئىقتىدار جازاسى بىلەن كېلىدۇ", + "Verify ACL access when listing files" : "ھۆججەتلەرنى تىزىشتا ACL زىيارىتىنى تەكشۈرۈپ بېقىڭ", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "مۇندەرىجە ئىچىدىكى ھەر بىر ھۆججەت ياكى ھۆججەت قىسقۇچنىڭ ACL لىرىنى تەكشۈرۈپ ، ھېسابات ئوقۇش ھوقۇقى بولمىغان ، ئىقتىدار جازاسى بېرىلگەن تۈرلەرنى سۈزۈڭ.", + "Timeout" : "ۋاقىت", + "SMB/CIFS using OC login" : "OC كىرىش ئارقىلىق SMB / CIFS", + "Login as share" : "ھەمبەھىر سۈپىتىدە كىرىڭ", + "OpenStack Object Storage" : "OpenStack ئوبيېكت ساقلاش", + "Service name" : "مۇلازىمەت ئىسمى", + "Request timeout (seconds)" : "تەلەپ قىلىش ۋاقتى (سېكۇنت)", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP دىكى CURL قوللاش ئىقتىدارى قوزغىتىلمىغان ياكى ئورنىتىلمىغان. % S نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP دىكى FTP قوللاش ئىقتىدارى قوزغىتىلمىغان ياكى ئورنىتىلمىغان. % S نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1 $ s\" ئورنىتىلمىدى. %2 $ s نى ئورنىتىش مۇمكىن ئەمەس. ئۇنى قاچىلاشنى سىستېما باشقۇرغۇچىڭىزدىن سوراڭ.", + "External storage" : "سىرتقى ساقلىغۇچ", + "External storage support" : "سىرتقى ساقلاش ياردىمى", + "Adds basic external storage support" : "ئاساسىي تاشقى ساقلاش قوللايدۇ", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "بۇ پروگرامما باشقۇرغۇچىنىڭ FTP مۇلازىمېتىرى ، S3 ياكى SWIFT ئوبيېكت دۇكىنى ، باشقا Nextcloud مۇلازىمېتىرلىرى ، WebDAV مۇلازىمېتىرلىرى قاتارلىق سىرتقى ساقلاش تەمىنلىگۈچىلەرگە ئۇلىنىشىنى تەڭشىيەلەيدۇ. باشقۇرۇش قايسى خىل ساقلاش بوشلۇقىنى قوزغىتالايدىغانلىقىنى تاللايدۇ ۋە بۇ ساقلاش ئورۇنلىرىنى ھېسابات ، گۇرۇپپا ياكى پۈتكۈل سىستېمىغا ئورنىتالايدۇ. ئىشلەتكۈچىلەر يىلتىزى Nextcloud مۇندەرىجىسىدە يېڭى ھۆججەت قىسقۇچنىڭ كۆرۈنگەنلىكىنى كۆرىدۇ ، ئۇلار باشقا Nextcloud ھۆججەت قىسقۇچلىرىغا ئوخشاش زىيارەت قىلالايدۇ ۋە ئىشلىتەلەيدۇ. تاشقى ساقلاش يەنە كىشىلەرنىڭ بۇ سىرتقى ئورۇنلاردا ساقلانغان ھۆججەتلەرنى ھەمبەھىرلىشىگە يول قويىدۇ. بۇ خىل ئەھۋال ئاستىدا ، ھۆججەت ئىگىسىنىڭ كىنىشكىسى تاپشۇرۇۋالغۇچى ھۆججەتنى سىرتقى ساقلاشتىن تەلەپ قىلغاندا ئىشلىتىلىدۇ ، بۇ ئارقىلىق تاپشۇرۇۋالغۇچىنىڭ ئورتاق ھۆججەتنى زىيارەت قىلىشىغا كاپالەتلىك قىلىدۇ.\n\nسىرتقى ساقلاشنى GUI ياكى بۇيرۇق قۇرىدا تەڭشەشكە بولىدۇ. بۇ ئىككىنچى تاللاش كۆپ مىقداردىكى تاشقى ساقلاش ئامبىرىنى تەڭشەش ۋە قاچىلاشنىڭ مۇھىم نۇقتىلىرىنى تەڭشەش ئۈچۈن باشقۇرۇشنى تېخىمۇ جانلىق تەمىنلەيدۇ. تېخىمۇ كۆپ ئۇچۇرلار سىرتقى ساقلاش GUI ھۆججىتى ۋە سىرتقى ساقلاش سەپلىمە ھۆججەت ھۆججىتىدە بار.", + "Confirm" : "جەزملەشتۈرۈڭ", + "Storage credentials" : "ساقلاش كىنىشكىسى", + "To access the storage, you need to provide the authentication credentials." : "ساقلاشقا ئېرىشىش ئۈچۈن ، دەلىللەش كىنىشكىسى بىلەن تەمىنلىشىڭىز كېرەك.", + "Enter the storage login" : "ساقلاش تىزىملىكىنى كىرگۈزۈڭ", + "Enter the storage password" : "ساقلاش پارولىنى كىرگۈزۈڭ", + "Unable to update this external storage config. {statusMessage}" : "بۇ سىرتقى ساقلاش سەپلىمىسىنى يېڭىلاشقا ئامالسىز. {statusMessage}", + "New configuration successfully saved" : "يېڭى سەپلىمە مۇۋەپپەقىيەتلىك ساقلاندى", + "Enter missing credentials" : "يوقاپ كەتكەن كىنىشكىنى كىرگۈزۈڭ", + "There was an error with this external storage." : "بۇ سىرتقى ساقلاشتا خاتالىق كۆرۈلدى.", + "We were unable to check the external storage {basename}" : "بىز سىرتقى ساقلاش {basename} نى تەكشۈرەلمىدۇق", + "Examine this faulty external storage configuration" : "بۇ خاتا سىرتقى ساقلاش سەپلىمىسىنى تەكشۈرۈپ بېقىڭ", + "Open in Files" : "ھۆججەتلەرنى ئېچىڭ", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "بۇ سىرتقى ساقلاشتا خاتالىق كۆرۈلدى. تەڭشەك بېتىدىكى بۇ قاچىلاش نۇقتىسىنى تەڭشەشنى خالامسىز؟", + "External mount error" : "سىرتقى ئورنىتىش خاتالىقى", + "List of external storage." : "سىرتقى ساقلاش تىزىملىكى.", + "There is no external storage configured. You can configure them in your Personal settings." : "سىرتقى ساقلاش بوشلۇقى سەپلەنمىگەن. ئۇلارنى شەخسىي تەڭشەكلىرىڭىزدە تەڭشىيەلەيسىز.", + "There is no external storage configured and you don't have the permission to configure them." : "سىرتقى ساقلاش بوشلۇقى سەپلەنمىگەن ، ئۇلارنى تەڭشەش ھوقۇقىڭىز يوق.", + "No external storage" : "سىرتقى ساقلاش بوشلۇقى يوق", + "Storage type" : "ساقلاش تىپى", + "Unknown" : "نامەلۇم", + "Scope" : "دائىرىسى", + "Personal" : "شەخسىي", + "System" : "سىستېما", + "Type to select account or group." : "ھېسابات ياكى گۇرۇپپا تاللاش ئۈچۈن كىرگۈزۈڭ.", + "(Group)" : "(گۇرۇپپا)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD كودلاش ئىقتىدارى (ئاستا)", + "Enable encryption" : "شىفىرلاشنى قوزغىتىڭ", + "Enable previews" : "ئالدىن كۆرۈشنى قوزغىتىڭ", + "Enable sharing" : "ئورتاقلىشىشنى قوزغىتىڭ", + "Check for changes" : "ئۆزگەرتىشلەرنى تەكشۈرۈڭ", + "Never" : "ھەرگىز بولمايدۇ", + "Once every direct access" : "ھەر قېتىم بىۋاسىتە زىيارەت قىلىش", + "Read only" : "پەقەت ئوقۇڭ", + "Disconnect" : "ئۈزۈڭ", + "Unknown backend: {backendName}" : "نامەلۇم ئارقا بەت: end backendName}", + "Admin defined" : "باشقۇرغۇچى ئېنىقلاندى", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "تەڭشەلگەن دۇكانلارنىڭ كۆپلىكى سەۋەبىدىن ئاپتوماتىك ھالەتنى تەكشۈرۈش چەكلەنگەن ، ھالەتنى تەكشۈرۈش ئۈچۈن چېكىڭ", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "بۇ سىرتقى ساقلاشنى ئۈزۈۋېتىشنى خالامسىز؟ ئۇ Nextcloud دا ساقلاشنى ئىشلەتكىلى بولمايدۇ ھەمدە بۇ ھۆججەت ۋە ھۆججەت قىسقۇچلارنىڭ نۆۋەتتىكى ئۇلانغان ، ئەمما سىرتقى ساقلاشنىڭ ئۆزىدىكى ھۆججەت ۋە ھۆججەت قىسقۇچلارنى ئۆچۈرمەيدۇ.", + "Delete storage?" : "ساقلاشنى ئۆچۈرەمسىز؟", + "Click to recheck the configuration" : "بۇ تەڭشەكنى قايتا تەكشۈرۈڭ", + "Saved" : "ساقلاندى", + "Saving …" : "Saving…", + "Save" : "ساقلا", + "No external storage configured or you don't have the permission to configure them" : "ھېچقانداق سىرتقى ساقلىغۇچ سەپلەنمىگەن ياكى ئۇلارنى تەڭشەش ھوقۇقىڭىز يوق", + "Open documentation" : "ھۆججەتلەرنى ئېچىڭ", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "سىرتقى ساقلاش ئارقىلىق سىرتقى ساقلاش مۇلازىمىتى ۋە ئۈسكۈنىلىرىنى كېيىنكى Nextcloud ساقلاش ئۈسكۈنىسى قىلىپ ئورنىتالايسىز. سىز يەنە كىشىلەرنىڭ ئۆزىنىڭ سىرتقى ساقلاش مۇلازىمىتىنى ئورنىتىشىغا يول قويسىڭىز بولىدۇ.", "Folder name" : "قىسقۇچ ئاتى", + "Authentication" : "دەلىللەش", "Configuration" : "سەپلىمە", - "Delete" : "ئۆچۈر" -},"pluralForm" :"nplurals=1; plural=0;" + "Available for" : "ئىشلەتكىلى بولىدۇ", + "Add storage" : "ساقلاشنى قوشۇڭ", + "All people" : "بارلىق كىشىلەر", + "Advanced settings" : "ئىلغار تەڭشەكلەر", + "Allow people to mount external storage" : "كىشىلەرنىڭ سىرتقى ساقلىغۇچ ئورنىتىشىغا يول قويۇڭ", + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "يەرشارى كىنىشكىسى ئوخشاش سالاھىيەتكە ئىگە كۆپ خىل تاشقى دۇكانلار بىلەن دەلىللەشكە ئىشلىتىلىدۇ.", + "Error configuring OAuth1" : "OAuth1 نى تەڭشەشتە خاتالىق", + "Please provide a valid app key and secret." : "ئۈنۈملۈك ئەپ ئاچقۇچى ۋە مەخپىي تەمىنلەڭ.", + "OAuth1" : "OAuth1", + "App key" : "ئەپ ئاچقۇچى", + "App secret" : "ئەپ مەخپىيىتى" +},"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js index 54054cca386..8a0cfadb10a 100644 --- a/apps/files_external/l10n/uk.js +++ b/apps/files_external/l10n/uk.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "Дозволити доступ", - "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", - "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", "Error configuring OAuth2" : "Помилка налаштування OAuth2", "Generate keys" : "Створити ключі", "Error generating key pair" : "Помилка створення ключової пари", - "Type to select account or group." : "Обліковий запис або група.", - "(Group)" : "(група)", - "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", - "Enable encryption" : "Увімкнути шифрування", - "Enable previews" : "Увімкнути попередній перегляд", - "Enable sharing" : "Увімкнути спільний доступ", - "Check for changes" : "Перевірити на зміни", - "Never" : "Ніколи", - "Once every direct access" : "Один раз при кожному прямому доступі", - "Read only" : "Тільки читання", - "Disconnect" : "Від'єднати", - "Admin defined" : "Визначено адміністратором", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", - "Delete storage?" : "Вилучити сховище?", - "Saved" : "Збережено", - "Saving …" : "Збереження …", - "Save" : "Зберегти", + "You are not logged in" : "Ви не авторизувалися", + "Permission denied" : "Доступ заборонено", "Forbidden to manage local mounts" : "Заборонено керувати місцевими кріпленнями", "Storage with ID \"%d\" not found" : "Сховище з ідентифікатором \"%d\" не знайдено", "Invalid backend or authentication mechanism class" : "Недійсний бекенд серверу або клас методу авторизації", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "Пароль", "Builtin" : "Вбудовано", "None" : "Жоден", - "OAuth1" : "OAuth1", - "App key" : "Ключ застосунку", - "App secret" : "Секретний ключ застосунку", "OAuth2" : "OAuth2", "Client ID" : "Ідентифікатор клієнта", "Client secret" : "Ключ клієнта", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "Включити стиль шляху", "Legacy (v2) authentication" : "Застарілий метод авторизації (v2) ", "Enable multipart copy" : "Дозволити множинне копіювання", + "SSE-C encryption key" : "Ключ шифрування SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Віддалений підкаталог", @@ -99,6 +79,7 @@ OC.L10N.register( "Case sensitive file system" : "Файлова система, чутлива до регістру символів", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Перевірте ACL для кожного файлу або папки в каталозі, щоб відфільтрувати елементи, на які обліковий запис не має дозволів на читання, що призводить до зниження продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Login as share" : "Увійти під спільним доступом", @@ -111,9 +92,18 @@ OC.L10N.register( "External storage" : "Зовнішнє сховище", "External storage support" : "Підтримка зовнішнього сховища", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", - "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх сховищ, таких як FTP-сервери, сховища об'єктів S3 або SWIFT, інші сервери Nextcloud, WebDAV-сервери тощо. Адміністрація може вибирати, які типи сховищ увімкнути, і може монтувати ці сховища для облікового запису, групи або всієї системи. Користувачі побачать нову папку в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати її як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх сховищах. У цих випадках облікові дані власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач зможе отримати доступ до файлу, до якого надано спільний доступ.\n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу або командного рядка. Другий варіант надає адміністратору більше можливостей для налаштування масового монтування зовнішнього сховища і встановлення пріоритетів монтування. Докладнішу інформацію можна знайти у документації до графічного інтерфейсу зовнішнього сховища та документації до файлу конфігурації зовнішнього сховища.", + "Confirm" : "Підтвердити", + "Storage credentials" : "Облікові дані для зберігання", + "To access the storage, you need to provide the authentication credentials." : "Щоб отримати доступ до сховища, вам потрібно надати облікові дані для автентифікації.", + "Enter the storage login" : "Введіть логін до сховища", + "Enter the storage password" : "Введіть пароль до сховища", "Unable to update this external storage config. {statusMessage}" : "Не вдалося оновити конфігурацію цього зовнішнього сховища. {statusMessage}", "New configuration successfully saved" : "Нову конфігурацію успішно збережено", + "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "Credentials successfully set" : "Облікові дані успішно встановлено", + "Error while setting credentials: {error}" : "Помилка під час встановлення облікових даних: {error}", + "Checking storage …" : "Перевірка сховища ...", "There was an error with this external storage." : "З цим зовнішнім сховищем виникла помилка.", "We were unable to check the external storage {basename}" : "Нам не вдалося перевірити зовнішнє сховище {basename}", "Examine this faulty external storage configuration" : "Перевірте цю несправну конфігурацію зовнішнього сховища", @@ -129,42 +119,44 @@ OC.L10N.register( "Scope" : "Область", "Personal" : "Особисте", "System" : "Система", + "Type to select account or group." : "Обліковий запис або група.", + "(Group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", + "Enable encryption" : "Увімкнути шифрування", + "Enable previews" : "Увімкнути попередній перегляд", + "Enable sharing" : "Увімкнути спільний доступ", + "Check for changes" : "Перевірити на зміни", + "Never" : "Ніколи", + "Once every direct access" : "Один раз при кожному прямому доступі", + "Read only" : "Тільки читання", + "Disconnect" : "Від'єднати", + "Unknown backend: {backendName}" : "Невідомий бекенд: {backendName}", + "Admin defined" : "Визначено адміністратором", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", + "Delete storage?" : "Вилучити сховище?", + "Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань", + "Saved" : "Збережено", + "Saving …" : "Збереження …", + "Save" : "Зберегти", + "Failed to save global credentials" : "Не вдалося зберегти глобальні облікові дані", + "Failed to save global credentials: {message}" : "Не вдалося зберегти глобальні облікові дані: {повідомлення}", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Open documentation" : "Відкрити документацію", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Зовнішнє сховище дає змогу підключати зовнішні сервіси та пристрої для зберігання даних як вторинні пристрої Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні сховища.", "Folder name" : "Назва каталогу", "Authentication" : "Авторизація", "Configuration" : "Налаштування", "Available for" : "Доступний для", - "Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань", "Add storage" : "Додати сховище", "All people" : "Всі користувачі", "Advanced settings" : "Розширені", "Allow people to mount external storage" : "Дозволити користувачам під'єднувати зовнішні сховища даних", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Універсальні облікові дані можна використовувати для авторизації з кількома зовнішніми сховищами, які мають тотодні облікові дані.", - "Type to select user or group." : "Почніть друкувати, щоб вибрати користувача або групу.", - "Empty response from the server" : "Отримано порожню відповідь від сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не вдалося отримати доступ. Будь ласка, вийдіть із системи та знову увійдіть, щоб активувати цю точку монтування", - "Couldn't get the information from the remote server: {code} {type}" : "Не вдалося отримати інформацію з віддаленого сервера: {код} {тип}", - "Couldn't get the list of external mount points: {type}" : "Не вдалося отримати список зовнішніх точок підключення: {type}", - "There was an error with message: " : "Сповіщення про помилку:", - "external-storage" : "зовнішнє сховище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Неможливо отримати список точок монтування диску мережі Windows: отримано порожню відповідь від сервера", - "Please enter the credentials for the {mount} mount" : "Будь ласка, зазначте дані авторизації для монтування {mount}", - "Username" : "Ім'я користувача", - "Credentials saved" : "Дані авторизації збережено", - "Credentials saving failed" : "Помилка зі збереженням даних авторизації", - "Credentials required" : "Потрібно зазначити дані авторизації", - "Storage with ID \"%d\" is not user editable" : "У користувачів відсутній доступ на запис до сховища з ідентифікатором \"%d\"", - "Username and password" : "Ім'я користувача та пароль", - "Global credentials, user entered" : "Системні дані авторизації, зазначені користувачем", - "User entered, store in database" : "Зазначено користувачем, зберегти у базі даних", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи каталогу у каталозі верхнього рівня, щоб відфільтрувати елементи, до яких користувач не має прав доступу на читання, супроводжується погіршенням продуктивності", - "Username as share" : "Ім'я для відкритого доступу", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Цей застосунок дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать новий каталог, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-який інший каталог Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", - "Name" : "Ім'я", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Зовнішня пам’ять дає змогу підключати зовнішні служби зберігання та пристрої як додаткові пристрої зберігання даних Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні служби зберігання.", - "All users" : "Всі користувачі", - "Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища" + "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", + "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", + "OAuth1" : "OAuth1", + "App key" : "Ключ застосунку", + "App secret" : "Секретний ключ застосунку" }, "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);"); diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json index 6d6c3fd68f2..e16942fd081 100644 --- a/apps/files_external/l10n/uk.json +++ b/apps/files_external/l10n/uk.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "Дозволити доступ", - "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", - "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", "Error configuring OAuth2" : "Помилка налаштування OAuth2", "Generate keys" : "Створити ключі", "Error generating key pair" : "Помилка створення ключової пари", - "Type to select account or group." : "Обліковий запис або група.", - "(Group)" : "(група)", - "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", - "Enable encryption" : "Увімкнути шифрування", - "Enable previews" : "Увімкнути попередній перегляд", - "Enable sharing" : "Увімкнути спільний доступ", - "Check for changes" : "Перевірити на зміни", - "Never" : "Ніколи", - "Once every direct access" : "Один раз при кожному прямому доступі", - "Read only" : "Тільки читання", - "Disconnect" : "Від'єднати", - "Admin defined" : "Визначено адміністратором", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", - "Delete storage?" : "Вилучити сховище?", - "Saved" : "Збережено", - "Saving …" : "Збереження …", - "Save" : "Зберегти", + "You are not logged in" : "Ви не авторизувалися", + "Permission denied" : "Доступ заборонено", "Forbidden to manage local mounts" : "Заборонено керувати місцевими кріпленнями", "Storage with ID \"%d\" not found" : "Сховище з ідентифікатором \"%d\" не знайдено", "Invalid backend or authentication mechanism class" : "Недійсний бекенд серверу або клас методу авторизації", @@ -40,9 +22,6 @@ "Secret key" : "Пароль", "Builtin" : "Вбудовано", "None" : "Жоден", - "OAuth1" : "OAuth1", - "App key" : "Ключ застосунку", - "App secret" : "Секретний ключ застосунку", "OAuth2" : "OAuth2", "Client ID" : "Ідентифікатор клієнта", "Client secret" : "Ключ клієнта", @@ -78,6 +57,7 @@ "Enable Path Style" : "Включити стиль шляху", "Legacy (v2) authentication" : "Застарілий метод авторизації (v2) ", "Enable multipart copy" : "Дозволити множинне копіювання", + "SSE-C encryption key" : "Ключ шифрування SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Віддалений підкаталог", @@ -97,6 +77,7 @@ "Case sensitive file system" : "Файлова система, чутлива до регістру символів", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Перевірте ACL для кожного файлу або папки в каталозі, щоб відфільтрувати елементи, на які обліковий запис не має дозволів на читання, що призводить до зниження продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Login as share" : "Увійти під спільним доступом", @@ -109,9 +90,18 @@ "External storage" : "Зовнішнє сховище", "External storage support" : "Підтримка зовнішнього сховища", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", - "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх сховищ, таких як FTP-сервери, сховища об'єктів S3 або SWIFT, інші сервери Nextcloud, WebDAV-сервери тощо. Адміністрація може вибирати, які типи сховищ увімкнути, і може монтувати ці сховища для облікового запису, групи або всієї системи. Користувачі побачать нову папку в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати її як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх сховищах. У цих випадках облікові дані власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач зможе отримати доступ до файлу, до якого надано спільний доступ.\n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу або командного рядка. Другий варіант надає адміністратору більше можливостей для налаштування масового монтування зовнішнього сховища і встановлення пріоритетів монтування. Докладнішу інформацію можна знайти у документації до графічного інтерфейсу зовнішнього сховища та документації до файлу конфігурації зовнішнього сховища.", + "Confirm" : "Підтвердити", + "Storage credentials" : "Облікові дані для зберігання", + "To access the storage, you need to provide the authentication credentials." : "Щоб отримати доступ до сховища, вам потрібно надати облікові дані для автентифікації.", + "Enter the storage login" : "Введіть логін до сховища", + "Enter the storage password" : "Введіть пароль до сховища", "Unable to update this external storage config. {statusMessage}" : "Не вдалося оновити конфігурацію цього зовнішнього сховища. {statusMessage}", "New configuration successfully saved" : "Нову конфігурацію успішно збережено", + "Enter missing credentials" : "Зазначте відсутні дані авторизації", + "Credentials successfully set" : "Облікові дані успішно встановлено", + "Error while setting credentials: {error}" : "Помилка під час встановлення облікових даних: {error}", + "Checking storage …" : "Перевірка сховища ...", "There was an error with this external storage." : "З цим зовнішнім сховищем виникла помилка.", "We were unable to check the external storage {basename}" : "Нам не вдалося перевірити зовнішнє сховище {basename}", "Examine this faulty external storage configuration" : "Перевірте цю несправну конфігурацію зовнішнього сховища", @@ -127,42 +117,44 @@ "Scope" : "Область", "Personal" : "Особисте", "System" : "Система", + "Type to select account or group." : "Обліковий запис або група.", + "(Group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", + "Enable encryption" : "Увімкнути шифрування", + "Enable previews" : "Увімкнути попередній перегляд", + "Enable sharing" : "Увімкнути спільний доступ", + "Check for changes" : "Перевірити на зміни", + "Never" : "Ніколи", + "Once every direct access" : "Один раз при кожному прямому доступі", + "Read only" : "Тільки читання", + "Disconnect" : "Від'єднати", + "Unknown backend: {backendName}" : "Невідомий бекенд: {backendName}", + "Admin defined" : "Визначено адміністратором", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Автоматична перевірка статусу вимкнена через велику кількість налаштованих сховищ, натисніть, щоб перевірити статус", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ви впевнені, що бажаєте від’єднати це зовнішнє сховище? Це призведе до того, що сховище стане недоступним у хмарі Nextcloud, а також вилучить файли та каталоги на клієнтських пристроях, які наразі синхронізуються з хмарою. Файли та каталоги у зовнішньому сховищі не буде вилучено.", + "Delete storage?" : "Вилучити сховище?", + "Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань", + "Saved" : "Збережено", + "Saving …" : "Збереження …", + "Save" : "Зберегти", + "Failed to save global credentials" : "Не вдалося зберегти глобальні облікові дані", + "Failed to save global credentials: {message}" : "Не вдалося зберегти глобальні облікові дані: {повідомлення}", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Open documentation" : "Відкрити документацію", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Зовнішнє сховище дає змогу підключати зовнішні сервіси та пристрої для зберігання даних як вторинні пристрої Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні сховища.", "Folder name" : "Назва каталогу", "Authentication" : "Авторизація", "Configuration" : "Налаштування", "Available for" : "Доступний для", - "Click to recheck the configuration" : "Клацніть для повторної перевірки налаштувань", "Add storage" : "Додати сховище", "All people" : "Всі користувачі", "Advanced settings" : "Розширені", "Allow people to mount external storage" : "Дозволити користувачам під'єднувати зовнішні сховища даних", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Універсальні облікові дані можна використовувати для авторизації з кількома зовнішніми сховищами, які мають тотодні облікові дані.", - "Type to select user or group." : "Почніть друкувати, щоб вибрати користувача або групу.", - "Empty response from the server" : "Отримано порожню відповідь від сервера", - "Couldn't access. Please log out and in again to activate this mount point" : "Не вдалося отримати доступ. Будь ласка, вийдіть із системи та знову увійдіть, щоб активувати цю точку монтування", - "Couldn't get the information from the remote server: {code} {type}" : "Не вдалося отримати інформацію з віддаленого сервера: {код} {тип}", - "Couldn't get the list of external mount points: {type}" : "Не вдалося отримати список зовнішніх точок підключення: {type}", - "There was an error with message: " : "Сповіщення про помилку:", - "external-storage" : "зовнішнє сховище", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "Неможливо отримати список точок монтування диску мережі Windows: отримано порожню відповідь від сервера", - "Please enter the credentials for the {mount} mount" : "Будь ласка, зазначте дані авторизації для монтування {mount}", - "Username" : "Ім'я користувача", - "Credentials saved" : "Дані авторизації збережено", - "Credentials saving failed" : "Помилка зі збереженням даних авторизації", - "Credentials required" : "Потрібно зазначити дані авторизації", - "Storage with ID \"%d\" is not user editable" : "У користувачів відсутній доступ на запис до сховища з ідентифікатором \"%d\"", - "Username and password" : "Ім'я користувача та пароль", - "Global credentials, user entered" : "Системні дані авторизації, зазначені користувачем", - "User entered, store in database" : "Зазначено користувачем, зберегти у базі даних", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "Вимкнення цього параметра дозволить використовувати файлову систему, нечутливу до регістру, але це також призведе до зниження продуктивності", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи каталогу у каталозі верхнього рівня, щоб відфільтрувати елементи, до яких користувач не має прав доступу на читання, супроводжується погіршенням продуктивності", - "Username as share" : "Ім'я для відкритого доступу", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Цей застосунок дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать новий каталог, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-який інший каталог Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", - "Name" : "Ім'я", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Зовнішня пам’ять дає змогу підключати зовнішні служби зберігання та пристрої як додаткові пристрої зберігання даних Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні служби зберігання.", - "All users" : "Всі користувачі", - "Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища" + "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", + "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", + "OAuth1" : "OAuth1", + "App key" : "Ключ застосунку", + "App secret" : "Секретний ключ застосунку" },"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);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ur_PK.js b/apps/files_external/l10n/ur_PK.js deleted file mode 100644 index 34d519fc69b..00000000000 --- a/apps/files_external/l10n/ur_PK.js +++ /dev/null @@ -1,14 +0,0 @@ -OC.L10N.register( - "files_external", - { - "Personal" : "شخصی", - "Username" : "یوزر نیم", - "Password" : "پاسورڈ", - "Save" : "حفظ", - "URL" : "یو ار ایل", - "Location" : "مقام", - "Share" : "تقسیم", - "Name" : "اسم", - "Delete" : "حذف کریں" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/ur_PK.json b/apps/files_external/l10n/ur_PK.json deleted file mode 100644 index 5a51e9c5a31..00000000000 --- a/apps/files_external/l10n/ur_PK.json +++ /dev/null @@ -1,12 +0,0 @@ -{ "translations": { - "Personal" : "شخصی", - "Username" : "یوزر نیم", - "Password" : "پاسورڈ", - "Save" : "حفظ", - "URL" : "یو ار ایل", - "Location" : "مقام", - "Share" : "تقسیم", - "Name" : "اسم", - "Delete" : "حذف کریں" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/vi.js b/apps/files_external/l10n/vi.js deleted file mode 100644 index 0e99f70c3a4..00000000000 --- a/apps/files_external/l10n/vi.js +++ /dev/null @@ -1,27 +0,0 @@ -OC.L10N.register( - "files_external", - { - "External storage" : "Lưu trữ ngoài", - "Personal" : "Cá nhân", - "Grant access" : "Cấp quyền truy cập", - "Saved" : "Đã lưu", - "Username" : "Tên đăng nhập", - "Password" : "Mật khẩu", - "Save" : "Lưu", - "None" : "Không gì cả", - "Port" : "Cổng", - "Region" : "Vùng/miền", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "Máy chủ", - "Location" : "Vị trí", - "ownCloud" : "ownCloud", - "Share" : "Chia sẻ", - "Name" : "Tên", - "External Storage" : "Lưu trữ ngoài", - "Folder name" : "Tên thư mục", - "Configuration" : "Cấu hình", - "Add storage" : "Thêm bộ nhớ", - "Delete" : "Xóa" -}, -"nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/vi.json b/apps/files_external/l10n/vi.json deleted file mode 100644 index 90e2a0d97c3..00000000000 --- a/apps/files_external/l10n/vi.json +++ /dev/null @@ -1,25 +0,0 @@ -{ "translations": { - "External storage" : "Lưu trữ ngoài", - "Personal" : "Cá nhân", - "Grant access" : "Cấp quyền truy cập", - "Saved" : "Đã lưu", - "Username" : "Tên đăng nhập", - "Password" : "Mật khẩu", - "Save" : "Lưu", - "None" : "Không gì cả", - "Port" : "Cổng", - "Region" : "Vùng/miền", - "WebDAV" : "WebDAV", - "URL" : "URL", - "Host" : "Máy chủ", - "Location" : "Vị trí", - "ownCloud" : "ownCloud", - "Share" : "Chia sẻ", - "Name" : "Tên", - "External Storage" : "Lưu trữ ngoài", - "Folder name" : "Tên thư mục", - "Configuration" : "Cấu hình", - "Add storage" : "Thêm bộ nhớ", - "Delete" : "Xóa" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js index a92d8438a02..d58a5186fc6 100644 --- a/apps/files_external/l10n/zh_CN.js +++ b/apps/files_external/l10n/zh_CN.js @@ -2,28 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "授权", - "Error configuring OAuth1" : "OAuth1 配置错误", - "Please provide a valid app key and secret." : "请提供有效的 app key 和密钥。", "Error configuring OAuth2" : "OAuth2 配置错误", "Generate keys" : "生成密钥", "Error generating key pair" : "生成密钥对错误", - "(Group)" : "(群组)", - "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码(慢)", - "Enable encryption" : "启用加密", - "Enable previews" : "启用预览", - "Enable sharing" : "启用共享", - "Check for changes" : "检查修改", - "Never" : "从不", - "Once every direct access" : "每次访问时", - "Read only" : "只读", - "Disconnect" : "断开连接", - "Admin defined" : "管理员定义", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因为配置的存储数量过多,自动状态检查已停用,点击以检查状态。", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您确定要断开这个外部存储空间吗?这将会导致该存储空间在 Nextcloud 中不可用,并将会在当前连接的任何同步客户端上删除文件和文件夹,但不会删除外部存储空间本身的任何文件和文件夹。", - "Delete storage?" : "删除存储?", - "Saved" : "已保存", - "Saving …" : "正在保存 …", - "Save" : "保存", + "You are not logged in" : "您尚未登录", + "Permission denied" : "权限被拒绝", "Forbidden to manage local mounts" : "禁止管理本地挂载", "Storage with ID \"%d\" not found" : "未找到 ID 为“%d”的存储", "Invalid backend or authentication mechanism class" : "无效的后端或认证类型", @@ -36,13 +19,11 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件", "Insufficient data: %s" : "数据不足:%s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "ID 为“%d”的存储不可由非管理员编辑", "Access key" : "Access key", "Secret key" : "Secret key", "Builtin" : "内置", "None" : "无", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "应用程序 secret", "OAuth2" : "OAuth2", "Client ID" : "客户端 ID", "Client secret" : "客户端 secret", @@ -57,7 +38,10 @@ OC.L10N.register( "API key" : "API 密匙", "Global credentials" : "全局凭据", "Log-in credentials, save in database" : "登录凭据,保存在数据库中", + "Login and password" : "登录和密码", "Log-in credentials, save in session" : "登录凭据,存储在会话中", + "Global credentials, manually entered" : "全局凭据,手动输入", + "Manually entered, store in database" : "手动输入,存储在数据库中", "RSA public key" : "RSA 公钥", "Public key" : "公钥", "RSA private key" : "RSA 私钥", @@ -74,6 +58,8 @@ OC.L10N.register( "Enable SSL" : "启用 SSL", "Enable Path Style" : "启用 Path Style", "Legacy (v2) authentication" : "旧版本(v2)认证", + "Enable multipart copy" : "启用多部分副本", + "SSE-C encryption key" : "SSE-C 加密密钥", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "远程子文件夹", @@ -93,8 +79,10 @@ OC.L10N.register( "Case sensitive file system" : "大小写敏感文件系统", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "禁用此选项将允许使用大小写不敏感文件系统,但会带来性能损失", "Verify ACL access when listing files" : "列出文件时验证 ACL 访问", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "检查目录内的每个文件或文件夹的 ACL,以筛选账号没有读取权限的项目,这会带来性能损失", "Timeout" : "超时", "SMB/CIFS using OC login" : "使用 OC 登录的 SMB/CIFS", + "Login as share" : "以共享身份登录", "OpenStack Object Storage" : "OpenStack 对象存储", "Service name" : "服务名称", "Request timeout (seconds)" : "请求超时时间(秒)", @@ -104,9 +92,18 @@ OC.L10N.register( "External storage" : "外部存储", "External storage support" : "外部存储支持", "Adds basic external storage support" : "添加基本的外部存储支持", - "Enter missing credentials" : "输入缺失的认证信息", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此应用程序使管理员能够配置与外部存储提供者的连接,例如 FTP 服务器、S3 或 SWIFT 对象存储、其他 Nextcloud 服务器、WebDAV 服务器等。管理员可以选择要启用的存储类型,并可以为账号、群组或整个系统装载这些存储位置。用户将在其根 Nextcloud 目录中看到一个新文件夹,它们可以像任何其他 Nextcloud 文件夹一样访问和使用。外部存储还允许人们共享存储在这些外部位置的文件。在这些情况下,当接收者从外部存储中请求文件时,会使用文件所有者的凭据,从而确保接收者可以访问共享文件。\n\n可以使用 GUI 或在命令行中配置外部存储。第二个选项为管理员配置批量外部存储装载和设置装载优先级提供了更大的灵活性。更多信息请参阅外部存储 GUI 文档和外部存储配置文件文档。", + "Confirm" : "确认", + "Storage credentials" : "存储凭据", + "To access the storage, you need to provide the authentication credentials." : "要访问存储,您需要提供身份验证凭据。", + "Enter the storage login" : "输入存储登录", + "Enter the storage password" : "输入存储密码", "Unable to update this external storage config. {statusMessage}" : "无法更新此外部存储配置。{statusMessage}", "New configuration successfully saved" : "新配置已成功保存", + "Enter missing credentials" : "输入缺失的认证信息", + "Credentials successfully set" : "已成功设置凭据", + "Error while setting credentials: {error}" : "设置凭据时出错:{error}", + "Checking storage …" : "正在检查存储…", "There was an error with this external storage." : "此外部存储出现问题", "We were unable to check the external storage {basename}" : "我们无法检查外部存储 {basename}", "Examine this faulty external storage configuration" : "检查此出错的外部存储配置", @@ -115,47 +112,51 @@ OC.L10N.register( "External mount error" : "外部挂载错误", "List of external storage." : "外部存储列表", "There is no external storage configured. You can configure them in your Personal settings." : "未配置外部存储。您可前往您的个人设置页中进行配置。", - "There is no external storage configured and you don't have the permission to configure them." : "未配置外部存储,且您没有配置外部存储的权限。", + "There is no external storage configured and you don't have the permission to configure them." : "未配置外部存储,且你没有配置外部存储的权限。", "No external storage" : "无外部存储", "Storage type" : "存储类型", "Unknown" : "未知", "Scope" : "适用范围", "Personal" : "个人", "System" : "系统", + "Type to select account or group." : "输入以选择账号或群组。", + "(Group)" : "(群组)", + "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码(慢)", + "Enable encryption" : "启用加密", + "Enable previews" : "启用预览", + "Enable sharing" : "启用共享", + "Check for changes" : "检查修改", + "Never" : "从不", + "Once every direct access" : "每次访问时", + "Read only" : "只读", + "Disconnect" : "断开连接", + "Unknown backend: {backendName}" : "未知后端:{backendName}", + "Admin defined" : "管理员定义", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因为配置的存储数量过多,自动状态检查已停用,点击以检查状态。", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您确定要断开这个外部存储空间吗?这将会导致该存储空间在 Nextcloud 中不可用,并将会在当前连接的任何同步客户端上删除文件和文件夹,但不会删除外部存储空间本身的任何文件和文件夹。", + "Delete storage?" : "删除存储?", + "Click to recheck the configuration" : "点击以再次检查配置", + "Saved" : "已保存", + "Saving …" : "正在保存 …", + "Save" : "保存", + "Failed to save global credentials" : "无法保存全局凭据", + "Failed to save global credentials: {message}" : "无法保存全局凭据:{message}", "No external storage configured or you don't have the permission to configure them" : "未设置外部存储或者没有权限", "Open documentation" : "打开文档", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部存储使你能够将外部存储服务和设备作为辅助 Nextcloud 存储设备进行挂载。你还可以允许用户挂载自己的外部存储服务。", "Folder name" : "目录名称", "Authentication" : "认证", "Configuration" : "配置", "Available for" : "可用于", - "Click to recheck the configuration" : "点击以再次检查配置", "Add storage" : "增加存储", + "All people" : "所有用户", "Advanced settings" : "高级选项", + "Allow people to mount external storage" : "允许用户挂载外部存储", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全局凭据可用于使用具有相同凭据的多个外部存储进行身份验证。", - "Type to select user or group." : "输入以选择用户或群组。", - "Empty response from the server" : "服务器响应为空", - "Couldn't access. Please log out and in again to activate this mount point" : "无法访问。 请登出并再次登录以激活此挂载点", - "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表:{type}", - "There was an error with message: " : "错误信息:", - "external-storage" : "外部存储", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取 Windows 网络磁盘挂载点列表:服务器未响应", - "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的证书", - "Username" : "用户名", - "Credentials saved" : "凭据已保存", - "Credentials saving failed" : "证书保存失败", - "Credentials required" : "需要凭据", - "Storage with ID \"%d\" is not user editable" : "无法编辑 ID 为“%d”的存储", - "Username and password" : "用户名和密码", - "Global credentials, user entered" : "全局凭据,用户输入", - "User entered, store in database" : "用户登录,存储在数据库中", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "关闭此选项将允许使用大小写不敏感文件系统,但会带来性能损失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "检查目录中每个文件或文件夹的 ACL,以过滤掉用户没有读取权限的项目,这会带来性能损失", - "Username as share" : "以用户名作为共享名", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此应用为管理员提供了配置连接外部存储服务的功能,例如如 FTP 服务器、S3 或 SWIFT 对象存储、其他的 NextCloud 服务器、WebDAV 服务器等。管理员可以选择要启用的存储类型,并可以为用户、组或整个系统挂载这些存储服务。用户会在自己的 NextCloud 目录中看到全局挂载的外部存储,可以像其他任何 NextCloud 文件夹一样访问和使用这个文件夹。用户可以共享存储在这些外部位置中的文件。在这种情况下,当接收方从外部存储请求文件时,将使用文件所有者的凭据,从而确保接收方能够访问共享文件。\n\n可以使用 GUI 或命令行配置外部存储。命令行方式为高级用户配置大容量外部存储挂载和设置挂载优先级提供了更大的灵活性。更多信息可在外部存储 GUI 文档和外部存储配置文档中查阅。", - "Name" : "名称", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部存储插件允许挂载外部的存储服务作为 Nextcloud 的辅助存储设备。您可以设置是否允许挂载用户自己的外部存储服务。", - "All users" : "所有用户", - "Allow users to mount external storage" : "允许用户挂载外部存储" + "Error configuring OAuth1" : "OAuth1 配置错误", + "Please provide a valid app key and secret." : "请提供有效的 app key 和密钥。", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "应用程序 secret" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json index 572394b59a7..ca85cae3649 100644 --- a/apps/files_external/l10n/zh_CN.json +++ b/apps/files_external/l10n/zh_CN.json @@ -1,27 +1,10 @@ { "translations": { "Grant access" : "授权", - "Error configuring OAuth1" : "OAuth1 配置错误", - "Please provide a valid app key and secret." : "请提供有效的 app key 和密钥。", "Error configuring OAuth2" : "OAuth2 配置错误", "Generate keys" : "生成密钥", "Error generating key pair" : "生成密钥对错误", - "(Group)" : "(群组)", - "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码(慢)", - "Enable encryption" : "启用加密", - "Enable previews" : "启用预览", - "Enable sharing" : "启用共享", - "Check for changes" : "检查修改", - "Never" : "从不", - "Once every direct access" : "每次访问时", - "Read only" : "只读", - "Disconnect" : "断开连接", - "Admin defined" : "管理员定义", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因为配置的存储数量过多,自动状态检查已停用,点击以检查状态。", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您确定要断开这个外部存储空间吗?这将会导致该存储空间在 Nextcloud 中不可用,并将会在当前连接的任何同步客户端上删除文件和文件夹,但不会删除外部存储空间本身的任何文件和文件夹。", - "Delete storage?" : "删除存储?", - "Saved" : "已保存", - "Saving …" : "正在保存 …", - "Save" : "保存", + "You are not logged in" : "您尚未登录", + "Permission denied" : "权限被拒绝", "Forbidden to manage local mounts" : "禁止管理本地挂载", "Storage with ID \"%d\" not found" : "未找到 ID 为“%d”的存储", "Invalid backend or authentication mechanism class" : "无效的后端或认证类型", @@ -34,13 +17,11 @@ "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件", "Insufficient data: %s" : "数据不足:%s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "ID 为“%d”的存储不可由非管理员编辑", "Access key" : "Access key", "Secret key" : "Secret key", "Builtin" : "内置", "None" : "无", - "OAuth1" : "OAuth1", - "App key" : "App key", - "App secret" : "应用程序 secret", "OAuth2" : "OAuth2", "Client ID" : "客户端 ID", "Client secret" : "客户端 secret", @@ -55,7 +36,10 @@ "API key" : "API 密匙", "Global credentials" : "全局凭据", "Log-in credentials, save in database" : "登录凭据,保存在数据库中", + "Login and password" : "登录和密码", "Log-in credentials, save in session" : "登录凭据,存储在会话中", + "Global credentials, manually entered" : "全局凭据,手动输入", + "Manually entered, store in database" : "手动输入,存储在数据库中", "RSA public key" : "RSA 公钥", "Public key" : "公钥", "RSA private key" : "RSA 私钥", @@ -72,6 +56,8 @@ "Enable SSL" : "启用 SSL", "Enable Path Style" : "启用 Path Style", "Legacy (v2) authentication" : "旧版本(v2)认证", + "Enable multipart copy" : "启用多部分副本", + "SSE-C encryption key" : "SSE-C 加密密钥", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "远程子文件夹", @@ -91,8 +77,10 @@ "Case sensitive file system" : "大小写敏感文件系统", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "禁用此选项将允许使用大小写不敏感文件系统,但会带来性能损失", "Verify ACL access when listing files" : "列出文件时验证 ACL 访问", + "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "检查目录内的每个文件或文件夹的 ACL,以筛选账号没有读取权限的项目,这会带来性能损失", "Timeout" : "超时", "SMB/CIFS using OC login" : "使用 OC 登录的 SMB/CIFS", + "Login as share" : "以共享身份登录", "OpenStack Object Storage" : "OpenStack 对象存储", "Service name" : "服务名称", "Request timeout (seconds)" : "请求超时时间(秒)", @@ -102,9 +90,18 @@ "External storage" : "外部存储", "External storage support" : "外部存储支持", "Adds basic external storage support" : "添加基本的外部存储支持", - "Enter missing credentials" : "输入缺失的认证信息", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此应用程序使管理员能够配置与外部存储提供者的连接,例如 FTP 服务器、S3 或 SWIFT 对象存储、其他 Nextcloud 服务器、WebDAV 服务器等。管理员可以选择要启用的存储类型,并可以为账号、群组或整个系统装载这些存储位置。用户将在其根 Nextcloud 目录中看到一个新文件夹,它们可以像任何其他 Nextcloud 文件夹一样访问和使用。外部存储还允许人们共享存储在这些外部位置的文件。在这些情况下,当接收者从外部存储中请求文件时,会使用文件所有者的凭据,从而确保接收者可以访问共享文件。\n\n可以使用 GUI 或在命令行中配置外部存储。第二个选项为管理员配置批量外部存储装载和设置装载优先级提供了更大的灵活性。更多信息请参阅外部存储 GUI 文档和外部存储配置文件文档。", + "Confirm" : "确认", + "Storage credentials" : "存储凭据", + "To access the storage, you need to provide the authentication credentials." : "要访问存储,您需要提供身份验证凭据。", + "Enter the storage login" : "输入存储登录", + "Enter the storage password" : "输入存储密码", "Unable to update this external storage config. {statusMessage}" : "无法更新此外部存储配置。{statusMessage}", "New configuration successfully saved" : "新配置已成功保存", + "Enter missing credentials" : "输入缺失的认证信息", + "Credentials successfully set" : "已成功设置凭据", + "Error while setting credentials: {error}" : "设置凭据时出错:{error}", + "Checking storage …" : "正在检查存储…", "There was an error with this external storage." : "此外部存储出现问题", "We were unable to check the external storage {basename}" : "我们无法检查外部存储 {basename}", "Examine this faulty external storage configuration" : "检查此出错的外部存储配置", @@ -113,47 +110,51 @@ "External mount error" : "外部挂载错误", "List of external storage." : "外部存储列表", "There is no external storage configured. You can configure them in your Personal settings." : "未配置外部存储。您可前往您的个人设置页中进行配置。", - "There is no external storage configured and you don't have the permission to configure them." : "未配置外部存储,且您没有配置外部存储的权限。", + "There is no external storage configured and you don't have the permission to configure them." : "未配置外部存储,且你没有配置外部存储的权限。", "No external storage" : "无外部存储", "Storage type" : "存储类型", "Unknown" : "未知", "Scope" : "适用范围", "Personal" : "个人", "System" : "系统", + "Type to select account or group." : "输入以选择账号或群组。", + "(Group)" : "(群组)", + "Compatibility with Mac NFD encoding (slow)" : "兼用 Mac NFD 编码(慢)", + "Enable encryption" : "启用加密", + "Enable previews" : "启用预览", + "Enable sharing" : "启用共享", + "Check for changes" : "检查修改", + "Never" : "从不", + "Once every direct access" : "每次访问时", + "Read only" : "只读", + "Disconnect" : "断开连接", + "Unknown backend: {backendName}" : "未知后端:{backendName}", + "Admin defined" : "管理员定义", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因为配置的存储数量过多,自动状态检查已停用,点击以检查状态。", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您确定要断开这个外部存储空间吗?这将会导致该存储空间在 Nextcloud 中不可用,并将会在当前连接的任何同步客户端上删除文件和文件夹,但不会删除外部存储空间本身的任何文件和文件夹。", + "Delete storage?" : "删除存储?", + "Click to recheck the configuration" : "点击以再次检查配置", + "Saved" : "已保存", + "Saving …" : "正在保存 …", + "Save" : "保存", + "Failed to save global credentials" : "无法保存全局凭据", + "Failed to save global credentials: {message}" : "无法保存全局凭据:{message}", "No external storage configured or you don't have the permission to configure them" : "未设置外部存储或者没有权限", "Open documentation" : "打开文档", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部存储使你能够将外部存储服务和设备作为辅助 Nextcloud 存储设备进行挂载。你还可以允许用户挂载自己的外部存储服务。", "Folder name" : "目录名称", "Authentication" : "认证", "Configuration" : "配置", "Available for" : "可用于", - "Click to recheck the configuration" : "点击以再次检查配置", "Add storage" : "增加存储", + "All people" : "所有用户", "Advanced settings" : "高级选项", + "Allow people to mount external storage" : "允许用户挂载外部存储", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全局凭据可用于使用具有相同凭据的多个外部存储进行身份验证。", - "Type to select user or group." : "输入以选择用户或群组。", - "Empty response from the server" : "服务器响应为空", - "Couldn't access. Please log out and in again to activate this mount point" : "无法访问。 请登出并再次登录以激活此挂载点", - "Couldn't get the information from the remote server: {code} {type}" : "无法从远程服务器获取信息:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "无法获取外部挂载点列表:{type}", - "There was an error with message: " : "错误信息:", - "external-storage" : "外部存储", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "无法获取 Windows 网络磁盘挂载点列表:服务器未响应", - "Please enter the credentials for the {mount} mount" : "请输入 {mount} 挂载点的证书", - "Username" : "用户名", - "Credentials saved" : "凭据已保存", - "Credentials saving failed" : "证书保存失败", - "Credentials required" : "需要凭据", - "Storage with ID \"%d\" is not user editable" : "无法编辑 ID 为“%d”的存储", - "Username and password" : "用户名和密码", - "Global credentials, user entered" : "全局凭据,用户输入", - "User entered, store in database" : "用户登录,存储在数据库中", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "关闭此选项将允许使用大小写不敏感文件系统,但会带来性能损失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "检查目录中每个文件或文件夹的 ACL,以过滤掉用户没有读取权限的项目,这会带来性能损失", - "Username as share" : "以用户名作为共享名", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此应用为管理员提供了配置连接外部存储服务的功能,例如如 FTP 服务器、S3 或 SWIFT 对象存储、其他的 NextCloud 服务器、WebDAV 服务器等。管理员可以选择要启用的存储类型,并可以为用户、组或整个系统挂载这些存储服务。用户会在自己的 NextCloud 目录中看到全局挂载的外部存储,可以像其他任何 NextCloud 文件夹一样访问和使用这个文件夹。用户可以共享存储在这些外部位置中的文件。在这种情况下,当接收方从外部存储请求文件时,将使用文件所有者的凭据,从而确保接收方能够访问共享文件。\n\n可以使用 GUI 或命令行配置外部存储。命令行方式为高级用户配置大容量外部存储挂载和设置挂载优先级提供了更大的灵活性。更多信息可在外部存储 GUI 文档和外部存储配置文档中查阅。", - "Name" : "名称", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部存储插件允许挂载外部的存储服务作为 Nextcloud 的辅助存储设备。您可以设置是否允许挂载用户自己的外部存储服务。", - "All users" : "所有用户", - "Allow users to mount external storage" : "允许用户挂载外部存储" + "Error configuring OAuth1" : "OAuth1 配置错误", + "Please provide a valid app key and secret." : "请提供有效的 app key 和密钥。", + "OAuth1" : "OAuth1", + "App key" : "App key", + "App secret" : "应用程序 secret" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/zh_HK.js b/apps/files_external/l10n/zh_HK.js index c4f0a8194b1..d685a2b5e53 100644 --- a/apps/files_external/l10n/zh_HK.js +++ b/apps/files_external/l10n/zh_HK.js @@ -2,29 +2,11 @@ OC.L10N.register( "files_external", { "Grant access" : "允許存取", - "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", - "Please provide a valid app key and secret." : "請提供有效的應用程式密鑰及密碼", "Error configuring OAuth2" : "設定 OAuth2 時發生錯誤", "Generate keys" : "產生密鑰", "Error generating key pair" : "產生密鑰對錯誤", - "Type to select account or group." : "輸入以選取帳戶或群組。", - "(Group)" : "(群組)", - "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼格式相容(較慢)", - "Enable encryption" : "啟用加密", - "Enable previews" : "啟動預覽", - "Enable sharing" : "啟動分享", - "Check for changes" : "檢查變動", - "Never" : "絕不", - "Once every direct access" : "在每次進行存取動作時", - "Read only" : "唯讀", - "Disconnect" : "中斷連線", - "Admin defined" : "管理員定義", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "由於配置的存儲數量過多,自動狀態檢查被禁用,點擊查看狀態", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開此外部存儲嗎? 這將使該外部存儲在 Nextcloud 中不可用,將導致在當前連接的任何同步客戶端上刪除這些檔案件和資料夾,但不會刪除外部存儲本身上的任何檔案和資料夾。", - "Delete storage?" : "刪除空間", - "Saved" : "已儲存", - "Saving …" : "儲存中 ...", - "Save" : "儲存", + "You are not logged in" : "您尚未登入", + "Permission denied" : "權限被拒", "Forbidden to manage local mounts" : "禁止管理近端掛載", "Storage with ID \"%d\" not found" : "沒有找到用戶 \"%d\" 的儲存空間 ", "Invalid backend or authentication mechanism class" : "無效的後端處理或是驗證方式", @@ -42,9 +24,6 @@ OC.L10N.register( "Secret key" : "私密密鑰", "Builtin" : "內建", "None" : "無", - "OAuth1" : "OAuth1", - "App key" : "App 密鑰", - "App secret" : "App 密碼", "OAuth2" : "OAuth2", "Client ID" : "客戶端ID", "Client secret" : "客戶端密碼", @@ -80,6 +59,7 @@ OC.L10N.register( "Enable Path Style" : "啟用路徑格式", "Legacy (v2) authentication" : "Legacy(v2)驗證", "Enable multipart copy" : "啟用多部份複製", + "SSE-C encryption key" : "SSE-C 加密密鑰", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "遠端子資料夾", @@ -112,10 +92,18 @@ OC.L10N.register( "External storage" : "外部儲存", "External storage support" : "外部儲存支援", "Adds basic external storage support" : "增加了基本的外部存儲支援", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", - "Enter missing credentials" : "輸入缺少的身份驗證", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的說明書與外部儲存空間設定檔說明書中檢視。", + "Confirm" : "確認", + "Storage credentials" : "儲存身份驗證", + "To access the storage, you need to provide the authentication credentials." : "要存取存儲,您需要提供身份驗證資訊。", + "Enter the storage login" : "輸入儲存登入帳號", + "Enter the storage password" : "輸入儲存密碼", "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間設定。{statusMessage}", "New configuration successfully saved" : "新配置已成功保存", + "Enter missing credentials" : "輸入缺少的身份驗證", + "Credentials successfully set" : "已成功設定身份驗證", + "Error while setting credentials: {error}" : "設定身份驗證時發生錯誤:{error}", + "Checking storage …" : "正在檢查儲存空間 …", "There was an error with this external storage." : "此外部儲存空間發生錯誤。", "We were unable to check the external storage {basename}" : "我們無法檢查外部儲存空間 {basename}", "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間設定", @@ -131,6 +119,28 @@ OC.L10N.register( "Scope" : "範圍", "Personal" : "個人", "System" : "系統", + "Type to select account or group." : "輸入以選取帳戶或群組。", + "(Group)" : "(群組)", + "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼格式相容(較慢)", + "Enable encryption" : "啟用加密", + "Enable previews" : "啟動預覽", + "Enable sharing" : "啟動分享", + "Check for changes" : "檢查變動", + "Never" : "絕不", + "Once every direct access" : "在每次進行存取動作時", + "Read only" : "唯讀", + "Disconnect" : "中斷連線", + "Unknown backend: {backendName}" : "後端系統不詳:{backendName}", + "Admin defined" : "管理員定義", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "由於配置的存儲數量過多,自動狀態檢查被禁用,點擊查看狀態", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開此外部存儲嗎? 這將使該外部存儲在 Nextcloud 中不可用,將導致在目前連接的任何同步客戶端上刪除這些檔案件和資料夾,但不會刪除外部存儲本身上的任何檔案和資料夾。", + "Delete storage?" : "刪除空間", + "Click to recheck the configuration" : "單擊以重新檢查配置", + "Saved" : "已儲存", + "Saving …" : "儲存中 ...", + "Save" : "儲存", + "Failed to save global credentials" : "儲存整體的憑證失敗", + "Failed to save global credentials: {message}" : "儲存整體的憑證失敗:{message}", "No external storage configured or you don't have the permission to configure them" : "未配置外部存儲,或者您無權配置它們", "Open documentation" : "開啟說明文件", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", @@ -138,36 +148,15 @@ OC.L10N.register( "Authentication" : "驗證", "Configuration" : "配置", "Available for" : "可用於", - "Click to recheck the configuration" : "單擊以重新檢查配置", "Add storage" : "增加儲存區", "All people" : "所有人仕", "Advanced settings" : "進階設定", "Allow people to mount external storage" : "允許人仕自行掛載外部儲存空間", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全球身分驗證可用於驗證與有相同身分驗證的多個外部存儲器。", - "Type to select user or group." : "輸入以選取用戶或群組。", - "Empty response from the server" : "伺服器没有回應", - "Couldn't access. Please log out and in again to activate this mount point" : "無法存取,請登出後重新登入來啟動這個掛載點。", - "Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}", - "There was an error with message: " : "錯誤信息﹕", - "external-storage" : "外部儲存", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "無法取得 Windows 網路磁碟掛載點清單:伺服器無回應。", - "Please enter the credentials for the {mount} mount" : "請輸入身分驗證來進行掛載(掛載來源)", - "Username" : "用戶名稱", - "Credentials saved" : "已儲存身分驗證", - "Credentials saving failed" : "身分驗證儲存失敗", - "Credentials required" : "需要身分驗證訊息", - "Storage with ID \"%d\" is not user editable" : "用戶無法編輯 ID 為 “%d” 的存儲", - "Username and password" : "用戶帳號和密碼", - "Global credentials, user entered" : "全局身分驗證,用戶輸入", - "User entered, store in database" : "用戶登入,儲存於數據庫", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "檢查目錄中每個檔案或資料夾的ACL,以過濾掉用戶沒有讀取權限的項目,但這會帶來性能損失。", - "Username as share" : "以用戶名稱分享", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "該應用程序使管理員能夠配置與外部存儲提供程序的連接,例如 FTP 伺服器,S3或SWIFT對象存儲,其他 Nextcloud 伺服器,WebDAV 伺服器等。管理員可以選擇要啟用的存儲類型,並可以為用戶,群組或整個系統安裝這些存儲位置。用戶將看到一個新資料夾出現在其根 Nextcloud 目錄中,他們可以像存取其他 Nextcloud 資料夾一樣存取和使用該資料夾。外部存儲還允許用戶共享存儲在這些外部位置中的檔案。在這些情況下,當收件人從外部存儲設備索取檔案時,將使用檔案所有者的憑據,從而確保收件人可以訪問共享文件。\n\n可以使用 GUI 或在命令行中配置外部存儲。第二個選項為高級用戶提供了更大的靈活性,用於配置大容量外部存儲安裝和設置安裝優先級。外部存儲 GUI 文檔和外部存儲配置文檔中提供了更多信息。", - "Name" : "名稱", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部存儲使您可以將外部存儲服務和設備掛載為次要的Nextcloud存儲設備。您還可以允許用戶安裝他們自己的外部存儲服務。", - "All users" : "所有用戶", - "Allow users to mount external storage" : "允許用戶能自行掛載外部儲存" + "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", + "Please provide a valid app key and secret." : "請提供有效的應用程式密鑰及密碼", + "OAuth1" : "OAuth1", + "App key" : "App 密鑰", + "App secret" : "App 密碼" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/zh_HK.json b/apps/files_external/l10n/zh_HK.json index 1150bd6aa26..d39b6a25f42 100644 --- a/apps/files_external/l10n/zh_HK.json +++ b/apps/files_external/l10n/zh_HK.json @@ -1,28 +1,10 @@ { "translations": { "Grant access" : "允許存取", - "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", - "Please provide a valid app key and secret." : "請提供有效的應用程式密鑰及密碼", "Error configuring OAuth2" : "設定 OAuth2 時發生錯誤", "Generate keys" : "產生密鑰", "Error generating key pair" : "產生密鑰對錯誤", - "Type to select account or group." : "輸入以選取帳戶或群組。", - "(Group)" : "(群組)", - "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼格式相容(較慢)", - "Enable encryption" : "啟用加密", - "Enable previews" : "啟動預覽", - "Enable sharing" : "啟動分享", - "Check for changes" : "檢查變動", - "Never" : "絕不", - "Once every direct access" : "在每次進行存取動作時", - "Read only" : "唯讀", - "Disconnect" : "中斷連線", - "Admin defined" : "管理員定義", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "由於配置的存儲數量過多,自動狀態檢查被禁用,點擊查看狀態", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開此外部存儲嗎? 這將使該外部存儲在 Nextcloud 中不可用,將導致在當前連接的任何同步客戶端上刪除這些檔案件和資料夾,但不會刪除外部存儲本身上的任何檔案和資料夾。", - "Delete storage?" : "刪除空間", - "Saved" : "已儲存", - "Saving …" : "儲存中 ...", - "Save" : "儲存", + "You are not logged in" : "您尚未登入", + "Permission denied" : "權限被拒", "Forbidden to manage local mounts" : "禁止管理近端掛載", "Storage with ID \"%d\" not found" : "沒有找到用戶 \"%d\" 的儲存空間 ", "Invalid backend or authentication mechanism class" : "無效的後端處理或是驗證方式", @@ -40,9 +22,6 @@ "Secret key" : "私密密鑰", "Builtin" : "內建", "None" : "無", - "OAuth1" : "OAuth1", - "App key" : "App 密鑰", - "App secret" : "App 密碼", "OAuth2" : "OAuth2", "Client ID" : "客戶端ID", "Client secret" : "客戶端密碼", @@ -78,6 +57,7 @@ "Enable Path Style" : "啟用路徑格式", "Legacy (v2) authentication" : "Legacy(v2)驗證", "Enable multipart copy" : "啟用多部份複製", + "SSE-C encryption key" : "SSE-C 加密密鑰", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "遠端子資料夾", @@ -110,10 +90,18 @@ "External storage" : "外部儲存", "External storage support" : "外部儲存支援", "Adds basic external storage support" : "增加了基本的外部存儲支援", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", - "Enter missing credentials" : "輸入缺少的身份驗證", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的說明書與外部儲存空間設定檔說明書中檢視。", + "Confirm" : "確認", + "Storage credentials" : "儲存身份驗證", + "To access the storage, you need to provide the authentication credentials." : "要存取存儲,您需要提供身份驗證資訊。", + "Enter the storage login" : "輸入儲存登入帳號", + "Enter the storage password" : "輸入儲存密碼", "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間設定。{statusMessage}", "New configuration successfully saved" : "新配置已成功保存", + "Enter missing credentials" : "輸入缺少的身份驗證", + "Credentials successfully set" : "已成功設定身份驗證", + "Error while setting credentials: {error}" : "設定身份驗證時發生錯誤:{error}", + "Checking storage …" : "正在檢查儲存空間 …", "There was an error with this external storage." : "此外部儲存空間發生錯誤。", "We were unable to check the external storage {basename}" : "我們無法檢查外部儲存空間 {basename}", "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間設定", @@ -129,6 +117,28 @@ "Scope" : "範圍", "Personal" : "個人", "System" : "系統", + "Type to select account or group." : "輸入以選取帳戶或群組。", + "(Group)" : "(群組)", + "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼格式相容(較慢)", + "Enable encryption" : "啟用加密", + "Enable previews" : "啟動預覽", + "Enable sharing" : "啟動分享", + "Check for changes" : "檢查變動", + "Never" : "絕不", + "Once every direct access" : "在每次進行存取動作時", + "Read only" : "唯讀", + "Disconnect" : "中斷連線", + "Unknown backend: {backendName}" : "後端系統不詳:{backendName}", + "Admin defined" : "管理員定義", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "由於配置的存儲數量過多,自動狀態檢查被禁用,點擊查看狀態", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開此外部存儲嗎? 這將使該外部存儲在 Nextcloud 中不可用,將導致在目前連接的任何同步客戶端上刪除這些檔案件和資料夾,但不會刪除外部存儲本身上的任何檔案和資料夾。", + "Delete storage?" : "刪除空間", + "Click to recheck the configuration" : "單擊以重新檢查配置", + "Saved" : "已儲存", + "Saving …" : "儲存中 ...", + "Save" : "儲存", + "Failed to save global credentials" : "儲存整體的憑證失敗", + "Failed to save global credentials: {message}" : "儲存整體的憑證失敗:{message}", "No external storage configured or you don't have the permission to configure them" : "未配置外部存儲,或者您無權配置它們", "Open documentation" : "開啟說明文件", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", @@ -136,36 +146,15 @@ "Authentication" : "驗證", "Configuration" : "配置", "Available for" : "可用於", - "Click to recheck the configuration" : "單擊以重新檢查配置", "Add storage" : "增加儲存區", "All people" : "所有人仕", "Advanced settings" : "進階設定", "Allow people to mount external storage" : "允許人仕自行掛載外部儲存空間", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全球身分驗證可用於驗證與有相同身分驗證的多個外部存儲器。", - "Type to select user or group." : "輸入以選取用戶或群組。", - "Empty response from the server" : "伺服器没有回應", - "Couldn't access. Please log out and in again to activate this mount point" : "無法存取,請登出後重新登入來啟動這個掛載點。", - "Couldn't get the information from the remote server: {code} {type}" : "無法從遠程伺服器上獲取資料:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表: {type}", - "There was an error with message: " : "錯誤信息﹕", - "external-storage" : "外部儲存", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "無法取得 Windows 網路磁碟掛載點清單:伺服器無回應。", - "Please enter the credentials for the {mount} mount" : "請輸入身分驗證來進行掛載(掛載來源)", - "Username" : "用戶名稱", - "Credentials saved" : "已儲存身分驗證", - "Credentials saving failed" : "身分驗證儲存失敗", - "Credentials required" : "需要身分驗證訊息", - "Storage with ID \"%d\" is not user editable" : "用戶無法編輯 ID 為 “%d” 的存儲", - "Username and password" : "用戶帳號和密碼", - "Global credentials, user entered" : "全局身分驗證,用戶輸入", - "User entered, store in database" : "用戶登入,儲存於數據庫", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "檢查目錄中每個檔案或資料夾的ACL,以過濾掉用戶沒有讀取權限的項目,但這會帶來性能損失。", - "Username as share" : "以用戶名稱分享", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "該應用程序使管理員能夠配置與外部存儲提供程序的連接,例如 FTP 伺服器,S3或SWIFT對象存儲,其他 Nextcloud 伺服器,WebDAV 伺服器等。管理員可以選擇要啟用的存儲類型,並可以為用戶,群組或整個系統安裝這些存儲位置。用戶將看到一個新資料夾出現在其根 Nextcloud 目錄中,他們可以像存取其他 Nextcloud 資料夾一樣存取和使用該資料夾。外部存儲還允許用戶共享存儲在這些外部位置中的檔案。在這些情況下,當收件人從外部存儲設備索取檔案時,將使用檔案所有者的憑據,從而確保收件人可以訪問共享文件。\n\n可以使用 GUI 或在命令行中配置外部存儲。第二個選項為高級用戶提供了更大的靈活性,用於配置大容量外部存儲安裝和設置安裝優先級。外部存儲 GUI 文檔和外部存儲配置文檔中提供了更多信息。", - "Name" : "名稱", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部存儲使您可以將外部存儲服務和設備掛載為次要的Nextcloud存儲設備。您還可以允許用戶安裝他們自己的外部存儲服務。", - "All users" : "所有用戶", - "Allow users to mount external storage" : "允許用戶能自行掛載外部儲存" + "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", + "Please provide a valid app key and secret." : "請提供有效的應用程式密鑰及密碼", + "OAuth1" : "OAuth1", + "App key" : "App 密鑰", + "App secret" : "App 密碼" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js index 761c58a4b66..60e9b0b5bce 100644 --- a/apps/files_external/l10n/zh_TW.js +++ b/apps/files_external/l10n/zh_TW.js @@ -2,49 +2,28 @@ OC.L10N.register( "files_external", { "Grant access" : "授予存取權", - "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", - "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼。", "Error configuring OAuth2" : "設定 OAuth2 時發生錯誤", "Generate keys" : "生成金鑰", "Error generating key pair" : "生成金鑰對時發生錯誤", - "Type to select account or group." : "輸入以選取使用者或群組。", - "(Group)" : "(群組)", - "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼相容(較慢)", - "Enable encryption" : "啟用加密", - "Enable previews" : "啟動預覽", - "Enable sharing" : "啟動分享", - "Check for changes" : "檢查變動", - "Never" : "永不", - "Once every direct access" : "在每次進行存取動作時", - "Read only" : "唯讀", - "Disconnect" : "解除連線", - "Admin defined" : "管理員自訂", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因為設定的儲存空間數量過多,自動狀態檢查被停用,點擊以檢查狀態", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開這個外部儲存空間嗎?這將讓該儲存空間無法在 Nextcloud 中使用,並將會在目前連線的任何同步客戶端上刪除這些檔案與資料夾,但不會刪除外部儲存空間本身的任何檔案與資料夾。", - "Delete storage?" : "刪除儲存空間?", - "Saved" : "已儲存", - "Saving …" : "正在儲存……", - "Save" : "儲存", + "You are not logged in" : "您尚未登入", + "Permission denied" : "沒有權限", "Forbidden to manage local mounts" : "禁止管理本機掛載", - "Storage with ID \"%d\" not found" : "沒有找到 ID 為「%d」的儲存空間 ", + "Storage with ID \"%d\" not found" : "沒有找到 ID 為「%d」的儲存空間", "Invalid backend or authentication mechanism class" : "無效的後端或認證機制類別", "Invalid mount point" : "無效的掛載點", "Objectstore forbidden" : "物件儲存禁止存取", "Invalid storage backend \"%s\"" : "無效的儲存後端「%s」", "Not permitted to use backend \"%s\"" : "不允許使用後端「%s」", - "Not permitted to use authentication mechanism \"%s\"" : "不允許使用驗證機制「%s」", + "Not permitted to use authentication mechanism \"%s\"" : "不允許使用認證機制「%s」", "Unsatisfied backend parameters" : "無法滿足後端所需的參數條件", - "Unsatisfied authentication mechanism parameters" : "無法滿足驗證機制所需的參數條件", + "Unsatisfied authentication mechanism parameters" : "無法滿足認證機制所需的參數條件", "Insufficient data: %s" : "資料不足:%s", "%s" : "%s", "Storage with ID \"%d\" is not editable by non-admins" : "非管理員無法編輯 ID 為「%d」的儲存空間", "Access key" : "存取金鑰", - "Secret key" : "私鑰", + "Secret key" : "私密金鑰", "Builtin" : "內建", "None" : "無", - "OAuth1" : "OAuth1", - "App key" : "應用程式金鑰", - "App secret" : "應用程式密碼", "OAuth2" : "OAuth2", "Client ID" : "客戶端 ID", "Client secret" : "客戶端密碼", @@ -57,29 +36,30 @@ OC.L10N.register( "Domain" : "網域", "Rackspace" : "Rackspace", "API key" : "API 金鑰", - "Global credentials" : "全域認證資訊", + "Global credentials" : "全域憑證資訊", "Log-in credentials, save in database" : "登入憑證,儲存於資料庫", "Login and password" : "帳號與密碼", - "Log-in credentials, save in session" : "登入資訊,儲存於工作階段", + "Log-in credentials, save in session" : "登入憑證資訊,儲存於工作階段", "Global credentials, manually entered" : "全域憑證,手動輸入", "Manually entered, store in database" : "手動輸入,儲存於資料庫", "RSA public key" : "RSA 公開金鑰", "Public key" : "公開金鑰", "RSA private key" : "RSA 私鑰", "Private key" : "私鑰", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 預設領域,預設為 \"WORKGROUP\"", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 預設領域,預設為「WORKGROUP」", "Kerberos ticket Apache mode" : "Kerberos 票證 Apache 模式", - "Kerberos ticket" : "Kerberos 票據", + "Kerberos ticket" : "Kerberos 票證", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "主機名稱", "Port" : "連接埠", "Region" : "地區", - "Storage Class" : "儲存類型", + "Storage Class" : "儲存類別", "Enable SSL" : "啟用 SSL", "Enable Path Style" : "啟用路徑樣式", - "Legacy (v2) authentication" : "舊版認證 (v2)", + "Legacy (v2) authentication" : "舊式認證 (v2)", "Enable multipart copy" : "啟用多部份複製", + "SSE-C encryption key" : "SSE-C 加密金鑰", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "遠端子資料夾", @@ -87,15 +67,15 @@ OC.L10N.register( "FTP" : "FTP", "Host" : "主機", "Secure ftps://" : "安全 ftps://", - "Local" : "本機", - "Location" : "路徑", + "Local" : "本站", + "Location" : "位置", "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Root", - "SFTP with secret key login" : "以私鑰登入 SFTP", + "SFTP with secret key login" : "以私密金鑰登入 SFTP", "SMB/CIFS" : "SMB/CIFS", "Share" : "分享", - "Show hidden files" : "顯示隱藏的檔案", + "Show hidden files" : "顯示隱藏檔", "Case sensitive file system" : "區分大小寫檔案系統", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", "Verify ACL access when listing files" : "列出檔案時驗證 ACL 存取權", @@ -106,68 +86,77 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack 物件儲存", "Service name" : "服務名稱", "Request timeout (seconds)" : "請求逾時(秒)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 cURL 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝它。", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 FTP 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝它。", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "「%1$s」未安裝。無法掛載 %2$s。請要求您的系統管理員安裝它。", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 cURL 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝。", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 FTP 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝。", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "「%1$s」未安裝。無法掛載 %2$s。請要求您的系統管理員安裝。", "External storage" : "外部儲存空間", "External storage support" : "外部儲存空間支援", "Adds basic external storage support" : "新增基本的外部儲存空間支援", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", + "Confirm" : "確認", + "Storage credentials" : "儲存空間憑證", + "To access the storage, you need to provide the authentication credentials." : "要存取儲存空間,您必須提供驗證憑證。", + "Enter the storage login" : "輸入儲存空間登入帳號", + "Enter the storage password" : "輸入儲存空間密碼", + "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間組態設定。{statusMessage}", + "New configuration successfully saved" : "已成功儲存新組態設定", "Enter missing credentials" : "輸入缺少的憑證", - "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間設定。{statusMessage}", - "New configuration successfully saved" : "已成功儲存新設定", + "Credentials successfully set" : "已成功設定憑證", + "Error while setting credentials: {error}" : "設定憑證時發生錯誤:{error}", + "Checking storage …" : "正在檢查儲存空間……", "There was an error with this external storage." : "此外部儲存空間發生錯誤。", "We were unable to check the external storage {basename}" : "我們無法檢查外部儲存空間 {basename}", - "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間設定", - "Open in Files" : "在「檔案」應用程式中開啟", - "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中審閱此掛載點的設定嗎?", + "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間組態設定", + "Open in Files" : "以「檔案」開啟", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中檢閱此掛載點的組態設定嗎?", "External mount error" : "外部掛載錯誤", "List of external storage." : "外部儲存空間清單。", - "There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間。您可以在「個人設定」中設定它們。", - "There is no external storage configured and you don't have the permission to configure them." : "沒有設定外部儲存空間,且您沒有設定它們的權限。", + "There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間組態。您可以在「個人設定」中設定它們。", + "There is no external storage configured and you don't have the permission to configure them." : "未設定外部儲存空間組態,而且您無權設定。", "No external storage" : "無外部儲存空間", "Storage type" : "儲存空間類型", "Unknown" : "未知", "Scope" : "範圍", "Personal" : "個人", "System" : "系統", - "No external storage configured or you don't have the permission to configure them" : "未設定外部儲存空間,或您沒有權限設定它們", + "Type to select account or group." : "輸入以選取使用者或群組。", + "(Group)" : "(群組)", + "Compatibility with Mac NFD encoding (slow)" : "與 Mac NFD 編碼相容(較慢)", + "Enable encryption" : "啟用加密", + "Enable previews" : "啟用預覽", + "Enable sharing" : "啟用分享", + "Check for changes" : "檢查變動", + "Never" : "永不", + "Once every direct access" : "在每次進行存取動作時", + "Read only" : "唯讀", + "Disconnect" : "中斷連結", + "Unknown backend: {backendName}" : "未知後端:{backendName}", + "Admin defined" : "管理員自訂", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因為組態設定的儲存空間數量過多,自動狀態檢查被停用,點擊以檢查狀態", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要中斷與這個外部儲存空間的連結嗎?這會讓該儲存空間無法在 Nextcloud 中使用,並將會在目前連線的任何同步客戶端上刪除這些檔案與資料夾,但不會刪除外部儲存空間本身的任何檔案與資料夾。", + "Delete storage?" : "刪除儲存空間?", + "Click to recheck the configuration" : "點擊以重新檢查組態設定", + "Saved" : "已儲存", + "Saving …" : "正在儲存…", + "Save" : "儲存", + "Failed to save global credentials" : "儲存全域憑證失敗", + "Failed to save global credentials: {message}" : "儲存全域憑證失敗:{message}", + "No external storage configured or you don't have the permission to configure them" : "未設定外部儲存空間組態,或您無權設定", "Open documentation" : "開啟文件", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", "Folder name" : "資料夾名稱", - "Authentication" : "驗證", - "Configuration" : "設定", - "Available for" : "可用的", - "Click to recheck the configuration" : "點擊以重新檢查設定", + "Authentication" : "認證", + "Configuration" : "組態設定", + "Available for" : "可使用者", "Add storage" : "新增儲存空間", "All people" : "所有使用者", "Advanced settings" : "進階設定", "Allow people to mount external storage" : "允許使用者自行掛載外部儲存空間", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於驗證多個有相同憑證的外部儲存空間。", - "Type to select user or group." : "輸入以選取使用者或群組。", - "Empty response from the server" : "伺服器回應為空", - "Couldn't access. Please log out and in again to activate this mount point" : "無法存取。請登出並重新登入以啟用此掛載點", - "Couldn't get the information from the remote server: {code} {type}" : "無法從遠端伺服器取得資訊:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表:{type}", - "There was an error with message: " : "錯誤訊息:", - "external-storage" : "外部儲存空間", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "無法擷取 Windows 網路磁碟掛載點列表:來自伺服器的空回應", - "Please enter the credentials for the {mount} mount" : "請輸入 {mount} 掛載的帳號密碼", - "Username" : "使用者名稱", - "Credentials saved" : "已儲存認證資訊", - "Credentials saving failed" : "認證資訊儲存失敗", - "Credentials required" : "需要認證資訊", - "Storage with ID \"%d\" is not user editable" : "使用者無法編輯 ID 為「%d」的儲存空間", - "Username and password" : "使用者名稱和密碼", - "Global credentials, user entered" : "全域認證資訊,使用者輸入", - "User entered, store in database" : "使用者輸入,儲存於資料庫", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "檢查目錄中每個檔案或資料夾的 ACL,以過濾掉使用者沒有讀取權限的項目,但可能會影響效能", - "Username as share" : "以使用者名稱分享", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了進階使用者更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", - "Name" : "名稱", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", - "All users" : "所有使用者", - "Allow users to mount external storage" : "允許使用者自行掛載外部儲存空間" + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於認證多個有相同憑證的外部儲存空間。", + "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", + "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼。", + "OAuth1" : "OAuth1", + "App key" : "應用程式金鑰", + "App secret" : "應用程式密鑰" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json index 3c40d64ec24..2c940437276 100644 --- a/apps/files_external/l10n/zh_TW.json +++ b/apps/files_external/l10n/zh_TW.json @@ -1,48 +1,27 @@ { "translations": { "Grant access" : "授予存取權", - "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", - "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼。", "Error configuring OAuth2" : "設定 OAuth2 時發生錯誤", "Generate keys" : "生成金鑰", "Error generating key pair" : "生成金鑰對時發生錯誤", - "Type to select account or group." : "輸入以選取使用者或群組。", - "(Group)" : "(群組)", - "Compatibility with Mac NFD encoding (slow)" : "與 Mac 的 NFD 編碼相容(較慢)", - "Enable encryption" : "啟用加密", - "Enable previews" : "啟動預覽", - "Enable sharing" : "啟動分享", - "Check for changes" : "檢查變動", - "Never" : "永不", - "Once every direct access" : "在每次進行存取動作時", - "Read only" : "唯讀", - "Disconnect" : "解除連線", - "Admin defined" : "管理員自訂", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因為設定的儲存空間數量過多,自動狀態檢查被停用,點擊以檢查狀態", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要斷開這個外部儲存空間嗎?這將讓該儲存空間無法在 Nextcloud 中使用,並將會在目前連線的任何同步客戶端上刪除這些檔案與資料夾,但不會刪除外部儲存空間本身的任何檔案與資料夾。", - "Delete storage?" : "刪除儲存空間?", - "Saved" : "已儲存", - "Saving …" : "正在儲存……", - "Save" : "儲存", + "You are not logged in" : "您尚未登入", + "Permission denied" : "沒有權限", "Forbidden to manage local mounts" : "禁止管理本機掛載", - "Storage with ID \"%d\" not found" : "沒有找到 ID 為「%d」的儲存空間 ", + "Storage with ID \"%d\" not found" : "沒有找到 ID 為「%d」的儲存空間", "Invalid backend or authentication mechanism class" : "無效的後端或認證機制類別", "Invalid mount point" : "無效的掛載點", "Objectstore forbidden" : "物件儲存禁止存取", "Invalid storage backend \"%s\"" : "無效的儲存後端「%s」", "Not permitted to use backend \"%s\"" : "不允許使用後端「%s」", - "Not permitted to use authentication mechanism \"%s\"" : "不允許使用驗證機制「%s」", + "Not permitted to use authentication mechanism \"%s\"" : "不允許使用認證機制「%s」", "Unsatisfied backend parameters" : "無法滿足後端所需的參數條件", - "Unsatisfied authentication mechanism parameters" : "無法滿足驗證機制所需的參數條件", + "Unsatisfied authentication mechanism parameters" : "無法滿足認證機制所需的參數條件", "Insufficient data: %s" : "資料不足:%s", "%s" : "%s", "Storage with ID \"%d\" is not editable by non-admins" : "非管理員無法編輯 ID 為「%d」的儲存空間", "Access key" : "存取金鑰", - "Secret key" : "私鑰", + "Secret key" : "私密金鑰", "Builtin" : "內建", "None" : "無", - "OAuth1" : "OAuth1", - "App key" : "應用程式金鑰", - "App secret" : "應用程式密碼", "OAuth2" : "OAuth2", "Client ID" : "客戶端 ID", "Client secret" : "客戶端密碼", @@ -55,29 +34,30 @@ "Domain" : "網域", "Rackspace" : "Rackspace", "API key" : "API 金鑰", - "Global credentials" : "全域認證資訊", + "Global credentials" : "全域憑證資訊", "Log-in credentials, save in database" : "登入憑證,儲存於資料庫", "Login and password" : "帳號與密碼", - "Log-in credentials, save in session" : "登入資訊,儲存於工作階段", + "Log-in credentials, save in session" : "登入憑證資訊,儲存於工作階段", "Global credentials, manually entered" : "全域憑證,手動輸入", "Manually entered, store in database" : "手動輸入,儲存於資料庫", "RSA public key" : "RSA 公開金鑰", "Public key" : "公開金鑰", "RSA private key" : "RSA 私鑰", "Private key" : "私鑰", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 預設領域,預設為 \"WORKGROUP\"", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Kerberos 預設領域,預設為「WORKGROUP」", "Kerberos ticket Apache mode" : "Kerberos 票證 Apache 模式", - "Kerberos ticket" : "Kerberos 票據", + "Kerberos ticket" : "Kerberos 票證", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "主機名稱", "Port" : "連接埠", "Region" : "地區", - "Storage Class" : "儲存類型", + "Storage Class" : "儲存類別", "Enable SSL" : "啟用 SSL", "Enable Path Style" : "啟用路徑樣式", - "Legacy (v2) authentication" : "舊版認證 (v2)", + "Legacy (v2) authentication" : "舊式認證 (v2)", "Enable multipart copy" : "啟用多部份複製", + "SSE-C encryption key" : "SSE-C 加密金鑰", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "遠端子資料夾", @@ -85,15 +65,15 @@ "FTP" : "FTP", "Host" : "主機", "Secure ftps://" : "安全 ftps://", - "Local" : "本機", - "Location" : "路徑", + "Local" : "本站", + "Location" : "位置", "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", "Root" : "Root", - "SFTP with secret key login" : "以私鑰登入 SFTP", + "SFTP with secret key login" : "以私密金鑰登入 SFTP", "SMB/CIFS" : "SMB/CIFS", "Share" : "分享", - "Show hidden files" : "顯示隱藏的檔案", + "Show hidden files" : "顯示隱藏檔", "Case sensitive file system" : "區分大小寫檔案系統", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", "Verify ACL access when listing files" : "列出檔案時驗證 ACL 存取權", @@ -104,68 +84,77 @@ "OpenStack Object Storage" : "OpenStack 物件儲存", "Service name" : "服務名稱", "Request timeout (seconds)" : "請求逾時(秒)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 cURL 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝它。", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 FTP 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝它。", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "「%1$s」未安裝。無法掛載 %2$s。請要求您的系統管理員安裝它。", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 cURL 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝。", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP 的 FTP 支援未啟用或安裝。無法掛載 %s。請要求您的系統管理員安裝。", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "「%1$s」未安裝。無法掛載 %2$s。請要求您的系統管理員安裝。", "External storage" : "外部儲存空間", "External storage support" : "外部儲存空間支援", "Adds basic external storage support" : "新增基本的外部儲存空間支援", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了管理員更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", + "Confirm" : "確認", + "Storage credentials" : "儲存空間憑證", + "To access the storage, you need to provide the authentication credentials." : "要存取儲存空間,您必須提供驗證憑證。", + "Enter the storage login" : "輸入儲存空間登入帳號", + "Enter the storage password" : "輸入儲存空間密碼", + "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間組態設定。{statusMessage}", + "New configuration successfully saved" : "已成功儲存新組態設定", "Enter missing credentials" : "輸入缺少的憑證", - "Unable to update this external storage config. {statusMessage}" : "無法更新此外部儲存空間設定。{statusMessage}", - "New configuration successfully saved" : "已成功儲存新設定", + "Credentials successfully set" : "已成功設定憑證", + "Error while setting credentials: {error}" : "設定憑證時發生錯誤:{error}", + "Checking storage …" : "正在檢查儲存空間……", "There was an error with this external storage." : "此外部儲存空間發生錯誤。", "We were unable to check the external storage {basename}" : "我們無法檢查外部儲存空間 {basename}", - "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間設定", - "Open in Files" : "在「檔案」應用程式中開啟", - "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中審閱此掛載點的設定嗎?", + "Examine this faulty external storage configuration" : "檢查此錯誤的外部儲存空間組態設定", + "Open in Files" : "以「檔案」開啟", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "此外部儲存空間有錯誤。您想要在設定頁面中檢閱此掛載點的組態設定嗎?", "External mount error" : "外部掛載錯誤", "List of external storage." : "外部儲存空間清單。", - "There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間。您可以在「個人設定」中設定它們。", - "There is no external storage configured and you don't have the permission to configure them." : "沒有設定外部儲存空間,且您沒有設定它們的權限。", + "There is no external storage configured. You can configure them in your Personal settings." : "未設定外部儲存空間組態。您可以在「個人設定」中設定它們。", + "There is no external storage configured and you don't have the permission to configure them." : "未設定外部儲存空間組態,而且您無權設定。", "No external storage" : "無外部儲存空間", "Storage type" : "儲存空間類型", "Unknown" : "未知", "Scope" : "範圍", "Personal" : "個人", "System" : "系統", - "No external storage configured or you don't have the permission to configure them" : "未設定外部儲存空間,或您沒有權限設定它們", + "Type to select account or group." : "輸入以選取使用者或群組。", + "(Group)" : "(群組)", + "Compatibility with Mac NFD encoding (slow)" : "與 Mac NFD 編碼相容(較慢)", + "Enable encryption" : "啟用加密", + "Enable previews" : "啟用預覽", + "Enable sharing" : "啟用分享", + "Check for changes" : "檢查變動", + "Never" : "永不", + "Once every direct access" : "在每次進行存取動作時", + "Read only" : "唯讀", + "Disconnect" : "中斷連結", + "Unknown backend: {backendName}" : "未知後端:{backendName}", + "Admin defined" : "管理員自訂", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "因為組態設定的儲存空間數量過多,自動狀態檢查被停用,點擊以檢查狀態", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "您確定要中斷與這個外部儲存空間的連結嗎?這會讓該儲存空間無法在 Nextcloud 中使用,並將會在目前連線的任何同步客戶端上刪除這些檔案與資料夾,但不會刪除外部儲存空間本身的任何檔案與資料夾。", + "Delete storage?" : "刪除儲存空間?", + "Click to recheck the configuration" : "點擊以重新檢查組態設定", + "Saved" : "已儲存", + "Saving …" : "正在儲存…", + "Save" : "儲存", + "Failed to save global credentials" : "儲存全域憑證失敗", + "Failed to save global credentials: {message}" : "儲存全域憑證失敗:{message}", + "No external storage configured or you don't have the permission to configure them" : "未設定外部儲存空間組態,或您無權設定", "Open documentation" : "開啟文件", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", "Folder name" : "資料夾名稱", - "Authentication" : "驗證", - "Configuration" : "設定", - "Available for" : "可用的", - "Click to recheck the configuration" : "點擊以重新檢查設定", + "Authentication" : "認證", + "Configuration" : "組態設定", + "Available for" : "可使用者", "Add storage" : "新增儲存空間", "All people" : "所有使用者", "Advanced settings" : "進階設定", "Allow people to mount external storage" : "允許使用者自行掛載外部儲存空間", - "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於驗證多個有相同憑證的外部儲存空間。", - "Type to select user or group." : "輸入以選取使用者或群組。", - "Empty response from the server" : "伺服器回應為空", - "Couldn't access. Please log out and in again to activate this mount point" : "無法存取。請登出並重新登入以啟用此掛載點", - "Couldn't get the information from the remote server: {code} {type}" : "無法從遠端伺服器取得資訊:{code} {type}", - "Couldn't get the list of external mount points: {type}" : "無法得到外部掛載點的列表:{type}", - "There was an error with message: " : "錯誤訊息:", - "external-storage" : "外部儲存空間", - "Couldn't fetch list of Windows network drive mount points: Empty response from server" : "無法擷取 Windows 網路磁碟掛載點列表:來自伺服器的空回應", - "Please enter the credentials for the {mount} mount" : "請輸入 {mount} 掛載的帳號密碼", - "Username" : "使用者名稱", - "Credentials saved" : "已儲存認證資訊", - "Credentials saving failed" : "認證資訊儲存失敗", - "Credentials required" : "需要認證資訊", - "Storage with ID \"%d\" is not user editable" : "使用者無法編輯 ID 為「%d」的儲存空間", - "Username and password" : "使用者名稱和密碼", - "Global credentials, user entered" : "全域認證資訊,使用者輸入", - "User entered, store in database" : "使用者輸入,儲存於資料庫", - "Disabling it will allow to use a case insentive file system, but comes with a performance penalty" : "停用其將允許使用不區分大小寫的檔案系統,但會帶來效能損失", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "檢查目錄中每個檔案或資料夾的 ACL,以過濾掉使用者沒有讀取權限的項目,但可能會影響效能", - "Username as share" : "以使用者名稱分享", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "此應用程式讓管理員可以設定到外部儲存空間提供者的連線,如 FTP 伺服器、S3 或 SWIFT 物件儲存、其他 Nextcloud 伺服器、WebDAV 伺服器與更多。管理員可以選擇要啟用的儲存空間類型,並可以為使用者、群組或整個系統掛載這些儲存位置。使用者將會在他們的 Nextcloud 根目錄看到一個新的資料夾,他們可以像其他 Nextcloud 資料夾那樣存取並使用該資料夾。外部儲存空間也允許使用者分享儲存在這些外部空間的檔案。在這種情況下,當收件者從外部儲存空間請求檔案時,將使用檔案擁有者的憑證來確保收件者可以存取被分享的檔案。\n\n可以使用圖形使用者介面或命令列設定外部儲存空間。後者提供了進階使用者更大的彈性,可用於設定大容量儲存空間的掛載並設定掛載屬性。更多資訊可在外部儲存空間圖形化使用者介面的文件與外部儲存空間設定檔文件中檢視。", - "Name" : "名稱", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "外部儲存空間讓您可以掛載外部儲存空間服務與裝置來作為次要的 Nextcloud 儲存裝置。您也可以允許使用者掛載他們自己的儲存服務。", - "All users" : "所有使用者", - "Allow users to mount external storage" : "允許使用者自行掛載外部儲存空間" + "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "全域憑證可用於認證多個有相同憑證的外部儲存空間。", + "Error configuring OAuth1" : "設定 OAuth1 時發生錯誤", + "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼。", + "OAuth1" : "OAuth1", + "App key" : "應用程式金鑰", + "App secret" : "應用程式密鑰" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_external/lib/AppInfo/Application.php b/apps/files_external/lib/AppInfo/Application.php index fc6a5d64e7c..a6c2aff947b 100644 --- a/apps/files_external/lib/AppInfo/Application.php +++ b/apps/files_external/lib/AppInfo/Application.php @@ -1,41 +1,19 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Ross Nicoll <jrn@jrn.me.uk> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\AppInfo; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCA\Files_External\Config\ConfigAdapter; use OCA\Files_External\Config\UserPlaceholderHandler; +use OCA\Files_External\ConfigLexicon; use OCA\Files_External\Lib\Auth\AmazonS3\AccessKey; use OCA\Files_External\Lib\Auth\Builtin; use OCA\Files_External\Lib\Auth\NullMechanism; -use OCA\Files_External\Lib\Auth\OAuth1\OAuth1; use OCA\Files_External\Lib\Auth\OAuth2\OAuth2; use OCA\Files_External\Lib\Auth\OpenStack\OpenStackV2; use OCA\Files_External\Lib\Auth\OpenStack\OpenStackV3; @@ -70,12 +48,11 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\AppFramework\QueryException; use OCP\Files\Config\IMountProviderCollection; use OCP\Group\Events\GroupDeletedEvent; use OCP\User\Events\UserDeletedEvent; -require_once __DIR__ . '/../../3rdparty/autoload.php'; - /** * @package OCA\Files_External\AppInfo */ @@ -85,7 +62,7 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide /** * Application constructor. * - * @throws \OCP\AppFramework\QueryException + * @throws QueryException */ public function __construct(array $urlParams = []) { parent::__construct(self::APP_ID, $urlParams); @@ -95,13 +72,14 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide $context->registerEventListener(UserDeletedEvent::class, UserDeletedListener::class); $context->registerEventListener(GroupDeletedEvent::class, GroupDeletedListener::class); $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); + $context->registerConfigLexicon(ConfigLexicon::class); } public function boot(IBootContext $context): void { - $context->injectFn(function (IMountProviderCollection $mountProviderCollection, ConfigAdapter $configAdapter) { + $context->injectFn(function (IMountProviderCollection $mountProviderCollection, ConfigAdapter $configAdapter): void { $mountProviderCollection->registerProvider($configAdapter); }); - $context->injectFn(function (BackendService $backendService, UserPlaceholderHandler $userConfigHandler) { + $context->injectFn(function (BackendService $backendService, UserPlaceholderHandler $userConfigHandler): void { $backendService->registerBackendProvider($this); $backendService->registerAuthMechanismProvider($this); $backendService->registerConfigHandler('user', function () use ($userConfigHandler) { @@ -157,9 +135,6 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide $container->get(GlobalAuth::class), $container->get(UserGlobalAuth::class), - // AuthMechanism::SCHEME_OAUTH1 mechanisms - $container->get(OAuth1::class), - // AuthMechanism::SCHEME_OAUTH2 mechanisms $container->get(OAuth2::class), diff --git a/apps/files_external/lib/BackgroundJob/CredentialsCleanup.php b/apps/files_external/lib/BackgroundJob/CredentialsCleanup.php index 1b5e7779df4..90a5ae17ab2 100644 --- a/apps/files_external/lib/BackgroundJob/CredentialsCleanup.php +++ b/apps/files_external/lib/BackgroundJob/CredentialsCleanup.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> - * - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\BackgroundJob; @@ -29,36 +12,27 @@ use OCA\Files_External\Lib\Auth\Password\LoginCredentials; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\AppFramework\Utility\ITimeFactory; -use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\TimedJob; use OCP\IUser; use OCP\IUserManager; use OCP\Security\ICredentialsManager; class CredentialsCleanup extends TimedJob { - private $credentialsManager; - private $userGlobalStoragesService; - private $userManager; - public function __construct( ITimeFactory $time, - ICredentialsManager $credentialsManager, - UserGlobalStoragesService $userGlobalStoragesService, - IUserManager $userManager + private ICredentialsManager $credentialsManager, + private UserGlobalStoragesService $userGlobalStoragesService, + private IUserManager $userManager, ) { parent::__construct($time); - $this->credentialsManager = $credentialsManager; - $this->userGlobalStoragesService = $userGlobalStoragesService; - $this->userManager = $userManager; - // run every day $this->setInterval(24 * 60 * 60); - $this->setTimeSensitivity(IJob::TIME_INSENSITIVE); + $this->setTimeSensitivity(self::TIME_INSENSITIVE); } protected function run($argument) { - $this->userManager->callForSeenUsers(function (IUser $user) { + $this->userManager->callForSeenUsers(function (IUser $user): void { $storages = $this->userGlobalStoragesService->getAllStoragesForUser($user); $usesLoginCredentials = array_reduce($storages, function (bool $uses, StorageConfig $storage) { diff --git a/apps/files_external/lib/Command/Applicable.php b/apps/files_external/lib/Command/Applicable.php index 6d917ae11b1..4d5e264bfaf 100644 --- a/apps/files_external/lib/Command/Applicable.php +++ b/apps/files_external/lib/Command/Applicable.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -28,13 +11,13 @@ use OC\Core\Command\Base; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; +use OCP\AppFramework\Http; use OCP\IGroupManager; use OCP\IUserManager; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\HttpFoundation\Response; class Applicable extends Base { public function __construct( @@ -88,7 +71,7 @@ class Applicable extends Base { $mount = $this->globalService->getStorage($mountId); } catch (NotFoundException $e) { $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } if ($mount->getType() === StorageConfig::MOUNT_TYPE_PERSONAL) { @@ -108,13 +91,13 @@ class Applicable extends Base { foreach ($addUsers as $addUser) { if (!$this->userManager->userExists($addUser)) { $output->writeln('<error>User "' . $addUser . '" not found</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } } foreach ($addGroups as $addGroup) { if (!$this->groupManager->groupExists($addGroup)) { $output->writeln('<error>Group "' . $addGroup . '" not found</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } } diff --git a/apps/files_external/lib/Command/Backends.php b/apps/files_external/lib/Command/Backends.php index 3a0f26a2803..7fab0477adf 100644 --- a/apps/files_external/lib/Command/Backends.php +++ b/apps/files_external/lib/Command/Backends.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -111,7 +95,7 @@ class Backends extends Base { */ private function formatConfiguration(array $parameters): array { $configuration = array_filter($parameters, function (DefinitionParameter $parameter) { - return $parameter->getType() !== DefinitionParameter::VALUE_HIDDEN; + return $parameter->isFlagSet(DefinitionParameter::FLAG_HIDDEN); }); return array_map(function (DefinitionParameter $parameter) { return $parameter->getTypeName(); diff --git a/apps/files_external/lib/Command/Config.php b/apps/files_external/lib/Command/Config.php index 3b905cc74fb..883b4a2f3e7 100644 --- a/apps/files_external/lib/Command/Config.php +++ b/apps/files_external/lib/Command/Config.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Ardinis <Ardinis@users.noreply.github.com> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -28,10 +11,10 @@ use OC\Core\Command\Base; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; +use OCP\AppFramework\Http; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\HttpFoundation\Response; class Config extends Base { public function __construct( @@ -67,7 +50,7 @@ class Config extends Base { $mount = $this->globalService->getStorage($mountId); } catch (NotFoundException $e) { $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } $value = $input->getArgument('value'); @@ -91,7 +74,7 @@ class Config extends Base { if (!is_string($value) && json_decode(json_encode($value)) === $value) { // show bools and objects correctly $value = json_encode($value); } - $output->writeln($value); + $output->writeln((string)$value); } /** diff --git a/apps/files_external/lib/Command/Create.php b/apps/files_external/lib/Command/Create.php index 50f7fb1cb43..3307015518a 100644 --- a/apps/files_external/lib/Command/Create.php +++ b/apps/files_external/lib/Command/Create.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -35,6 +18,7 @@ use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\StoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCP\AppFramework\Http; use OCP\IUserManager; use OCP\IUserSession; use Symfony\Component\Console\Input\ArrayInput; @@ -42,7 +26,6 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\HttpFoundation\Response; class Create extends Base { public function __construct( @@ -111,11 +94,11 @@ class Create extends Base { } if (is_null($storageBackend)) { $output->writeln('<error>Storage backend with identifier "' . $storageIdentifier . '" not found (see `occ files_external:backends` for possible values)</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } if (is_null($authBackend)) { $output->writeln('<error>Authentication backend with identifier "' . $authIdentifier . '" not found (see `occ files_external:backends` for possible values)</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } $supportedSchemes = array_keys($storageBackend->getAuthSchemes()); if (!in_array($authBackend->getScheme(), $supportedSchemes)) { diff --git a/apps/files_external/lib/Command/Delete.php b/apps/files_external/lib/Command/Delete.php index 6b6ae299773..9f121250f7d 100644 --- a/apps/files_external/lib/Command/Delete.php +++ b/apps/files_external/lib/Command/Delete.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -27,15 +11,16 @@ use OC\Core\Command\Base; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCP\AppFramework\Http; use OCP\IUserManager; use OCP\IUserSession; +use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ConfirmationQuestion; -use Symfony\Component\HttpFoundation\Response; class Delete extends Base { public function __construct( @@ -43,6 +28,7 @@ class Delete extends Base { protected UserStoragesService $userService, protected IUserSession $userSession, protected IUserManager $userManager, + protected QuestionHelper $questionHelper, ) { parent::__construct(); } @@ -70,7 +56,7 @@ class Delete extends Base { $mount = $this->globalService->getStorage($mountId); } catch (NotFoundException $e) { $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } $noConfirm = $input->getOption('yes'); @@ -81,6 +67,7 @@ class Delete extends Base { $listInput->setOption('output', $input->getOption('output')); $listCommand->listMounts(null, [$mount], $listInput, $output); + /** @var QuestionHelper $questionHelper */ $questionHelper = $this->getHelper('question'); $question = new ConfirmationQuestion('Delete this mount? [y/N] ', false); diff --git a/apps/files_external/lib/Command/Dependencies.php b/apps/files_external/lib/Command/Dependencies.php new file mode 100644 index 00000000000..d2db8a8c9af --- /dev/null +++ b/apps/files_external/lib/Command/Dependencies.php @@ -0,0 +1,57 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCA\Files_External\Command; + +use OC\Core\Command\Base; +use OCA\Files_External\Service\BackendService; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class Dependencies extends Base { + public function __construct( + private readonly BackendService $backendService, + ) { + parent::__construct(); + } + + protected function configure(): void { + $this + ->setName('files_external:dependencies') + ->setDescription('Show information about the backend dependencies'); + parent::configure(); + } + + protected function execute(InputInterface $input, OutputInterface $output): int { + $storageBackends = $this->backendService->getBackends(); + + $anyMissing = false; + + foreach ($storageBackends as $backend) { + if ($backend->getDeprecateTo() !== null) { + continue; + } + $missingDependencies = $backend->checkDependencies(); + if ($missingDependencies) { + $anyMissing = true; + $output->writeln($backend->getText() . ':'); + foreach ($missingDependencies as $missingDependency) { + if ($missingDependency->getMessage()) { + $output->writeln(" - <comment>{$missingDependency->getDependency()}</comment>: {$missingDependency->getMessage()}"); + } else { + $output->writeln(" - <comment>{$missingDependency->getDependency()}</comment>"); + } + } + } + } + + if (!$anyMissing) { + $output->writeln('<info>All dependencies are met</info>'); + } + + return self::SUCCESS; + } +} diff --git a/apps/files_external/lib/Command/Export.php b/apps/files_external/lib/Command/Export.php index b5f7b67eafb..59484d0e788 100644 --- a/apps/files_external/lib/Command/Export.php +++ b/apps/files_external/lib/Command/Export.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; diff --git a/apps/files_external/lib/Command/Import.php b/apps/files_external/lib/Command/Import.php index a4976b21cb7..a9ed76fbe40 100644 --- a/apps/files_external/lib/Command/Import.php +++ b/apps/files_external/lib/Command/Import.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -77,7 +60,7 @@ class Import extends Base { } protected function execute(InputInterface $input, OutputInterface $output): int { - $user = (string) $input->getOption('user'); + $user = (string)$input->getOption('user'); $path = $input->getArgument('path'); if ($path === '-') { $json = file_get_contents('php://stdin'); @@ -130,12 +113,12 @@ class Import extends Base { foreach ($mounts as $mount) { foreach ($existingMounts as $existingMount) { if ( - $existingMount->getMountPoint() === $mount->getMountPoint() && - $existingMount->getApplicableGroups() === $mount->getApplicableGroups() && - $existingMount->getApplicableUsers() === $mount->getApplicableUsers() && - $existingMount->getBackendOptions() === $mount->getBackendOptions() + $existingMount->getMountPoint() === $mount->getMountPoint() + && $existingMount->getApplicableGroups() === $mount->getApplicableGroups() + && $existingMount->getApplicableUsers() === $mount->getApplicableUsers() + && $existingMount->getBackendOptions() === $mount->getBackendOptions() ) { - $output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>"); + $output->writeln('<error>Duplicate mount (' . $mount->getMountPoint() . ')</error>'); return self::FAILURE; } } diff --git a/apps/files_external/lib/Command/ListCommand.php b/apps/files_external/lib/Command/ListCommand.php index f83df5747df..350916b6c2c 100644 --- a/apps/files_external/lib/Command/ListCommand.php +++ b/apps/files_external/lib/Command/ListCommand.php @@ -1,27 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Daniel Kesselberg <mail@danielkesselberg.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -104,11 +86,11 @@ class ListCommand extends Base { $output->writeln('[]'); } else { if ($userId === self::ALL) { - $output->writeln("<info>No mounts configured</info>"); + $output->writeln('<info>No mounts configured</info>'); } elseif ($userId) { $output->writeln("<info>No mounts configured by $userId</info>"); } else { - $output->writeln("<info>No admin mounts configured</info>"); + $output->writeln('<info>No admin mounts configured</info>'); } } return; diff --git a/apps/files_external/lib/Command/Notify.php b/apps/files_external/lib/Command/Notify.php index 81188960b50..0982aa5598b 100644 --- a/apps/files_external/lib/Command/Notify.php +++ b/apps/files_external/lib/Command/Notify.php @@ -3,29 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl> - * - * @author Ari Selseng <ari@selseng.net> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Command; @@ -116,7 +95,7 @@ class Notify extends StorageAuthBase { $this->selfTest($storage, $notifyHandler, $output); } - $notifyHandler->listen(function (IChange $change) use ($mount, $output, $dryRun) { + $notifyHandler->listen(function (IChange $change) use ($mount, $output, $dryRun): void { $this->logUpdate($change, $output); if ($change instanceof IRenameChange) { $this->markParentAsOutdated($mount->getId(), $change->getTargetPath(), $output, $dryRun); @@ -157,7 +136,7 @@ class Notify extends StorageAuthBase { $storageIds = array_values(array_unique($storageIds)); if ($dryRun) { - $output->writeln(" dry-run: skipping database write"); + $output->writeln(' dry-run: skipping database write'); } else { $result = $this->updateParent($storageIds, $parent); if ($result === 0) { @@ -189,7 +168,7 @@ class Notify extends StorageAuthBase { } private function getStorageIds(int $mountId, string $path): array { - $pathHash = md5(trim((string)\OC_Util::normalizeUnicode($path), '/')); + $pathHash = md5(trim(\OC_Util::normalizeUnicode($path), '/')); $qb = $this->connection->getQueryBuilder(); return $qb ->select('storage_id', 'user_id') @@ -202,7 +181,7 @@ class Notify extends StorageAuthBase { } private function updateParent(array $storageIds, string $parent): int { - $pathHash = md5(trim((string)\OC_Util::normalizeUnicode($parent), '/')); + $pathHash = md5(trim(\OC_Util::normalizeUnicode($parent), '/')); $qb = $this->connection->getQueryBuilder(); return $qb ->update('filecache') @@ -236,7 +215,7 @@ class Notify extends StorageAuthBase { private function selfTest(IStorage $storage, INotifyHandler $notifyHandler, OutputInterface $output): void { usleep(100 * 1000); //give time for the notify to start if (!$storage->file_put_contents('/.nc_test_file.txt', 'test content')) { - $output->writeln("Failed to create test file for self-test"); + $output->writeln('Failed to create test file for self-test'); return; } $storage->mkdir('/.nc_test_folder'); diff --git a/apps/files_external/lib/Command/Option.php b/apps/files_external/lib/Command/Option.php index 8ef423e2699..3fda3fcb3cf 100644 --- a/apps/files_external/lib/Command/Option.php +++ b/apps/files_external/lib/Command/Option.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; @@ -54,7 +39,7 @@ class Option extends Config { if (!is_string($value)) { // show bools and objects correctly $value = json_encode($value); } - $output->writeln($value); + $output->writeln((string)$value); } /** diff --git a/apps/files_external/lib/Command/Scan.php b/apps/files_external/lib/Command/Scan.php index 5fa8f8108d2..75d98878baa 100644 --- a/apps/files_external/lib/Command/Scan.php +++ b/apps/files_external/lib/Command/Scan.php @@ -2,23 +2,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Command; @@ -26,6 +11,7 @@ namespace OCA\Files_External\Command; use OC\Files\Cache\Scanner; use OCA\Files_External\Service\GlobalStoragesService; use OCP\IUserManager; +use OCP\Lock\LockedException; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -39,7 +25,7 @@ class Scan extends StorageAuthBase { public function __construct( GlobalStoragesService $globalService, - IUserManager $userManager + IUserManager $userManager, ) { parent::__construct($globalService, $userManager); } @@ -68,6 +54,11 @@ class Scan extends StorageAuthBase { InputOption::VALUE_OPTIONAL, 'The path in the storage to scan', '' + )->addOption( + 'unscanned', + '', + InputOption::VALUE_NONE, + 'only scan files which are marked as not fully scanned' ); parent::configure(); } @@ -85,19 +76,39 @@ class Scan extends StorageAuthBase { /** @var Scanner $scanner */ $scanner = $storage->getScanner(); - $scanner->listen('\OC\Files\Cache\Scanner', 'scanFile', function (string $path) use ($output) { + $scanner->listen('\OC\Files\Cache\Scanner', 'scanFile', function (string $path) use ($output): void { $output->writeln("\tFile\t<info>$path</info>", OutputInterface::VERBOSITY_VERBOSE); ++$this->filesCounter; $this->abortIfInterrupted(); }); - $scanner->listen('\OC\Files\Cache\Scanner', 'scanFolder', function (string $path) use ($output) { + $scanner->listen('\OC\Files\Cache\Scanner', 'scanFolder', function (string $path) use ($output): void { $output->writeln("\tFolder\t<info>$path</info>", OutputInterface::VERBOSITY_VERBOSE); ++$this->foldersCounter; $this->abortIfInterrupted(); }); - $scanner->scan($path); + try { + if ($input->getOption('unscanned')) { + if ($path !== '') { + $output->writeln('<error>--unscanned is mutually exclusive with --path</error>'); + return 1; + } + $scanner->backgroundScan(); + } else { + $scanner->scan($path); + } + } catch (LockedException $e) { + if (is_string($e->getReadablePath()) && str_starts_with($e->getReadablePath(), 'scanner::')) { + if ($e->getReadablePath() === 'scanner::') { + $output->writeln('<error>Another process is already scanning this storage</error>'); + } else { + $output->writeln('<error>Another process is already scanning \'' . substr($e->getReadablePath(), strlen('scanner::')) . '\' in this storage</error>'); + } + } else { + throw $e; + } + } $this->presentStats($output); diff --git a/apps/files_external/lib/Command/StorageAuthBase.php b/apps/files_external/lib/Command/StorageAuthBase.php index db76bb1a233..6f830a08a60 100644 --- a/apps/files_external/lib/Command/StorageAuthBase.php +++ b/apps/files_external/lib/Command/StorageAuthBase.php @@ -2,23 +2,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Command; @@ -67,7 +52,7 @@ abstract class StorageAuthBase extends Base { protected function createStorage(InputInterface $input, OutputInterface $output): array { try { /** @var StorageConfig|null $mount */ - $mount = $this->globalService->getStorage($input->getArgument('mount_id')); + $mount = $this->globalService->getStorage((int)$input->getArgument('mount_id')); } catch (NotFoundException $e) { $output->writeln('<error>Mount not found</error>'); return [null, null]; diff --git a/apps/files_external/lib/Command/Verify.php b/apps/files_external/lib/Command/Verify.php index 590206d2099..ecebbe0f7e6 100644 --- a/apps/files_external/lib/Command/Verify.php +++ b/apps/files_external/lib/Command/Verify.php @@ -1,40 +1,24 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Command; use OC\Core\Command\Base; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; +use OCP\AppFramework\Http; use OCP\Files\StorageNotAvailableException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\HttpFoundation\Response; class Verify extends Base { public function __construct( @@ -68,7 +52,7 @@ class Verify extends Base { $mount = $this->globalService->getStorage($mountId); } catch (NotFoundException $e) { $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>'); - return Response::HTTP_NOT_FOUND; + return Http::STATUS_NOT_FOUND; } $this->updateStorageStatus($mount, $configInput, $output); @@ -110,10 +94,9 @@ class Verify extends Base { $backend = $storage->getBackend(); // update status (can be time-consuming) $storage->setStatus( - \OCA\Files_External\MountConfig::getBackendStatus( + MountConfig::getBackendStatus( $backend->getStorageClass(), $storage->getBackendOptions(), - false ) ); } catch (InsufficientDataForMeaningfulAnswerException $e) { diff --git a/apps/files_external/lib/Config/ConfigAdapter.php b/apps/files_external/lib/Config/ConfigAdapter.php index 12b6a24bcbe..a46c0fd5c66 100644 --- a/apps/files_external/lib/Config/ConfigAdapter.php +++ b/apps/files_external/lib/Config/ConfigAdapter.php @@ -1,47 +1,33 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Julius Härtl <jus@bitgrid.net> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Config; +use OC\Files\Cache\Storage; use OC\Files\Storage\FailedStorage; use OC\Files\Storage\Wrapper\Availability; use OC\Files\Storage\Wrapper\KnownMtime; use OCA\Files_External\Lib\PersonalMount; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\Service\UserGlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCP\AppFramework\QueryException; use OCP\Files\Config\IMountProvider; -use OCP\Files\Storage; +use OCP\Files\Mount\IMountPoint; +use OCP\Files\ObjectStore\IObjectStore; +use OCP\Files\Storage\IConstructableStorage; +use OCP\Files\Storage\IStorage; use OCP\Files\Storage\IStorageFactory; use OCP\Files\StorageNotAvailableException; use OCP\IUser; +use OCP\Server; use Psr\Clock\ClockInterface; +use Psr\Log\LoggerInterface; /** * Make the old files_external config work with the new public mount config api @@ -55,23 +41,31 @@ class ConfigAdapter implements IMountProvider { } /** + * @param class-string $class + * @return class-string<IObjectStore> + * @throws \InvalidArgumentException + * @psalm-taint-escape callable + */ + private function validateObjectStoreClassString(string $class): string { + if (!\is_subclass_of($class, IObjectStore::class)) { + throw new \InvalidArgumentException('Invalid object store'); + } + return $class; + } + + /** * Process storage ready for mounting * - * @param StorageConfig $storage - * @param IUser $user - * @throws \OCP\AppFramework\QueryException + * @throws QueryException */ - private function prepareStorageConfig(StorageConfig &$storage, IUser $user) { + private function prepareStorageConfig(StorageConfig &$storage, IUser $user): void { foreach ($storage->getBackendOptions() as $option => $value) { - $storage->setBackendOption($option, \OCA\Files_External\MountConfig::substitutePlaceholdersInConfig($value, $user->getUID())); + $storage->setBackendOption($option, MountConfig::substitutePlaceholdersInConfig($value, $user->getUID())); } $objectStore = $storage->getBackendOption('objectstore'); if ($objectStore) { - $objectClass = $objectStore['class']; - if (!is_subclass_of($objectClass, '\OCP\Files\ObjectStore\IObjectStore')) { - throw new \InvalidArgumentException('Invalid object store'); - } + $objectClass = $this->validateObjectStoreClassString($objectStore['class']); $storage->setBackendOption('objectstore', new $objectClass($objectStore)); } @@ -83,10 +77,12 @@ class ConfigAdapter implements IMountProvider { * Construct the storage implementation * * @param StorageConfig $storageConfig - * @return Storage */ - private function constructStorage(StorageConfig $storageConfig) { + private function constructStorage(StorageConfig $storageConfig): IStorage { $class = $storageConfig->getBackend()->getStorageClass(); + if (!is_a($class, IConstructableStorage::class, true)) { + Server::get(LoggerInterface::class)->warning('Building a storage not implementing IConstructableStorage is deprecated since 31.0.0', ['class' => $class]); + } $storage = new $class($storageConfig->getBackendOptions()); // auth mechanism should fire first @@ -99,9 +95,7 @@ class ConfigAdapter implements IMountProvider { /** * Get all mountpoints applicable for the user * - * @param \OCP\IUser $user - * @param \OCP\Files\Storage\IStorageFactory $loader - * @return \OCP\Files\Mount\IMountPoint[] + * @return IMountPoint[] */ public function getMountsForUser(IUser $user, IStorageFactory $loader) { $this->userStoragesService->setUser($user); @@ -120,11 +114,11 @@ class ConfigAdapter implements IMountProvider { }, $storageConfigs); - \OC\Files\Cache\Storage::getGlobalCache()->loadForStorageIds(array_map(function (Storage\IStorage $storage) { + Storage::getGlobalCache()->loadForStorageIds(array_map(function (IStorage $storage) { return $storage->getId(); }, $storages)); - $availableStorages = array_map(function (Storage\IStorage $storage, StorageConfig $storageConfig) { + $availableStorages = array_map(function (IStorage $storage, StorageConfig $storageConfig): IStorage { try { $availability = $storage->getAvailability(); if (!$availability['available'] && !Availability::shouldRecheck($availability)) { @@ -139,7 +133,7 @@ class ConfigAdapter implements IMountProvider { return $storage; }, $storages, $storageConfigs); - $mounts = array_map(function (StorageConfig $storageConfig, Storage\IStorage $storage) use ($user, $loader) { + $mounts = array_map(function (StorageConfig $storageConfig, IStorage $storage) use ($user, $loader) { $storage->setOwner($user->getUID()); if ($storageConfig->getType() === StorageConfig::MOUNT_TYPE_PERSONAL) { return new PersonalMount( diff --git a/apps/files_external/lib/Config/ExternalMountPoint.php b/apps/files_external/lib/Config/ExternalMountPoint.php index 0cda9914f0e..97569ed2913 100644 --- a/apps/files_external/lib/Config/ExternalMountPoint.php +++ b/apps/files_external/lib/Config/ExternalMountPoint.php @@ -1,25 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> - * - * @author Julius Härtl <jus@bitgrid.net> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; @@ -29,11 +12,15 @@ use OCA\Files_External\Lib\StorageConfig; class ExternalMountPoint extends MountPoint { - /** @var StorageConfig */ - protected $storageConfig; - - public function __construct(StorageConfig $storageConfig, $storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null, $mountId = null) { - $this->storageConfig = $storageConfig; + public function __construct( + protected StorageConfig $storageConfig, + $storage, + $mountpoint, + $arguments = null, + $loader = null, + $mountOptions = null, + $mountId = null, + ) { parent::__construct($storage, $mountpoint, $arguments, $loader, $mountOptions, $mountId, ConfigAdapter::class); } diff --git a/apps/files_external/lib/Config/IConfigHandler.php b/apps/files_external/lib/Config/IConfigHandler.php index cd7ca4d1050..9e8283cc58b 100644 --- a/apps/files_external/lib/Config/IConfigHandler.php +++ b/apps/files_external/lib/Config/IConfigHandler.php @@ -1,24 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; diff --git a/apps/files_external/lib/Config/SimpleSubstitutionTrait.php b/apps/files_external/lib/Config/SimpleSubstitutionTrait.php index 4f15d285032..85a76054fa8 100644 --- a/apps/files_external/lib/Config/SimpleSubstitutionTrait.php +++ b/apps/files_external/lib/Config/SimpleSubstitutionTrait.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; diff --git a/apps/files_external/lib/Config/SystemMountPoint.php b/apps/files_external/lib/Config/SystemMountPoint.php index 32a39c0e063..af0bf792140 100644 --- a/apps/files_external/lib/Config/SystemMountPoint.php +++ b/apps/files_external/lib/Config/SystemMountPoint.php @@ -2,28 +2,14 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; +use OCP\Files\Mount\IShareOwnerlessMount; use OCP\Files\Mount\ISystemMountPoint; -class SystemMountPoint extends ExternalMountPoint implements ISystemMountPoint { +class SystemMountPoint extends ExternalMountPoint implements ISystemMountPoint, IShareOwnerlessMount { } diff --git a/apps/files_external/lib/Config/UserContext.php b/apps/files_external/lib/Config/UserContext.php index a4ff27e42b5..fb5c79a9329 100644 --- a/apps/files_external/lib/Config/UserContext.php +++ b/apps/files_external/lib/Config/UserContext.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; @@ -33,26 +15,15 @@ use OCP\Share\IManager as ShareManager; class UserContext { - /** @var IUserSession */ - private $session; - - /** @var ShareManager */ - private $shareManager; - - /** @var IRequest */ - private $request; - /** @var string */ private $userId; - /** @var IUserManager */ - private $userManager; - - public function __construct(IUserSession $session, ShareManager $manager, IRequest $request, IUserManager $userManager) { - $this->session = $session; - $this->shareManager = $manager; - $this->request = $request; - $this->userManager = $userManager; + public function __construct( + private IUserSession $session, + private ShareManager $shareManager, + private IRequest $request, + private IUserManager $userManager, + ) { } public function getSession(): IUserSession { @@ -67,7 +38,7 @@ class UserContext { if ($this->userId !== null) { return $this->userId; } - if ($this->session && $this->session->getUser() !== null) { + if ($this->session->getUser() !== null) { return $this->session->getUser()->getUID(); } try { diff --git a/apps/files_external/lib/Config/UserPlaceholderHandler.php b/apps/files_external/lib/Config/UserPlaceholderHandler.php index b2ced2ecf6a..d158e6923c1 100644 --- a/apps/files_external/lib/Config/UserPlaceholderHandler.php +++ b/apps/files_external/lib/Config/UserPlaceholderHandler.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Config; diff --git a/apps/files_external/lib/ConfigLexicon.php b/apps/files_external/lib/ConfigLexicon.php new file mode 100644 index 00000000000..154f76c1989 --- /dev/null +++ b/apps/files_external/lib/ConfigLexicon.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Files_External; + +use OCP\Config\Lexicon\Entry; +use OCP\Config\Lexicon\ILexicon; +use OCP\Config\Lexicon\Strictness; +use OCP\Config\ValueType; + +/** + * Config Lexicon for files_sharing. + * + * Please Add & Manage your Config Keys in that file and keep the Lexicon up to date! + * + * {@see ILexicon} + */ +class ConfigLexicon implements ILexicon { + public const ALLOW_USER_MOUNTING = 'allow_user_mounting'; + public const USER_MOUNTING_BACKENDS = 'user_mounting_backends'; + + public function getStrictness(): Strictness { + return Strictness::NOTICE; + } + + public function getAppConfigs(): array { + return [ + new Entry(self::ALLOW_USER_MOUNTING, ValueType::BOOL, false, 'allow users to mount their own external filesystems', true), + new Entry(self::USER_MOUNTING_BACKENDS, ValueType::STRING, '', 'list of mounting backends available for users', true), + ]; + } + + public function getUserConfigs(): array { + return []; + } +} diff --git a/apps/files_external/lib/Controller/AjaxController.php b/apps/files_external/lib/Controller/AjaxController.php index a03243020e4..5cee6422530 100644 --- a/apps/files_external/lib/Controller/AjaxController.php +++ b/apps/files_external/lib/Controller/AjaxController.php @@ -1,51 +1,25 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Martin Mattel <martin.mattel@diemattels.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Ross Nicoll <jrn@jrn.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\Auth\PublicKey\RSA; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; +use OCP\IL10N; use OCP\IRequest; use OCP\IUserSession; class AjaxController extends Controller { - /** @var RSA */ - private $rsaMechanism; - /** @var GlobalAuth */ - private $globalAuth; - /** @var IUserSession */ - private $userSession; - /** @var IGroupManager */ - private $groupManager; - /** * @param string $appName * @param IRequest $request @@ -54,17 +28,16 @@ class AjaxController extends Controller { * @param IUserSession $userSession * @param IGroupManager $groupManager */ - public function __construct($appName, + public function __construct( + $appName, IRequest $request, - RSA $rsaMechanism, - GlobalAuth $globalAuth, - IUserSession $userSession, - IGroupManager $groupManager) { + private RSA $rsaMechanism, + private GlobalAuth $globalAuth, + private IUserSession $userSession, + private IGroupManager $groupManager, + private IL10N $l10n, + ) { parent::__construct($appName, $request); - $this->rsaMechanism = $rsaMechanism; - $this->globalAuth = $globalAuth; - $this->userSession = $userSession; - $this->groupManager = $groupManager; } /** @@ -82,39 +55,53 @@ class AjaxController extends Controller { /** * Generates an SSH public/private key pair. * - * @NoAdminRequired * @param int $keyLength */ + #[NoAdminRequired] public function getSshKeys($keyLength = 1024) { $key = $this->generateSshKeys($keyLength); - return new JSONResponse( - ['data' => [ + return new JSONResponse([ + 'data' => [ 'private_key' => $key['privatekey'], 'public_key' => $key['publickey'] ], - 'status' => 'success' - ]); + 'status' => 'success', + ]); } /** - * @NoAdminRequired - * * @param string $uid * @param string $user * @param string $password - * @return bool + * @return JSONResponse */ - public function saveGlobalCredentials($uid, $user, $password) { + #[NoAdminRequired] + #[PasswordConfirmationRequired(strict: true)] + public function saveGlobalCredentials($uid, $user, $password): JSONResponse { $currentUser = $this->userSession->getUser(); + if ($currentUser === null) { + return new JSONResponse([ + 'status' => 'error', + 'message' => $this->l10n->t('You are not logged in'), + ], Http::STATUS_UNAUTHORIZED); + } // Non-admins can only edit their own credentials - $allowedToEdit = ($currentUser->getUID() === $uid); + // Admin can edit global credentials + $allowedToEdit = $uid === '' + ? $this->groupManager->isAdmin($currentUser->getUID()) + : $currentUser->getUID() === $uid; if ($allowedToEdit) { $this->globalAuth->saveAuth($uid, $user, $password); - return true; - } else { - return false; + return new JSONResponse([ + 'status' => 'success', + ]); } + + return new JSONResponse([ + 'status' => 'success', + 'message' => $this->l10n->t('Permission denied'), + ], Http::STATUS_FORBIDDEN); } } diff --git a/apps/files_external/lib/Controller/ApiController.php b/apps/files_external/lib/Controller/ApiController.php index 591f73a28d7..49547357e6b 100644 --- a/apps/files_external/lib/Controller/ApiController.php +++ b/apps/files_external/lib/Controller/ApiController.php @@ -3,29 +3,9 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Jesús Macias <jmacias@solidgear.es> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; @@ -34,9 +14,10 @@ use OCA\Files_External\ResponseDefinitions; use OCA\Files_External\Service\UserGlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; -use OCP\AppFramework\Http\Attribute\OpenAPI; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCSController; +use OCP\Constants; use OCP\IRequest; /** @@ -44,18 +25,13 @@ use OCP\IRequest; */ class ApiController extends OCSController { - private UserGlobalStoragesService $userGlobalStoragesService; - private UserStoragesService $userStoragesService; - public function __construct( string $appName, IRequest $request, - UserGlobalStoragesService $userGlobalStorageService, - UserStoragesService $userStorageService + private UserGlobalStoragesService $userGlobalStoragesService, + private UserStoragesService $userStoragesService, ) { parent::__construct($appName, $request); - $this->userGlobalStoragesService = $userGlobalStorageService; - $this->userStoragesService = $userStorageService; } /** @@ -75,10 +51,10 @@ class ApiController extends OCSController { $isSystemMount = $mountConfig->getType() === StorageConfig::MOUNT_TYPE_ADMIN; - $permissions = \OCP\Constants::PERMISSION_READ; + $permissions = Constants::PERMISSION_READ; // personal mounts can be deleted if (!$isSystemMount) { - $permissions |= \OCP\Constants::PERMISSION_DELETE; + $permissions |= Constants::PERMISSION_DELETE; } $entry = [ @@ -96,14 +72,13 @@ class ApiController extends OCSController { } /** - * @NoAdminRequired - * * Get the mount points visible for this user * - * @return DataResponse<Http::STATUS_OK, Files_ExternalMount[], array{}> + * @return DataResponse<Http::STATUS_OK, list<Files_ExternalMount>, array{}> * * 200: User mounts returned */ + #[NoAdminRequired] public function getUserMounts(): DataResponse { $entries = []; $mountPoints = []; @@ -123,33 +98,4 @@ class ApiController extends OCSController { return new DataResponse($entries); } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * Ask for credentials using a browser's native basic auth prompt - * Then returns it if provided - */ - #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] - public function askNativeAuth(): DataResponse { - if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) { - $response = new DataResponse([], Http::STATUS_UNAUTHORIZED); - $response->addHeader('WWW-Authenticate', 'Basic realm="Storage authentification needed"'); - return $response; - } - - $user = $_SERVER['PHP_AUTH_USER']; - $password = $_SERVER['PHP_AUTH_PW']; - - // Reset auth - unset($_SERVER['PHP_AUTH_USER']); - unset($_SERVER['PHP_AUTH_PW']); - - // Using 401 again to ensure we clear any cached Authorization - return new DataResponse([ - 'user' => $user, - 'password' => $password, - ], Http::STATUS_UNAUTHORIZED); - } } diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index cb785695647..e7274c9cfb6 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -1,35 +1,16 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IConfig; use OCP\IGroupManager; @@ -62,7 +43,7 @@ class GlobalStoragesController extends StoragesController { LoggerInterface $logger, IUserSession $userSession, IGroupManager $groupManager, - IConfig $config + IConfig $config, ) { parent::__construct( $AppName, @@ -90,6 +71,7 @@ class GlobalStoragesController extends StoragesController { * * @return DataResponse */ + #[PasswordConfirmationRequired(strict: true)] public function create( $mountPoint, $backend, @@ -98,7 +80,7 @@ class GlobalStoragesController extends StoragesController { $mountOptions, $applicableUsers, $applicableGroups, - $priority + $priority, ) { $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); if (!$canCreateNewLocalStorage && $backend === 'local') { @@ -151,10 +133,10 @@ class GlobalStoragesController extends StoragesController { * @param array $applicableUsers users for which to mount the storage * @param array $applicableGroups groups for which to mount the storage * @param int $priority priority - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ + #[PasswordConfirmationRequired(strict: true)] public function update( $id, $mountPoint, @@ -165,7 +147,6 @@ class GlobalStoragesController extends StoragesController { $applicableUsers, $applicableGroups, $priority, - $testOnly = true ) { $storage = $this->createStorage( $mountPoint, @@ -198,7 +179,7 @@ class GlobalStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); return new DataResponse( $storage->jsonSerialize(true), diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 157ea0e7088..df3a4528054 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -1,30 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Jesús Macias <jmacias@solidgear.es> - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; @@ -32,10 +11,12 @@ use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\StoragesService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\DataResponse; use OCP\Files\StorageNotAvailableException; use OCP\IConfig; @@ -66,7 +47,7 @@ abstract class StoragesController extends Controller { protected LoggerInterface $logger, protected IUserSession $userSession, protected IGroupManager $groupManager, - protected IConfig $config + protected IConfig $config, ) { parent::__construct($AppName, $request); } @@ -93,7 +74,7 @@ abstract class StoragesController extends Controller { $mountOptions = null, $applicableUsers = null, $applicableGroups = null, - $priority = null + $priority = null, ) { $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); if (!$canCreateNewLocalStorage && $backend === 'local') { @@ -232,9 +213,8 @@ abstract class StoragesController extends Controller { * on whether the remote storage is available or not. * * @param StorageConfig $storage storage configuration - * @param bool $testOnly whether to storage should only test the connection or do more things */ - protected function updateStorageStatus(StorageConfig &$storage, $testOnly = true) { + protected function updateStorageStatus(StorageConfig &$storage) { try { $this->manipulateStorageConfig($storage); @@ -242,15 +222,13 @@ abstract class StoragesController extends Controller { $backend = $storage->getBackend(); // update status (can be time-consuming) $storage->setStatus( - \OCA\Files_External\MountConfig::getBackendStatus( + MountConfig::getBackendStatus( $backend->getStorageClass(), $storage->getBackendOptions(), - false, - $testOnly ) ); } catch (InsufficientDataForMeaningfulAnswerException $e) { - $status = $e->getCode() ? $e->getCode() : StorageNotAvailableException::STATUS_INDETERMINATE; + $status = $e->getCode() ?: StorageNotAvailableException::STATUS_INDETERMINATE; $storage->setStatus( (int)$status, $this->l10n->t('Insufficient data: %s', [$e->getMessage()]) @@ -287,15 +265,14 @@ abstract class StoragesController extends Controller { * Get an external storage entry. * * @param int $id storage id - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ - public function show($id, $testOnly = true) { + public function show(int $id) { try { $storage = $this->service->getStorage($id); - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); } catch (NotFoundException $e) { return new DataResponse( [ @@ -322,7 +299,8 @@ abstract class StoragesController extends Controller { * * @return DataResponse */ - public function destroy($id) { + #[PasswordConfirmationRequired(strict: true)] + public function destroy(int $id) { try { $this->service->removeStorage($id); } catch (NotFoundException $e) { diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index 5ada021ccab..88a9f936401 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -1,28 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; @@ -35,6 +16,8 @@ use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IConfig; use OCP\IGroupManager; @@ -66,7 +49,7 @@ class UserGlobalStoragesController extends StoragesController { LoggerInterface $logger, IUserSession $userSession, IGroupManager $groupManager, - IConfig $config + IConfig $config, ) { parent::__construct( $AppName, @@ -84,9 +67,8 @@ class UserGlobalStoragesController extends StoragesController { * Get all storage entries * * @return DataResponse - * - * @NoAdminRequired */ + #[NoAdminRequired] public function index() { /** @var UserGlobalStoragesService */ $service = $this->service; @@ -115,16 +97,14 @@ class UserGlobalStoragesController extends StoragesController { * Get an external storage entry. * * @param int $id storage id - * @param bool $testOnly whether to storage should only test the connection or do more things * @return DataResponse - * - * @NoAdminRequired */ - public function show($id, $testOnly = true) { + #[NoAdminRequired] + public function show($id) { try { $storage = $this->service->getStorage($id); - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); } catch (NotFoundException $e) { return new DataResponse( [ @@ -152,16 +132,14 @@ class UserGlobalStoragesController extends StoragesController { * * @param int $id storage id * @param array $backendOptions backend-specific options - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse - * - * @NoAdminRequired */ + #[NoAdminRequired] + #[PasswordConfirmationRequired(strict: true)] public function update( $id, $backendOptions, - $testOnly = true ) { try { $storage = $this->service->getStorage($id); @@ -186,7 +164,7 @@ class UserGlobalStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); $this->sanitizeStorage($storage); return new DataResponse( diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index 7c141afcb30..7b564d57f7e 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -1,30 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Controller; @@ -34,6 +13,8 @@ use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IConfig; use OCP\IGroupManager; @@ -65,7 +46,7 @@ class UserStoragesController extends StoragesController { LoggerInterface $logger, IUserSession $userSession, IGroupManager $groupManager, - IConfig $config + IConfig $config, ) { parent::__construct( $AppName, @@ -91,10 +72,9 @@ class UserStoragesController extends StoragesController { /** * Get all storage entries * - * @NoAdminRequired - * * @return DataResponse */ + #[NoAdminRequired] public function index() { return parent::index(); } @@ -102,12 +82,11 @@ class UserStoragesController extends StoragesController { /** * Return storage * - * @NoAdminRequired - * * {@inheritdoc} */ - public function show($id, $testOnly = true) { - return parent::show($id, $testOnly); + #[NoAdminRequired] + public function show(int $id) { + return parent::show($id); } /** @@ -120,15 +99,15 @@ class UserStoragesController extends StoragesController { * @param array $mountOptions backend-specific mount options * * @return DataResponse - * - * @NoAdminRequired */ + #[NoAdminRequired] + #[PasswordConfirmationRequired(strict: true)] public function create( $mountPoint, $backend, $authMechanism, $backendOptions, - $mountOptions + $mountOptions, ) { $canCreateNewLocalStorage = $this->config->getSystemValue('files_external_allow_create_new_local', true); if (!$canCreateNewLocalStorage && $backend === 'local') { @@ -173,12 +152,11 @@ class UserStoragesController extends StoragesController { * @param string $authMechanism authentication mechanism identifier * @param array $backendOptions backend-specific options * @param array $mountOptions backend-specific mount options - * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse - * - * @NoAdminRequired */ + #[NoAdminRequired] + #[PasswordConfirmationRequired(strict: true)] public function update( $id, $mountPoint, @@ -186,7 +164,6 @@ class UserStoragesController extends StoragesController { $authMechanism, $backendOptions, $mountOptions, - $testOnly = true ) { $storage = $this->createStorage( $mountPoint, @@ -216,7 +193,7 @@ class UserStoragesController extends StoragesController { ); } - $this->updateStorageStatus($storage, $testOnly); + $this->updateStorageStatus($storage); return new DataResponse( $storage->jsonSerialize(true), @@ -227,11 +204,11 @@ class UserStoragesController extends StoragesController { /** * Delete storage * - * @NoAdminRequired - * * {@inheritdoc} */ - public function destroy($id) { + #[NoAdminRequired] + #[PasswordConfirmationRequired(strict: true)] + public function destroy(int $id) { return parent::destroy($id); } } diff --git a/apps/files_external/lib/Lib/Auth/AmazonS3/AccessKey.php b/apps/files_external/lib/Lib/Auth/AmazonS3/AccessKey.php index 7185fb511f5..c86c88a13d7 100644 --- a/apps/files_external/lib/Lib/Auth/AmazonS3/AccessKey.php +++ b/apps/files_external/lib/Lib/Auth/AmazonS3/AccessKey.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\AmazonS3; diff --git a/apps/files_external/lib/Lib/Auth/AuthMechanism.php b/apps/files_external/lib/Lib/Auth/AuthMechanism.php index 5ef5f78acd9..7b0544100fb 100644 --- a/apps/files_external/lib/Lib/Auth/AuthMechanism.php +++ b/apps/files_external/lib/Lib/Auth/AuthMechanism.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth; @@ -57,7 +40,6 @@ class AuthMechanism implements \JsonSerializable, IIdentifier, IFrontendDefiniti public const SCHEME_NULL = 'null'; public const SCHEME_BUILTIN = 'builtin'; public const SCHEME_PASSWORD = 'password'; - public const SCHEME_OAUTH1 = 'oauth1'; public const SCHEME_OAUTH2 = 'oauth2'; public const SCHEME_PUBLICKEY = 'publickey'; public const SCHEME_OPENSTACK = 'openstack'; diff --git a/apps/files_external/lib/Lib/Auth/Builtin.php b/apps/files_external/lib/Lib/Auth/Builtin.php index 91428156c75..8e12a6daca6 100644 --- a/apps/files_external/lib/Lib/Auth/Builtin.php +++ b/apps/files_external/lib/Lib/Auth/Builtin.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth; diff --git a/apps/files_external/lib/Lib/Auth/IUserProvided.php b/apps/files_external/lib/Lib/Auth/IUserProvided.php index f913e8e3ab5..2350d7f6db4 100644 --- a/apps/files_external/lib/Lib/Auth/IUserProvided.php +++ b/apps/files_external/lib/Lib/Auth/IUserProvided.php @@ -1,23 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth; diff --git a/apps/files_external/lib/Lib/Auth/InvalidAuth.php b/apps/files_external/lib/Lib/Auth/InvalidAuth.php index 1d2953b11cd..2af24f1ea07 100644 --- a/apps/files_external/lib/Lib/Auth/InvalidAuth.php +++ b/apps/files_external/lib/Lib/Auth/InvalidAuth.php @@ -1,23 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud GmbH. - * - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud GmbH. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth; diff --git a/apps/files_external/lib/Lib/Auth/NullMechanism.php b/apps/files_external/lib/Lib/Auth/NullMechanism.php index 05b73b92fc1..8e2e5b656b2 100644 --- a/apps/files_external/lib/Lib/Auth/NullMechanism.php +++ b/apps/files_external/lib/Lib/Auth/NullMechanism.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth; diff --git a/apps/files_external/lib/Lib/Auth/OAuth1/OAuth1.php b/apps/files_external/lib/Lib/Auth/OAuth1/OAuth1.php deleted file mode 100644 index 44cdcf79523..00000000000 --- a/apps/files_external/lib/Lib/Auth/OAuth1/OAuth1.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ -namespace OCA\Files_External\Lib\Auth\OAuth1; - -use OCA\Files_External\Lib\Auth\AuthMechanism; -use OCA\Files_External\Lib\DefinitionParameter; -use OCP\IL10N; - -/** - * OAuth1 authentication - */ -class OAuth1 extends AuthMechanism { - public function __construct(IL10N $l) { - $this - ->setIdentifier('oauth1::oauth1') - ->setScheme(self::SCHEME_OAUTH1) - ->setText($l->t('OAuth1')) - ->addParameters([ - (new DefinitionParameter('configured', 'configured')) - ->setType(DefinitionParameter::VALUE_HIDDEN), - new DefinitionParameter('app_key', $l->t('App key')), - (new DefinitionParameter('app_secret', $l->t('App secret'))) - ->setType(DefinitionParameter::VALUE_PASSWORD), - (new DefinitionParameter('token', 'token')) - ->setType(DefinitionParameter::VALUE_HIDDEN), - (new DefinitionParameter('token_secret', 'token_secret')) - ->setType(DefinitionParameter::VALUE_HIDDEN), - ]) - ->addCustomJs('oauth1') - ; - } -} diff --git a/apps/files_external/lib/Lib/Auth/OAuth2/OAuth2.php b/apps/files_external/lib/Lib/Auth/OAuth2/OAuth2.php index 4dc2b23035a..beaf73c2344 100644 --- a/apps/files_external/lib/Lib/Auth/OAuth2/OAuth2.php +++ b/apps/files_external/lib/Lib/Auth/OAuth2/OAuth2.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\OAuth2; @@ -38,12 +22,14 @@ class OAuth2 extends AuthMechanism { ->setText($l->t('OAuth2')) ->addParameters([ (new DefinitionParameter('configured', 'configured')) - ->setType(DefinitionParameter::VALUE_HIDDEN), + ->setType(DefinitionParameter::VALUE_TEXT) + ->setFlag(DefinitionParameter::FLAG_HIDDEN), new DefinitionParameter('client_id', $l->t('Client ID')), (new DefinitionParameter('client_secret', $l->t('Client secret'))) ->setType(DefinitionParameter::VALUE_PASSWORD), (new DefinitionParameter('token', 'token')) - ->setType(DefinitionParameter::VALUE_HIDDEN), + ->setType(DefinitionParameter::VALUE_PASSWORD) + ->setFlag(DefinitionParameter::FLAG_HIDDEN), ]) ->addCustomJs('oauth2') ; diff --git a/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV2.php b/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV2.php index a36a86afce4..3b1c9f123af 100644 --- a/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV2.php +++ b/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV2.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\OpenStack; diff --git a/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV3.php b/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV3.php index 090a54596bc..b5d185fd374 100644 --- a/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV3.php +++ b/apps/files_external/lib/Lib/Auth/OpenStack/OpenStackV3.php @@ -3,28 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @author Julien Lutran <julien.lutran@corp.ovh.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Auth\OpenStack; diff --git a/apps/files_external/lib/Lib/Auth/OpenStack/Rackspace.php b/apps/files_external/lib/Lib/Auth/OpenStack/Rackspace.php index 2ec0b8b035e..b1d1068e586 100644 --- a/apps/files_external/lib/Lib/Auth/OpenStack/Rackspace.php +++ b/apps/files_external/lib/Lib/Auth/OpenStack/Rackspace.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\OpenStack; diff --git a/apps/files_external/lib/Lib/Auth/Password/GlobalAuth.php b/apps/files_external/lib/Lib/Auth/Password/GlobalAuth.php index 174efd96e3c..916b496b506 100644 --- a/apps/files_external/lib/Lib/Auth/Password/GlobalAuth.php +++ b/apps/files_external/lib/Lib/Auth/Password/GlobalAuth.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2015, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2015 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\Password; @@ -37,13 +20,12 @@ use OCP\Security\ICredentialsManager; */ class GlobalAuth extends AuthMechanism { public const CREDENTIALS_IDENTIFIER = 'password::global'; + private const PWD_PLACEHOLDER = '************************'; - /** @var ICredentialsManager */ - protected $credentialsManager; - - public function __construct(IL10N $l, ICredentialsManager $credentialsManager) { - $this->credentialsManager = $credentialsManager; - + public function __construct( + IL10N $l, + protected ICredentialsManager $credentialsManager, + ) { $this ->setIdentifier('password::global') ->setVisibility(BackendService::VISIBILITY_DEFAULT) @@ -59,11 +41,18 @@ class GlobalAuth extends AuthMechanism { 'password' => '' ]; } else { + $auth['password'] = self::PWD_PLACEHOLDER; return $auth; } } public function saveAuth($uid, $user, $password) { + // Use old password if it has not changed. + if ($password === self::PWD_PLACEHOLDER) { + $auth = $this->credentialsManager->retrieve($uid, self::CREDENTIALS_IDENTIFIER); + $password = $auth['password']; + } + $this->credentialsManager->store($uid, self::CREDENTIALS_IDENTIFIER, [ 'user' => $user, 'password' => $password diff --git a/apps/files_external/lib/Lib/Auth/Password/LoginCredentials.php b/apps/files_external/lib/Lib/Auth/Password/LoginCredentials.php index 5dc290d3548..ce38140b6ee 100644 --- a/apps/files_external/lib/Lib/Auth/Password/LoginCredentials.php +++ b/apps/files_external/lib/Lib/Auth/Password/LoginCredentials.php @@ -1,33 +1,14 @@ <?php + /** - * @copyright Copyright (c) 2015, ownCloud, Inc. - * - * @author blizzz <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2015 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\Password; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Listener\StorePasswordListener; @@ -49,36 +30,23 @@ use OCP\User\Events\UserLoggedInEvent; class LoginCredentials extends AuthMechanism { public const CREDENTIALS_IDENTIFIER = 'password::logincredentials/credentials'; - /** @var ISession */ - protected $session; - - /** @var ICredentialsManager */ - protected $credentialsManager; - - /** @var CredentialsStore */ - private $credentialsStore; - - /** @var ILDAPProviderFactory */ - private $ldapFactory; - public function __construct( IL10N $l, - ISession $session, - ICredentialsManager $credentialsManager, - CredentialsStore $credentialsStore, + protected ISession $session, + protected ICredentialsManager $credentialsManager, + private CredentialsStore $credentialsStore, IEventDispatcher $eventDispatcher, - ILDAPProviderFactory $ldapFactory + private ILDAPProviderFactory $ldapFactory, ) { - $this->session = $session; - $this->credentialsManager = $credentialsManager; - $this->credentialsStore = $credentialsStore; - $this->ldapFactory = $ldapFactory; - $this ->setIdentifier('password::logincredentials') ->setScheme(self::SCHEME_PASSWORD) ->setText($l->t('Log-in credentials, save in database')) ->addParameters([ + (new DefinitionParameter('password', $l->t('Password'))) + ->setType(DefinitionParameter::VALUE_PASSWORD) + ->setFlag(DefinitionParameter::FLAG_HIDDEN) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL), ]); $eventDispatcher->addServiceListener(UserLoggedInEvent::class, StorePasswordListener::class); @@ -121,7 +89,7 @@ class LoginCredentials extends AuthMechanism { } $credentials = $this->getCredentials($user); - $loginKey = $storage->getBackendOption("login_ldap_attr"); + $loginKey = $storage->getBackendOption('login_ldap_attr'); if ($loginKey) { $backend = $user->getBackend(); if ($backend instanceof IUserBackend && $backend->getBackendName() === 'LDAP') { diff --git a/apps/files_external/lib/Lib/Auth/Password/Password.php b/apps/files_external/lib/Lib/Auth/Password/Password.php index 3435ebbb1de..d4291148e3e 100644 --- a/apps/files_external/lib/Lib/Auth/Password/Password.php +++ b/apps/files_external/lib/Lib/Auth/Password/Password.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\Password; diff --git a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php index d2587991a96..8f161073771 100644 --- a/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php +++ b/apps/files_external/lib/Lib/Auth/Password/SessionCredentials.php @@ -1,35 +1,20 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\Password; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use OCA\Files_External\Lib\SessionStorageWrapper; use OCA\Files_External\Lib\StorageConfig; use OCP\Authentication\Exceptions\CredentialsUnavailableException; use OCP\Authentication\LoginCredentials\IStore as CredentialsStore; -use OCP\Files\Storage; +use OCP\Files\Storage\IStorage; use OCP\Files\StorageAuthException; use OCP\IL10N; use OCP\IUser; @@ -39,16 +24,19 @@ use OCP\IUser; */ class SessionCredentials extends AuthMechanism { - /** @var CredentialsStore */ - private $credentialsStore; - - public function __construct(IL10N $l, CredentialsStore $credentialsStore) { - $this->credentialsStore = $credentialsStore; - + public function __construct( + IL10N $l, + private CredentialsStore $credentialsStore, + ) { $this->setIdentifier('password::sessioncredentials') ->setScheme(self::SCHEME_PASSWORD) ->setText($l->t('Log-in credentials, save in session')) - ->addParameters([]); + ->addParameters([ + (new DefinitionParameter('password', $l->t('Password'))) + ->setType(DefinitionParameter::VALUE_PASSWORD) + ->setFlag(DefinitionParameter::FLAG_HIDDEN) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL), + ]); } /** @@ -73,7 +61,7 @@ class SessionCredentials extends AuthMechanism { $storage->setBackendOption('password', $credentials->getPassword()); } - public function wrapStorage(Storage $storage) { + public function wrapStorage(IStorage $storage): IStorage { return new SessionStorageWrapper(['storage' => $storage]); } } diff --git a/apps/files_external/lib/Lib/Auth/Password/UserGlobalAuth.php b/apps/files_external/lib/Lib/Auth/Password/UserGlobalAuth.php index d43c4327b6b..cb7165261ac 100644 --- a/apps/files_external/lib/Lib/Auth/Password/UserGlobalAuth.php +++ b/apps/files_external/lib/Lib/Auth/Password/UserGlobalAuth.php @@ -3,32 +3,13 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2019 Robin Appelman <robin@icewind.nl> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Auth\Password; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Service\BackendService; @@ -42,12 +23,10 @@ use OCP\Security\ICredentialsManager; class UserGlobalAuth extends AuthMechanism { private const CREDENTIALS_IDENTIFIER = 'password::global'; - /** @var ICredentialsManager */ - protected $credentialsManager; - - public function __construct(IL10N $l, ICredentialsManager $credentialsManager) { - $this->credentialsManager = $credentialsManager; - + public function __construct( + IL10N $l, + protected ICredentialsManager $credentialsManager, + ) { $this ->setIdentifier('password::global::user') ->setVisibility(BackendService::VISIBILITY_DEFAULT) @@ -61,6 +40,12 @@ class UserGlobalAuth extends AuthMechanism { if (!isset($backendOptions['user']) && !isset($backendOptions['password'])) { return; } + + if ($backendOptions['password'] === DefinitionParameter::UNMODIFIED_PLACEHOLDER) { + $oldCredentials = $this->credentialsManager->retrieve($user->getUID(), self::CREDENTIALS_IDENTIFIER); + $backendOptions['password'] = $oldCredentials['password']; + } + // make sure we're not setting any unexpected keys $credentials = [ 'user' => $backendOptions['user'], diff --git a/apps/files_external/lib/Lib/Auth/Password/UserProvided.php b/apps/files_external/lib/Lib/Auth/Password/UserProvided.php index 7fcbdb38336..b158392f6eb 100644 --- a/apps/files_external/lib/Lib/Auth/Password/UserProvided.php +++ b/apps/files_external/lib/Lib/Auth/Password/UserProvided.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2015, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2015 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\Password; @@ -40,12 +23,10 @@ use OCP\Security\ICredentialsManager; class UserProvided extends AuthMechanism implements IUserProvided { public const CREDENTIALS_IDENTIFIER_PREFIX = 'password::userprovided/'; - /** @var ICredentialsManager */ - protected $credentialsManager; - - public function __construct(IL10N $l, ICredentialsManager $credentialsManager) { - $this->credentialsManager = $credentialsManager; - + public function __construct( + IL10N $l, + protected ICredentialsManager $credentialsManager, + ) { $this ->setIdentifier('password::userprovided') ->setVisibility(BackendService::VISIBILITY_ADMIN) @@ -65,6 +46,11 @@ class UserProvided extends AuthMechanism implements IUserProvided { } public function saveBackendOptions(IUser $user, $mountId, array $options) { + if ($options['password'] === DefinitionParameter::UNMODIFIED_PLACEHOLDER) { + $oldCredentials = $this->credentialsManager->retrieve($user->getUID(), $this->getCredentialsIdentifier($mountId)); + $options['password'] = $oldCredentials['password']; + } + $this->credentialsManager->store($user->getUID(), $this->getCredentialsIdentifier($mountId), [ 'user' => $options['user'], // explicitly copy the fields we want instead of just passing the entire $options array 'password' => $options['password'] // this way we prevent users from being able to modify any other field diff --git a/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php b/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php index 67259ffc5b3..ad95c743d2d 100644 --- a/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php +++ b/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Auth\PublicKey; @@ -36,12 +20,10 @@ use phpseclib\Crypt\RSA as RSACrypt; */ class RSA extends AuthMechanism { - /** @var IConfig */ - private $config; - - public function __construct(IL10N $l, IConfig $config) { - $this->config = $config; - + public function __construct( + IL10N $l, + private IConfig $config, + ) { $this ->setIdentifier('publickey::rsa') ->setScheme(self::SCHEME_PUBLICKEY) @@ -50,7 +32,8 @@ class RSA extends AuthMechanism { new DefinitionParameter('user', $l->t('Login')), new DefinitionParameter('public_key', $l->t('Public key')), (new DefinitionParameter('private_key', 'private_key')) - ->setType(DefinitionParameter::VALUE_HIDDEN), + ->setType(DefinitionParameter::VALUE_PASSWORD) + ->setFlag(DefinitionParameter::FLAG_HIDDEN), ]) ->addCustomJs('public_key') ; diff --git a/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php b/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php index 30ff5dd2a4c..8f58b71d5ac 100644 --- a/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php +++ b/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php @@ -1,24 +1,8 @@ <?php + /** - * @copyright 2018, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Auth\PublicKey; @@ -35,12 +19,10 @@ use phpseclib\Crypt\RSA as RSACrypt; */ class RSAPrivateKey extends AuthMechanism { - /** @var IConfig */ - private $config; - - public function __construct(IL10N $l, IConfig $config) { - $this->config = $config; - + public function __construct( + IL10N $l, + private IConfig $config, + ) { $this ->setIdentifier('publickey::rsa_private') ->setScheme(self::SCHEME_PUBLICKEY) diff --git a/apps/files_external/lib/Lib/Auth/SMB/KerberosApacheAuth.php b/apps/files_external/lib/Lib/Auth/SMB/KerberosApacheAuth.php index 17492280275..26671110294 100644 --- a/apps/files_external/lib/Lib/Auth/SMB/KerberosApacheAuth.php +++ b/apps/files_external/lib/Lib/Auth/SMB/KerberosApacheAuth.php @@ -1,25 +1,8 @@ <?php /** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Auth\SMB; @@ -30,10 +13,10 @@ use OCP\Authentication\LoginCredentials\IStore; use OCP\IL10N; class KerberosApacheAuth extends AuthMechanism { - /** @var IStore */ - private $credentialsStore; - - public function __construct(IL10N $l, IStore $credentialsStore) { + public function __construct( + IL10N $l, + private IStore $credentialsStore, + ) { $realm = new DefinitionParameter('default_realm', 'Default realm'); $realm ->setType(DefinitionParameter::VALUE_TEXT) @@ -44,7 +27,6 @@ class KerberosApacheAuth extends AuthMechanism { ->setScheme(self::SCHEME_SMB) ->setText($l->t('Kerberos ticket Apache mode')) ->addParameter($realm); - $this->credentialsStore = $credentialsStore; } public function getCredentialsStore(): IStore { diff --git a/apps/files_external/lib/Lib/Auth/SMB/KerberosAuth.php b/apps/files_external/lib/Lib/Auth/SMB/KerberosAuth.php index 44956c57ada..9210209192a 100644 --- a/apps/files_external/lib/Lib/Auth/SMB/KerberosAuth.php +++ b/apps/files_external/lib/Lib/Auth/SMB/KerberosAuth.php @@ -1,24 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl> - * - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Auth\SMB; diff --git a/apps/files_external/lib/Lib/Backend/AmazonS3.php b/apps/files_external/lib/Lib/Backend/AmazonS3.php index 11479c70c8e..464b03b55e0 100644 --- a/apps/files_external/lib/Lib/Backend/AmazonS3.php +++ b/apps/files_external/lib/Lib/Backend/AmazonS3.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; @@ -59,6 +42,9 @@ class AmazonS3 extends Backend { (new DefinitionParameter('useMultipartCopy', $l->t('Enable multipart copy'))) ->setType(DefinitionParameter::VALUE_BOOLEAN) ->setDefaultValue(true), + (new DefinitionParameter('sse_c_key', $l->t('SSE-C encryption key'))) + ->setType(DefinitionParameter::VALUE_PASSWORD) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL), ]) ->addAuthScheme(AccessKey::SCHEME_AMAZONS3_ACCESSKEY) ->addAuthScheme(AuthMechanism::SCHEME_NULL) diff --git a/apps/files_external/lib/Lib/Backend/Backend.php b/apps/files_external/lib/Lib/Backend/Backend.php index 48f46b8f55a..f7500ee24a4 100644 --- a/apps/files_external/lib/Lib/Backend/Backend.php +++ b/apps/files_external/lib/Lib/Backend/Backend.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/DAV.php b/apps/files_external/lib/Lib/Backend/DAV.php index 71c97e639ff..dea9e7c5e77 100644 --- a/apps/files_external/lib/Lib/Backend/DAV.php +++ b/apps/files_external/lib/Lib/Backend/DAV.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/FTP.php b/apps/files_external/lib/Lib/Backend/FTP.php index d7c6e3bebd6..72a8184c9b9 100644 --- a/apps/files_external/lib/Lib/Backend/FTP.php +++ b/apps/files_external/lib/Lib/Backend/FTP.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; @@ -40,6 +24,8 @@ class FTP extends Backend { ->setText($l->t('FTP')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), + (new DefinitionParameter('port', $l->t('Port'))) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL), (new DefinitionParameter('root', $l->t('Remote subfolder'))) ->setFlag(DefinitionParameter::FLAG_OPTIONAL), (new DefinitionParameter('secure', $l->t('Secure ftps://'))) diff --git a/apps/files_external/lib/Lib/Backend/InvalidBackend.php b/apps/files_external/lib/Lib/Backend/InvalidBackend.php index 88c73470279..48912c0e49e 100644 --- a/apps/files_external/lib/Lib/Backend/InvalidBackend.php +++ b/apps/files_external/lib/Lib/Backend/InvalidBackend.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud GmbH. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud GmbH. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; @@ -34,21 +17,19 @@ use OCP\IUser; */ class InvalidBackend extends Backend { - /** @var string Invalid backend id */ - private $invalidId; - /** * Constructs a new InvalidBackend with the id of the invalid backend * for display purposes * * @param string $invalidId id of the backend that did not exist */ - public function __construct($invalidId) { - $this->invalidId = $invalidId; + public function __construct( + private $invalidId, + ) { $this - ->setIdentifier($invalidId) + ->setIdentifier($this->invalidId) ->setStorageClass('\OC\Files\Storage\FailedStorage') - ->setText('Unknown storage backend ' . $invalidId); + ->setText('Unknown storage backend ' . $this->invalidId); } /** diff --git a/apps/files_external/lib/Lib/Backend/LegacyBackend.php b/apps/files_external/lib/Lib/Backend/LegacyBackend.php index 86c21f03434..9c7e5b01bc3 100644 --- a/apps/files_external/lib/Lib/Backend/LegacyBackend.php +++ b/apps/files_external/lib/Lib/Backend/LegacyBackend.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; @@ -69,10 +53,6 @@ class LegacyBackend extends Backend { $type = DefinitionParameter::VALUE_PASSWORD; $placeholder = substr($placeholder, 1); break; - case '#': - $type = DefinitionParameter::VALUE_HIDDEN; - $placeholder = substr($placeholder, 1); - break; } $this->addParameter((new DefinitionParameter($name, $placeholder)) ->setType($type) diff --git a/apps/files_external/lib/Lib/Backend/Local.php b/apps/files_external/lib/Lib/Backend/Local.php index 41b8e2fbad7..56940b8e83b 100644 --- a/apps/files_external/lib/Lib/Backend/Local.php +++ b/apps/files_external/lib/Lib/Backend/Local.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/OwnCloud.php b/apps/files_external/lib/Lib/Backend/OwnCloud.php index 97297b6a977..0c0e2c6d300 100644 --- a/apps/files_external/lib/Lib/Backend/OwnCloud.php +++ b/apps/files_external/lib/Lib/Backend/OwnCloud.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/SFTP.php b/apps/files_external/lib/Lib/Backend/SFTP.php index c65720ea1ae..0926cf7fd93 100644 --- a/apps/files_external/lib/Lib/Backend/SFTP.php +++ b/apps/files_external/lib/Lib/Backend/SFTP.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; @@ -37,6 +21,8 @@ class SFTP extends Backend { ->setText($l->t('SFTP')) ->addParameters([ new DefinitionParameter('host', $l->t('Host')), + (new DefinitionParameter('port', $l->t('Port'))) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL), (new DefinitionParameter('root', $l->t('Root'))) ->setFlag(DefinitionParameter::FLAG_OPTIONAL), ]) diff --git a/apps/files_external/lib/Lib/Backend/SFTP_Key.php b/apps/files_external/lib/Lib/Backend/SFTP_Key.php index e9a64407ce2..278fae3fba7 100644 --- a/apps/files_external/lib/Lib/Backend/SFTP_Key.php +++ b/apps/files_external/lib/Lib/Backend/SFTP_Key.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/SMB.php b/apps/files_external/lib/Lib/Backend/SMB.php index 29f6c727a10..e86ad98880c 100644 --- a/apps/files_external/lib/Lib/Backend/SMB.php +++ b/apps/files_external/lib/Lib/Backend/SMB.php @@ -1,48 +1,30 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Daniel Kesselberg <mail@danielkesselberg.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Valdnet <47037905+Valdnet@users.noreply.github.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; use Icewind\SMB\BasicAuth; -use Icewind\SMB\KerberosApacheAuth; use Icewind\SMB\KerberosAuth; +use Icewind\SMB\KerberosTicket; +use Icewind\SMB\Native\NativeServer; +use Icewind\SMB\Wrapped\Server; use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Auth\Password\Password; use OCA\Files_External\Lib\Auth\SMB\KerberosApacheAuth as KerberosApacheAuthMechanism; use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; -use OCA\Files_External\Lib\LegacyDependencyCheckPolyfill; +use OCA\Files_External\Lib\MissingDependency; +use OCA\Files_External\Lib\Storage\SystemBridge; use OCA\Files_External\Lib\StorageConfig; use OCP\IL10N; use OCP\IUser; class SMB extends Backend { - use LegacyDependencyCheckPolyfill; - public function __construct(IL10N $l, Password $legacyAuth) { $this ->setIdentifier('smb') @@ -69,18 +51,16 @@ class SMB extends Backend { ->setFlag(DefinitionParameter::FLAG_OPTIONAL) ->setTooltip($l->t("Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty")), (new DefinitionParameter('timeout', $l->t('Timeout'))) - ->setType(DefinitionParameter::VALUE_HIDDEN) - ->setFlag(DefinitionParameter::FLAG_OPTIONAL), + ->setType(DefinitionParameter::VALUE_TEXT) + ->setFlag(DefinitionParameter::FLAG_OPTIONAL) + ->setFlag(DefinitionParameter::FLAG_HIDDEN), ]) ->addAuthScheme(AuthMechanism::SCHEME_PASSWORD) ->addAuthScheme(AuthMechanism::SCHEME_SMB) ->setLegacyAuthMechanism($legacyAuth); } - /** - * @return void - */ - public function manipulateStorageConfig(StorageConfig &$storage, ?IUser $user = null) { + public function manipulateStorageConfig(StorageConfig &$storage, ?IUser $user = null): void { $auth = $storage->getAuthMechanism(); if ($auth->getScheme() === AuthMechanism::SCHEME_PASSWORD) { if (!is_string($storage->getBackendOption('user')) || !is_string($storage->getBackendOption('password'))) { @@ -102,33 +82,33 @@ class SMB extends Backend { throw new \InvalidArgumentException('invalid authentication backend'); } $credentialsStore = $auth->getCredentialsStore(); - $kerbAuth = new KerberosApacheAuth(); + $kerbAuth = new KerberosAuth(); + $kerbAuth->setTicket(KerberosTicket::fromEnv()); // check if a kerberos ticket is available, else fallback to session credentials - if ($kerbAuth->checkTicket()) { + if ($kerbAuth->getTicket()?->isValid()) { $smbAuth = $kerbAuth; } else { try { $credentials = $credentialsStore->getLoginCredentials(); - $user = $credentials->getLoginName(); + $loginName = $credentials->getLoginName(); $pass = $credentials->getPassword(); - preg_match('/(.*)@(.*)/', $user, $matches); + preg_match('/(.*)@(.*)/', $loginName, $matches); $realm = $storage->getBackendOption('default_realm'); if (empty($realm)) { $realm = 'WORKGROUP'; } if (count($matches) === 0) { - $username = $user; + $username = $loginName; $workgroup = $realm; } else { - $username = $matches[1]; - $workgroup = $matches[2]; + [, $username, $workgroup] = $matches; } $smbAuth = new BasicAuth( $username, $workgroup, $pass ); - } catch (\Exception $e) { + } catch (\Exception) { throw new InsufficientDataForMeaningfulAnswerException('No session credentials saved'); } } @@ -141,4 +121,20 @@ class SMB extends Backend { $storage->setBackendOption('auth', $smbAuth); } + + public function checkDependencies(): array { + $system = \OCP\Server::get(SystemBridge::class); + if (NativeServer::available($system)) { + return []; + } elseif (Server::available($system)) { + $missing = new MissingDependency('php-smbclient'); + $missing->setOptional(true); + $missing->setMessage('The php-smbclient library provides improved compatibility and performance for SMB storages.'); + return [$missing]; + } else { + $missing = new MissingDependency('php-smbclient'); + $missing->setMessage('Either the php-smbclient library (preferred) or the smbclient binary is required for SMB storages.'); + return [$missing, new MissingDependency('smbclient')]; + } + } } diff --git a/apps/files_external/lib/Lib/Backend/SMB_OC.php b/apps/files_external/lib/Lib/Backend/SMB_OC.php index 5f1ed3b8334..bcb8d0fbf16 100644 --- a/apps/files_external/lib/Lib/Backend/SMB_OC.php +++ b/apps/files_external/lib/Lib/Backend/SMB_OC.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Valdnet <47037905+Valdnet@users.noreply.github.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Backend/Swift.php b/apps/files_external/lib/Lib/Backend/Swift.php index 8450af5f19c..37527ba3dbb 100644 --- a/apps/files_external/lib/Lib/Backend/Swift.php +++ b/apps/files_external/lib/Lib/Backend/Swift.php @@ -1,28 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julien Lutran <julien.lutran@corp.ovh.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Backend; diff --git a/apps/files_external/lib/Lib/Config/IAuthMechanismProvider.php b/apps/files_external/lib/Lib/Config/IAuthMechanismProvider.php index 4358b7abc4f..0c2e90a243c 100644 --- a/apps/files_external/lib/Lib/Config/IAuthMechanismProvider.php +++ b/apps/files_external/lib/Lib/Config/IAuthMechanismProvider.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Config; diff --git a/apps/files_external/lib/Lib/Config/IBackendProvider.php b/apps/files_external/lib/Lib/Config/IBackendProvider.php index e2b04e78c10..44c460c3138 100644 --- a/apps/files_external/lib/Lib/Config/IBackendProvider.php +++ b/apps/files_external/lib/Lib/Config/IBackendProvider.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Config; diff --git a/apps/files_external/lib/Lib/DefinitionParameter.php b/apps/files_external/lib/Lib/DefinitionParameter.php index ce0a37b4e9b..a73dd2df967 100644 --- a/apps/files_external/lib/Lib/DefinitionParameter.php +++ b/apps/files_external/lib/Lib/DefinitionParameter.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; @@ -35,18 +19,12 @@ class DefinitionParameter implements \JsonSerializable { public const VALUE_TEXT = 0; public const VALUE_BOOLEAN = 1; public const VALUE_PASSWORD = 2; - public const VALUE_HIDDEN = 3; /** Flag constants */ public const FLAG_NONE = 0; public const FLAG_OPTIONAL = 1; public const FLAG_USER_PROVIDED = 2; - - /** @var string name of parameter */ - private string $name; - - /** @var string human-readable parameter text */ - private string $text; + public const FLAG_HIDDEN = 4; /** @var string human-readable parameter tooltip */ private string $tooltip = ''; @@ -57,18 +35,16 @@ class DefinitionParameter implements \JsonSerializable { /** @var int flags, see self::FLAG_* constants */ private int $flags = self::FLAG_NONE; - /** @var mixed */ - private $defaultValue; - /** * @param string $name parameter name * @param string $text parameter description * @param mixed $defaultValue default value */ - public function __construct(string $name, string $text, $defaultValue = null) { - $this->name = $name; - $this->text = $text; - $this->defaultValue = $defaultValue; + public function __construct( + private string $name, + private string $text, + private $defaultValue = null, + ) { } /** diff --git a/apps/files_external/lib/Lib/DependencyTrait.php b/apps/files_external/lib/Lib/DependencyTrait.php index 135f5ade296..644132b82bc 100644 --- a/apps/files_external/lib/Lib/DependencyTrait.php +++ b/apps/files_external/lib/Lib/DependencyTrait.php @@ -1,23 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php index fd72b2fa7aa..0f280d1d486 100644 --- a/apps/files_external/lib/Lib/FrontendDefinitionTrait.php +++ b/apps/files_external/lib/Lib/FrontendDefinitionTrait.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; @@ -29,7 +13,7 @@ namespace OCA\Files_External\Lib; trait FrontendDefinitionTrait { /** @var string human-readable mechanism name */ - private string $text = ""; + private string $text = ''; /** @var array<string, DefinitionParameter> parameters for mechanism */ private array $parameters = []; diff --git a/apps/files_external/lib/Lib/IFrontendDefinition.php b/apps/files_external/lib/Lib/IFrontendDefinition.php index 3c625c21c15..c8b06a1c30b 100644 --- a/apps/files_external/lib/Lib/IFrontendDefinition.php +++ b/apps/files_external/lib/Lib/IFrontendDefinition.php @@ -1,21 +1,8 @@ <?php + /** - * @copyright 2022 Carl Schwan <carl@carlschwan.eu> - * - * @license AGPL-3.0-or-later - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/IIdentifier.php b/apps/files_external/lib/Lib/IIdentifier.php index b410f5333d5..0677409a3cf 100644 --- a/apps/files_external/lib/Lib/IIdentifier.php +++ b/apps/files_external/lib/Lib/IIdentifier.php @@ -1,21 +1,8 @@ <?php + /** - * @copyright 2022 Carl Schwan <carl@carlschwan.eu> - * - * @license AGPL-3.0-or-later - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/IdentifierTrait.php b/apps/files_external/lib/Lib/IdentifierTrait.php index 52eff147a02..f5ffde32307 100644 --- a/apps/files_external/lib/Lib/IdentifierTrait.php +++ b/apps/files_external/lib/Lib/IdentifierTrait.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php index 0e5c0be069c..1e872b35072 100644 --- a/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php +++ b/apps/files_external/lib/Lib/InsufficientDataForMeaningfulAnswerException.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/LegacyDependencyCheckPolyfill.php b/apps/files_external/lib/Lib/LegacyDependencyCheckPolyfill.php index 42a72e960ea..f6311fae83e 100644 --- a/apps/files_external/lib/Lib/LegacyDependencyCheckPolyfill.php +++ b/apps/files_external/lib/Lib/LegacyDependencyCheckPolyfill.php @@ -1,23 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/MissingDependency.php b/apps/files_external/lib/Lib/MissingDependency.php index a8e9f9ecc45..c2da7fcadbf 100644 --- a/apps/files_external/lib/Lib/MissingDependency.php +++ b/apps/files_external/lib/Lib/MissingDependency.php @@ -1,23 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; @@ -26,17 +12,16 @@ namespace OCA\Files_External\Lib; */ class MissingDependency { - /** @var string */ - private $dependency; - /** @var string|null Custom message */ - private $message = null; + private ?string $message = null; + private bool $optional = false; /** * @param string $dependency */ - public function __construct($dependency) { - $this->dependency = $dependency; + public function __construct( + private readonly string $dependency, + ) { } public function getDependency(): string { @@ -55,4 +40,12 @@ class MissingDependency { $this->message = $message; return $this; } + + public function isOptional(): bool { + return $this->optional; + } + + public function setOptional(bool $optional): void { + $this->optional = $optional; + } } diff --git a/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php b/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php index 66567b397f2..2812df6ad6a 100644 --- a/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php +++ b/apps/files_external/lib/Lib/Notify/SMBNotifyHandler.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Julius Härtl <jus@bitgrid.net> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Notify; @@ -31,11 +13,6 @@ use OCP\Files\Notify\INotifyHandler; class SMBNotifyHandler implements INotifyHandler { /** - * @var \Icewind\SMB\INotifyHandler - */ - private $shareNotifyHandler; - - /** * @var string */ private $root; @@ -48,8 +25,10 @@ class SMBNotifyHandler implements INotifyHandler { * @param \Icewind\SMB\INotifyHandler $shareNotifyHandler * @param string $root */ - public function __construct(\Icewind\SMB\INotifyHandler $shareNotifyHandler, $root) { - $this->shareNotifyHandler = $shareNotifyHandler; + public function __construct( + private \Icewind\SMB\INotifyHandler $shareNotifyHandler, + $root, + ) { $this->root = str_replace('\\', '/', $root); } diff --git a/apps/files_external/lib/Lib/PersonalMount.php b/apps/files_external/lib/Lib/PersonalMount.php index b0487494635..d9dbddd1449 100644 --- a/apps/files_external/lib/Lib/PersonalMount.php +++ b/apps/files_external/lib/Lib/PersonalMount.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Julius Härtl <jus@bitgrid.net> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; @@ -28,40 +11,35 @@ use OC\Files\Mount\MoveableMount; use OCA\Files_External\Config\ExternalMountPoint; use OCA\Files_External\Service\UserStoragesService; use OCP\Files\Storage\IStorage; +use OCP\Files\Storage\IStorageFactory; /** * Person mount points can be moved by the user */ class PersonalMount extends ExternalMountPoint implements MoveableMount { - /** @var UserStoragesService */ - protected $storagesService; - - /** @var int id of the external storage (mount) (not the numeric id of the resulting storage!) */ - protected $numericExternalStorageId; - /** * @param UserStoragesService $storagesService * @param int $storageId * @param IStorage $storage * @param string $mountpoint * @param array $arguments (optional) configuration for the storage backend - * @param \OCP\Files\Storage\IStorageFactory $loader + * @param IStorageFactory $loader * @param array $mountOptions mount specific options + * @param int $externalStorageId */ public function __construct( - UserStoragesService $storagesService, + protected UserStoragesService $storagesService, StorageConfig $storageConfig, - $externalStorageId, + /** @var int id of the external storage (mount) (not the numeric id of the resulting storage!) */ + protected $numericExternalStorageId, $storage, $mountpoint, $arguments = null, $loader = null, $mountOptions = null, - $mountId = null + $mountId = null, ) { parent::__construct($storageConfig, $storage, $mountpoint, $arguments, $loader, $mountOptions, $mountId); - $this->storagesService = $storagesService; - $this->numericExternalStorageId = $externalStorageId; } /** diff --git a/apps/files_external/lib/Lib/PriorityTrait.php b/apps/files_external/lib/Lib/PriorityTrait.php index 299d25c9b40..fad2c07e58c 100644 --- a/apps/files_external/lib/Lib/PriorityTrait.php +++ b/apps/files_external/lib/Lib/PriorityTrait.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Lib/SessionStorageWrapper.php b/apps/files_external/lib/Lib/SessionStorageWrapper.php index 386ab4a73af..8754041b2fa 100644 --- a/apps/files_external/lib/Lib/SessionStorageWrapper.php +++ b/apps/files_external/lib/Lib/SessionStorageWrapper.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; @@ -29,13 +14,12 @@ use OCP\Constants; * Wrap Storage in PermissionsMask for session ephemeral use */ class SessionStorageWrapper extends PermissionsMask { - /** - * @param array $arguments ['storage' => $storage] + * @param array $parameters ['storage' => $storage] */ - public function __construct($arguments) { + public function __construct(array $parameters) { // disable sharing permission - $arguments['mask'] = Constants::PERMISSION_ALL & ~Constants::PERMISSION_SHARE; - parent::__construct($arguments); + $parameters['mask'] = Constants::PERMISSION_ALL & ~Constants::PERMISSION_SHARE; + parent::__construct($parameters); } } diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php index e5fa98313d5..5dc9e114532 100644 --- a/apps/files_external/lib/Lib/Storage/AmazonS3.php +++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php @@ -1,66 +1,37 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author André Gaul <gaul@web-yard.de> - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christian Berendt <berendt@b1-systems.de> - * @author Christopher T. Johnson <ctjctj@gmail.com> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Daniel Kesselberg <mail@danielkesselberg.de> - * @author enoch <lanxenet@hotmail.com> - * @author Johan Björk <johanimon@gmail.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Julius Härtl <jus@bitgrid.net> - * @author Martin Mattel <martin.mattel@diemattels.at> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Philipp Kapfer <philipp.kapfer@gmx.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; use Aws\S3\Exception\S3Exception; use Icewind\Streams\CallbackWrapper; +use Icewind\Streams\CountWrapper; use Icewind\Streams\IteratorDirectory; use OC\Files\Cache\CacheEntry; use OC\Files\ObjectStore\S3ConnectionTrait; use OC\Files\ObjectStore\S3ObjectTrait; +use OC\Files\Storage\Common; use OCP\Cache\CappedMemoryCache; use OCP\Constants; use OCP\Files\FileInfo; use OCP\Files\IMimeTypeDetector; use OCP\ICache; use OCP\ICacheFactory; +use OCP\ITempManager; use OCP\Server; use Psr\Log\LoggerInterface; -class AmazonS3 extends \OC\Files\Storage\Common { +class AmazonS3 extends Common { use S3ConnectionTrait; use S3ObjectTrait; private LoggerInterface $logger; - public function needsPartFile() { + public function needsPartFile(): bool { return false; } @@ -77,7 +48,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { private ?bool $versioningEnabled = null; private ICache $memCache; - public function __construct($parameters) { + public function __construct(array $parameters) { parent::__construct($parameters); $this->parseParams($parameters); $this->id = 'amazon::external::' . md5($this->params['hostname'] . ':' . $this->params['bucket'] . ':' . $this->params['key']); @@ -91,11 +62,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { $this->logger = Server::get(LoggerInterface::class); } - /** - * @param string $path - * @return string correctly encoded path - */ - private function normalizePath($path) { + private function normalizePath(string $path): string { $path = trim($path, '/'); if (!$path) { @@ -105,24 +72,24 @@ class AmazonS3 extends \OC\Files\Storage\Common { return $path; } - private function isRoot($path) { + private function isRoot(string $path): bool { return $path === '.'; } - private function cleanKey($path) { + private function cleanKey(string $path): string { if ($this->isRoot($path)) { return '/'; } return $path; } - private function clearCache() { + private function clearCache(): void { $this->objectCache = new CappedMemoryCache(); $this->directoryCache = new CappedMemoryCache(); $this->filesCache = new CappedMemoryCache(); } - private function invalidateCache($key) { + private function invalidateCache(string $key): void { unset($this->objectCache[$key]); $keys = array_keys($this->objectCache->getData()); $keyLength = strlen($key); @@ -142,16 +109,13 @@ class AmazonS3 extends \OC\Files\Storage\Common { unset($this->directoryCache[$key]); } - /** - * @return array|false - */ - private function headObject(string $key) { + private function headObject(string $key): array|false { if (!isset($this->objectCache[$key])) { try { $this->objectCache[$key] = $this->getConnection()->headObject([ 'Bucket' => $this->bucket, 'Key' => $key - ])->toArray(); + ] + $this->getSSECParameters())->toArray(); } catch (S3Exception $e) { if ($e->getStatusCode() >= 500) { throw $e; @@ -160,9 +124,9 @@ class AmazonS3 extends \OC\Files\Storage\Common { } } - if (is_array($this->objectCache[$key]) && !isset($this->objectCache[$key]["Key"])) { + if (is_array($this->objectCache[$key]) && !isset($this->objectCache[$key]['Key'])) { /** @psalm-suppress InvalidArgument Psalm doesn't understand nested arrays well */ - $this->objectCache[$key]["Key"] = $key; + $this->objectCache[$key]['Key'] = $key; } return $this->objectCache[$key]; } @@ -176,11 +140,9 @@ class AmazonS3 extends \OC\Files\Storage\Common { * Implementation from flysystem-aws-s3-v3: * https://github.com/thephpleague/flysystem-aws-s3-v3/blob/8241e9cc5b28f981e0d24cdaf9867f14c7498ae4/src/AwsS3Adapter.php#L670-L694 * - * @param $path - * @return bool * @throws \Exception */ - private function doesDirectoryExist($path) { + private function doesDirectoryExist(string $path): bool { if ($path === '.' || $path === '') { return true; } @@ -222,13 +184,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return false; } - /** - * Remove a file or folder - * - * @param string $path - * @return bool - */ - protected function remove($path) { + protected function remove(string $path): bool { // remember fileType to reduce http calls $fileType = $this->filetype($path); if ($fileType === 'dir') { @@ -240,7 +196,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } } - public function mkdir($path) { + public function mkdir(string $path): bool { $path = $this->normalizePath($path); if ($this->is_dir($path)) { @@ -253,7 +209,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { 'Key' => $path . '/', 'Body' => '', 'ContentType' => FileInfo::MIMETYPE_FOLDER - ]); + ] + $this->getSSECParameters()); $this->testTimeout(); } catch (S3Exception $e) { $this->logger->error($e->getMessage(), [ @@ -268,12 +224,12 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function file_exists($path) { + public function file_exists(string $path): bool { return $this->filetype($path) !== false; } - public function rmdir($path) { + public function rmdir(string $path): bool { $path = $this->normalizePath($path); if ($this->isRoot($path)) { @@ -288,12 +244,12 @@ class AmazonS3 extends \OC\Files\Storage\Common { return $this->batchDelete($path); } - protected function clearBucket() { + protected function clearBucket(): bool { $this->clearCache(); return $this->batchDelete(); } - private function batchDelete($path = null) { + private function batchDelete(?string $path = null): bool { // TODO explore using https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.BatchDelete.html $params = [ 'Bucket' => $this->bucket @@ -333,7 +289,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function opendir($path) { + public function opendir(string $path) { try { $content = iterator_to_array($this->getDirectoryContent($path)); return IteratorDirectory::wrap(array_map(function (array $item) { @@ -344,7 +300,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } } - public function stat($path) { + public function stat(string $path): array|false { $path = $this->normalizePath($path); if ($this->is_dir($path)) { @@ -366,11 +322,8 @@ class AmazonS3 extends \OC\Files\Storage\Common { * * When the information is already present (e.g. opendir has been called before) * this value is return. Otherwise a headObject is emitted. - * - * @param $path - * @return int|mixed */ - private function getContentLength($path) { + private function getContentLength(string $path): int { if (isset($this->filesCache[$path])) { return (int)$this->filesCache[$path]['ContentLength']; } @@ -388,11 +341,8 @@ class AmazonS3 extends \OC\Files\Storage\Common { * * When the information is already present (e.g. opendir has been called before) * this value is return. Otherwise a headObject is emitted. - * - * @param $path - * @return mixed|string */ - private function getLastModified($path) { + private function getLastModified(string $path): string { if (isset($this->filesCache[$path])) { return $this->filesCache[$path]['LastModified']; } @@ -405,7 +355,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return 'now'; } - public function is_dir($path) { + public function is_dir(string $path): bool { $path = $this->normalizePath($path); if (isset($this->filesCache[$path])) { @@ -423,7 +373,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } } - public function filetype($path) { + public function filetype(string $path): string|false { $path = $this->normalizePath($path); if ($this->isRoot($path)) { @@ -451,7 +401,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return false; } - public function getPermissions($path) { + public function getPermissions(string $path): int { $type = $this->filetype($path); if (!$type) { return 0; @@ -459,7 +409,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return $type === 'dir' ? Constants::PERMISSION_ALL : Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE; } - public function unlink($path) { + public function unlink(string $path): bool { $path = $this->normalizePath($path); if ($this->is_dir($path)) { @@ -480,7 +430,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { $path = $this->normalizePath($path); switch ($mode) { @@ -503,10 +453,10 @@ class AmazonS3 extends \OC\Files\Storage\Common { } case 'w': case 'wb': - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile(); $handle = fopen($tmpFile, 'w'); - return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) { + return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile): void { $this->writeBack($tmpFile, $path); }); case 'a': @@ -524,21 +474,21 @@ class AmazonS3 extends \OC\Files\Storage\Common { } else { $ext = ''; } - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile($ext); if ($this->file_exists($path)) { $source = $this->readObject($path); file_put_contents($tmpFile, $source); } $handle = fopen($tmpFile, $mode); - return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) { + return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile): void { $this->writeBack($tmpFile, $path); }); } return false; } - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { if (is_null($mtime)) { $mtime = time(); } @@ -559,7 +509,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { 'Body' => '', 'ContentType' => $mimeType, 'MetadataDirective' => 'REPLACE', - ]); + ] + $this->getSSECParameters()); $this->testTimeout(); } catch (S3Exception $e) { $this->logger->error($e->getMessage(), [ @@ -573,7 +523,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function copy($source, $target, $isFile = null) { + public function copy(string $source, string $target, ?bool $isFile = null): bool { $source = $this->normalizePath($source); $target = $this->normalizePath($target); @@ -616,7 +566,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function rename($source, $target) { + public function rename(string $source, string $target): bool { $source = $this->normalizePath($source); $target = $this->normalizePath($target); @@ -643,18 +593,18 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } - public function test() { + public function test(): bool { $this->getConnection()->headBucket([ 'Bucket' => $this->bucket ]); return true; } - public function getId() { + public function getId(): string { return $this->id; } - public function writeBack($tmpFile, $path) { + public function writeBack(string $tmpFile, string $path): bool { try { $source = fopen($tmpFile, 'r'); $this->writeObject($path, $source, $this->mimeDetector->detectPath($path)); @@ -674,11 +624,11 @@ class AmazonS3 extends \OC\Files\Storage\Common { /** * check if curl is installed */ - public static function checkDependencies() { + public static function checkDependencies(): bool { return true; } - public function getDirectoryContent($directory): \Traversable { + public function getDirectoryContent(string $directory): \Traversable { $path = $this->normalizePath($directory); if ($this->isRoot($path)) { @@ -775,7 +725,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { } } - public function hasUpdated($path, $time) { + public function hasUpdated(string $path, int $time): bool { // for files we can get the proper mtime if ($path !== '' && $object = $this->headObject($path)) { $stat = $this->objectToMetaData($object); @@ -787,4 +737,24 @@ class AmazonS3 extends \OC\Files\Storage\Common { return true; } } + + public function writeStream(string $path, $stream, ?int $size = null): int { + if ($size === null) { + $size = 0; + // track the number of bytes read from the input stream to return as the number of written bytes. + $stream = CountWrapper::wrap($stream, function (int $writtenSize) use (&$size): void { + $size = $writtenSize; + }); + } + + if (!is_resource($stream)) { + throw new \InvalidArgumentException('Invalid stream provided'); + } + + $path = $this->normalizePath($path); + $this->writeObject($path, $stream, $this->mimeDetector->detectPath($path)); + $this->invalidateCache($path); + + return $size; + } } diff --git a/apps/files_external/lib/Lib/Storage/FTP.php b/apps/files_external/lib/Lib/Storage/FTP.php index 544ebc2c529..944964de7a6 100644 --- a/apps/files_external/lib/Lib/Storage/FTP.php +++ b/apps/files_external/lib/Lib/Storage/FTP.php @@ -1,23 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; @@ -28,7 +13,10 @@ use OC\Files\Storage\Common; use OC\Files\Storage\PolyFill\CopyDirectory; use OCP\Constants; use OCP\Files\FileInfo; +use OCP\Files\IMimeTypeDetector; use OCP\Files\StorageNotAvailableException; +use OCP\ITempManager; +use OCP\Server; use Psr\Log\LoggerInterface; class FTP extends Common { @@ -45,23 +33,23 @@ class FTP extends Common { /** @var FtpConnection|null */ private $connection; - public function __construct($params) { - if (isset($params['host']) && isset($params['user']) && isset($params['password'])) { - $this->host = $params['host']; - $this->username = $params['user']; - $this->password = $params['password']; - if (isset($params['secure'])) { - if (is_string($params['secure'])) { - $this->secure = ($params['secure'] === 'true'); + public function __construct(array $parameters) { + if (isset($parameters['host']) && isset($parameters['user']) && isset($parameters['password'])) { + $this->host = $parameters['host']; + $this->username = $parameters['user']; + $this->password = $parameters['password']; + if (isset($parameters['secure'])) { + if (is_string($parameters['secure'])) { + $this->secure = ($parameters['secure'] === 'true'); } else { - $this->secure = (bool)$params['secure']; + $this->secure = (bool)$parameters['secure']; } } else { $this->secure = false; } - $this->root = isset($params['root']) ? '/' . ltrim($params['root']) : '/'; - $this->port = $params['port'] ?? 21; - $this->utf8Mode = isset($params['utf8']) && $params['utf8']; + $this->root = isset($parameters['root']) ? '/' . ltrim($parameters['root']) : '/'; + $this->port = $parameters['port'] ?? 21; + $this->utf8Mode = isset($parameters['utf8']) && $parameters['utf8']; } else { throw new \Exception('Creating ' . self::class . ' storage failed, required parameters not set'); } @@ -82,11 +70,11 @@ class FTP extends Common { $this->password ); } catch (\Exception $e) { - throw new StorageNotAvailableException("Failed to create ftp connection", 0, $e); + throw new StorageNotAvailableException('Failed to create ftp connection', 0, $e); } if ($this->utf8Mode) { if (!$this->connection->setUtf8Mode()) { - throw new StorageNotAvailableException("Could not set UTF-8 mode"); + throw new StorageNotAvailableException('Could not set UTF-8 mode'); } } } @@ -94,15 +82,15 @@ class FTP extends Common { return $this->connection; } - public function getId() { + public function getId(): string { return 'ftp::' . $this->username . '@' . $this->host . '/' . $this->root; } - protected function buildPath($path) { + protected function buildPath(string $path): string { return rtrim($this->root . '/' . $path, '/'); } - public static function checkDependencies() { + public static function checkDependencies(): array|bool { if (function_exists('ftp_login')) { return true; } else { @@ -110,14 +98,14 @@ class FTP extends Common { } } - public function filemtime($path) { + public function filemtime(string $path): int|false { $result = $this->getConnection()->mdtm($this->buildPath($path)); if ($result === -1) { if ($this->is_dir($path)) { $list = $this->getConnection()->mlsd($this->buildPath($path)); if (!$list) { - \OC::$server->get(LoggerInterface::class)->warning("Unable to get last modified date for ftp folder ($path), failed to list folder contents"); + Server::get(LoggerInterface::class)->warning("Unable to get last modified date for ftp folder ($path), failed to list folder contents"); return time(); } $currentDir = current(array_filter($list, function ($item) { @@ -131,7 +119,7 @@ class FTP extends Common { } return $time->getTimestamp(); } else { - \OC::$server->get(LoggerInterface::class)->warning("Unable to get last modified date for ftp folder ($path), folder contents doesn't include current folder"); + Server::get(LoggerInterface::class)->warning("Unable to get last modified date for ftp folder ($path), folder contents doesn't include current folder"); return time(); } } else { @@ -142,7 +130,7 @@ class FTP extends Common { } } - public function filesize($path): false|int|float { + public function filesize(string $path): false|int|float { $result = $this->getConnection()->size($this->buildPath($path)); if ($result === -1) { return false; @@ -151,7 +139,7 @@ class FTP extends Common { } } - public function rmdir($path) { + public function rmdir(string $path): bool { if ($this->is_dir($path)) { $result = $this->getConnection()->rmdir($this->buildPath($path)); // recursive rmdir support depends on the ftp server @@ -167,11 +155,7 @@ class FTP extends Common { } } - /** - * @param string $path - * @return bool - */ - private function recursiveRmDir($path): bool { + private function recursiveRmDir(string $path): bool { $contents = $this->getDirectoryContent($path); $result = true; foreach ($contents as $content) { @@ -186,7 +170,7 @@ class FTP extends Common { return $result; } - public function test() { + public function test(): bool { try { return $this->getConnection()->systype() !== false; } catch (\Exception $e) { @@ -194,7 +178,7 @@ class FTP extends Common { } } - public function stat($path) { + public function stat(string $path): array|false { if (!$this->file_exists($path)) { return false; } @@ -204,14 +188,14 @@ class FTP extends Common { ]; } - public function file_exists($path) { + public function file_exists(string $path): bool { if ($path === '' || $path === '.' || $path === '/') { return true; } return $this->filetype($path) !== false; } - public function unlink($path) { + public function unlink(string $path): bool { switch ($this->filetype($path)) { case 'dir': return $this->rmdir($path); @@ -222,20 +206,20 @@ class FTP extends Common { } } - public function opendir($path) { + public function opendir(string $path) { $files = $this->getConnection()->nlist($this->buildPath($path)); return IteratorDirectory::wrap($files); } - public function mkdir($path) { + public function mkdir(string $path): bool { if ($this->is_dir($path)) { return false; } return $this->getConnection()->mkdir($this->buildPath($path)) !== false; } - public function is_dir($path) { - if ($path === "") { + public function is_dir(string $path): bool { + if ($path === '') { return true; } if ($this->getConnection()->chdir($this->buildPath($path)) === true) { @@ -246,11 +230,11 @@ class FTP extends Common { } } - public function is_file($path) { + public function is_file(string $path): bool { return $this->filesize($path) !== false; } - public function filetype($path) { + public function filetype(string $path): string|false { if ($this->is_dir($path)) { return 'dir'; } elseif ($this->is_file($path)) { @@ -260,7 +244,7 @@ class FTP extends Common { } } - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { $useExisting = true; switch ($mode) { case 'r': @@ -290,10 +274,10 @@ class FTP extends Common { if (!$this->isCreatable(dirname($path))) { return false; } - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile(); } $source = fopen($tmpFile, $mode); - return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $path) { + return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $path): void { $this->writeStream($path, fopen($tmpFile, 'r')); unlink($tmpFile); }); @@ -303,7 +287,7 @@ class FTP extends Common { public function writeStream(string $path, $stream, ?int $size = null): int { if ($size === null) { - $stream = CountWrapper::wrap($stream, function ($writtenSize) use (&$size) { + $stream = CountWrapper::wrap($stream, function ($writtenSize) use (&$size): void { $size = $writtenSize; }); } @@ -326,7 +310,7 @@ class FTP extends Common { return $stream; } - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { if ($this->file_exists($path)) { return false; } else { @@ -335,14 +319,14 @@ class FTP extends Common { } } - public function rename($source, $target) { + public function rename(string $source, string $target): bool { $this->unlink($target); return $this->getConnection()->rename($this->buildPath($source), $this->buildPath($target)); } - public function getDirectoryContent($directory): \Traversable { + public function getDirectoryContent(string $directory): \Traversable { $files = $this->getConnection()->mlsd($this->buildPath($directory)); - $mimeTypeDetector = \OC::$server->getMimeTypeDetector(); + $mimeTypeDetector = Server::get(IMimeTypeDetector::class); foreach ($files as $file) { $name = $file['name']; diff --git a/apps/files_external/lib/Lib/Storage/FtpConnection.php b/apps/files_external/lib/Lib/Storage/FtpConnection.php index 0b6c1108d1c..a064bf9b100 100644 --- a/apps/files_external/lib/Lib/Storage/FtpConnection.php +++ b/apps/files_external/lib/Lib/Storage/FtpConnection.php @@ -3,23 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Storage; @@ -38,11 +23,11 @@ class FtpConnection { } if ($connection === false) { - throw new \Exception("Failed to connect to ftp"); + throw new \Exception('Failed to connect to ftp'); } if (ftp_login($connection, $username, $password) === false) { - throw new \Exception("Failed to connect to login to ftp"); + throw new \Exception('Failed to connect to login to ftp'); } ftp_pasv($connection, true); @@ -54,7 +39,7 @@ class FtpConnection { } public function setUtf8Mode(): bool { - $response = ftp_raw($this->connection, "OPTS UTF8 ON"); + $response = ftp_raw($this->connection, 'OPTS UTF8 ON'); return substr($response[0], 0, 3) === '200'; } @@ -90,8 +75,8 @@ class FtpConnection { $result = @ftp_mdtm($this->connection, $path); // filezilla doesn't like empty path with mdtm - if ($result === -1 && $path === "") { - $result = @ftp_mdtm($this->connection, "/"); + if ($result === -1 && $path === '') { + $result = @ftp_mdtm($this->connection, '/'); } return $result; } @@ -165,13 +150,13 @@ class FtpConnection { $parsedDate = (new \DateTime()) ->setTimestamp(strtotime("$month $day $time")); - $tomorrow = (new \DateTime())->add(new \DateInterval("P1D")); + $tomorrow = (new \DateTime())->add(new \DateInterval('P1D')); // since the provided date doesn't include the year, we either set it to the correct year // or when the date would otherwise be in the future (by more then 1 day to account for timezone errors) // we use last year if ($parsedDate > $tomorrow) { - $parsedDate = $parsedDate->sub(new \DateInterval("P1Y")); + $parsedDate = $parsedDate->sub(new \DateInterval('P1Y')); } $formattedDate = $parsedDate diff --git a/apps/files_external/lib/Lib/Storage/OwnCloud.php b/apps/files_external/lib/Lib/Storage/OwnCloud.php index ba7ae1c36a9..12c305de750 100644 --- a/apps/files_external/lib/Lib/Storage/OwnCloud.php +++ b/apps/files_external/lib/Lib/Storage/OwnCloud.php @@ -1,33 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; +use OC\Files\Storage\DAV; use OCP\Files\Storage\IDisableEncryptionStorage; use Sabre\DAV\Client; @@ -38,20 +18,20 @@ use Sabre\DAV\Client; * http://%host/%context/remote.php/webdav/%root * */ -class OwnCloud extends \OC\Files\Storage\DAV implements IDisableEncryptionStorage { +class OwnCloud extends DAV implements IDisableEncryptionStorage { public const OC_URL_SUFFIX = 'remote.php/webdav'; - public function __construct($params) { + public function __construct(array $parameters) { // extract context path from host if specified // (owncloud install path on host) - $host = $params['host']; + $host = $parameters['host']; // strip protocol - if (substr($host, 0, 8) === "https://") { + if (substr($host, 0, 8) === 'https://') { $host = substr($host, 8); - $params['secure'] = true; - } elseif (substr($host, 0, 7) === "http://") { + $parameters['secure'] = true; + } elseif (substr($host, 0, 7) === 'http://') { $host = substr($host, 7); - $params['secure'] = false; + $parameters['secure'] = false; } $contextPath = ''; $hostSlashPos = strpos($host, '/'); @@ -64,20 +44,20 @@ class OwnCloud extends \OC\Files\Storage\DAV implements IDisableEncryptionStorag $contextPath .= '/'; } - if (isset($params['root'])) { - $root = '/' . ltrim($params['root'], '/'); + if (isset($parameters['root'])) { + $root = '/' . ltrim($parameters['root'], '/'); } else { $root = '/'; } - $params['host'] = $host; - $params['root'] = $contextPath . self::OC_URL_SUFFIX . $root; - $params['authType'] = Client::AUTH_BASIC; + $parameters['host'] = $host; + $parameters['root'] = $contextPath . self::OC_URL_SUFFIX . $root; + $parameters['authType'] = Client::AUTH_BASIC; - parent::__construct($params); + parent::__construct($parameters); } - public function needsPartFile() { + public function needsPartFile(): bool { return false; } } diff --git a/apps/files_external/lib/Lib/Storage/SFTP.php b/apps/files_external/lib/Lib/Storage/SFTP.php index e6fc5dd3e22..a2f5bafcca1 100644 --- a/apps/files_external/lib/Lib/Storage/SFTP.php +++ b/apps/files_external/lib/Lib/Storage/SFTP.php @@ -1,48 +1,23 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Andreas Fischer <bantu@owncloud.com> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author hkjolhede <hkjolhede@gmail.com> - * @author Joas Schilling <coding@schilljs.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Lennart Rosam <lennart.rosam@medien-systempartner.de> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Ross Nicoll <jrn@jrn.me.uk> - * @author SA <stephen@mthosting.net> - * @author Senorsen <senorsen.zhang@gmail.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; +use Icewind\Streams\CallbackWrapper; use Icewind\Streams\CountWrapper; use Icewind\Streams\IteratorDirectory; use Icewind\Streams\RetryWrapper; use OC\Files\Storage\Common; +use OC\Files\View; +use OCP\Cache\CappedMemoryCache; use OCP\Constants; use OCP\Files\FileInfo; use OCP\Files\IMimeTypeDetector; +use OCP\Server; use phpseclib\Net\SFTP\Stream; /** @@ -61,6 +36,8 @@ class SFTP extends Common { * @var \phpseclib\Net\SFTP */ protected $client; + private CappedMemoryCache $knownMTimes; + private IMimeTypeDetector $mimeTypeDetector; public const COPY_CHUNK_SIZE = 8 * 1024 * 1024; @@ -69,7 +46,7 @@ class SFTP extends Common { * @param string $host protocol://server:port * @return array [$server, $port] */ - private function splitHost($host) { + private function splitHost(string $host): array { $input = $host; if (!str_contains($host, '://')) { // add a protocol to fix parse_url behavior with ipv6 @@ -86,28 +63,25 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function __construct($params) { + public function __construct(array $parameters) { // Register sftp:// Stream::register(); - $parsedHost = $this->splitHost($params['host']); + $parsedHost = $this->splitHost($parameters['host']); $this->host = $parsedHost[0]; $this->port = $parsedHost[1]; - if (!isset($params['user'])) { + if (!isset($parameters['user'])) { throw new \UnexpectedValueException('no authentication parameters specified'); } - $this->user = $params['user']; + $this->user = $parameters['user']; - if (isset($params['public_key_auth'])) { - $this->auth[] = $params['public_key_auth']; + if (isset($parameters['public_key_auth'])) { + $this->auth[] = $parameters['public_key_auth']; } - if (isset($params['password']) && $params['password'] !== '') { - $this->auth[] = $params['password']; + if (isset($parameters['password']) && $parameters['password'] !== '') { + $this->auth[] = $parameters['password']; } if ($this->auth === []) { @@ -115,11 +89,14 @@ class SFTP extends Common { } $this->root - = isset($params['root']) ? $this->cleanPath($params['root']) : '/'; + = isset($parameters['root']) ? $this->cleanPath($parameters['root']) : '/'; $this->root = '/' . ltrim($this->root, '/'); $this->root = rtrim($this->root, '/') . '/'; - $this->mimeTypeDetector = \OC::$server->get(IMimeTypeDetector::class); + + $this->knownMTimes = new CappedMemoryCache(); + + $this->mimeTypeDetector = Server::get(IMimeTypeDetector::class); } /** @@ -128,7 +105,7 @@ class SFTP extends Common { * @return \phpseclib\Net\SFTP connected client instance * @throws \Exception when the connection failed */ - public function getConnection() { + public function getConnection(): \phpseclib\Net\SFTP { if (!is_null($this->client)) { return $this->client; } @@ -162,10 +139,7 @@ class SFTP extends Common { return $this->client; } - /** - * {@inheritdoc} - */ - public function test() { + public function test(): bool { if ( !isset($this->host) || !isset($this->user) @@ -175,10 +149,7 @@ class SFTP extends Common { return $this->getConnection()->nlist() !== false; } - /** - * {@inheritdoc} - */ - public function getId() { + public function getId(): string { $id = 'sftp::' . $this->user . '@' . $this->host; if ($this->port !== 22) { $id .= ':' . $this->port; @@ -190,56 +161,38 @@ class SFTP extends Common { return $id; } - /** - * @return string - */ - public function getHost() { + public function getHost(): string { return $this->host; } - /** - * @return string - */ - public function getRoot() { + public function getRoot(): string { return $this->root; } - /** - * @return mixed - */ - public function getUser() { + public function getUser(): string { return $this->user; } - /** - * @param string $path - * @return string - */ - private function absPath($path) { + private function absPath(string $path): string { return $this->root . $this->cleanPath($path); } - /** - * @return string|false - */ - private function hostKeysPath() { + private function hostKeysPath(): string|false { try { - $storage_view = \OCP\Files::getStorage('files_external'); - if ($storage_view) { - return \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . - $storage_view->getAbsolutePath('') . - 'ssh_hostKeys'; + $userId = \OC_User::getUser(); + if ($userId === false) { + return false; } + + $view = new View('/' . $userId . '/files_external'); + + return $view->getLocalFile('ssh_hostKeys'); } catch (\Exception $e) { } return false; } - /** - * @param $keys - * @return bool - */ - protected function writeHostKeys($keys) { + protected function writeHostKeys(array $keys): bool { try { $keyPath = $this->hostKeysPath(); if ($keyPath && file_exists($keyPath)) { @@ -255,10 +208,7 @@ class SFTP extends Common { return false; } - /** - * @return array - */ - protected function readHostKeys() { + protected function readHostKeys(): array { try { $keyPath = $this->hostKeysPath(); if (file_exists($keyPath)) { @@ -267,7 +217,7 @@ class SFTP extends Common { $lines = file($keyPath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if ($lines) { foreach ($lines as $line) { - $hostKeyArray = explode("::", $line, 2); + $hostKeyArray = explode('::', $line, 2); if (count($hostKeyArray) === 2) { $hosts[] = $hostKeyArray[0]; $keys[] = $hostKeyArray[1]; @@ -281,10 +231,7 @@ class SFTP extends Common { return []; } - /** - * {@inheritdoc} - */ - public function mkdir($path) { + public function mkdir(string $path): bool { try { return $this->getConnection()->mkdir($this->absPath($path)); } catch (\Exception $e) { @@ -292,10 +239,7 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function rmdir($path) { + public function rmdir(string $path): bool { try { $result = $this->getConnection()->delete($this->absPath($path), true); // workaround: stray stat cache entry when deleting empty folders @@ -307,10 +251,7 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function opendir($path) { + public function opendir(string $path) { try { $list = $this->getConnection()->nlist($this->absPath($path)); if ($list === false) { @@ -330,20 +271,17 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function filetype($path) { + public function filetype(string $path): string|false { try { $stat = $this->getConnection()->stat($this->absPath($path)); if (!is_array($stat) || !array_key_exists('type', $stat)) { return false; } - if ((int) $stat['type'] === NET_SFTP_TYPE_REGULAR) { + if ((int)$stat['type'] === NET_SFTP_TYPE_REGULAR) { return 'file'; } - if ((int) $stat['type'] === NET_SFTP_TYPE_DIRECTORY) { + if ((int)$stat['type'] === NET_SFTP_TYPE_DIRECTORY) { return 'dir'; } } catch (\Exception $e) { @@ -351,10 +289,7 @@ class SFTP extends Common { return false; } - /** - * {@inheritdoc} - */ - public function file_exists($path) { + public function file_exists(string $path): bool { try { return $this->getConnection()->stat($this->absPath($path)) !== false; } catch (\Exception $e) { @@ -362,10 +297,7 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function unlink($path) { + public function unlink(string $path): bool { try { return $this->getConnection()->delete($this->absPath($path), true); } catch (\Exception $e) { @@ -373,10 +305,8 @@ class SFTP extends Common { } } - /** - * {@inheritdoc} - */ - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { + $path = $this->cleanPath($path); try { $absPath = $this->absPath($path); $connection = $this->getConnection(); @@ -397,7 +327,13 @@ class SFTP extends Common { // the SFTPWriteStream doesn't go through the "normal" methods so it doesn't clear the stat cache. $connection->_remove_from_stat_cache($absPath); $context = stream_context_create(['sftp' => ['session' => $connection]]); - return fopen('sftpwrite://' . trim($absPath, '/'), 'w', false, $context); + $fh = fopen('sftpwrite://' . trim($absPath, '/'), 'w', false, $context); + if ($fh) { + $fh = CallbackWrapper::wrap($fh, null, null, function () use ($path): void { + $this->knownMTimes->set($path, time()); + }); + } + return $fh; case 'a': case 'ab': case 'r+': @@ -417,38 +353,29 @@ class SFTP extends Common { return false; } - /** - * {@inheritdoc} - */ - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { try { if (!is_null($mtime)) { return false; } if (!$this->file_exists($path)) { - $this->getConnection()->put($this->absPath($path), ''); + return $this->getConnection()->put($this->absPath($path), ''); } else { return false; } } catch (\Exception $e) { return false; } - return true; } /** - * @param string $path - * @param string $target * @throws \Exception */ - public function getFile($path, $target) { + public function getFile(string $path, string $target): void { $this->getConnection()->get($path, $target); } - /** - * {@inheritdoc} - */ - public function rename($source, $target) { + public function rename(string $source, string $target): bool { try { if ($this->file_exists($target)) { $this->unlink($target); @@ -465,24 +392,30 @@ class SFTP extends Common { /** * @return array{mtime: int, size: int, ctime: int}|false */ - public function stat($path) { + public function stat(string $path): array|false { try { + $path = $this->cleanPath($path); $stat = $this->getConnection()->stat($this->absPath($path)); - $mtime = $stat ? (int)$stat['mtime'] : -1; - $size = $stat ? (int)$stat['size'] : 0; + $mtime = isset($stat['mtime']) ? (int)$stat['mtime'] : -1; + $size = isset($stat['size']) ? (int)$stat['size'] : 0; + + // the mtime can't be less than when we last touched it + if ($knownMTime = $this->knownMTimes->get($path)) { + $mtime = max($mtime, $knownMTime); + } - return ['mtime' => $mtime, 'size' => $size, 'ctime' => -1]; + return [ + 'mtime' => $mtime, + 'size' => $size, + 'ctime' => -1 + ]; } catch (\Exception $e) { return false; } } - /** - * @param string $path - * @return string - */ - public function constructUrl($path) { + public function constructUrl(string $path): string { // Do not pass the password here. We want to use the Net_SFTP object // supplied via stream context or fail. We only supply username and // hostname because this might show up in logs (they are not used). @@ -490,7 +423,7 @@ class SFTP extends Common { return $url; } - public function file_put_contents($path, $data) { + public function file_put_contents(string $path, mixed $data): int|float|false { /** @psalm-suppress InternalMethod */ $result = $this->getConnection()->put($this->absPath($path), $data); if ($result) { @@ -502,24 +435,27 @@ class SFTP extends Common { public function writeStream(string $path, $stream, ?int $size = null): int { if ($size === null) { - $stream = CountWrapper::wrap($stream, function (int $writtenSize) use (&$size) { + $stream = CountWrapper::wrap($stream, function (int $writtenSize) use (&$size): void { $size = $writtenSize; }); if (!$stream) { - throw new \Exception("Failed to wrap stream"); + throw new \Exception('Failed to wrap stream'); } } /** @psalm-suppress InternalMethod */ $result = $this->getConnection()->put($this->absPath($path), $stream); fclose($stream); if ($result) { + if ($size === null) { + throw new \Exception('Failed to get written size from sftp storage wrapper'); + } return $size; } else { - throw new \Exception("Failed to write steam to sftp storage"); + throw new \Exception('Failed to write steam to sftp storage'); } } - public function copy($source, $target) { + public function copy(string $source, string $target): bool { if ($this->is_dir($source) || $this->is_dir($target)) { return parent::copy($source, $target); } else { @@ -546,7 +482,7 @@ class SFTP extends Common { } } - public function getPermissions($path) { + public function getPermissions(string $path): int { $stat = $this->getConnection()->stat($this->absPath($path)); if (!$stat) { return 0; @@ -558,7 +494,7 @@ class SFTP extends Common { } } - public function getMetaData($path) { + public function getMetaData(string $path): ?array { $stat = $this->getConnection()->stat($this->absPath($path)); if (!$stat) { return null; diff --git a/apps/files_external/lib/Lib/Storage/SFTPReadStream.php b/apps/files_external/lib/Lib/Storage/SFTPReadStream.php index 7a98c6b2a6d..7dedbd7035a 100644 --- a/apps/files_external/lib/Lib/Storage/SFTPReadStream.php +++ b/apps/files_external/lib/Lib/Storage/SFTPReadStream.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Storage; @@ -62,10 +44,9 @@ class SFTPReadStream implements File { /** * Load the source from the stream context and return the context options * - * @param string $name * @throws \BadMethodCallException */ - protected function loadContext($name) { + protected function loadContext(string $name) { $context = stream_context_get_options($this->context); if (isset($context[$name])) { $context = $context[$name]; @@ -164,7 +145,7 @@ class SFTPReadStream implements File { return $data; } - private function request_chunk($size) { + private function request_chunk(int $size) { if ($this->pendingRead) { $this->sftp->_get_sftp_packet(); } diff --git a/apps/files_external/lib/Lib/Storage/SFTPWriteStream.php b/apps/files_external/lib/Lib/Storage/SFTPWriteStream.php index 6682a49d8f6..d64e89b5462 100644 --- a/apps/files_external/lib/Lib/Storage/SFTPWriteStream.php +++ b/apps/files_external/lib/Lib/Storage/SFTPWriteStream.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Lib\Storage; @@ -60,10 +42,9 @@ class SFTPWriteStream implements File { /** * Load the source from the stream context and return the context options * - * @param string $name * @throws \BadMethodCallException */ - protected function loadContext($name) { + protected function loadContext(string $name) { $context = stream_context_get_options($this->context); if (isset($context[$name])) { $context = $context[$name]; diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index c7324db01e4..8f8750864e1 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -1,39 +1,11 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Jesús Macias <jmacias@solidgear.es> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Juan Pablo Villafañez <jvillafanez@solidgear.es> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Julius Härtl <jus@bitgrid.net> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Philipp Kapfer <philipp.kapfer@gmx.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Roland Tapken <roland@bitarbeiter.net> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ + namespace OCA\Files_External\Lib\Storage; use Icewind\SMB\ACL; @@ -51,7 +23,7 @@ use Icewind\SMB\IFileInfo; use Icewind\SMB\Native\NativeServer; use Icewind\SMB\Options; use Icewind\SMB\ServerFactory; -use Icewind\SMB\System; +use Icewind\SMB\Wrapped\Server; use Icewind\Streams\CallbackWrapper; use Icewind\Streams\IteratorDirectory; use OC\Files\Filesystem; @@ -60,12 +32,14 @@ use OCA\Files_External\Lib\Notify\SMBNotifyHandler; use OCP\Cache\CappedMemoryCache; use OCP\Constants; use OCP\Files\EntityTooLargeException; +use OCP\Files\IMimeTypeDetector; use OCP\Files\Notify\IChange; use OCP\Files\Notify\IRenameChange; use OCP\Files\NotPermittedException; use OCP\Files\Storage\INotifyStorage; use OCP\Files\StorageAuthException; use OCP\Files\StorageNotAvailableException; +use OCP\ITempManager; use Psr\Log\LoggerInterface; class SMB extends Common implements INotifyStorage { @@ -98,57 +72,58 @@ class SMB extends Common implements INotifyStorage { /** @var bool */ protected $checkAcl; - public function __construct($params) { - if (!isset($params['host'])) { + public function __construct(array $parameters) { + if (!isset($parameters['host'])) { throw new \Exception('Invalid configuration, no host provided'); } - if (isset($params['auth'])) { - $auth = $params['auth']; - } elseif (isset($params['user']) && isset($params['password']) && isset($params['share'])) { - [$workgroup, $user] = $this->splitUser($params['user']); - $auth = new BasicAuth($user, $workgroup, $params['password']); + if (isset($parameters['auth'])) { + $auth = $parameters['auth']; + } elseif (isset($parameters['user']) && isset($parameters['password']) && isset($parameters['share'])) { + [$workgroup, $user] = $this->splitUser($parameters['user']); + $auth = new BasicAuth($user, $workgroup, $parameters['password']); } else { throw new \Exception('Invalid configuration, no credentials provided'); } - if (isset($params['logger'])) { - if (!$params['logger'] instanceof LoggerInterface) { + if (isset($parameters['logger'])) { + if (!$parameters['logger'] instanceof LoggerInterface) { throw new \Exception( 'Invalid logger. Got ' - . get_class($params['logger']) + . get_class($parameters['logger']) . ' Expected ' . LoggerInterface::class ); } - $this->logger = $params['logger']; + $this->logger = $parameters['logger']; } else { - $this->logger = \OC::$server->get(LoggerInterface::class); + $this->logger = \OCP\Server::get(LoggerInterface::class); } $options = new Options(); - if (isset($params['timeout'])) { - $timeout = (int)$params['timeout']; + if (isset($parameters['timeout'])) { + $timeout = (int)$parameters['timeout']; if ($timeout > 0) { $options->setTimeout($timeout); } } - $serverFactory = new ServerFactory($options); - $this->server = $serverFactory->createServer($params['host'], $auth); - $this->share = $this->server->getShare(trim($params['share'], '/')); + $system = \OCP\Server::get(SystemBridge::class); + $serverFactory = new ServerFactory($options, $system); + $this->server = $serverFactory->createServer($parameters['host'], $auth); + $this->share = $this->server->getShare(trim($parameters['share'], '/')); - $this->root = $params['root'] ?? '/'; + $this->root = $parameters['root'] ?? '/'; $this->root = '/' . ltrim($this->root, '/'); $this->root = rtrim($this->root, '/') . '/'; - $this->showHidden = isset($params['show_hidden']) && $params['show_hidden']; - $this->caseSensitive = (bool) ($params['case_sensitive'] ?? true); - $this->checkAcl = isset($params['check_acl']) && $params['check_acl']; + $this->showHidden = isset($parameters['show_hidden']) && $parameters['show_hidden']; + $this->caseSensitive = (bool)($parameters['case_sensitive'] ?? true); + $this->checkAcl = isset($parameters['check_acl']) && $parameters['check_acl']; $this->statCache = new CappedMemoryCache(); - parent::__construct($params); + parent::__construct($parameters); } - private function splitUser($user) { + private function splitUser(string $user): array { if (str_contains($user, '/')) { return explode('/', $user, 2); } elseif (str_contains($user, '\\')) { @@ -158,25 +133,18 @@ class SMB extends Common implements INotifyStorage { return [null, $user]; } - /** - * @return string - */ - public function getId() { + public function getId(): string { // FIXME: double slash to keep compatible with the old storage ids, // failure to do so will lead to creation of a new storage id and // loss of shares from the storage return 'smb::' . $this->server->getAuth()->getUsername() . '@' . $this->server->getHost() . '//' . $this->share->getName() . '/' . $this->root; } - /** - * @param string $path - * @return string - */ - protected function buildPath($path) { + protected function buildPath(string $path): string { return Filesystem::normalizePath($this->root . '/' . $path, true, false, true); } - protected function relativePath($fullPath) { + protected function relativePath(string $fullPath): ?string { if ($fullPath === $this->root) { return ''; } elseif (substr($fullPath, 0, strlen($this->root)) === $this->root) { @@ -187,11 +155,11 @@ class SMB extends Common implements INotifyStorage { } /** - * @param string $path - * @return IFileInfo * @throws StorageAuthException + * @throws \OCP\Files\NotFoundException + * @throws \OCP\Files\ForbiddenException */ - protected function getFileInfo($path) { + protected function getFileInfo(string $path): IFileInfo { try { $path = $this->buildPath($path); $cached = $this->statCache[$path] ?? null; @@ -217,23 +185,23 @@ class SMB extends Common implements INotifyStorage { } /** - * @param \Exception $e - * @return never * @throws StorageAuthException */ - protected function throwUnavailable(\Exception $e) { + protected function throwUnavailable(\Exception $e): never { $this->logger->error('Error while getting file info', ['exception' => $e]); throw new StorageAuthException($e->getMessage(), $e); } /** * get the acl from fileinfo that is relevant for the configured user - * - * @param IFileInfo $file - * @return ACL|null */ private function getACL(IFileInfo $file): ?ACL { - $acls = $file->getAcls(); + try { + $acls = $file->getAcls(); + } catch (Exception $e) { + $this->logger->warning('Error while getting file acls', ['exception' => $e]); + return null; + } foreach ($acls as $user => $acl) { [, $user] = $this->splitUser($user); // strip domain if ($user === $this->server->getAuth()->getUsername()) { @@ -245,11 +213,10 @@ class SMB extends Common implements INotifyStorage { } /** - * @param string $path * @return \Generator<IFileInfo> * @throws StorageNotAvailableException */ - protected function getFolderContents($path): iterable { + protected function getFolderContents(string $path): iterable { try { $path = ltrim($this->buildPath($path), '/'); try { @@ -300,11 +267,7 @@ class SMB extends Common implements INotifyStorage { } } - /** - * @param IFileInfo $info - * @return array - */ - protected function formatInfo($info) { + protected function formatInfo(IFileInfo $info): array { $result = [ 'size' => $info->getSize(), 'mtime' => $info->getMTime(), @@ -322,9 +285,8 @@ class SMB extends Common implements INotifyStorage { * * @param string $source the old name of the path * @param string $target the new name of the path - * @return bool true if the rename is successful, false otherwise */ - public function rename($source, $target, $retry = true): bool { + public function rename(string $source, string $target, bool $retry = true): bool { if ($this->isRootDir($source) || $this->isRootDir($target)) { return false; } @@ -363,10 +325,10 @@ class SMB extends Common implements INotifyStorage { return $result; } - public function stat($path, $retry = true) { + public function stat(string $path, bool $retry = true): array|false { try { $result = $this->formatInfo($this->getFileInfo($path)); - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } catch (\OCP\Files\NotFoundException $e) { return false; @@ -374,7 +336,7 @@ class SMB extends Common implements INotifyStorage { if ($retry) { return $this->stat($path, false); } else { - throw $e; + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } } if ($this->remoteIsShare() && $this->isRootDir($path)) { @@ -385,10 +347,8 @@ class SMB extends Common implements INotifyStorage { /** * get the best guess for the modification time of the share - * - * @return int */ - private function shareMTime() { + private function shareMTime(): int { $highestMTime = 0; $files = $this->share->dir($this->root); foreach ($files as $fileInfo) { @@ -407,28 +367,19 @@ class SMB extends Common implements INotifyStorage { /** * Check if the path is our root dir (not the smb one) - * - * @param string $path the path - * @return bool */ - private function isRootDir($path) { + private function isRootDir(string $path): bool { return $path === '' || $path === '/' || $path === '.'; } /** * Check if our root points to a smb share - * - * @return bool true if our root points to a share false otherwise */ - private function remoteIsShare() { + private function remoteIsShare(): bool { return $this->share->getName() && (!$this->root || $this->root === '/'); } - /** - * @param string $path - * @return bool - */ - public function unlink($path) { + public function unlink(string $path): bool { if ($this->isRootDir($path)) { return false; } @@ -454,41 +405,36 @@ class SMB extends Common implements INotifyStorage { /** * check if a file or folder has been updated since $time - * - * @param string $path - * @param int $time - * @return bool */ - public function hasUpdated($path, $time) { + public function hasUpdated(string $path, int $time): bool { if (!$path and $this->root === '/') { // mtime doesn't work for shares, but giving the nature of the backend, // doing a full update is still just fast enough return true; } else { $actualTime = $this->filemtime($path); - return $actualTime > $time; + return $actualTime > $time || $actualTime === 0; } } /** - * @param string $path - * @param string $mode - * @return resource|bool + * @return resource|false */ - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { $fullPath = $this->buildPath($path); try { switch ($mode) { case 'r': case 'rb': if (!$this->file_exists($path)) { + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', file doesn\'t exist.'); return false; } return $this->share->read($fullPath); case 'w': case 'wb': $source = $this->share->write($fullPath); - return CallBackWrapper::wrap($source, null, null, function () use ($fullPath) { + return CallBackWrapper::wrap($source, null, null, function () use ($fullPath): void { unset($this->statCache[$fullPath]); }); case 'a': @@ -509,18 +455,20 @@ class SMB extends Common implements INotifyStorage { } if ($this->file_exists($path)) { if (!$this->isUpdatable($path)) { + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', file not updatable.'); return false; } $tmpFile = $this->getCachedFile($path); } else { if (!$this->isCreatable(dirname($path))) { + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', parent directory not writable.'); return false; } - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext); + $tmpFile = \OCP\Server::get(ITempManager::class)->getTemporaryFile($ext); } $source = fopen($tmpFile, $mode); $share = $this->share; - return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share) { + return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share): void { unset($this->statCache[$fullPath]); $share->put($tmpFile, $fullPath); unlink($tmpFile); @@ -528,18 +476,21 @@ class SMB extends Common implements INotifyStorage { } return false; } catch (NotFoundException $e) { + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', not found.', ['exception' => $e]); return false; } catch (ForbiddenException $e) { + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', forbidden.', ['exception' => $e]); return false; } catch (OutOfSpaceException $e) { - throw new EntityTooLargeException("not enough available space to create file", 0, $e); + $this->logger->warning('Failed to open ' . $path . ' on ' . $this->getId() . ', out of space.', ['exception' => $e]); + throw new EntityTooLargeException('not enough available space to create file', 0, $e); } catch (ConnectException $e) { - $this->logger->error('Error while opening file', ['exception' => $e]); + $this->logger->error('Error while opening file ' . $path . ' on ' . $this->getId(), ['exception' => $e]); throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e); } } - public function rmdir($path) { + public function rmdir(string $path): bool { if ($this->isRootDir($path)) { return false; } @@ -566,7 +517,7 @@ class SMB extends Common implements INotifyStorage { } } - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { try { if (!$this->file_exists($path)) { $fh = $this->share->write($this->buildPath($path)); @@ -575,29 +526,26 @@ class SMB extends Common implements INotifyStorage { } return false; } catch (OutOfSpaceException $e) { - throw new EntityTooLargeException("not enough available space to create file", 0, $e); + throw new EntityTooLargeException('not enough available space to create file', 0, $e); } catch (ConnectException $e) { $this->logger->error('Error while creating file', ['exception' => $e]); throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e); } } - public function getMetaData($path) { + public function getMetaData(string $path): ?array { try { $fileInfo = $this->getFileInfo($path); } catch (\OCP\Files\NotFoundException $e) { return null; - } catch (ForbiddenException $e) { - return null; - } - if (!$fileInfo) { + } catch (\OCP\Files\ForbiddenException $e) { return null; } return $this->getMetaDataFromFileInfo($fileInfo); } - private function getMetaDataFromFileInfo(IFileInfo $fileInfo) { + private function getMetaDataFromFileInfo(IFileInfo $fileInfo): array { $permissions = Constants::PERMISSION_READ + Constants::PERMISSION_SHARE; if ( @@ -614,7 +562,7 @@ class SMB extends Common implements INotifyStorage { if ($fileInfo->isDirectory()) { $data['mimetype'] = 'httpd/unix-directory'; } else { - $data['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($fileInfo->getPath()); + $data['mimetype'] = \OCP\Server::get(IMimeTypeDetector::class)->detectPath($fileInfo->getPath()); } $data['mtime'] = $fileInfo->getMTime(); if ($fileInfo->isDirectory()) { @@ -630,7 +578,7 @@ class SMB extends Common implements INotifyStorage { return $data; } - public function opendir($path) { + public function opendir(string $path) { try { $files = $this->getFolderContents($path); } catch (NotFoundException $e) { @@ -645,7 +593,7 @@ class SMB extends Common implements INotifyStorage { return IteratorDirectory::wrap($names); } - public function getDirectoryContent($directory): \Traversable { + public function getDirectoryContent(string $directory): \Traversable { try { $files = $this->getFolderContents($directory); foreach ($files as $file) { @@ -658,17 +606,17 @@ class SMB extends Common implements INotifyStorage { } } - public function filetype($path) { + public function filetype(string $path): string|false { try { return $this->getFileInfo($path)->isDirectory() ? 'dir' : 'file'; } catch (\OCP\Files\NotFoundException $e) { return false; - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } } - public function mkdir($path) { + public function mkdir(string $path): bool { $path = $this->buildPath($path); try { $this->share->mkdir($path); @@ -681,12 +629,12 @@ class SMB extends Common implements INotifyStorage { } } - public function file_exists($path) { + public function file_exists(string $path): bool { try { // Case sensitive filesystem doesn't matter for root directory if ($this->caseSensitive === false && $path !== '') { $filename = basename($path); - $siblings = $this->getDirectoryContent(dirname($this->buildPath($path))); + $siblings = $this->getDirectoryContent(dirname($path)); foreach ($siblings as $sibling) { if ($sibling['name'] === $filename) { return true; @@ -698,25 +646,25 @@ class SMB extends Common implements INotifyStorage { return true; } catch (\OCP\Files\NotFoundException $e) { return false; - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } catch (ConnectException $e) { throw new StorageNotAvailableException($e->getMessage(), (int)$e->getCode(), $e); } } - public function isReadable($path) { + public function isReadable(string $path): bool { try { $info = $this->getFileInfo($path); return $this->showHidden || !$info->isHidden(); } catch (\OCP\Files\NotFoundException $e) { return false; - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } } - public function isUpdatable($path) { + public function isUpdatable(string $path): bool { try { $info = $this->getFileInfo($path); // following windows behaviour for read-only folders: they can be written into @@ -724,18 +672,18 @@ class SMB extends Common implements INotifyStorage { return ($this->showHidden || !$info->isHidden()) && (!$info->isReadOnly() || $info->isDirectory()); } catch (\OCP\Files\NotFoundException $e) { return false; - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } } - public function isDeletable($path) { + public function isDeletable(string $path): bool { try { $info = $this->getFileInfo($path); return ($this->showHidden || !$info->isHidden()) && !$info->isReadOnly(); } catch (\OCP\Files\NotFoundException $e) { return false; - } catch (ForbiddenException $e) { + } catch (\OCP\Files\ForbiddenException $e) { return false; } } @@ -743,19 +691,12 @@ class SMB extends Common implements INotifyStorage { /** * check if smbclient is installed */ - public static function checkDependencies() { - return ( - (bool)\OC_Helper::findBinaryPath('smbclient') - || NativeServer::available(new System()) - ) ? true : ['smbclient']; + public static function checkDependencies(): array|bool { + $system = \OCP\Server::get(SystemBridge::class); + return Server::available($system) || NativeServer::available($system) ?: ['smbclient']; } - /** - * Test a storage for availability - * - * @return bool - */ - public function test() { + public function test(): bool { try { return parent::test(); } catch (StorageAuthException $e) { @@ -768,7 +709,7 @@ class SMB extends Common implements INotifyStorage { } } - public function listen($path, callable $callback) { + public function listen(string $path, callable $callback): void { $this->notify($path)->listen(function (IChange $change) use ($callback) { if ($change instanceof IRenameChange) { return $callback($change->getType(), $change->getPath(), $change->getTargetPath()); @@ -778,7 +719,7 @@ class SMB extends Common implements INotifyStorage { }); } - public function notify($path) { + public function notify(string $path): SMBNotifyHandler { $path = '/' . ltrim($path, '/'); $shareNotifyHandler = $this->share->notify($this->buildPath($path)); return new SMBNotifyHandler($shareNotifyHandler, $this->root); diff --git a/apps/files_external/lib/Lib/Storage/StreamWrapper.php b/apps/files_external/lib/Lib/Storage/StreamWrapper.php index 79387e14cf6..1272b9d4d8a 100644 --- a/apps/files_external/lib/Lib/Storage/StreamWrapper.php +++ b/apps/files_external/lib/Lib/Storage/StreamWrapper.php @@ -1,44 +1,23 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Bart Visscher <bartv@thisnet.nl> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; -abstract class StreamWrapper extends \OC\Files\Storage\Common { +use OC\Files\Storage\Common; + +abstract class StreamWrapper extends Common { - /** - * @param string $path - * @return string|null - */ - abstract public function constructUrl($path); + abstract public function constructUrl(string $path): ?string; - public function mkdir($path) { + public function mkdir(string $path): bool { return mkdir($this->constructUrl($path)); } - public function rmdir($path) { + public function rmdir(string $path): bool { if ($this->is_dir($path) && $this->isDeletable($path)) { $dh = $this->opendir($path); if (!is_resource($dh)) { @@ -60,19 +39,19 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common { } } - public function opendir($path) { + public function opendir(string $path) { return opendir($this->constructUrl($path)); } - public function filetype($path) { + public function filetype(string $path): string|false { return @filetype($this->constructUrl($path)); } - public function file_exists($path) { + public function file_exists(string $path): bool { return file_exists($this->constructUrl($path)); } - public function unlink($path) { + public function unlink(string $path): bool { $url = $this->constructUrl($path); $success = unlink($url); // normally unlink() is supposed to do this implicitly, @@ -81,11 +60,11 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common { return $success; } - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { return fopen($this->constructUrl($path), $mode); } - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { if ($this->file_exists($path)) { if (is_null($mtime)) { $fh = $this->fopen($path, 'a'); @@ -102,26 +81,19 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common { } } - /** - * @param string $path - * @param string $target - */ - public function getFile($path, $target) { + public function getFile(string $path, string $target): bool { return copy($this->constructUrl($path), $target); } - /** - * @param string $target - */ - public function uploadFile($path, $target) { + public function uploadFile(string $path, string $target): bool { return copy($path, $this->constructUrl($target)); } - public function rename($source, $target) { + public function rename(string $source, string $target): bool { return rename($this->constructUrl($source), $this->constructUrl($target)); } - public function stat($path) { + public function stat(string $path): array|false { return stat($this->constructUrl($path)); } } diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php index 7283e5ae7b1..e80570f14ba 100644 --- a/apps/files_external/lib/Lib/Storage/Swift.php +++ b/apps/files_external/lib/Lib/Storage/Swift.php @@ -3,60 +3,37 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Benjamin Liles <benliles@arch.tamu.edu> - * @author Christian Berendt <berendt@b1-systems.de> - * @author Christopher Bartz <bartz@dkrz.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Felix Moeller <mail@felixmoeller.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Jörn Friedrich Dreyer <jfd@butonic.de> - * @author Martin Mattel <martin.mattel@diemattels.at> - * @author Michael Zamot <michael@zamot.io> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Philipp Kapfer <philipp.kapfer@gmx.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Tim Dettrick <t.dettrick@uq.edu.au> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib\Storage; use GuzzleHttp\Psr7\Uri; use Icewind\Streams\CallbackWrapper; use Icewind\Streams\IteratorDirectory; +use OC\Files\Filesystem; use OC\Files\ObjectStore\SwiftFactory; +use OC\Files\Storage\Common; +use OCP\Cache\CappedMemoryCache; use OCP\Files\IMimeTypeDetector; +use OCP\Files\StorageAuthException; use OCP\Files\StorageBadConfigException; +use OCP\Files\StorageNotAvailableException; +use OCP\ICache; +use OCP\ICacheFactory; +use OCP\ITempManager; +use OCP\Server; use OpenStack\Common\Error\BadResponseError; +use OpenStack\ObjectStore\v1\Models\Container; use OpenStack\ObjectStore\v1\Models\StorageObject; use Psr\Log\LoggerInterface; -class Swift extends \OC\Files\Storage\Common { +class Swift extends Common { /** @var SwiftFactory */ private $connectionFactory; /** - * @var \OpenStack\ObjectStore\v1\Models\Container + * @var Container */ private $container; /** @@ -84,15 +61,11 @@ class Swift extends \OC\Files\Storage\Common { * \OpenCloud\OpenStack\ObjectStorage\Resource\DataObject for existing * paths and path to false for not existing paths. * - * @var \OCP\ICache + * @var ICache */ private $objectCache; - /** - * @param string $path - * @return mixed|string - */ - private function normalizePath(string $path) { + private function normalizePath(string $path): string { $path = trim($path, '/'); if (!$path) { @@ -107,25 +80,17 @@ class Swift extends \OC\Files\Storage\Common { public const SUBCONTAINER_FILE = '.subcontainers'; /** - * translate directory path to container name - * - * @param string $path - * @return string - */ - - /** * Fetches an object from the API. * If the object is cached already or a * failed "doesn't exist" response was cached, * that one will be returned. * - * @param string $path - * @return StorageObject|bool object - * or false if the object did not exist - * @throws \OCP\Files\StorageAuthException - * @throws \OCP\Files\StorageNotAvailableException + * @return StorageObject|false object + * or false if the object did not exist + * @throws StorageAuthException + * @throws StorageNotAvailableException */ - private function fetchObject(string $path) { + private function fetchObject(string $path): StorageObject|false { $cached = $this->objectCache->get($path); if ($cached !== null) { // might be "false" if object did not exist from last check @@ -139,7 +104,7 @@ class Swift extends \OC\Files\Storage\Common { } catch (BadResponseError $e) { // Expected response is "404 Not Found", so only log if it isn't if ($e->getResponse()->getStatusCode() !== 404) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -152,67 +117,65 @@ class Swift extends \OC\Files\Storage\Common { /** * Returns whether the given path exists. * - * @param string $path - * * @return bool true if the object exist, false otherwise - * @throws \OCP\Files\StorageAuthException - * @throws \OCP\Files\StorageNotAvailableException + * @throws StorageAuthException + * @throws StorageNotAvailableException */ - private function doesObjectExist($path) { + private function doesObjectExist(string $path): bool { return $this->fetchObject($path) !== false; } - public function __construct($params) { - if ((empty($params['key']) and empty($params['password'])) - or (empty($params['user']) && empty($params['userid'])) or empty($params['bucket']) - or empty($params['region']) + public function __construct(array $parameters) { + if ((empty($parameters['key']) and empty($parameters['password'])) + or (empty($parameters['user']) && empty($parameters['userid'])) or empty($parameters['bucket']) + or empty($parameters['region']) ) { - throw new StorageBadConfigException("API Key or password, Login, Bucket and Region have to be configured."); + throw new StorageBadConfigException('API Key or password, Login, Bucket and Region have to be configured.'); } - $user = $params['user']; - $this->id = 'swift::' . $user . md5($params['bucket']); + $user = $parameters['user']; + $this->id = 'swift::' . $user . md5($parameters['bucket']); - $bucketUrl = new Uri($params['bucket']); + $bucketUrl = new Uri($parameters['bucket']); if ($bucketUrl->getHost()) { - $params['bucket'] = basename($bucketUrl->getPath()); - $params['endpoint_url'] = (string)$bucketUrl->withPath(dirname($bucketUrl->getPath())); + $parameters['bucket'] = basename($bucketUrl->getPath()); + $parameters['endpoint_url'] = (string)$bucketUrl->withPath(dirname($bucketUrl->getPath())); } - if (empty($params['url'])) { - $params['url'] = 'https://identity.api.rackspacecloud.com/v2.0/'; + if (empty($parameters['url'])) { + $parameters['url'] = 'https://identity.api.rackspacecloud.com/v2.0/'; } - if (empty($params['service_name'])) { - $params['service_name'] = 'cloudFiles'; + if (empty($parameters['service_name'])) { + $parameters['service_name'] = 'cloudFiles'; } - $params['autocreate'] = true; + $parameters['autocreate'] = true; - if (isset($params['domain'])) { - $params['user'] = [ - 'name' => $params['user'], - 'password' => $params['password'], + if (isset($parameters['domain'])) { + $parameters['user'] = [ + 'name' => $parameters['user'], + 'password' => $parameters['password'], 'domain' => [ - 'name' => $params['domain'], + 'name' => $parameters['domain'], ] ]; } - $this->params = $params; + $this->params = $parameters; // FIXME: private class... - $this->objectCache = new \OCP\Cache\CappedMemoryCache(); + $this->objectCache = new CappedMemoryCache(); $this->connectionFactory = new SwiftFactory( - \OC::$server->getMemCacheFactory()->createDistributed('swift/'), + Server::get(ICacheFactory::class)->createDistributed('swift/'), $this->params, - \OC::$server->get(LoggerInterface::class) + Server::get(LoggerInterface::class) ); $this->objectStore = new \OC\Files\ObjectStore\Swift($this->params, $this->connectionFactory); - $this->bucket = $params['bucket']; - $this->mimeDetector = \OC::$server->get(IMimeTypeDetector::class); + $this->bucket = $parameters['bucket']; + $this->mimeDetector = Server::get(IMimeTypeDetector::class); } - public function mkdir($path) { + public function mkdir(string $path): bool { $path = $this->normalizePath($path); if ($this->is_dir($path)) { @@ -233,7 +196,7 @@ class Swift extends \OC\Files\Storage\Common { // with all properties $this->objectCache->remove($path); } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -243,7 +206,7 @@ class Swift extends \OC\Files\Storage\Common { return true; } - public function file_exists($path) { + public function file_exists(string $path): bool { $path = $this->normalizePath($path); if ($path !== '.' && $this->is_dir($path)) { @@ -253,7 +216,7 @@ class Swift extends \OC\Files\Storage\Common { return $this->doesObjectExist($path); } - public function rmdir($path) { + public function rmdir(string $path): bool { $path = $this->normalizePath($path); if (!$this->is_dir($path) || !$this->isDeletable($path)) { @@ -261,8 +224,8 @@ class Swift extends \OC\Files\Storage\Common { } $dh = $this->opendir($path); - while ($file = readdir($dh)) { - if (\OC\Files\Filesystem::isIgnoredDir($file)) { + while (($file = readdir($dh)) !== false) { + if (Filesystem::isIgnoredDir($file)) { continue; } @@ -277,7 +240,7 @@ class Swift extends \OC\Files\Storage\Common { $this->objectStore->deleteObject($path . '/'); $this->objectCache->remove($path . '/'); } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -287,7 +250,7 @@ class Swift extends \OC\Files\Storage\Common { return true; } - public function opendir($path) { + public function opendir(string $path) { $path = $this->normalizePath($path); if ($path === '.') { @@ -315,7 +278,7 @@ class Swift extends \OC\Files\Storage\Common { return IteratorDirectory::wrap($files); } catch (\Exception $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -323,9 +286,8 @@ class Swift extends \OC\Files\Storage\Common { } } - public function stat($path) { + public function stat(string $path): array|false { $path = $this->normalizePath($path); - if ($path === '.') { $path = ''; } elseif ($this->is_dir($path)) { @@ -338,32 +300,33 @@ class Swift extends \OC\Files\Storage\Common { return false; } } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); return false; } - $dateTime = $object->lastModified ? \DateTime::createFromFormat(\DateTime::RFC1123, $object->lastModified) : false; - $mtime = $dateTime ? $dateTime->getTimestamp() : null; - $objectMetadata = $object->getMetadata(); - if (isset($objectMetadata['timestamp'])) { - $mtime = $objectMetadata['timestamp']; + $mtime = null; + if (!empty($object->lastModified)) { + $dateTime = \DateTime::createFromFormat(\DateTime::RFC1123, $object->lastModified); + if ($dateTime !== false) { + $mtime = $dateTime->getTimestamp(); + } } - if (!empty($mtime)) { - $mtime = floor($mtime); + if (is_numeric($object->getMetadata()['timestamp'] ?? null)) { + $mtime = (float)$object->getMetadata()['timestamp']; } - $stat = []; - $stat['size'] = (int)$object->contentLength; - $stat['mtime'] = $mtime; - $stat['atime'] = time(); - return $stat; + return [ + 'size' => (int)$object->contentLength, + 'mtime' => isset($mtime) ? (int)floor($mtime) : null, + 'atime' => time(), + ]; } - public function filetype($path) { + public function filetype(string $path) { $path = $this->normalizePath($path); if ($path !== '.' && $this->doesObjectExist($path)) { @@ -379,7 +342,7 @@ class Swift extends \OC\Files\Storage\Common { } } - public function unlink($path) { + public function unlink(string $path): bool { $path = $this->normalizePath($path); if ($this->is_dir($path)) { @@ -392,7 +355,7 @@ class Swift extends \OC\Files\Storage\Common { $this->objectCache->remove($path . '/'); } catch (BadResponseError $e) { if ($e->getResponse()->getStatusCode() !== 404) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -403,7 +366,7 @@ class Swift extends \OC\Files\Storage\Common { return true; } - public function fopen($path, $mode) { + public function fopen(string $path, string $mode) { $path = $this->normalizePath($path); switch ($mode) { @@ -416,7 +379,7 @@ class Swift extends \OC\Files\Storage\Common { try { return $this->objectStore->readObject($path); } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -436,7 +399,7 @@ class Swift extends \OC\Files\Storage\Common { } else { $ext = ''; } - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile($ext); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile($ext); // Fetch existing file if required if ($mode[0] !== 'w' && $this->file_exists($path)) { if ($mode[0] === 'x') { @@ -447,13 +410,13 @@ class Swift extends \OC\Files\Storage\Common { file_put_contents($tmpFile, $source); } $handle = fopen($tmpFile, $mode); - return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) { + return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile): void { $this->writeBack($tmpFile, $path); }); } } - public function touch($path, $mtime = null) { + public function touch(string $path, ?int $mtime = null): bool { $path = $this->normalizePath($path); if (is_null($mtime)) { $mtime = time(); @@ -483,7 +446,7 @@ class Swift extends \OC\Files\Storage\Common { } } - public function copy($source, $target) { + public function copy(string $source, string $target): bool { $source = $this->normalizePath($source); $target = $this->normalizePath($target); @@ -503,7 +466,7 @@ class Swift extends \OC\Files\Storage\Common { $this->objectCache->remove($target); $this->objectCache->remove($target . '/'); } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -519,7 +482,7 @@ class Swift extends \OC\Files\Storage\Common { $this->objectCache->remove($target); $this->objectCache->remove($target . '/'); } catch (BadResponseError $e) { - \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), [ + Server::get(LoggerInterface::class)->error($e->getMessage(), [ 'exception' => $e, 'app' => 'files_external', ]); @@ -527,8 +490,8 @@ class Swift extends \OC\Files\Storage\Common { } $dh = $this->opendir($source); - while ($file = readdir($dh)) { - if (\OC\Files\Filesystem::isIgnoredDir($file)) { + while (($file = readdir($dh)) !== false) { + if (Filesystem::isIgnoredDir($file)) { continue; } @@ -544,7 +507,7 @@ class Swift extends \OC\Files\Storage\Common { return true; } - public function rename($source, $target) { + public function rename(string $source, string $target): bool { $source = $this->normalizePath($source); $target = $this->normalizePath($target); @@ -569,18 +532,18 @@ class Swift extends \OC\Files\Storage\Common { return false; } - public function getId() { + public function getId(): string { return $this->id; } /** * Returns the initialized object store container. * - * @return \OpenStack\ObjectStore\v1\Models\Container - * @throws \OCP\Files\StorageAuthException - * @throws \OCP\Files\StorageNotAvailableException + * @return Container + * @throws StorageAuthException + * @throws StorageNotAvailableException */ - public function getContainer() { + public function getContainer(): Container { if (is_null($this->container)) { $this->container = $this->connectionFactory->getContainer(); @@ -591,7 +554,7 @@ class Swift extends \OC\Files\Storage\Common { return $this->container; } - public function writeBack($tmpFile, $path) { + public function writeBack(string $tmpFile, string $path): void { $fileData = fopen($tmpFile, 'r'); $this->objectStore->writeObject($path, $fileData, $this->mimeDetector->detectPath($path)); // invalidate target object to force repopulation on fetch @@ -599,7 +562,7 @@ class Swift extends \OC\Files\Storage\Common { unlink($tmpFile); } - public function hasUpdated($path, $time) { + public function hasUpdated(string $path, int $time): bool { if ($this->is_file($path)) { return parent::hasUpdated($path, $time); } @@ -624,7 +587,7 @@ class Swift extends \OC\Files\Storage\Common { /** * check if curl is installed */ - public static function checkDependencies() { + public static function checkDependencies(): bool { return true; } } diff --git a/apps/files_external/lib/Lib/Storage/SystemBridge.php b/apps/files_external/lib/Lib/Storage/SystemBridge.php new file mode 100644 index 00000000000..80449b2744b --- /dev/null +++ b/apps/files_external/lib/Lib/Storage/SystemBridge.php @@ -0,0 +1,27 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2024 Robin Appelman <robin@icewind.nl> + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Files_External\Lib\Storage; + +use Icewind\SMB\System; +use OCP\IBinaryFinder; + +/** + * Bridge the NC and SMB binary finding logic + */ +class SystemBridge extends System { + public function __construct( + private IBinaryFinder $binaryFinder, + ) { + } + + protected function getBinaryPath(string $binary): ?string { + $path = $this->binaryFinder->findBinaryPath($binary); + return $path !== false ? $path : null; + } +} diff --git a/apps/files_external/lib/Lib/StorageConfig.php b/apps/files_external/lib/Lib/StorageConfig.php index 2d7d0687635..2cb82d3790a 100644 --- a/apps/files_external/lib/Lib/StorageConfig.php +++ b/apps/files_external/lib/Lib/StorageConfig.php @@ -1,33 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Jesús Macias <jmacias@solidgear.es> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; +use OC\Files\Filesystem; use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Auth\IUserProvided; use OCA\Files_External\Lib\Backend\Backend; @@ -103,14 +83,14 @@ class StorageConfig implements \JsonSerializable { /** * List of users who have access to this storage * - * @var string[] + * @var list<string> */ private $applicableUsers = []; /** * List of groups that have access to this storage * - * @var string[] + * @var list<string> */ private $applicableGroups = []; @@ -174,7 +154,7 @@ class StorageConfig implements \JsonSerializable { * @param string $mountPoint path */ public function setMountPoint($mountPoint) { - $this->mountPoint = \OC\Files\Filesystem::normalizePath($mountPoint); + $this->mountPoint = Filesystem::normalizePath($mountPoint); } /** @@ -225,7 +205,7 @@ class StorageConfig implements \JsonSerializable { foreach ($backendOptions as $key => $value) { if (isset($parameters[$key])) { switch ($parameters[$key]->getType()) { - case \OCA\Files_External\Lib\DefinitionParameter::VALUE_BOOLEAN: + case DefinitionParameter::VALUE_BOOLEAN: $value = (bool)$value; break; } @@ -277,7 +257,7 @@ class StorageConfig implements \JsonSerializable { /** * Returns the users for which to mount this storage * - * @return string[] applicable users + * @return list<string> applicable users */ public function getApplicableUsers() { return $this->applicableUsers; @@ -286,7 +266,7 @@ class StorageConfig implements \JsonSerializable { /** * Sets the users for which to mount this storage * - * @param string[]|null $applicableUsers applicable users + * @param list<string>|null $applicableUsers applicable users */ public function setApplicableUsers($applicableUsers) { if (is_null($applicableUsers)) { @@ -298,7 +278,7 @@ class StorageConfig implements \JsonSerializable { /** * Returns the groups for which to mount this storage * - * @return string[] applicable groups + * @return list<string> applicable groups */ public function getApplicableGroups() { return $this->applicableGroups; @@ -307,7 +287,7 @@ class StorageConfig implements \JsonSerializable { /** * Sets the groups for which to mount this storage * - * @param string[]|null $applicableGroups applicable groups + * @param list<string>|null $applicableGroups applicable groups */ public function setApplicableGroups($applicableGroups) { if (is_null($applicableGroups)) { diff --git a/apps/files_external/lib/Lib/StorageModifierTrait.php b/apps/files_external/lib/Lib/StorageModifierTrait.php index 096e091576e..4062ff1635e 100644 --- a/apps/files_external/lib/Lib/StorageModifierTrait.php +++ b/apps/files_external/lib/Lib/StorageModifierTrait.php @@ -1,28 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; -use OCP\Files\Storage; +use OCP\Files\Storage\IStorage; use OCP\Files\StorageNotAvailableException; use OCP\IUser; @@ -44,8 +29,8 @@ trait StorageModifierTrait { /** * Modify a StorageConfig parameters * - * @param StorageConfig $storage - * @param IUser $user User the storage is being used as + * @param StorageConfig &$storage + * @param ?IUser $user User the storage is being used as * @return void * @throws InsufficientDataForMeaningfulAnswerException * @throws StorageNotAvailableException @@ -54,14 +39,12 @@ trait StorageModifierTrait { } /** - * Wrap a Storage if necessary + * Wrap a storage if necessary * - * @param Storage $storage - * @return Storage * @throws InsufficientDataForMeaningfulAnswerException * @throws StorageNotAvailableException */ - public function wrapStorage(Storage $storage) { + public function wrapStorage(IStorage $storage): IStorage { return $storage; } } diff --git a/apps/files_external/lib/Lib/VisibilityTrait.php b/apps/files_external/lib/Lib/VisibilityTrait.php index db616900b8e..62b26f3edb1 100644 --- a/apps/files_external/lib/Lib/VisibilityTrait.php +++ b/apps/files_external/lib/Lib/VisibilityTrait.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Lib; diff --git a/apps/files_external/lib/Listener/GroupDeletedListener.php b/apps/files_external/lib/Listener/GroupDeletedListener.php index 89ee782f044..244b3b2371f 100644 --- a/apps/files_external/lib/Listener/GroupDeletedListener.php +++ b/apps/files_external/lib/Listener/GroupDeletedListener.php @@ -2,23 +2,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Listener; @@ -30,11 +15,9 @@ use OCP\Group\Events\GroupDeletedEvent; /** @template-implements IEventListener<GroupDeletedEvent> */ class GroupDeletedListener implements IEventListener { - /** @var DBConfigService */ - private $config; - - public function __construct(DBConfigService $config) { - $this->config = $config; + public function __construct( + private DBConfigService $config, + ) { } public function handle(Event $event): void { diff --git a/apps/files_external/lib/Listener/LoadAdditionalListener.php b/apps/files_external/lib/Listener/LoadAdditionalListener.php index d164aeb37cb..6ba917759c3 100644 --- a/apps/files_external/lib/Listener/LoadAdditionalListener.php +++ b/apps/files_external/lib/Listener/LoadAdditionalListener.php @@ -3,34 +3,18 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Listener; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCA\Files_External\AppInfo\Application; +use OCA\Files_External\ConfigLexicon; use OCP\AppFramework\Services\IInitialState; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; -use OCP\IConfig; +use OCP\IAppConfig; use OCP\Util; /** @@ -39,7 +23,7 @@ use OCP\Util; class LoadAdditionalListener implements IEventListener { public function __construct( - private IConfig $config, + private readonly IAppConfig $appConfig, private IInitialState $initialState, ) { } @@ -49,7 +33,7 @@ class LoadAdditionalListener implements IEventListener { return; } - $allowUserMounting = $this->config->getAppValue('files_external', 'allow_user_mounting', 'no') === 'yes'; + $allowUserMounting = $this->appConfig->getValueBool('files_external', ConfigLexicon::ALLOW_USER_MOUNTING); $this->initialState->provideInitialState('allowUserMounting', $allowUserMounting); Util::addInitScript(Application::APP_ID, 'init'); diff --git a/apps/files_external/lib/Listener/StorePasswordListener.php b/apps/files_external/lib/Listener/StorePasswordListener.php index b9020d9b499..8580176b014 100644 --- a/apps/files_external/lib/Listener/StorePasswordListener.php +++ b/apps/files_external/lib/Listener/StorePasswordListener.php @@ -3,26 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020, Morris Jobke <hey@morrisjobke.de> - * - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Listener; @@ -35,11 +17,9 @@ use OCP\User\Events\UserLoggedInEvent; /** @template-implements IEventListener<PasswordUpdatedEvent|UserLoggedInEvent> */ class StorePasswordListener implements IEventListener { - /** @var ICredentialsManager */ - private $credentialsManager; - - public function __construct(ICredentialsManager $credentialsManager) { - $this->credentialsManager = $credentialsManager; + public function __construct( + private ICredentialsManager $credentialsManager, + ) { } public function handle(Event $event): void { diff --git a/apps/files_external/lib/Listener/UserDeletedListener.php b/apps/files_external/lib/Listener/UserDeletedListener.php index 3b6eaac206b..337fd12f311 100644 --- a/apps/files_external/lib/Listener/UserDeletedListener.php +++ b/apps/files_external/lib/Listener/UserDeletedListener.php @@ -2,23 +2,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Listener; @@ -30,11 +15,9 @@ use OCP\User\Events\UserDeletedEvent; /** @template-implements IEventListener<UserDeletedEvent> */ class UserDeletedListener implements IEventListener { - /** @var DBConfigService */ - private $config; - - public function __construct(DBConfigService $config) { - $this->config = $config; + public function __construct( + private DBConfigService $config, + ) { } public function handle(Event $event): void { diff --git a/apps/files_external/lib/Migration/DummyUserSession.php b/apps/files_external/lib/Migration/DummyUserSession.php index ce987b3c575..1ebf0e1ec4f 100644 --- a/apps/files_external/lib/Migration/DummyUserSession.php +++ b/apps/files_external/lib/Migration/DummyUserSession.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Greta Doci <gretadoci@gmail.com> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Migration; diff --git a/apps/files_external/lib/Migration/Version1011Date20200630192246.php b/apps/files_external/lib/Migration/Version1011Date20200630192246.php index cf0f870e7ec..c87b1cfbc8b 100644 --- a/apps/files_external/lib/Migration/Version1011Date20200630192246.php +++ b/apps/files_external/lib/Migration/Version1011Date20200630192246.php @@ -3,27 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Migration; diff --git a/apps/files_external/lib/Migration/Version1015Date20211104103506.php b/apps/files_external/lib/Migration/Version1015Date20211104103506.php index 1b4d9ee97c9..6027c795cdf 100644 --- a/apps/files_external/lib/Migration/Version1015Date20211104103506.php +++ b/apps/files_external/lib/Migration/Version1015Date20211104103506.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net> - * - * @author Julius Härtl <jus@bitgrid.net> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Migration; @@ -37,14 +20,10 @@ use Psr\Log\LoggerInterface; class Version1015Date20211104103506 extends SimpleMigrationStep { - /** @var IDBConnection */ - private $connection; - /** @var LoggerInterface */ - private $logger; - - public function __construct(IDBConnection $connection, LoggerInterface $logger) { - $this->connection = $connection; - $this->logger = $logger; + public function __construct( + private IDBConnection $connection, + private LoggerInterface $logger, + ) { } public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper { @@ -81,7 +60,7 @@ class Version1015Date20211104103506 extends SimpleMigrationStep { /** * @throws Exception - * @return \OCP\DB\IResult|int + * @return IResult|int */ private function getS3Mounts() { $qb = $this->connection->getQueryBuilder(); diff --git a/apps/files_external/lib/Migration/Version1016Date20220324154536.php b/apps/files_external/lib/Migration/Version1016Date20220324154536.php index a2a7ecaff17..fb2cccfdd80 100644 --- a/apps/files_external/lib/Migration/Version1016Date20220324154536.php +++ b/apps/files_external/lib/Migration/Version1016Date20220324154536.php @@ -2,24 +2,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com> - * - * @author Joas Schilling <coding@schilljs.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. + * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Migration; diff --git a/apps/files_external/lib/Migration/Version22000Date20210216084416.php b/apps/files_external/lib/Migration/Version22000Date20210216084416.php index 1f56b7f8abb..c4878e602c0 100644 --- a/apps/files_external/lib/Migration/Version22000Date20210216084416.php +++ b/apps/files_external/lib/Migration/Version22000Date20210216084416.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Migration; diff --git a/apps/files_external/lib/MountConfig.php b/apps/files_external/lib/MountConfig.php index 6c13ab3b727..5637ee71ec1 100644 --- a/apps/files_external/lib/MountConfig.php +++ b/apps/files_external/lib/MountConfig.php @@ -1,44 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Andreas Fischer <bantu@owncloud.com> - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Björn Schießle <bjoern@schiessle.org> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Frank Karlitschek <frank@karlitschek.de> - * @author Jesús Macias <jmacias@solidgear.es> - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Julius Härtl <jus@bitgrid.net> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Philipp Kapfer <philipp.kapfer@gmx.at> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External; +use OC\Files\Storage\Common; use OCA\Files_External\Config\IConfigHandler; use OCA\Files_External\Config\UserContext; use OCA\Files_External\Lib\Backend\Backend; @@ -46,7 +15,13 @@ use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserGlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCP\AppFramework\QueryException; use OCP\Files\StorageNotAvailableException; +use OCP\IConfig; +use OCP\IL10N; +use OCP\Security\ISecureRandom; +use OCP\Server; +use OCP\Util; use phpseclib\Crypt\AES; use Psr\Log\LoggerInterface; @@ -64,33 +39,23 @@ class MountConfig { // whether to skip backend test (for unit tests, as this static class is not mockable) public static $skipTest = false; - /** @var UserGlobalStoragesService */ - private $userGlobalStorageService; - /** @var UserStoragesService */ - private $userStorageService; - /** @var GlobalStoragesService */ - private $globalStorageService; - public function __construct( - UserGlobalStoragesService $userGlobalStorageService, - UserStoragesService $userStorageService, - GlobalStoragesService $globalStorageService + private UserGlobalStoragesService $userGlobalStorageService, + private UserStoragesService $userStorageService, + private GlobalStoragesService $globalStorageService, ) { - $this->userGlobalStorageService = $userGlobalStorageService; - $this->userStorageService = $userStorageService; - $this->globalStorageService = $globalStorageService; } /** * @param mixed $input * @param string|null $userId * @return mixed - * @throws \OCP\AppFramework\QueryException + * @throws QueryException * @since 16.0.0 */ public static function substitutePlaceholdersInConfig($input, ?string $userId = null) { /** @var BackendService $backendService */ - $backendService = \OC::$server->get(BackendService::class); + $backendService = Server::get(BackendService::class); /** @var IConfigHandler[] $handlers */ $handlers = $backendService->getConfigHandlers(); foreach ($handlers as $handler) { @@ -111,7 +76,7 @@ class MountConfig { * @return int see self::STATUS_* * @throws \Exception */ - public static function getBackendStatus($class, $options, $isPersonal, $testOnly = true) { + public static function getBackendStatus($class, $options) { if (self::$skipTest) { return StorageNotAvailableException::STATUS_SUCCESS; } @@ -124,11 +89,11 @@ class MountConfig { } if (class_exists($class)) { try { - /** @var \OC\Files\Storage\Common $storage */ + /** @var Common $storage */ $storage = new $class($options); try { - $result = $storage->test($isPersonal, $testOnly); + $result = $storage->test(); $storage->setAvailability($result); if ($result) { return StorageNotAvailableException::STATUS_SUCCESS; @@ -138,7 +103,7 @@ class MountConfig { throw $e; } } catch (\Exception $exception) { - \OC::$server->get(LoggerInterface::class)->error($exception->getMessage(), ['exception' => $exception, 'app' => 'files_external']); + Server::get(LoggerInterface::class)->error($exception->getMessage(), ['exception' => $exception, 'app' => 'files_external']); throw $exception; } } @@ -152,7 +117,7 @@ class MountConfig { * @param Backend[] $backends */ public static function dependencyMessage(array $backends): string { - $l = \OCP\Util::getL10N('files_external'); + $l = Util::getL10N('files_external'); $message = ''; $dependencyGroups = []; @@ -180,7 +145,7 @@ class MountConfig { /** * Returns a dependency missing message */ - private static function getSingleDependencyMessage(\OCP\IL10N $l, string $module, string $backend): string { + private static function getSingleDependencyMessage(IL10N $l, string $module, string $backend): string { switch (strtolower($module)) { case 'curl': return $l->t('The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', [$backend]); @@ -230,7 +195,7 @@ class MountConfig { */ private static function encryptPassword($password) { $cipher = self::getCipher(); - $iv = \OC::$server->getSecureRandom()->generate(16); + $iv = Server::get(ISecureRandom::class)->generate(16); $cipher->setIV($iv); return base64_encode($iv . $cipher->encrypt($password)); } @@ -257,7 +222,7 @@ class MountConfig { */ private static function getCipher() { $cipher = new AES(AES::MODE_CBC); - $cipher->setKey(\OC::$server->getConfig()->getSystemValue('passwordsalt', null)); + $cipher->setKey(Server::get(IConfig::class)->getSystemValue('passwordsalt', null)); return $cipher; } diff --git a/apps/files_external/lib/NotFoundException.php b/apps/files_external/lib/NotFoundException.php index 8f7063cc989..411a2212513 100644 --- a/apps/files_external/lib/NotFoundException.php +++ b/apps/files_external/lib/NotFoundException.php @@ -1,24 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External; diff --git a/apps/files_external/lib/ResponseDefinitions.php b/apps/files_external/lib/ResponseDefinitions.php index 67c325196f6..26a0965f1fc 100644 --- a/apps/files_external/lib/ResponseDefinitions.php +++ b/apps/files_external/lib/ResponseDefinitions.php @@ -3,33 +3,16 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2023 Kate Döen <kate.doeen@nextcloud.com> - * - * @author Kate Döen <kate.doeen@nextcloud.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External; /** * @psalm-type Files_ExternalStorageConfig = array{ - * applicableGroups?: string[], - * applicableUsers?: string[], + * applicableGroups?: list<string>, + * applicableUsers?: list<string>, * authMechanism: string, * backend: string, * backendOptions: array<string, mixed>, diff --git a/apps/files_external/lib/Service/BackendService.php b/apps/files_external/lib/Service/BackendService.php index 056b288a88b..3a688ee66e6 100644 --- a/apps/files_external/lib/Service/BackendService.php +++ b/apps/files_external/lib/Service/BackendService.php @@ -1,40 +1,23 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; use OCA\Files_External\Config\IConfigHandler; +use OCA\Files_External\ConfigLexicon; use OCA\Files_External\Lib\Auth\AuthMechanism; - use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\Config\IAuthMechanismProvider; use OCA\Files_External\Lib\Config\IBackendProvider; +use OCA\Files_External\Lib\MissingDependency; use OCP\EventDispatcher\GenericEvent; use OCP\EventDispatcher\IEventDispatcher; -use OCP\IConfig; +use OCP\IAppConfig; +use OCP\Server; /** * Service class to manage backend definitions @@ -52,9 +35,6 @@ class BackendService { /** Priority constants for PriorityTrait */ public const PRIORITY_DEFAULT = 100; - /** @var IConfig */ - protected $config; - /** @var bool */ private $userMountingAllowed = true; @@ -78,21 +58,12 @@ class BackendService { private $configHandlers = []; - /** - * @param IConfig $config - */ public function __construct( - IConfig $config + protected IAppConfig $appConfig, ) { - $this->config = $config; - // Load config values - if ($this->config->getAppValue('files_external', 'allow_user_mounting', 'yes') !== 'yes') { - $this->userMountingAllowed = false; - } - $this->userMountingBackends = explode(',', - $this->config->getAppValue('files_external', 'user_mounting_backends', '') - ); + $this->userMountingAllowed = $appConfig->getValueBool('files_external', ConfigLexicon::ALLOW_USER_MOUNTING); + $this->userMountingBackends = explode(',', $appConfig->getValueString('files_external', ConfigLexicon::USER_MOUNTING_BACKENDS)); // if no backend is in the list an empty string is in the array and user mounting is disabled if ($this->userMountingBackends === ['']) { @@ -113,7 +84,7 @@ class BackendService { private function callForRegistrations() { static $eventSent = false; if (!$eventSent) { - \OC::$server->get(IEventDispatcher::class)->dispatch( + Server::get(IEventDispatcher::class)->dispatch( 'OCA\\Files_External::loadAdditionalBackends', new GenericEvent() ); @@ -218,7 +189,8 @@ class BackendService { */ public function getAvailableBackends() { return array_filter($this->getBackends(), function ($backend) { - return !$backend->checkDependencies(); + $missing = array_filter($backend->checkDependencies(), fn (MissingDependency $dependency) => !$dependency->isOptional()); + return count($missing) === 0; }); } @@ -287,8 +259,8 @@ class BackendService { * @return bool */ protected function isAllowedUserBackend(Backend $backend) { - if ($this->userMountingAllowed && - array_intersect($backend->getIdentifierAliases(), $this->userMountingBackends) + if ($this->userMountingAllowed + && array_intersect($backend->getIdentifierAliases(), $this->userMountingBackends) ) { return true; } diff --git a/apps/files_external/lib/Service/DBConfigService.php b/apps/files_external/lib/Service/DBConfigService.php index 0488ddad548..41ec4512d70 100644 --- a/apps/files_external/lib/Service/DBConfigService.php +++ b/apps/files_external/lib/Service/DBConfigService.php @@ -1,29 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; @@ -45,25 +25,10 @@ class DBConfigService { public const APPLICABLE_TYPE_GROUP = 2; public const APPLICABLE_TYPE_USER = 3; - /** - * @var IDBConnection - */ - private $connection; - - /** - * @var ICrypto - */ - private $crypto; - - /** - * DBConfigService constructor. - * - * @param IDBConnection $connection - * @param ICrypto $crypto - */ - public function __construct(IDBConnection $connection, ICrypto $crypto) { - $this->connection = $connection; - $this->crypto = $crypto; + public function __construct( + private IDBConnection $connection, + private ICrypto $crypto, + ) { } public function getMountById(int $mountId): ?array { @@ -133,7 +98,7 @@ class DBConfigService { ) ) ->groupBy(['a.mount_id']); - $stmt = $query->execute(); + $stmt = $query->executeQuery(); $result = $stmt->fetchAll(); $stmt->closeCursor(); @@ -264,7 +229,7 @@ class DBConfigService { 'priority' => $builder->createNamedParameter($priority, IQueryBuilder::PARAM_INT), 'type' => $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT) ]); - $query->execute(); + $query->executeStatement(); return $query->getLastInsertId(); } @@ -277,22 +242,22 @@ class DBConfigService { $builder = $this->connection->getQueryBuilder(); $query = $builder->delete('external_mounts') ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); $builder = $this->connection->getQueryBuilder(); $query = $builder->delete('external_applicable') ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); $builder = $this->connection->getQueryBuilder(); $query = $builder->delete('external_config') ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); $builder = $this->connection->getQueryBuilder(); $query = $builder->delete('external_options') ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); } /** @@ -306,7 +271,7 @@ class DBConfigService { ->set('mount_point', $builder->createNamedParameter($newMountPoint)) ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); } /** @@ -320,7 +285,7 @@ class DBConfigService { ->set('auth_backend', $builder->createNamedParameter($newAuthBackend)) ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))); - $query->execute(); + $query->executeStatement(); } /** @@ -346,7 +311,7 @@ class DBConfigService { ->set('value', $builder->createNamedParameter($value, IQueryBuilder::PARAM_STR)) ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))) ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, IQueryBuilder::PARAM_STR))); - $query->execute(); + $query->executeStatement(); } } @@ -369,7 +334,7 @@ class DBConfigService { ->set('value', $builder->createNamedParameter(json_encode($value), IQueryBuilder::PARAM_STR)) ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT))) ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, IQueryBuilder::PARAM_STR))); - $query->execute(); + $query->executeStatement(); } } @@ -398,11 +363,11 @@ class DBConfigService { $query = $query->andWhere($builder->expr()->eq('value', $builder->createNamedParameter($value, IQueryBuilder::PARAM_STR))); } - $query->execute(); + $query->executeStatement(); } private function getMountsFromQuery(IQueryBuilder $query) { - $result = $query->execute(); + $result = $query->executeQuery(); $mounts = $result->fetchAll(); $uniqueMounts = []; foreach ($mounts as $mount) { @@ -453,7 +418,7 @@ class DBConfigService { ->from($table) ->where($builder->expr()->in('mount_id', $placeHolders)); - $result = $query->execute(); + $result = $query->executeQuery(); $rows = $result->fetchAll(); $result->closeCursor(); diff --git a/apps/files_external/lib/Service/GlobalStoragesService.php b/apps/files_external/lib/Service/GlobalStoragesService.php index e3bbed91248..5b1a9f41e48 100644 --- a/apps/files_external/lib/Service/GlobalStoragesService.php +++ b/apps/files_external/lib/Service/GlobalStoragesService.php @@ -1,36 +1,15 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Stefan Weil <sw@weilnetz.de> - * @author szaimen <szaimen@e.mail.de> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; use OC\Files\Filesystem; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; /** * Service class to manage global external storage @@ -52,7 +31,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( $signal, $storage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, ['all'] ); return; @@ -61,13 +40,13 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( $signal, $storage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $applicableUsers ); $this->triggerApplicableHooks( $signal, $storage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, $applicableGroups ); } @@ -101,7 +80,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_delete_mount, $oldStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, ['all'] ); } @@ -110,7 +89,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_delete_mount, $oldStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $userDeletions ); @@ -118,7 +97,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_delete_mount, $oldStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, $groupDeletions ); @@ -126,7 +105,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_create_mount, $newStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $userAdditions ); @@ -134,7 +113,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_create_mount, $newStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, $groupAdditions ); @@ -146,7 +125,7 @@ class GlobalStoragesService extends StoragesService { $this->triggerApplicableHooks( Filesystem::signal_create_mount, $newStorage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, ['all'] ); } diff --git a/apps/files_external/lib/Service/ImportLegacyStoragesService.php b/apps/files_external/lib/Service/ImportLegacyStoragesService.php index c17b6fe8fa0..7d9840e9f5e 100644 --- a/apps/files_external/lib/Service/ImportLegacyStoragesService.php +++ b/apps/files_external/lib/Service/ImportLegacyStoragesService.php @@ -1,24 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; diff --git a/apps/files_external/lib/Service/LegacyStoragesService.php b/apps/files_external/lib/Service/LegacyStoragesService.php index 5b008995b43..9f199a89b3f 100644 --- a/apps/files_external/lib/Service/LegacyStoragesService.php +++ b/apps/files_external/lib/Service/LegacyStoragesService.php @@ -1,32 +1,15 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Stefan Weil <sw@weilnetz.de> - * @author szaimen <szaimen@e.mail.de> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; +use OCP\Server; use Psr\Log\LoggerInterface; /** @@ -57,7 +40,7 @@ abstract class LegacyStoragesService { &$storageConfig, $mountType, $applicable, - $storageOptions + $storageOptions, ) { $backend = $this->backendService->getBackend($storageOptions['backend']); if (!$backend) { @@ -82,13 +65,13 @@ abstract class LegacyStoragesService { $storageOptions['priority'] = $backend->getPriority(); } $storageConfig->setPriority($storageOptions['priority']); - if ($mountType === \OCA\Files_External\MountConfig::MOUNT_TYPE_USER) { + if ($mountType === MountConfig::MOUNT_TYPE_USER) { $applicableUsers = $storageConfig->getApplicableUsers(); if ($applicable !== 'all') { $applicableUsers[] = $applicable; $storageConfig->setApplicableUsers($applicableUsers); } - } elseif ($mountType === \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP) { + } elseif ($mountType === MountConfig::MOUNT_TYPE_GROUP) { $applicableGroups = $storageConfig->getApplicableGroups(); $applicableGroups[] = $applicable; $storageConfig->setApplicableGroups($applicableGroups); @@ -143,13 +126,13 @@ abstract class LegacyStoragesService { $parts = explode('/', ltrim($rootMountPath, '/'), 3); if (count($parts) < 3) { // something went wrong, skip - \OC::$server->get(LoggerInterface::class)->error('Could not parse mount point "' . $rootMountPath . '"', ['app' => 'files_external']); + Server::get(LoggerInterface::class)->error('Could not parse mount point "' . $rootMountPath . '"', ['app' => 'files_external']); continue; } $relativeMountPath = rtrim($parts[2], '/'); // note: we cannot do this after the loop because the decrypted config // options might be needed for the config hash - $storageOptions['options'] = \OCA\Files_External\MountConfig::decryptPasswords($storageOptions['options']); + $storageOptions['options'] = MountConfig::decryptPasswords($storageOptions['options']); if (!isset($storageOptions['backend'])) { $storageOptions['backend'] = $storageOptions['class']; // legacy compat } @@ -167,7 +150,7 @@ abstract class LegacyStoragesService { // but at this point we don't know the max-id, so use // first group it by config hash $storageOptions['mountpoint'] = $rootMountPath; - $configId = \OCA\Files_External\MountConfig::makeConfigHash($storageOptions); + $configId = MountConfig::makeConfigHash($storageOptions); if (isset($storagesWithConfigHash[$configId])) { $currentStorage = $storagesWithConfigHash[$configId]; } @@ -191,7 +174,7 @@ abstract class LegacyStoragesService { } } catch (\UnexpectedValueException $e) { // don't die if a storage backend doesn't exist - \OC::$server->get(LoggerInterface::class)->error('Could not load storage.', [ + Server::get(LoggerInterface::class)->error('Could not load storage.', [ 'app' => 'files_external', 'exception' => $e, ]); diff --git a/apps/files_external/lib/Service/StoragesService.php b/apps/files_external/lib/Service/StoragesService.php index 78d36c59ba7..a12a8fc245a 100644 --- a/apps/files_external/lib/Service/StoragesService.php +++ b/apps/files_external/lib/Service/StoragesService.php @@ -1,37 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Jesús Macias <jmacias@solidgear.es> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Stefan Weil <sw@weilnetz.de> - * @author szaimen <szaimen@e.mail.de> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; +use OC\Files\Cache\Storage; use OC\Files\Filesystem; use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Auth\InvalidAuth; @@ -44,6 +20,8 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Config\IUserMountCache; use OCP\Files\Events\InvalidateMountCacheEvent; use OCP\Files\StorageNotAvailableException; +use OCP\Server; +use OCP\Util; use Psr\Log\LoggerInterface; /** @@ -51,37 +29,18 @@ use Psr\Log\LoggerInterface; */ abstract class StoragesService { - /** @var BackendService */ - protected $backendService; - - /** - * @var DBConfigService - */ - protected $dbConfig; - - /** - * @var IUserMountCache - */ - protected $userMountCache; - - protected IEventDispatcher $eventDispatcher; - /** * @param BackendService $backendService - * @param DBConfigService $dbConfigService + * @param DBConfigService $dbConfig * @param IUserMountCache $userMountCache * @param IEventDispatcher $eventDispatcher */ public function __construct( - BackendService $backendService, - DBConfigService $dbConfigService, - IUserMountCache $userMountCache, - IEventDispatcher $eventDispatcher + protected BackendService $backendService, + protected DBConfigService $dbConfig, + protected IUserMountCache $userMountCache, + protected IEventDispatcher $eventDispatcher, ) { - $this->backendService = $backendService; - $this->dbConfig = $dbConfigService; - $this->userMountCache = $userMountCache; - $this->eventDispatcher = $eventDispatcher; } protected function readDBConfig() { @@ -119,13 +78,13 @@ abstract class StoragesService { return $config; } catch (\UnexpectedValueException $e) { // don't die if a storage backend doesn't exist - \OC::$server->get(LoggerInterface::class)->error('Could not load storage.', [ + Server::get(LoggerInterface::class)->error('Could not load storage.', [ 'app' => 'files_external', 'exception' => $e, ]); return null; } catch (\InvalidArgumentException $e) { - \OC::$server->get(LoggerInterface::class)->error('Could not load storage.', [ + Server::get(LoggerInterface::class)->error('Could not load storage.', [ 'app' => 'files_external', 'exception' => $e, ]); @@ -160,7 +119,7 @@ abstract class StoragesService { * @return StorageConfig * @throws NotFoundException if the storage with the given id was not found */ - public function getStorage($id) { + public function getStorage(int $id) { $mount = $this->dbConfig->getMountById($id); if (!is_array($mount)) { @@ -308,7 +267,7 @@ abstract class StoragesService { $mountOptions = null, $applicableUsers = null, $applicableGroups = null, - $priority = null + $priority = null, ) { $backend = $this->backendService->getBackend($backendIdentifier); if (!$backend) { @@ -350,7 +309,7 @@ abstract class StoragesService { protected function triggerApplicableHooks($signal, $mountPoint, $mountType, $applicableArray): void { $this->eventDispatcher->dispatchTyped(new InvalidateMountCacheEvent(null)); foreach ($applicableArray as $applicable) { - \OCP\Util::emitHook( + Util::emitHook( Filesystem::CLASSNAME, $signal, [ @@ -476,7 +435,7 @@ abstract class StoragesService { * * @throws NotFoundException if no storage was found with the given id */ - public function removeStorage($id) { + public function removeStorage(int $id) { $existingMount = $this->dbConfig->getMountById($id); if (!is_array($existingMount)) { @@ -489,7 +448,7 @@ abstract class StoragesService { $this->triggerHooks($deletedStorage, Filesystem::signal_delete_mount); // delete oc_storages entries and oc_filecache - \OC\Files\Cache\Storage::cleanByMountId($id); + Storage::cleanByMountId($id); } /** diff --git a/apps/files_external/lib/Service/UserGlobalStoragesService.php b/apps/files_external/lib/Service/UserGlobalStoragesService.php index 3a269e3622d..aaa59c85d62 100644 --- a/apps/files_external/lib/Service/UserGlobalStoragesService.php +++ b/apps/files_external/lib/Service/UserGlobalStoragesService.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; @@ -37,9 +21,6 @@ use OCP\IUserSession; class UserGlobalStoragesService extends GlobalStoragesService { use UserTrait; - /** @var IGroupManager */ - protected $groupManager; - /** * @param BackendService $backendService * @param DBConfigService $dbConfig @@ -52,13 +33,12 @@ class UserGlobalStoragesService extends GlobalStoragesService { BackendService $backendService, DBConfigService $dbConfig, IUserSession $userSession, - IGroupManager $groupManager, + protected IGroupManager $groupManager, IUserMountCache $userMountCache, - IEventDispatcher $eventDispatcher + IEventDispatcher $eventDispatcher, ) { parent::__construct($backendService, $dbConfig, $userMountCache, $eventDispatcher); $this->userSession = $userSession; - $this->groupManager = $groupManager; } /** diff --git a/apps/files_external/lib/Service/UserStoragesService.php b/apps/files_external/lib/Service/UserStoragesService.php index 70004e7cdcc..9d4192734b6 100644 --- a/apps/files_external/lib/Service/UserStoragesService.php +++ b/apps/files_external/lib/Service/UserStoragesService.php @@ -1,35 +1,15 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Stefan Weil <sw@weilnetz.de> - * @author szaimen <szaimen@e.mail.de> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; use OC\Files\Filesystem; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Config\IUserMountCache; @@ -56,7 +36,7 @@ class UserStoragesService extends StoragesService { DBConfigService $dbConfig, IUserSession $userSession, IUserMountCache $userMountCache, - IEventDispatcher $eventDispatcher + IEventDispatcher $eventDispatcher, ) { $this->userSession = $userSession; parent::__construct($backendService, $dbConfig, $userMountCache, $eventDispatcher); @@ -80,7 +60,7 @@ class UserStoragesService extends StoragesService { $this->triggerApplicableHooks( $signal, $storage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, [$user] ); } diff --git a/apps/files_external/lib/Service/UserTrait.php b/apps/files_external/lib/Service/UserTrait.php index 260f20cd03b..679066283a5 100644 --- a/apps/files_external/lib/Service/UserTrait.php +++ b/apps/files_external/lib/Service/UserTrait.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Daniel Kesselberg <mail@danielkesselberg.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Service; diff --git a/apps/files_external/lib/Settings/Admin.php b/apps/files_external/lib/Settings/Admin.php index 116738b3f42..9af0f3c61c1 100644 --- a/apps/files_external/lib/Settings/Admin.php +++ b/apps/files_external/lib/Settings/Admin.php @@ -1,29 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Settings; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; +use OCA\Files_External\MountConfig; use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http\TemplateResponse; @@ -32,28 +16,12 @@ use OCP\Settings\ISettings; class Admin implements ISettings { - /** @var IManager */ - private $encryptionManager; - - /** @var GlobalStoragesService */ - private $globalStoragesService; - - /** @var BackendService */ - private $backendService; - - /** @var GlobalAuth */ - private $globalAuth; - public function __construct( - IManager $encryptionManager, - GlobalStoragesService $globalStoragesService, - BackendService $backendService, - GlobalAuth $globalAuth + private IManager $encryptionManager, + private GlobalStoragesService $globalStoragesService, + private BackendService $backendService, + private GlobalAuth $globalAuth, ) { - $this->encryptionManager = $encryptionManager; - $this->globalStoragesService = $globalStoragesService; - $this->backendService = $backendService; - $this->globalAuth = $globalAuth; } /** @@ -66,7 +34,7 @@ class Admin implements ISettings { 'storages' => $this->globalStoragesService->getStorages(), 'backends' => $this->backendService->getAvailableBackends(), 'authMechanisms' => $this->backendService->getAuthMechanisms(), - 'dependencies' => \OCA\Files_External\MountConfig::dependencyMessage($this->backendService->getBackends()), + 'dependencies' => MountConfig::dependencyMessage($this->backendService->getBackends()), 'allowUserMounting' => $this->backendService->isUserMountingAllowed(), 'globalCredentials' => $this->globalAuth->getAuth(''), 'globalCredentialsUid' => '', @@ -84,8 +52,8 @@ class Admin implements ISettings { /** * @return int whether the form should be rather on the top or bottom of - * the admin section. The forms are arranged in ascending order of the - * priority values. It is required to return a value between 0 and 100. + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. * * E.g.: 70 */ diff --git a/apps/files_external/lib/Settings/Personal.php b/apps/files_external/lib/Settings/Personal.php index c27cb0fce26..8478badb842 100644 --- a/apps/files_external/lib/Settings/Personal.php +++ b/apps/files_external/lib/Settings/Personal.php @@ -1,29 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Settings; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; +use OCA\Files_External\MountConfig; use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\UserGlobalStoragesService; use OCP\AppFramework\Http\TemplateResponse; @@ -33,33 +17,13 @@ use OCP\Settings\ISettings; class Personal implements ISettings { - /** @var IManager */ - private $encryptionManager; - - /** @var UserGlobalStoragesService */ - private $userGlobalStoragesService; - - /** @var BackendService */ - private $backendService; - - /** @var GlobalAuth */ - private $globalAuth; - - /** @var IUserSession */ - private $userSession; - public function __construct( - IManager $encryptionManager, - UserGlobalStoragesService $userGlobalStoragesService, - BackendService $backendService, - GlobalAuth $globalAuth, - IUserSession $userSession + private IManager $encryptionManager, + private UserGlobalStoragesService $userGlobalStoragesService, + private BackendService $backendService, + private GlobalAuth $globalAuth, + private IUserSession $userSession, ) { - $this->encryptionManager = $encryptionManager; - $this->userGlobalStoragesService = $userGlobalStoragesService; - $this->backendService = $backendService; - $this->globalAuth = $globalAuth; - $this->userSession = $userSession; } /** @@ -74,7 +38,7 @@ class Personal implements ISettings { 'storages' => $this->userGlobalStoragesService->getStorages(), 'backends' => $this->backendService->getAvailableBackends(), 'authMechanisms' => $this->backendService->getAuthMechanisms(), - 'dependencies' => \OCA\Files_External\MountConfig::dependencyMessage($this->backendService->getBackends()), + 'dependencies' => MountConfig::dependencyMessage($this->backendService->getBackends()), 'allowUserMounting' => $this->backendService->isUserMountingAllowed(), 'globalCredentials' => $this->globalAuth->getAuth($uid), 'globalCredentialsUid' => $uid, @@ -92,8 +56,8 @@ class Personal implements ISettings { /** * @return int whether the form should be rather on the top or bottom of - * the admin section. The forms are arranged in ascending order of the - * priority values. It is required to return a value between 0 and 100. + * the admin section. The forms are arranged in ascending order of the + * priority values. It is required to return a value between 0 and 100. * * E.g.: 70 */ diff --git a/apps/files_external/lib/Settings/PersonalSection.php b/apps/files_external/lib/Settings/PersonalSection.php index b1ca6bb16dc..c6eb1c6b889 100644 --- a/apps/files_external/lib/Settings/PersonalSection.php +++ b/apps/files_external/lib/Settings/PersonalSection.php @@ -1,25 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> - * - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Settings; @@ -30,25 +13,13 @@ use OCP\IURLGenerator; use OCP\IUserSession; class PersonalSection extends Section { - /** @var IUserSession */ - private $userSession; - - /** @var UserGlobalStoragesService */ - private $userGlobalStoragesService; - - /** @var BackendService */ - private $backendService; - public function __construct( IURLGenerator $url, IL10N $l, - IUserSession $userSession, - UserGlobalStoragesService $userGlobalStoragesService, - BackendService $backendService + private IUserSession $userSession, + private UserGlobalStoragesService $userGlobalStoragesService, + private BackendService $backendService, ) { parent::__construct($url, $l); - $this->userSession = $userSession; - $this->userGlobalStoragesService = $userGlobalStoragesService; - $this->backendService = $backendService; } } diff --git a/apps/files_external/lib/Settings/Section.php b/apps/files_external/lib/Settings/Section.php index 9123cbe26c9..cf3b73472d7 100644 --- a/apps/files_external/lib/Settings/Section.php +++ b/apps/files_external/lib/Settings/Section.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @author szaimen <szaimen@e.mail.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Settings; @@ -29,18 +11,14 @@ use OCP\IURLGenerator; use OCP\Settings\IIconSection; class Section implements IIconSection { - /** @var IL10N */ - private $l; - /** @var IURLGenerator */ - private $url; - /** * @param IURLGenerator $url * @param IL10N $l */ - public function __construct(IURLGenerator $url, IL10N $l) { - $this->url = $url; - $this->l = $l; + public function __construct( + private IURLGenerator $url, + private IL10N $l, + ) { } /** @@ -65,8 +43,8 @@ class Section implements IIconSection { /** * @return int whether the form should be rather on the top or bottom of - * the settings navigation. The sections are arranged in ascending order of - * the priority values. It is required to return a value between 0 and 99. + * the settings navigation. The sections are arranged in ascending order of + * the priority values. It is required to return a value between 0 and 99. * * E.g.: 70 */ diff --git a/apps/files_external/openapi.json b/apps/files_external/openapi.json index 73aa38b7c6f..e3b74e2a935 100644 --- a/apps/files_external/openapi.json +++ b/apps/files_external/openapi.json @@ -236,4 +236,4 @@ } }, "tags": [] -}
\ No newline at end of file +} diff --git a/apps/files_external/openapi.json.license b/apps/files_external/openapi.json.license new file mode 100644 index 00000000000..83559daa9dc --- /dev/null +++ b/apps/files_external/openapi.json.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +SPDX-License-Identifier: AGPL-3.0-or-later
\ No newline at end of file diff --git a/apps/files_external/src/actions/enterCredentialsAction.spec.ts b/apps/files_external/src/actions/enterCredentialsAction.spec.ts index d1aefd08efe..5d1ff05e229 100644 --- a/apps/files_external/src/actions/enterCredentialsAction.spec.ts +++ b/apps/files_external/src/actions/enterCredentialsAction.spec.ts @@ -1,28 +1,12 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { action } from './enterCredentialsAction' -import { expect } from '@jest/globals' -import { File, Folder, Permission, View, DefaultType, FileAction } from '@nextcloud/files' import type { StorageConfig } from '../services/externalStorage' + +import { File, Folder, Permission, View, DefaultType, FileAction } from '@nextcloud/files' +import { describe, expect, test } from 'vitest' +import { action } from './enterCredentialsAction' import { STORAGE_STATUS } from '../utils/credentialsUtils' const view = { @@ -53,7 +37,7 @@ describe('Enter credentials action conditions tests', () => { expect(action).toBeInstanceOf(FileAction) expect(action.id).toBe('credentials-external-storage') expect(action.displayName([storage], externalStorageView)).toBe('Enter missing credentials') - expect(action.iconSvgInline([storage], externalStorageView)).toBe('<svg>SvgMock</svg>') + expect(action.iconSvgInline([storage], externalStorageView)).toMatch(/<svg.+<\/svg>/) expect(action.default).toBe(DefaultType.DEFAULT) expect(action.order).toBe(-1000) expect(action.inline!(storage, externalStorageView)).toBe(true) diff --git a/apps/files_external/src/actions/enterCredentialsAction.ts b/apps/files_external/src/actions/enterCredentialsAction.ts index 162a359f488..580f15ad876 100644 --- a/apps/files_external/src/actions/enterCredentialsAction.ts +++ b/apps/files_external/src/actions/enterCredentialsAction.ts @@ -1,56 +1,68 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ // eslint-disable-next-line n/no-extraneous-import -import type { AxiosResponse } from 'axios' +import type { AxiosResponse } from '@nextcloud/axios' import type { Node } from '@nextcloud/files' import type { StorageConfig } from '../services/externalStorage' -import { generateOcsUrl, generateUrl } from '@nextcloud/router' -import { showError, showSuccess } from '@nextcloud/dialogs' +import { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation' +import { generateUrl } from '@nextcloud/router' +import { showError, showSuccess, spawnDialog } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' import axios from '@nextcloud/axios' import LoginSvg from '@mdi/svg/svg/login.svg?raw' -import Vue from 'vue' +import Vue, { defineAsyncComponent } from 'vue' import { FileAction, DefaultType } from '@nextcloud/files' import { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils' import { isNodeExternalStorage } from '../utils/externalStorageUtils' -type OCSAuthResponse = { - ocs: { - meta: { - status: string - statuscode: number - message: string - }, +// Add password confirmation interceptors as +// the backend requires the user to confirm their password +addPasswordConfirmationInterceptors(axios) + +type CredentialResponse = { + login?: string, + password?: string, +} + +/** + * Set credentials for external storage + * + * @param node The node for which to set the credentials + * @param login The username + * @param password The password + */ +async function setCredentials(node: Node, login: string, password: string): Promise<null|true> { + const configResponse = await axios.request({ + method: 'PUT', + url: generateUrl('apps/files_external/userglobalstorages/{id}', { id: node.attributes.id }), + confirmPassword: PwdConfirmationMode.Strict, data: { - user?: string, - password?: string, - } + backendOptions: { user: login, password }, + }, + }) as AxiosResponse<StorageConfig> + + const config = configResponse.data + if (config.status !== STORAGE_STATUS.SUCCESS) { + showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', { + statusMessage: config?.statusMessage || '', + })) + return null } + + // Success update config attribute + showSuccess(t('files_external', 'New configuration successfully saved')) + Vue.set(node.attributes, 'config', config) + return true } +export const ACTION_CREDENTIALS_EXTERNAL_STORAGE = 'credentials-external-storage' + export const action = new FileAction({ - id: 'credentials-external-storage', + id: ACTION_CREDENTIALS_EXTERNAL_STORAGE, displayName: () => t('files', 'Enter missing credentials'), iconSvgInline: () => LoginSvg, @@ -74,30 +86,23 @@ export const action = new FileAction({ }, async exec(node: Node) { - // always resolve auth request, we'll process the data afterwards - // Using fetch as axios have integrated auth handling and X-Requested-With header - const response = await fetch(generateOcsUrl('/apps/files_external/api/v1/auth'), { - headers: new Headers({ Accept: 'application/json' }), - credentials: 'include', - }) - - const data = (await response?.json() || {}) as OCSAuthResponse - if (data.ocs.data.user && data.ocs.data.password) { - const configResponse = await axios.put(generateUrl('apps/files_external/userglobalstorages/{id}', node.attributes), { - backendOptions: data.ocs.data, - }) as AxiosResponse<StorageConfig> - - const config = configResponse.data - if (config.status !== STORAGE_STATUS.SUCCESS) { - showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', { - statusMessage: config?.statusMessage || '', + const { login, password } = await new Promise<CredentialResponse>(resolve => spawnDialog( + defineAsyncComponent(() => import('../views/CredentialsDialog.vue')), + {}, + (args) => { + resolve(args as CredentialResponse) + }, + )) + + if (login && password) { + try { + await setCredentials(node, login, password) + showSuccess(t('files_external', 'Credentials successfully set')) + } catch (error) { + showError(t('files_external', 'Error while setting credentials: {error}', { + error: (error as Error).message, })) - return null } - - // Success update config attribute - showSuccess(t('files_external', 'New configuration successfully saved')) - Vue.set(node.attributes, 'config', config) } return null diff --git a/apps/files_external/src/actions/inlineStorageCheckAction.ts b/apps/files_external/src/actions/inlineStorageCheckAction.ts index 46e38eab47e..27c9b0bcabb 100644 --- a/apps/files_external/src/actions/inlineStorageCheckAction.ts +++ b/apps/files_external/src/actions/inlineStorageCheckAction.ts @@ -1,28 +1,12 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ // eslint-disable-next-line n/no-extraneous-import -import type { AxiosError } from 'axios' +import type { AxiosError } from '@nextcloud/axios' import type { Node } from '@nextcloud/files' +import { FileAction } from '@nextcloud/files' import { showWarning } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' import AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw' @@ -32,7 +16,6 @@ import '../css/fileEntryStatus.scss' import { getStatus, type StorageConfig } from '../services/externalStorage' import { isMissingAuthConfig, STORAGE_STATUS } from '../utils/credentialsUtils' import { isNodeExternalStorage } from '../utils/externalStorageUtils' -import { FileAction } from '@nextcloud/files' export const action = new FileAction({ id: 'check-external-storage', @@ -47,47 +30,55 @@ export const action = new FileAction({ /** * Use this function to check the storage availability * We then update the node attributes directly. + * + * @param node The node to render inline */ async renderInline(node: Node) { - let config = null as any as StorageConfig - try { - const response = await getStatus(node.attributes.id, node.attributes.scope === 'system') - config = response.data - Vue.set(node.attributes, 'config', config) + const span = document.createElement('span') + span.className = 'files-list__row-status' + span.innerHTML = t('files_external', 'Checking storage …') + + let config = null as unknown as StorageConfig + getStatus(node.attributes.id, node.attributes.scope === 'system') + .then(response => { + + config = response.data + Vue.set(node.attributes, 'config', config) + + if (config.status !== STORAGE_STATUS.SUCCESS) { + throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.')) + } - if (config.status !== STORAGE_STATUS.SUCCESS) { - throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.')) - } + span.remove() + }) + .catch(error => { + // If axios failed or if something else prevented + // us from getting the config + if ((error as AxiosError).response && !config) { + showWarning(t('files_external', 'We were unable to check the external storage {basename}', { + basename: node.basename, + })) + } - return null - } catch (error) { - // If axios failed or if something else prevented - // us from getting the config - if ((error as AxiosError).response && !config) { - showWarning(t('files_external', 'We were unable to check the external storage {basename}', { - basename: node.basename, - })) - return null - } + // Reset inline status + span.innerHTML = '' - // Checking if we really have an error - const isWarning = isMissingAuthConfig(config) - const overlay = document.createElement('span') - overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`) + // Checking if we really have an error + const isWarning = !config ? false : isMissingAuthConfig(config) + const overlay = document.createElement('span') + overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`) - const span = document.createElement('span') - span.className = 'files-list__row-status' + // Only show an icon for errors, warning like missing credentials + // have a dedicated inline action button + if (!isWarning) { + span.innerHTML = AlertSvg + span.title = (error as Error).message + } - // Only show an icon for errors, warning like missing credentials - // have a dedicated inline action button - if (!isWarning) { - span.innerHTML = AlertSvg - span.title = (error as Error).message - } + span.prepend(overlay) + }) - span.prepend(overlay) - return span - } + return span }, order: 10, diff --git a/apps/files_external/src/actions/openInFilesAction.spec.ts b/apps/files_external/src/actions/openInFilesAction.spec.ts index ef04436024b..aa9573eca77 100644 --- a/apps/files_external/src/actions/openInFilesAction.spec.ts +++ b/apps/files_external/src/actions/openInFilesAction.spec.ts @@ -1,28 +1,12 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { action } from './openInFilesAction' -import { expect } from '@jest/globals' import { Folder, Permission, View, DefaultType, FileAction } from '@nextcloud/files' +import { describe, expect, test, vi } from 'vitest' + import type { StorageConfig } from '../services/externalStorage' +import { action } from './openInFilesAction' import { STORAGE_STATUS } from '../utils/credentialsUtils' const view = { @@ -90,7 +74,8 @@ describe('Open in files action enabled tests', () => { describe('Open in files action execute tests', () => { test('Open in files', async () => { - const goToRouteMock = jest.fn() + const goToRouteMock = vi.fn() + // @ts-expect-error We only mock what needed, we do not need Files.Router.goTo or Files.Navigation window.OCP = { Files: { Router: { goToRoute: goToRouteMock } } } const storage = new Folder({ @@ -114,7 +99,8 @@ describe('Open in files action execute tests', () => { }) test('Open in files broken storage', async () => { - const confirmMock = jest.fn() + const confirmMock = vi.fn() + // @ts-expect-error We only mock what is needed window.OC = { dialogs: { confirm: confirmMock } } const storage = new Folder({ diff --git a/apps/files_external/src/actions/openInFilesAction.ts b/apps/files_external/src/actions/openInFilesAction.ts index 36b434fee9c..e5f065e4871 100644 --- a/apps/files_external/src/actions/openInFilesAction.ts +++ b/apps/files_external/src/actions/openInFilesAction.ts @@ -1,23 +1,6 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import type { Node } from '@nextcloud/files' import type { StorageConfig } from '../services/externalStorage' @@ -27,6 +10,7 @@ import { translate as t } from '@nextcloud/l10n' import { FileAction, DefaultType } from '@nextcloud/files' import { STORAGE_STATUS } from '../utils/credentialsUtils' +import { getCurrentUser } from '@nextcloud/auth' export const action = new FileAction({ id: 'open-in-files-external-storage', @@ -49,7 +33,7 @@ export const action = new FileAction({ t('files_external', 'External mount error'), (redirect) => { if (redirect === true) { - const scope = node.attributes.scope === 'personal' ? 'user' : 'admin' + const scope = getCurrentUser()?.isAdmin ? 'admin' : 'user' window.location.href = generateUrl(`/settings/${scope}/externalstorages`) } }, diff --git a/apps/files_external/src/css/fileEntryStatus.scss b/apps/files_external/src/css/fileEntryStatus.scss index d7b5063bceb..295234032bb 100644 --- a/apps/files_external/src/css/fileEntryStatus.scss +++ b/apps/files_external/src/css/fileEntryStatus.scss @@ -1,9 +1,16 @@ +/*! + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ .files-list__row-status { display: flex; - width: 44px; + min-width: 44px; justify-content: center; align-items: center; height: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; svg { width: 24px; @@ -19,8 +26,7 @@ position: absolute; display: block; top: 0; - left: 0; - right: 0; + inset-inline: 0; bottom: 0; opacity: .1; z-index: -1; diff --git a/apps/files_external/src/init.ts b/apps/files_external/src/init.ts index ccce2448dfe..a8a265500dd 100644 --- a/apps/files_external/src/init.ts +++ b/apps/files_external/src/init.ts @@ -1,28 +1,11 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import { loadState } from '@nextcloud/initial-state' import { translate as t } from '@nextcloud/l10n' import { View, getNavigation, Column, registerFileAction } from '@nextcloud/files' -import FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw' +import FolderNetworkSvg from '@mdi/svg/svg/folder-network-outline.svg?raw' import { action as enterCredentialsAction } from './actions/enterCredentialsAction' import { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction' diff --git a/apps/files_external/src/services/externalStorage.ts b/apps/files_external/src/services/externalStorage.ts index e973a7ec236..fe4271ae94a 100644 --- a/apps/files_external/src/services/externalStorage.ts +++ b/apps/files_external/src/services/externalStorage.ts @@ -1,26 +1,9 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ // eslint-disable-next-line n/no-extraneous-import -import type { AxiosResponse } from 'axios' +import type { AxiosResponse } from '@nextcloud/axios' import type { ContentsWithRoot } from '@nextcloud/files' import type { OCSResponse } from '@nextcloud/typings/ocs' diff --git a/apps/files_external/src/settings.js b/apps/files_external/src/settings.js new file mode 100644 index 00000000000..033696c9d24 --- /dev/null +++ b/apps/files_external/src/settings.js @@ -0,0 +1,1579 @@ +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation' +import { generateUrl } from '@nextcloud/router' +import { showError } from '@nextcloud/dialogs' +import { t } from '@nextcloud/l10n' +import axios, { isAxiosError } from '@nextcloud/axios' + +import jQuery from 'jquery' + +addPasswordConfirmationInterceptors(axios) + +/** + * Returns the selection of applicable users in the given configuration row + * + * @param $row configuration row + * @return array array of user names + */ +function getSelection($row) { + let values = $row.find('.applicableUsers').select2('val') + if (!values || values.length === 0) { + values = [] + } + return values +} + +/** + * + * @param $row + */ +function getSelectedApplicable($row) { + const users = [] + const groups = [] + const multiselect = getSelection($row) + $.each(multiselect, function(index, value) { + // FIXME: don't rely on string parts to detect groups... + const pos = (value.indexOf) ? value.indexOf('(group)') : -1 + if (pos !== -1) { + groups.push(value.substr(0, pos)) + } else { + users.push(value) + } + }) + + // FIXME: this should be done in the multiselect change event instead + $row.find('.applicable') + .data('applicable-groups', groups) + .data('applicable-users', users) + + return { users, groups } +} + +/** + * + * @param $element + * @param highlight + */ +function highlightBorder($element, highlight) { + $element.toggleClass('warning-input', highlight) + return highlight +} + +/** + * + * @param $input + */ +function isInputValid($input) { + const optional = $input.hasClass('optional') + switch ($input.attr('type')) { + case 'text': + case 'password': + if ($input.val() === '' && !optional) { + return false + } + break + } + return true +} + +/** + * + * @param $input + */ +function highlightInput($input) { + switch ($input.attr('type')) { + case 'text': + case 'password': + return highlightBorder($input, !isInputValid($input)) + } +} + +/** + * Initialize select2 plugin on the given elements + * + * @param {Array<object>} array of jQuery elements + * @param $elements + * @param {number} userListLimit page size for result list + */ +function initApplicableUsersMultiselect($elements, userListLimit) { + const escapeHTML = function(text) { + return text.toString() + .split('&').join('&') + .split('<').join('<') + .split('>').join('>') + .split('"').join('"') + .split('\'').join(''') + } + if (!$elements.length) { + return + } + return $elements.select2({ + placeholder: t('files_external', 'Type to select account or group.'), + allowClear: true, + multiple: true, + toggleSelect: true, + dropdownCssClass: 'files-external-select2', + // minimumInputLength: 1, + ajax: { + url: OC.generateUrl('apps/files_external/applicable'), + dataType: 'json', + quietMillis: 100, + data(term, page) { // page is the one-based page number tracked by Select2 + return { + pattern: term, // search term + limit: userListLimit, // page size + offset: userListLimit * (page - 1), // page number starts with 0 + } + }, + results(data) { + if (data.status === 'success') { + + const results = [] + let userCount = 0 // users is an object + + // add groups + $.each(data.groups, function(gid, group) { + results.push({ name: gid + '(group)', displayname: group, type: 'group' }) + }) + // add users + $.each(data.users, function(id, user) { + userCount++ + results.push({ name: id, displayname: user, type: 'user' }) + }) + + const more = (userCount >= userListLimit) || (data.groups.length >= userListLimit) + return { results, more } + } else { + // FIXME add error handling + } + }, + }, + initSelection(element, callback) { + const users = {} + users.users = [] + const toSplit = element.val().split(',') + for (let i = 0; i < toSplit.length; i++) { + users.users.push(toSplit[i]) + } + + $.ajax(OC.generateUrl('displaynames'), { + type: 'POST', + contentType: 'application/json', + data: JSON.stringify(users), + dataType: 'json', + }).done(function(data) { + const results = [] + if (data.status === 'success') { + $.each(data.users, function(user, displayname) { + if (displayname !== false) { + results.push({ name: user, displayname, type: 'user' }) + } + }) + callback(results) + } else { + // FIXME add error handling + } + }) + }, + id(element) { + return element.name + }, + formatResult(element) { + const $result = $('<span><div class="avatardiv"></div><span>' + escapeHTML(element.displayname) + '</span></span>') + const $div = $result.find('.avatardiv') + .attr('data-type', element.type) + .attr('data-name', element.name) + .attr('data-displayname', element.displayname) + if (element.type === 'group') { + const url = OC.imagePath('core', 'actions/group') + $div.html('<img width="32" height="32" src="' + url + '">') + } + return $result.get(0).outerHTML + }, + formatSelection(element) { + if (element.type === 'group') { + return '<span title="' + escapeHTML(element.name) + '" class="group">' + escapeHTML(element.displayname + ' ' + t('files_external', '(Group)')) + '</span>' + } else { + return '<span title="' + escapeHTML(element.name) + '" class="user">' + escapeHTML(element.displayname) + '</span>' + } + }, + escapeMarkup(m) { return m }, // we escape the markup in formatResult and formatSelection + }).on('select2-loaded', function() { + $.each($('.avatardiv'), function(i, div) { + const $div = $(div) + if ($div.data('type') === 'user') { + $div.avatar($div.data('name'), 32) + } + }) + }).on('change', function(event) { + highlightBorder($(event.target).closest('.applicableUsersContainer').find('.select2-choices'), !event.val.length) + }) +} + +/** + * @param id + * @class OCA.Files_External.Settings.StorageConfig + * + * @classdesc External storage config + */ +const StorageConfig = function(id) { + this.id = id + this.backendOptions = {} +} +// Keep this in sync with \OCA\Files_External\MountConfig::STATUS_* +StorageConfig.Status = { + IN_PROGRESS: -1, + SUCCESS: 0, + ERROR: 1, + INDETERMINATE: 2, +} +StorageConfig.Visibility = { + NONE: 0, + PERSONAL: 1, + ADMIN: 2, + DEFAULT: 3, +} +/** + * @memberof OCA.Files_External.Settings + */ +StorageConfig.prototype = { + _url: null, + + /** + * Storage id + * + * @type int + */ + id: null, + + /** + * Mount point + * + * @type string + */ + mountPoint: '', + + /** + * Backend + * + * @type string + */ + backend: null, + + /** + * Authentication mechanism + * + * @type string + */ + authMechanism: null, + + /** + * Backend-specific configuration + * + * @type Object.<string,object> + */ + backendOptions: null, + + /** + * Mount-specific options + * + * @type Object.<string,object> + */ + mountOptions: null, + + /** + * Creates or saves the storage. + * + * @param {Function} [options.success] success callback, receives result as argument + * @param {Function} [options.error] error callback + * @param options + */ + save(options) { + let url = OC.generateUrl(this._url) + let method = 'POST' + if (_.isNumber(this.id)) { + method = 'PUT' + url = OC.generateUrl(this._url + '/{id}', { id: this.id }) + } + + this._save(method, url, options) + }, + + /** + * Private implementation of the save function (called after potential password confirmation) + * @param {string} method + * @param {string} url + * @param {{success: Function, error: Function}} options + */ + async _save(method, url, options) { + try { + const response = await axios.request({ + confirmPassword: PwdConfirmationMode.Strict, + method, + url, + data: this.getData(), + }) + const result = response.data + this.id = result.id + options.success(result) + } catch (error) { + options.error(error) + } + }, + + /** + * Returns the data from this object + * + * @return {Array} JSON array of the data + */ + getData() { + const data = { + mountPoint: this.mountPoint, + backend: this.backend, + authMechanism: this.authMechanism, + backendOptions: this.backendOptions, + testOnly: true, + } + if (this.id) { + data.id = this.id + } + if (this.mountOptions) { + data.mountOptions = this.mountOptions + } + return data + }, + + /** + * Recheck the storage + * + * @param {Function} [options.success] success callback, receives result as argument + * @param {Function} [options.error] error callback + * @param options + */ + recheck(options) { + if (!_.isNumber(this.id)) { + if (_.isFunction(options.error)) { + options.error() + } + return + } + $.ajax({ + type: 'GET', + url: OC.generateUrl(this._url + '/{id}', { id: this.id }), + data: { testOnly: true }, + success: options.success, + error: options.error, + }) + }, + + /** + * Deletes the storage + * + * @param {Function} [options.success] success callback + * @param {Function} [options.error] error callback + * @param options + */ + async destroy(options) { + if (!_.isNumber(this.id)) { + // the storage hasn't even been created => success + if (_.isFunction(options.success)) { + options.success() + } + return + } + + try { + await axios.request({ + method: 'DELETE', + url: OC.generateUrl(this._url + '/{id}', { id: this.id }), + confirmPassword: PwdConfirmationMode.Strict, + }) + options.success() + } catch (e) { + options.error(e) + } + }, + + /** + * Validate this model + * + * @return {boolean} false if errors exist, true otherwise + */ + validate() { + if (this.mountPoint === '') { + return false + } + if (!this.backend) { + return false + } + if (this.errors) { + return false + } + return true + }, +} + +/** + * @param id + * @class OCA.Files_External.Settings.GlobalStorageConfig + * @augments OCA.Files_External.Settings.StorageConfig + * + * @classdesc Global external storage config + */ +const GlobalStorageConfig = function(id) { + this.id = id + this.applicableUsers = [] + this.applicableGroups = [] +} +/** + * @memberOf OCA.Files_External.Settings + */ +GlobalStorageConfig.prototype = _.extend({}, StorageConfig.prototype, + /** @lends OCA.Files_External.Settings.GlobalStorageConfig.prototype */ { + _url: 'apps/files_external/globalstorages', + + /** + * Applicable users + * + * @type Array.<string> + */ + applicableUsers: null, + + /** + * Applicable groups + * + * @type Array.<string> + */ + applicableGroups: null, + + /** + * Storage priority + * + * @type int + */ + priority: null, + + /** + * Returns the data from this object + * + * @return {Array} JSON array of the data + */ + getData() { + const data = StorageConfig.prototype.getData.apply(this, arguments) + return _.extend(data, { + applicableUsers: this.applicableUsers, + applicableGroups: this.applicableGroups, + priority: this.priority, + }) + }, + }) + +/** + * @param id + * @class OCA.Files_External.Settings.UserStorageConfig + * @augments OCA.Files_External.Settings.StorageConfig + * + * @classdesc User external storage config + */ +const UserStorageConfig = function(id) { + this.id = id +} +UserStorageConfig.prototype = _.extend({}, StorageConfig.prototype, + /** @lends OCA.Files_External.Settings.UserStorageConfig.prototype */ { + _url: 'apps/files_external/userstorages', + }) + +/** + * @param id + * @class OCA.Files_External.Settings.UserGlobalStorageConfig + * @augments OCA.Files_External.Settings.StorageConfig + * + * @classdesc User external storage config + */ +const UserGlobalStorageConfig = function(id) { + this.id = id +} +UserGlobalStorageConfig.prototype = _.extend({}, StorageConfig.prototype, + /** @lends OCA.Files_External.Settings.UserStorageConfig.prototype */ { + + _url: 'apps/files_external/userglobalstorages', + }) + +/** + * @class OCA.Files_External.Settings.MountOptionsDropdown + * + * @classdesc Dropdown for mount options + * + * @param {object} $container container DOM object + */ +const MountOptionsDropdown = function() { +} +/** + * @memberof OCA.Files_External.Settings + */ +MountOptionsDropdown.prototype = { + /** + * Dropdown element + * + * @member Object + */ + $el: null, + + /** + * Show dropdown + * + * @param {object} $container container + * @param {object} mountOptions mount options + * @param {Array} visibleOptions enabled mount options + */ + show($container, mountOptions, visibleOptions) { + if (MountOptionsDropdown._last) { + MountOptionsDropdown._last.hide() + } + + const $el = $(OCA.Files_External.Templates.mountOptionsDropDown({ + mountOptionsEncodingLabel: t('files_external', 'Compatibility with Mac NFD encoding (slow)'), + mountOptionsEncryptLabel: t('files_external', 'Enable encryption'), + mountOptionsPreviewsLabel: t('files_external', 'Enable previews'), + mountOptionsSharingLabel: t('files_external', 'Enable sharing'), + mountOptionsFilesystemCheckLabel: t('files_external', 'Check for changes'), + mountOptionsFilesystemCheckOnce: t('files_external', 'Never'), + mountOptionsFilesystemCheckDA: t('files_external', 'Once every direct access'), + mountOptionsReadOnlyLabel: t('files_external', 'Read only'), + deleteLabel: t('files_external', 'Disconnect'), + })) + this.$el = $el + + const storage = $container[0].parentNode.className + + this.setOptions(mountOptions, visibleOptions, storage) + + this.$el.appendTo($container) + MountOptionsDropdown._last = this + + this.$el.trigger('show') + }, + + hide() { + if (this.$el) { + this.$el.trigger('hide') + this.$el.remove() + this.$el = null + MountOptionsDropdown._last = null + } + }, + + /** + * Returns the mount options from the dropdown controls + * + * @return {object} options mount options + */ + getOptions() { + const options = {} + + this.$el.find('input, select').each(function() { + const $this = $(this) + const key = $this.attr('name') + let value = null + if ($this.attr('type') === 'checkbox') { + value = $this.prop('checked') + } else { + value = $this.val() + } + if ($this.attr('data-type') === 'int') { + value = parseInt(value, 10) + } + options[key] = value + }) + return options + }, + + /** + * Sets the mount options to the dropdown controls + * + * @param {object} options mount options + * @param {Array} visibleOptions enabled mount options + * @param storage + */ + setOptions(options, visibleOptions, storage) { + if (storage === 'owncloud') { + const ind = visibleOptions.indexOf('encrypt') + if (ind > 0) { + visibleOptions.splice(ind, 1) + } + } + const $el = this.$el + _.each(options, function(value, key) { + const $optionEl = $el.find('input, select').filterAttr('name', key) + if ($optionEl.attr('type') === 'checkbox') { + if (_.isString(value)) { + value = (value === 'true') + } + $optionEl.prop('checked', !!value) + } else { + $optionEl.val(value) + } + }) + $el.find('.optionRow').each(function(i, row) { + const $row = $(row) + const optionId = $row.find('input, select').attr('name') + if (visibleOptions.indexOf(optionId) === -1 && !$row.hasClass('persistent')) { + $row.hide() + } else { + $row.show() + } + }) + }, +} + +/** + * @class OCA.Files_External.Settings.MountConfigListView + * + * @classdesc Mount configuration list view + * + * @param {object} $el DOM object containing the list + * @param {object} [options] + * @param {number} [options.userListLimit] page size in applicable users dropdown + */ +const MountConfigListView = function($el, options) { + this.initialize($el, options) +} + +MountConfigListView.ParameterFlags = { + OPTIONAL: 1, + USER_PROVIDED: 2, + HIDDEN: 4, +} + +MountConfigListView.ParameterTypes = { + TEXT: 0, + BOOLEAN: 1, + PASSWORD: 2, +} + +/** + * @memberOf OCA.Files_External.Settings + */ +MountConfigListView.prototype = _.extend({ + + /** + * jQuery element containing the config list + * + * @type Object + */ + $el: null, + + /** + * Storage config class + * + * @type Class + */ + _storageConfigClass: null, + + /** + * Flag whether the list is about user storage configs (true) + * or global storage configs (false) + * + * @type bool + */ + _isPersonal: false, + + /** + * Page size in applicable users dropdown + * + * @type int + */ + _userListLimit: 30, + + /** + * List of supported backends + * + * @type Object.<string,Object> + */ + _allBackends: null, + + /** + * List of all supported authentication mechanisms + * + * @type Object.<string,Object> + */ + _allAuthMechanisms: null, + + _encryptionEnabled: false, + + /** + * @param {object} $el DOM object containing the list + * @param {object} [options] + * @param {number} [options.userListLimit] page size in applicable users dropdown + */ + initialize($el, options) { + this.$el = $el + this._isPersonal = ($el.data('admin') !== true) + if (this._isPersonal) { + this._storageConfigClass = OCA.Files_External.Settings.UserStorageConfig + } else { + this._storageConfigClass = OCA.Files_External.Settings.GlobalStorageConfig + } + + if (options && !_.isUndefined(options.userListLimit)) { + this._userListLimit = options.userListLimit + } + + this._encryptionEnabled = options.encryptionEnabled + this._canCreateLocal = options.canCreateLocal + + // read the backend config that was carefully crammed + // into the data-configurations attribute of the select + this._allBackends = this.$el.find('.selectBackend').data('configurations') + this._allAuthMechanisms = this.$el.find('#addMountPoint .authentication').data('mechanisms') + + this._initEvents() + }, + + /** + * Custom JS event handlers + * Trigger callback for all existing configurations + * @param callback + */ + whenSelectBackend(callback) { + this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) { + const backend = $(tr).find('.backend').data('identifier') + callback($(tr), backend) + }) + this.on('selectBackend', callback) + }, + whenSelectAuthMechanism(callback) { + const self = this + this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) { + const authMechanism = $(tr).find('.selectAuthMechanism').val() + callback($(tr), authMechanism, self._allAuthMechanisms[authMechanism].scheme) + }) + this.on('selectAuthMechanism', callback) + }, + + /** + * Initialize DOM event handlers + */ + _initEvents() { + const self = this + + const onChangeHandler = _.bind(this._onChange, this) + // this.$el.on('input', 'td input', onChangeHandler); + this.$el.on('keyup', 'td input', onChangeHandler) + this.$el.on('paste', 'td input', onChangeHandler) + this.$el.on('change', 'td input:checkbox', onChangeHandler) + this.$el.on('change', '.applicable', onChangeHandler) + + this.$el.on('click', '.status>span', function() { + self.recheckStorageConfig($(this).closest('tr')) + }) + + this.$el.on('click', 'td.mountOptionsToggle .icon-delete', function() { + self.deleteStorageConfig($(this).closest('tr')) + }) + + this.$el.on('click', 'td.save>.icon-checkmark', function() { + self.saveStorageConfig($(this).closest('tr')) + }) + + this.$el.on('click', 'td.mountOptionsToggle>.icon-more', function() { + $(this).attr('aria-expanded', 'true') + self._showMountOptionsDropdown($(this).closest('tr')) + }) + + this.$el.on('change', '.selectBackend', _.bind(this._onSelectBackend, this)) + this.$el.on('change', '.selectAuthMechanism', _.bind(this._onSelectAuthMechanism, this)) + + this.$el.on('change', '.applicableToAllUsers', _.bind(this._onChangeApplicableToAllUsers, this)) + }, + + _onChange(event) { + const $target = $(event.target) + if ($target.closest('.dropdown').length) { + // ignore dropdown events + return + } + highlightInput($target) + const $tr = $target.closest('tr') + this.updateStatus($tr, null) + }, + + _onSelectBackend(event) { + const $target = $(event.target) + let $tr = $target.closest('tr') + + const storageConfig = new this._storageConfigClass() + storageConfig.mountPoint = $tr.find('.mountPoint input').val() + storageConfig.backend = $target.val() + $tr.find('.mountPoint input').val('') + + $tr.find('.selectBackend').prop('selectedIndex', 0) + + const onCompletion = jQuery.Deferred() + $tr = this.newStorage(storageConfig, onCompletion) + $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change') + onCompletion.resolve() + + $tr.find('td.configuration').children().not('[type=hidden]').first().focus() + this.saveStorageConfig($tr) + }, + + _onSelectAuthMechanism(event) { + const $target = $(event.target) + const $tr = $target.closest('tr') + const authMechanism = $target.val() + + const onCompletion = jQuery.Deferred() + this.configureAuthMechanism($tr, authMechanism, onCompletion) + onCompletion.resolve() + + this.saveStorageConfig($tr) + }, + + _onChangeApplicableToAllUsers(event) { + const $target = $(event.target) + const $tr = $target.closest('tr') + const checked = $target.is(':checked') + + $tr.find('.applicableUsersContainer').toggleClass('hidden', checked) + if (!checked) { + $tr.find('.applicableUsers').select2('val', '', true) + } + + this.saveStorageConfig($tr) + }, + + /** + * Configure the storage config with a new authentication mechanism + * + * @param {jQuery} $tr config row + * @param {string} authMechanism + * @param {jQuery.Deferred} onCompletion + */ + configureAuthMechanism($tr, authMechanism, onCompletion) { + const authMechanismConfiguration = this._allAuthMechanisms[authMechanism] + const $td = $tr.find('td.configuration') + $td.find('.auth-param').remove() + + $.each(authMechanismConfiguration.configuration, _.partial( + this.writeParameterInput, $td, _, _, ['auth-param'], + ).bind(this)) + + this.trigger('selectAuthMechanism', + $tr, authMechanism, authMechanismConfiguration.scheme, onCompletion, + ) + }, + + /** + * Create a config row for a new storage + * + * @param {StorageConfig} storageConfig storage config to pull values from + * @param {jQuery.Deferred} onCompletion + * @param {boolean} deferAppend + * @return {jQuery} created row + */ + newStorage(storageConfig, onCompletion, deferAppend) { + let mountPoint = storageConfig.mountPoint + let backend = this._allBackends[storageConfig.backend] + + if (!backend) { + backend = { + name: 'Unknown: ' + storageConfig.backend, + invalid: true, + } + } + + // FIXME: Replace with a proper Handlebar template + const $template = this.$el.find('tr#addMountPoint') + const $tr = $template.clone() + if (!deferAppend) { + $tr.insertBefore($template) + } + + $tr.data('storageConfig', storageConfig) + $tr.show() + $tr.find('td.mountOptionsToggle, td.save, td.remove').removeClass('hidden') + $tr.find('td').last().removeAttr('style') + $tr.removeAttr('id') + $tr.find('select#selectBackend') + if (!deferAppend) { + initApplicableUsersMultiselect($tr.find('.applicableUsers'), this._userListLimit) + } + + if (storageConfig.id) { + $tr.data('id', storageConfig.id) + } + + $tr.find('.backend').text(backend.name) + if (mountPoint === '') { + mountPoint = this._suggestMountPoint(backend.name) + } + $tr.find('.mountPoint input').val(mountPoint) + $tr.addClass(backend.identifier) + $tr.find('.backend').data('identifier', backend.identifier) + + if (backend.invalid || (backend.identifier === 'local' && !this._canCreateLocal)) { + $tr.find('[name=mountPoint]').prop('disabled', true) + $tr.find('.applicable,.mountOptionsToggle').empty() + $tr.find('.save').empty() + if (backend.invalid) { + this.updateStatus($tr, false, t('files_external', 'Unknown backend: {backendName}', { backendName: backend.name })) + } + return $tr + } + + const selectAuthMechanism = $('<select class="selectAuthMechanism"></select>') + const neededVisibility = (this._isPersonal) ? StorageConfig.Visibility.PERSONAL : StorageConfig.Visibility.ADMIN + $.each(this._allAuthMechanisms, function(authIdentifier, authMechanism) { + if (backend.authSchemes[authMechanism.scheme] && (authMechanism.visibility & neededVisibility)) { + selectAuthMechanism.append( + $('<option value="' + authMechanism.identifier + '" data-scheme="' + authMechanism.scheme + '">' + authMechanism.name + '</option>'), + ) + } + }) + if (storageConfig.authMechanism) { + selectAuthMechanism.val(storageConfig.authMechanism) + } else { + storageConfig.authMechanism = selectAuthMechanism.val() + } + $tr.find('td.authentication').append(selectAuthMechanism) + + const $td = $tr.find('td.configuration') + $.each(backend.configuration, _.partial(this.writeParameterInput, $td).bind(this)) + + this.trigger('selectBackend', $tr, backend.identifier, onCompletion) + this.configureAuthMechanism($tr, storageConfig.authMechanism, onCompletion) + + if (storageConfig.backendOptions) { + $td.find('input, select').each(function() { + const input = $(this) + const val = storageConfig.backendOptions[input.data('parameter')] + if (val !== undefined) { + if (input.is('input:checkbox')) { + input.prop('checked', val) + } + input.val(storageConfig.backendOptions[input.data('parameter')]) + highlightInput(input) + } + }) + } + + let applicable = [] + if (storageConfig.applicableUsers) { + applicable = applicable.concat(storageConfig.applicableUsers) + } + if (storageConfig.applicableGroups) { + applicable = applicable.concat( + _.map(storageConfig.applicableGroups, function(group) { + return group + '(group)' + }), + ) + } + if (applicable.length) { + $tr.find('.applicableUsers').val(applicable).trigger('change') + $tr.find('.applicableUsersContainer').removeClass('hidden') + } else { + // applicable to all + $tr.find('.applicableUsersContainer').addClass('hidden') + } + $tr.find('.applicableToAllUsers').prop('checked', !applicable.length) + + const priorityEl = $('<input type="hidden" class="priority" value="' + backend.priority + '" />') + $tr.append(priorityEl) + + if (storageConfig.mountOptions) { + $tr.find('input.mountOptions').val(JSON.stringify(storageConfig.mountOptions)) + } else { + // FIXME default backend mount options + $tr.find('input.mountOptions').val(JSON.stringify({ + encrypt: true, + previews: true, + enable_sharing: false, + filesystem_check_changes: 1, + encoding_compatibility: false, + readonly: false, + })) + } + + return $tr + }, + + /** + * Load storages into config rows + */ + loadStorages() { + const self = this + + const onLoaded1 = $.Deferred() + const onLoaded2 = $.Deferred() + + this.$el.find('.externalStorageLoading').removeClass('hidden') + $.when(onLoaded1, onLoaded2).always(() => { + self.$el.find('.externalStorageLoading').addClass('hidden') + }) + + if (this._isPersonal) { + // load userglobal storages + $.ajax({ + type: 'GET', + url: OC.generateUrl('apps/files_external/userglobalstorages'), + data: { testOnly: true }, + contentType: 'application/json', + success(result) { + result = Object.values(result) + const onCompletion = jQuery.Deferred() + let $rows = $() + result.forEach(function(storageParams) { + let storageConfig + const isUserGlobal = storageParams.type === 'system' && self._isPersonal + storageParams.mountPoint = storageParams.mountPoint.substr(1) // trim leading slash + if (isUserGlobal) { + storageConfig = new UserGlobalStorageConfig() + } else { + storageConfig = new self._storageConfigClass() + } + _.extend(storageConfig, storageParams) + const $tr = self.newStorage(storageConfig, onCompletion, true) + + // userglobal storages must be at the top of the list + $tr.detach() + self.$el.prepend($tr) + + const $authentication = $tr.find('.authentication') + $authentication.text($authentication.find('select option:selected').text()) + + // disable any other inputs + $tr.find('.mountOptionsToggle, .remove').empty() + $tr.find('input:not(.user_provided), select:not(.user_provided)').attr('disabled', 'disabled') + + if (isUserGlobal) { + $tr.find('.configuration').find(':not(.user_provided)').remove() + } else { + // userglobal storages do not expose configuration data + $tr.find('.configuration').text(t('files_external', 'Admin defined')) + } + + // don't recheck config automatically when there are a large number of storages + if (result.length < 20) { + self.recheckStorageConfig($tr) + } else { + self.updateStatus($tr, StorageConfig.Status.INDETERMINATE, t('files_external', 'Automatic status checking is disabled due to the large number of configured storages, click to check status')) + } + $rows = $rows.add($tr) + }) + initApplicableUsersMultiselect(self.$el.find('.applicableUsers'), this._userListLimit) + self.$el.find('tr#addMountPoint').before($rows) + const mainForm = $('#files_external') + if (result.length === 0 && mainForm.attr('data-can-create') === 'false') { + mainForm.hide() + $('a[href="#external-storage"]').parent().hide() + $('.emptycontent').show() + } + onCompletion.resolve() + onLoaded1.resolve() + }, + }) + } else { + onLoaded1.resolve() + } + + const url = this._storageConfigClass.prototype._url + + $.ajax({ + type: 'GET', + url: OC.generateUrl(url), + contentType: 'application/json', + success(result) { + result = Object.values(result) + const onCompletion = jQuery.Deferred() + let $rows = $() + result.forEach(function(storageParams) { + storageParams.mountPoint = (storageParams.mountPoint === '/') ? '/' : storageParams.mountPoint.substr(1) // trim leading slash + const storageConfig = new self._storageConfigClass() + _.extend(storageConfig, storageParams) + const $tr = self.newStorage(storageConfig, onCompletion, true) + + // don't recheck config automatically when there are a large number of storages + if (result.length < 20) { + self.recheckStorageConfig($tr) + } else { + self.updateStatus($tr, StorageConfig.Status.INDETERMINATE, t('files_external', 'Automatic status checking is disabled due to the large number of configured storages, click to check status')) + } + $rows = $rows.add($tr) + }) + initApplicableUsersMultiselect($rows.find('.applicableUsers'), this._userListLimit) + self.$el.find('tr#addMountPoint').before($rows) + onCompletion.resolve() + onLoaded2.resolve() + }, + }) + }, + + /** + * @param {jQuery} $td + * @param {string} parameter + * @param {string} placeholder + * @param {Array} classes + * @return {jQuery} newly created input + */ + writeParameterInput($td, parameter, placeholder, classes) { + const hasFlag = function(flag) { + return (placeholder.flags & flag) === flag + } + classes = $.isArray(classes) ? classes : [] + classes.push('added') + if (hasFlag(MountConfigListView.ParameterFlags.OPTIONAL)) { + classes.push('optional') + } + + if (hasFlag(MountConfigListView.ParameterFlags.USER_PROVIDED)) { + if (this._isPersonal) { + classes.push('user_provided') + } else { + return + } + } + + let newElement + + const trimmedPlaceholder = placeholder.value + if (hasFlag(MountConfigListView.ParameterFlags.HIDDEN)) { + newElement = $('<input type="hidden" class="' + classes.join(' ') + '" data-parameter="' + parameter + '" />') + } else if (placeholder.type === MountConfigListView.ParameterTypes.PASSWORD) { + newElement = $('<input type="password" class="' + classes.join(' ') + '" data-parameter="' + parameter + '" placeholder="' + trimmedPlaceholder + '" />') + } else if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { + const checkboxId = _.uniqueId('checkbox_') + newElement = $('<div><label><input type="checkbox" id="' + checkboxId + '" class="' + classes.join(' ') + '" data-parameter="' + parameter + '" />' + trimmedPlaceholder + '</label></div>') + } else { + newElement = $('<input type="text" class="' + classes.join(' ') + '" data-parameter="' + parameter + '" placeholder="' + trimmedPlaceholder + '" />') + } + + if (placeholder.defaultValue) { + if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { + newElement.find('input').prop('checked', placeholder.defaultValue) + } else { + newElement.val(placeholder.defaultValue) + } + } + + if (placeholder.tooltip) { + newElement.attr('title', placeholder.tooltip) + } + + highlightInput(newElement) + $td.append(newElement) + return newElement + }, + + /** + * Gets the storage model from the given row + * + * @param $tr row element + * @return {OCA.Files_External.StorageConfig} storage model instance + */ + getStorageConfig($tr) { + let storageId = $tr.data('id') + if (!storageId) { + // new entry + storageId = null + } + + let storage = $tr.data('storageConfig') + if (!storage) { + storage = new this._storageConfigClass(storageId) + } + storage.errors = null + storage.mountPoint = $tr.find('.mountPoint input').val() + storage.backend = $tr.find('.backend').data('identifier') + storage.authMechanism = $tr.find('.selectAuthMechanism').val() + + const classOptions = {} + const configuration = $tr.find('.configuration input') + const missingOptions = [] + $.each(configuration, function(index, input) { + const $input = $(input) + const parameter = $input.data('parameter') + if ($input.attr('type') === 'button') { + return + } + if (!isInputValid($input) && !$input.hasClass('optional')) { + missingOptions.push(parameter) + return + } + if ($(input).is(':checkbox')) { + if ($(input).is(':checked')) { + classOptions[parameter] = true + } else { + classOptions[parameter] = false + } + } else { + classOptions[parameter] = $(input).val() + } + }) + + storage.backendOptions = classOptions + if (missingOptions.length) { + storage.errors = { + backendOptions: missingOptions, + } + } + + // gather selected users and groups + if (!this._isPersonal) { + const multiselect = getSelectedApplicable($tr) + const users = multiselect.users || [] + const groups = multiselect.groups || [] + const isApplicableToAllUsers = $tr.find('.applicableToAllUsers').is(':checked') + + if (isApplicableToAllUsers) { + storage.applicableUsers = [] + storage.applicableGroups = [] + } else { + storage.applicableUsers = users + storage.applicableGroups = groups + + if (!storage.applicableUsers.length && !storage.applicableGroups.length) { + if (!storage.errors) { + storage.errors = {} + } + storage.errors.requiredApplicable = true + } + } + + storage.priority = parseInt($tr.find('input.priority').val() || '100', 10) + } + + const mountOptions = $tr.find('input.mountOptions').val() + if (mountOptions) { + storage.mountOptions = JSON.parse(mountOptions) + } + + return storage + }, + + /** + * Deletes the storage from the given tr + * + * @param $tr storage row + * @param Function callback callback to call after save + */ + deleteStorageConfig($tr) { + const self = this + const configId = $tr.data('id') + if (!_.isNumber(configId)) { + // deleting unsaved storage + $tr.remove() + return + } + const storage = new this._storageConfigClass(configId) + + OC.dialogs.confirm(t('files_external', 'Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself.', { + storage: this.mountPoint, + }), t('files_external', 'Delete storage?'), function(confirm) { + if (confirm) { + self.updateStatus($tr, StorageConfig.Status.IN_PROGRESS) + + storage.destroy({ + success() { + $tr.remove() + }, + error(result) { + const statusMessage = (result && result.responseJSON) ? result.responseJSON.message : undefined + self.updateStatus($tr, StorageConfig.Status.ERROR, statusMessage) + }, + }) + } + }) + }, + + /** + * Saves the storage from the given tr + * + * @param $tr storage row + * @param Function callback callback to call after save + * @param callback + * @param concurrentTimer only update if the timer matches this + */ + saveStorageConfig($tr, callback, concurrentTimer) { + const self = this + const storage = this.getStorageConfig($tr) + if (!storage || !storage.validate()) { + return false + } + + this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS) + storage.save({ + success(result) { + if (concurrentTimer === undefined + || $tr.data('save-timer') === concurrentTimer + ) { + self.updateStatus($tr, result.status, result.statusMessage) + $tr.data('id', result.id) + + if (_.isFunction(callback)) { + callback(storage) + } + } + }, + error(result) { + if (concurrentTimer === undefined + || $tr.data('save-timer') === concurrentTimer + ) { + const statusMessage = (result && result.responseJSON) ? result.responseJSON.message : undefined + self.updateStatus($tr, StorageConfig.Status.ERROR, statusMessage) + } + }, + }) + }, + + /** + * Recheck storage availability + * + * @param {jQuery} $tr storage row + * @return {boolean} success + */ + recheckStorageConfig($tr) { + const self = this + const storage = this.getStorageConfig($tr) + if (!storage.validate()) { + return false + } + + this.updateStatus($tr, StorageConfig.Status.IN_PROGRESS) + storage.recheck({ + success(result) { + self.updateStatus($tr, result.status, result.statusMessage) + }, + error(result) { + const statusMessage = (result && result.responseJSON) ? result.responseJSON.message : undefined + self.updateStatus($tr, StorageConfig.Status.ERROR, statusMessage) + }, + }) + }, + + /** + * Update status display + * + * @param {jQuery} $tr + * @param {number} status + * @param {string} message + */ + updateStatus($tr, status, message) { + const $statusSpan = $tr.find('.status span') + switch (status) { + case null: + // remove status + $statusSpan.hide() + break + case StorageConfig.Status.IN_PROGRESS: + $statusSpan.attr('class', 'icon-loading-small') + break + case StorageConfig.Status.SUCCESS: + $statusSpan.attr('class', 'success icon-checkmark-white') + break + case StorageConfig.Status.INDETERMINATE: + $statusSpan.attr('class', 'indeterminate icon-info-white') + break + default: + $statusSpan.attr('class', 'error icon-error-white') + } + if (status !== null) { + $statusSpan.show() + } + if (typeof message !== 'string') { + message = t('files_external', 'Click to recheck the configuration') + } + $statusSpan.attr('title', message) + }, + + /** + * Suggest mount point name that doesn't conflict with the existing names in the list + * + * @param {string} defaultMountPoint default name + */ + _suggestMountPoint(defaultMountPoint) { + const $el = this.$el + const pos = defaultMountPoint.indexOf('/') + if (pos !== -1) { + defaultMountPoint = defaultMountPoint.substring(0, pos) + } + defaultMountPoint = defaultMountPoint.replace(/\s+/g, '') + let i = 1 + let append = '' + let match = true + while (match && i < 20) { + match = false + $el.find('tbody td.mountPoint input').each(function(index, mountPoint) { + if ($(mountPoint).val() === defaultMountPoint + append) { + match = true + return false + } + }) + if (match) { + append = i + i++ + } else { + break + } + } + return defaultMountPoint + append + }, + + /** + * Toggles the mount options dropdown + * + * @param {object} $tr configuration row + */ + _showMountOptionsDropdown($tr) { + const self = this + const storage = this.getStorageConfig($tr) + const $toggle = $tr.find('.mountOptionsToggle') + const dropDown = new MountOptionsDropdown() + const visibleOptions = [ + 'previews', + 'filesystem_check_changes', + 'enable_sharing', + 'encoding_compatibility', + 'readonly', + 'delete', + ] + if (this._encryptionEnabled) { + visibleOptions.push('encrypt') + } + dropDown.show($toggle, storage.mountOptions || [], visibleOptions) + $('body').on('mouseup.mountOptionsDropdown', function(event) { + const $target = $(event.target) + if ($target.closest('.popovermenu').length) { + return + } + dropDown.hide() + }) + + dropDown.$el.on('hide', function() { + const mountOptions = dropDown.getOptions() + $('body').off('mouseup.mountOptionsDropdown') + $tr.find('input.mountOptions').val(JSON.stringify(mountOptions)) + $tr.find('td.mountOptionsToggle>.icon-more').attr('aria-expanded', 'false') + self.saveStorageConfig($tr) + }) + }, +}, OC.Backbone.Events) + +window.addEventListener('DOMContentLoaded', function() { + const enabled = $('#files_external').attr('data-encryption-enabled') + const canCreateLocal = $('#files_external').attr('data-can-create-local') + const encryptionEnabled = (enabled === 'true') + const mountConfigListView = new MountConfigListView($('#externalStorage'), { + encryptionEnabled, + canCreateLocal: (canCreateLocal === 'true'), + }) + mountConfigListView.loadStorages() + + // TODO: move this into its own View class + const $allowUserMounting = $('#allowUserMounting') + $allowUserMounting.bind('change', function() { + OC.msg.startSaving('#userMountingMsg') + if (this.checked) { + OCP.AppConfig.setValue('files_external', 'allow_user_mounting', 'yes') + $('input[name="allowUserMountingBackends\\[\\]"]').prop('checked', true) + $('#userMountingBackends').removeClass('hidden') + $('input[name="allowUserMountingBackends\\[\\]"]').eq(0).trigger('change') + } else { + OCP.AppConfig.setValue('files_external', 'allow_user_mounting', 'no') + $('#userMountingBackends').addClass('hidden') + } + OC.msg.finishedSaving('#userMountingMsg', { status: 'success', data: { message: t('files_external', 'Saved') } }) + }) + + $('input[name="allowUserMountingBackends\\[\\]"]').bind('change', function() { + OC.msg.startSaving('#userMountingMsg') + + let userMountingBackends = $('input[name="allowUserMountingBackends\\[\\]"]:checked').map(function() { + return $(this).val() + }).get() + const deprecatedBackends = $('input[name="allowUserMountingBackends\\[\\]"][data-deprecate-to]').map(function() { + if ($.inArray($(this).data('deprecate-to'), userMountingBackends) !== -1) { + return $(this).val() + } + return null + }).get() + userMountingBackends = userMountingBackends.concat(deprecatedBackends) + + OCP.AppConfig.setValue('files_external', 'user_mounting_backends', userMountingBackends.join()) + OC.msg.finishedSaving('#userMountingMsg', { status: 'success', data: { message: t('files_external', 'Saved') } }) + + // disable allowUserMounting + if (userMountingBackends.length === 0) { + $allowUserMounting.prop('checked', false) + $allowUserMounting.trigger('change') + + } + }) + + $('#global_credentials').on('submit', async function(event) { + event.preventDefault() + const $form = $(this) + const $submit = $form.find('[type=submit]') + $submit.val(t('files_external', 'Saving …')) + + const uid = $form.find('[name=uid]').val() + const user = $form.find('[name=username]').val() + const password = $form.find('[name=password]').val() + + try { + await axios.request({ + method: 'POST', + data: { + uid, + user, + password, + }, + url: generateUrl('apps/files_external/globalcredentials'), + confirmPassword: PwdConfirmationMode.Strict, + }) + + $submit.val(t('files_external', 'Saved')) + setTimeout(function() { + $submit.val(t('files_external', 'Save')) + }, 2500) + } catch (error) { + $submit.val(t('files_external', 'Save')) + if (isAxiosError(error)) { + const message = error.response?.data?.message || t('files_external', 'Failed to save global credentials') + showError(t('files_external', 'Failed to save global credentials: {message}', { message })) + } + } + + return false + }) + + // global instance + OCA.Files_External.Settings.mountConfig = mountConfigListView + + /** + * Legacy + * + * @namespace + * @deprecated use OCA.Files_External.Settings.mountConfig instead + */ + OC.MountConfig = { + saveStorage: _.bind(mountConfigListView.saveStorageConfig, mountConfigListView), + } +}) + +// export + +OCA.Files_External = OCA.Files_External || {} +/** + * @namespace + */ +OCA.Files_External.Settings = OCA.Files_External.Settings || {} + +OCA.Files_External.Settings.GlobalStorageConfig = GlobalStorageConfig +OCA.Files_External.Settings.UserStorageConfig = UserStorageConfig +OCA.Files_External.Settings.MountConfigListView = MountConfigListView diff --git a/apps/files_external/src/utils/credentialsUtils.ts b/apps/files_external/src/utils/credentialsUtils.ts index e92acf3c4ff..5c19c7bce44 100644 --- a/apps/files_external/src/utils/credentialsUtils.ts +++ b/apps/files_external/src/utils/credentialsUtils.ts @@ -1,23 +1,6 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import type { StorageConfig } from '../services/externalStorage' diff --git a/apps/files_external/src/utils/externalStorageUtils.spec.ts b/apps/files_external/src/utils/externalStorageUtils.spec.ts index 35b3c9d22f9..a6a29e27a7c 100644 --- a/apps/files_external/src/utils/externalStorageUtils.spec.ts +++ b/apps/files_external/src/utils/externalStorageUtils.spec.ts @@ -1,26 +1,9 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { expect } from '@jest/globals' import { File, Folder, Permission } from '@nextcloud/files' +import { describe, expect, test } from 'vitest' import { isNodeExternalStorage } from './externalStorageUtils' describe('Is node an external storage', () => { diff --git a/apps/files_external/src/utils/externalStorageUtils.ts b/apps/files_external/src/utils/externalStorageUtils.ts index ffc4f9efb02..4407def5ce7 100644 --- a/apps/files_external/src/utils/externalStorageUtils.ts +++ b/apps/files_external/src/utils/externalStorageUtils.ts @@ -1,23 +1,6 @@ /** - * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import { FileType, Node } from '@nextcloud/files' import type { MountEntry } from '../services/externalStorage' diff --git a/apps/files_external/src/views/CredentialsDialog.vue b/apps/files_external/src/views/CredentialsDialog.vue new file mode 100644 index 00000000000..1d506628f6d --- /dev/null +++ b/apps/files_external/src/views/CredentialsDialog.vue @@ -0,0 +1,86 @@ +<!-- + - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <NcDialog :buttons="dialogButtons" + class="external-storage-auth" + close-on-click-outside + data-cy-external-storage-auth + is-form + :name="t('files_external', 'Storage credentials')" + out-transition + @submit="$emit('close', {login, password})" + @update:open="$emit('close')"> + <!-- Header --> + <NcNoteCard class="external-storage-auth__header" + :text="t('files_external', 'To access the storage, you need to provide the authentication credentials.')" + type="info" /> + + <!-- Login --> + <NcTextField ref="login" + class="external-storage-auth__login" + data-cy-external-storage-auth-dialog-login + :label="t('files_external', 'Login')" + :placeholder="t('files_external', 'Enter the storage login')" + minlength="2" + name="login" + required + :value.sync="login" /> + + <!-- Password --> + <NcPasswordField ref="password" + class="external-storage-auth__password" + data-cy-external-storage-auth-dialog-password + :label="t('files_external', 'Password')" + :placeholder="t('files_external', 'Enter the storage password')" + name="password" + required + :value.sync="password" /> + </NcDialog> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import { t } from '@nextcloud/l10n' + +import NcDialog from '@nextcloud/vue/components/NcDialog' +import NcNoteCard from '@nextcloud/vue/components/NcNoteCard' +import NcPasswordField from '@nextcloud/vue/components/NcPasswordField' +import NcTextField from '@nextcloud/vue/components/NcTextField' + +export default defineComponent({ + name: 'CredentialsDialog', + + components: { + NcDialog, + NcNoteCard, + NcTextField, + NcPasswordField, + }, + + setup() { + return { + t, + } + }, + + data() { + return { + login: '', + password: '', + } + }, + + computed: { + dialogButtons() { + return [{ + label: t('files_external', 'Confirm'), + type: 'primary', + nativeType: 'submit', + }] + }, + }, +}) +</script> diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 6d6e9fd5b85..5aad7b018af 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -1,25 +1,28 @@ <?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Backend\Backend; -use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Service\BackendService; /** @var array $_ */ $canCreateMounts = $_['visibilityType'] === BackendService::VISIBILITY_ADMIN || $_['allowUserMounting']; -$l->t("Enable encryption"); -$l->t("Enable previews"); -$l->t("Enable sharing"); -$l->t("Check for changes"); -$l->t("Never"); -$l->t("Once every direct access"); +$l->t('Enable encryption'); +$l->t('Enable previews'); +$l->t('Enable sharing'); +$l->t('Check for changes'); +$l->t('Never'); +$l->t('Once every direct access'); $l->t('Read only'); -script('files_external', [ - 'settings', - 'templates' -]); +\OCP\Util::addScript('files_external', 'settings'); +\OCP\Util::addScript('files_external', 'templates'); style('files_external', 'settings'); // load custom JS @@ -38,63 +41,6 @@ foreach ($_['authMechanisms'] as $authMechanism) { } } -function writeParameterInput($parameter, $options, $classes = []) { - $value = ''; - if (isset($options[$parameter->getName()])) { - $value = $options[$parameter->getName()]; - } - $placeholder = $parameter->getText(); - $is_optional = $parameter->isFlagSet(DefinitionParameter::FLAG_OPTIONAL); - - switch ($parameter->getType()) { - case DefinitionParameter::VALUE_PASSWORD: ?> - <?php if ($is_optional) { - $classes[] = 'optional'; - } ?> - <input type="password" - <?php if (!empty($classes)): ?> class="<?php p(implode(' ', $classes)); ?>"<?php endif; ?> - data-parameter="<?php p($parameter->getName()); ?>" - value="<?php p($value); ?>" - placeholder="<?php p($placeholder); ?>" - /> - <?php - break; - case DefinitionParameter::VALUE_BOOLEAN: ?> - <?php $checkboxId = uniqid("checkbox_"); ?> - <div> - <label> - <input type="checkbox" - id="<?php p($checkboxId); ?>" - <?php if (!empty($classes)): ?> class="checkbox <?php p(implode(' ', $classes)); ?>"<?php endif; ?> - data-parameter="<?php p($parameter->getName()); ?>" - <?php if ($value === true): ?> checked="checked"<?php endif; ?> - /> - <?php p($placeholder); ?> - </label> - </div> - <?php - break; - case DefinitionParameter::VALUE_HIDDEN: ?> - <input type="hidden" - <?php if (!empty($classes)): ?> class="<?php p(implode(' ', $classes)); ?>"<?php endif; ?> - data-parameter="<?php p($parameter->getName()); ?>" - value="<?php p($value); ?>" - /> - <?php - break; - default: ?> - <?php if ($is_optional) { - $classes[] = 'optional'; - } ?> - <input type="text" - <?php if (!empty($classes)): ?> class="<?php p(implode(' ', $classes)); ?>"<?php endif; ?> - data-parameter="<?php p($parameter->getName()); ?>" - value="<?php p($value); ?>" - placeholder="<?php p($placeholder); ?>" - /> - <?php - } -} ?> <div class="emptyfilelist emptycontent hidden"> @@ -103,14 +49,14 @@ function writeParameterInput($parameter, $options, $classes = []) { </div> <?php - $canCreateNewLocalStorage = \OC::$server->getConfig()->getSystemValue('files_external_allow_create_new_local', true); + $canCreateNewLocalStorage = \OCP\Server::get(\OCP\IConfig::class)->getSystemValue('files_external_allow_create_new_local', true); ?> <form data-can-create="<?php echo $canCreateMounts?'true':'false' ?>" data-can-create-local="<?php echo $canCreateNewLocalStorage?'true':'false' ?>" id="files_external" class="section" data-encryption-enabled="<?php echo $_['encryptionEnabled']?'true': 'false'; ?>"> <h2 class="inlineblock" data-anchor-name="external-storage"><?php p($l->t('External storage')); ?></h2> <a target="_blank" rel="noreferrer" class="icon-info" title="<?php p($l->t('Open documentation'));?>" href="<?php p(link_to_docs('admin-external-storage')); ?>"></a> <p class="settings-hint"><?php p($l->t('External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services.')); ?></p> <?php if (isset($_['dependencies']) and ($_['dependencies'] !== '') and $canCreateMounts) { - print_unescaped(''.$_['dependencies'].''); + print_unescaped('' . $_['dependencies'] . ''); } ?> <table id="externalStorage" class="grid" data-admin='<?php print_unescaped(json_encode($_['visibilityType'] === BackendService::VISIBILITY_ADMIN)); ?>'> <thead> @@ -121,7 +67,7 @@ function writeParameterInput($parameter, $options, $classes = []) { <th><?php p($l->t('Authentication')); ?></th> <th><?php p($l->t('Configuration')); ?></th> <?php if ($_['visibilityType'] === BackendService::VISIBILITY_ADMIN) { - print_unescaped('<th>'.$l->t('Available for').'</th>'); + print_unescaped('<th>' . $l->t('Available for') . '</th>'); } ?> <th> </th> <th> </th> @@ -140,7 +86,7 @@ function writeParameterInput($parameter, $options, $classes = []) { <?php endif; ?> > <td class="status"> - <span data-placement="right" title="<?php p($l->t('Click to recheck the configuration')); ?>"></span> + <span data-placement="right" title="<?php p($l->t('Click to recheck the configuration')); ?>" style="display: none;"></span> </td> <td class="mountPoint"><input type="text" name="mountPoint" value="" placeholder="<?php p($l->t('Folder name')); ?>"> @@ -160,11 +106,11 @@ uasort($sortedBackends, function ($a, $b) { }); ?> <?php foreach ($sortedBackends as $backend): ?> - <?php if ($backend->getDeprecateTo() || (!$canCreateNewLocalStorage && $backend->getIdentifier() == "local")) { + <?php if ($backend->getDeprecateTo() || (!$canCreateNewLocalStorage && $backend->getIdentifier() == 'local')) { continue; } // ignore deprecated backends?> <option value="<?php p($backend->getIdentifier()); ?>"><?php p($backend->getText()); ?></option> - <?php endforeach; ?> +<?php endforeach; ?> </select> </td> <td class="authentication" data-mechanisms='<?php p(json_encode($_['authMechanisms'])); ?>'></td> @@ -221,7 +167,7 @@ uasort($sortedBackends, function ($a, $b) { <form autocomplete="false" action="#" id="global_credentials" method="post" class="<?php if (isset($_['visibilityType']) && $_['visibilityType'] === BackendService::VISIBILITY_PERSONAL) { - print_unescaped("global_credentials__personal"); + print_unescaped('global_credentials__personal'); } ?>"> <h2><?php p($l->t('Global credentials')); ?></h2> <p class="settings-hint"><?php p($l->t('Global credentials can be used to authenticate with multiple external storages that have the same credentials.')); ?></p> diff --git a/apps/files_external/tests/Auth/AuthMechanismTest.php b/apps/files_external/tests/Auth/AuthMechanismTest.php index 7e1d2a84ae4..e999cecf181 100644 --- a/apps/files_external/tests/Auth/AuthMechanismTest.php +++ b/apps/files_external/tests/Auth/AuthMechanismTest.php @@ -1,24 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Auth; @@ -27,9 +13,9 @@ use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\StorageConfig; class AuthMechanismTest extends \Test\TestCase { - public function testJsonSerialization() { + public function testJsonSerialization(): void { $mechanism = $this->getMockBuilder(AuthMechanism::class) - ->setMethods(['jsonSerializeDefinition']) + ->onlyMethods(['jsonSerializeDefinition']) ->getMock(); $mechanism->expects($this->once()) ->method('jsonSerializeDefinition') @@ -42,7 +28,7 @@ class AuthMechanismTest extends \Test\TestCase { $this->assertEquals('scheme', $json['scheme']); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, 'scheme', true], [false, 'scheme', false], @@ -51,12 +37,10 @@ class AuthMechanismTest extends \Test\TestCase { ]; } - /** - * @dataProvider validateStorageProvider - */ - public function testValidateStorage($expectedSuccess, $scheme, $definitionSuccess) { + #[\PHPUnit\Framework\Attributes\DataProvider('validateStorageProvider')] + public function testValidateStorage(bool $expectedSuccess, string $scheme, bool $definitionSuccess): void { $mechanism = $this->getMockBuilder(AuthMechanism::class) - ->setMethods(['validateStorageDefinition']) + ->onlyMethods(['validateStorageDefinition']) ->getMock(); $mechanism->expects($this->atMost(1)) ->method('validateStorageDefinition') @@ -64,16 +48,12 @@ class AuthMechanismTest extends \Test\TestCase { $mechanism->setScheme($scheme); - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + $backend = $this->createMock(Backend::class); $backend->expects($this->once()) ->method('getAuthSchemes') ->willReturn(['scheme' => true, 'foobar' => true]); - $storageConfig = $this->getMockBuilder(StorageConfig::class) - ->disableOriginalConstructor() - ->getMock(); + $storageConfig = $this->createMock(StorageConfig::class); $storageConfig->expects($this->once()) ->method('getBackend') ->willReturn($backend); diff --git a/apps/files_external/tests/Auth/Password/GlobalAuth.php b/apps/files_external/tests/Auth/Password/GlobalAuthTest.php index 867e3329cb8..6d83655403e 100644 --- a/apps/files_external/tests/Auth/Password/GlobalAuth.php +++ b/apps/files_external/tests/Auth/Password/GlobalAuthTest.php @@ -1,50 +1,25 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Auth\Password; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; -use OCA\Files_external\Lib\StorageConfig; +use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; +use OCA\Files_External\Lib\StorageConfig; use OCP\IL10N; use OCP\Security\ICredentialsManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class GlobalAuthTest extends TestCase { - /** - * @var \OCP\IL10N|\PHPUnit\Framework\MockObject\MockObject - */ - private $l10n; - - /** - * @var \OCP\Security\ICredentialsManager|\PHPUnit\Framework\MockObject\MockObject - */ - private $credentialsManager; - - /** - * @var GlobalAuth - */ - private $instance; + private IL10N&MockObject $l10n; + private ICredentialsManager&MockObject $credentialsManager; + private GlobalAuth $instance; protected function setUp(): void { parent::setUp(); @@ -54,7 +29,7 @@ class GlobalAuthTest extends TestCase { } private function getStorageConfig($type, $config = []) { - /** @var \OCA\Files_External\Lib\StorageConfig|\PHPUnit\Framework\MockObject\MockObject $storageConfig */ + /** @var StorageConfig&MockObject $storageConfig */ $storageConfig = $this->createMock(StorageConfig::class); $storageConfig->expects($this->any()) ->method('getType') @@ -71,14 +46,14 @@ class GlobalAuthTest extends TestCase { }); $storageConfig->expects($this->any()) ->method('setBackendOption') - ->willReturnCallback(function ($key, $value) use (&$config) { + ->willReturnCallback(function ($key, $value) use (&$config): void { $config[$key] = $value; }); return $storageConfig; } - public function testNoCredentials() { + public function testNoCredentials(): void { $this->credentialsManager->expects($this->once()) ->method('retrieve') ->willReturn(null); @@ -89,7 +64,7 @@ class GlobalAuthTest extends TestCase { $this->assertEquals([], $storage->getBackendOptions()); } - public function testSavedCredentials() { + public function testSavedCredentials(): void { $this->credentialsManager->expects($this->once()) ->method('retrieve') ->willReturn([ @@ -107,8 +82,8 @@ class GlobalAuthTest extends TestCase { } - public function testNoCredentialsPersonal() { - $this->expectException(\OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException::class); + public function testNoCredentialsPersonal(): void { + $this->expectException(InsufficientDataForMeaningfulAnswerException::class); $this->credentialsManager->expects($this->never()) ->method('retrieve'); diff --git a/apps/files_external/tests/Backend/BackendTest.php b/apps/files_external/tests/Backend/BackendTest.php index 066aab0ff31..1653c354e16 100644 --- a/apps/files_external/tests/Backend/BackendTest.php +++ b/apps/files_external/tests/Backend/BackendTest.php @@ -1,26 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Backend; @@ -28,9 +12,9 @@ use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\StorageConfig; class BackendTest extends \Test\TestCase { - public function testJsonSerialization() { + public function testJsonSerialization(): void { $backend = $this->getMockBuilder(Backend::class) - ->setMethods(['jsonSerializeDefinition']) + ->onlyMethods(['jsonSerializeDefinition']) ->getMock(); $backend->expects($this->once()) ->method('jsonSerializeDefinition') @@ -50,19 +34,17 @@ class BackendTest extends \Test\TestCase { $this->assertContains('barauth', array_keys($json['authSchemes'])); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, true], [false, false], ]; } - /** - * @dataProvider validateStorageProvider - */ - public function testValidateStorage($expectedSuccess, $definitionSuccess) { + #[\PHPUnit\Framework\Attributes\DataProvider('validateStorageProvider')] + public function testValidateStorage(bool $expectedSuccess, bool $definitionSuccess): void { $backend = $this->getMockBuilder(Backend::class) - ->setMethods(['validateStorageDefinition']) + ->onlyMethods(['validateStorageDefinition']) ->getMock(); $backend->expects($this->atMost(1)) ->method('validateStorageDefinition') @@ -75,7 +57,7 @@ class BackendTest extends \Test\TestCase { $this->assertEquals($expectedSuccess, $backend->validateStorage($storageConfig)); } - public function testLegacyAuthMechanismCallback() { + public function testLegacyAuthMechanismCallback(): void { $backend = new Backend(); $backend->setLegacyAuthMechanismCallback(function (array $params) { if (isset($params['ping'])) { diff --git a/apps/files_external/tests/Backend/LegacyBackendTest.php b/apps/files_external/tests/Backend/LegacyBackendTest.php index 2a69ab9e355..c4ddfedf6e2 100644 --- a/apps/files_external/tests/Backend/LegacyBackendTest.php +++ b/apps/files_external/tests/Backend/LegacyBackendTest.php @@ -1,27 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Backend; +use OCA\Files_External\Lib\Auth\Builtin; use OCA\Files_External\Lib\Backend\LegacyBackend; use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\MissingDependency; @@ -31,24 +17,21 @@ class LegacyBackendTest extends \Test\TestCase { /** * @return MissingDependency[] */ - public static function checkDependencies() { + public static function checkDependencies(): array { return [ (new MissingDependency('abc'))->setMessage('foobar') ]; } - public function testConstructor() { - $auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin') - ->disableOriginalConstructor() - ->getMock(); + public function testConstructor(): void { + $auth = $this->createMock(Builtin::class); - $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest'; + $class = self::class; $definition = [ 'configuration' => [ 'textfield' => 'Text field', 'passwordfield' => '*Password field', 'checkbox' => '!Checkbox', - 'hiddenfield' => '#Hidden field', 'optionaltext' => '&Optional text field', 'optionalpassword' => '&*Optional password field', ], @@ -60,7 +43,7 @@ class LegacyBackendTest extends \Test\TestCase { $backend = new LegacyBackend($class, $definition, $auth); - $this->assertEquals('\OCA\Files_External\Tests\Backend\LegacyBackendTest', $backend->getStorageClass()); + $this->assertEquals(self::class, $backend->getStorageClass()); $this->assertEquals('Backend text', $backend->getText()); $this->assertEquals(123, $backend->getPriority()); $this->assertContains('foo/bar.js', $backend->getCustomJs()); @@ -82,9 +65,6 @@ class LegacyBackendTest extends \Test\TestCase { $this->assertEquals('Checkbox', $parameters['checkbox']->getText()); $this->assertEquals(DefinitionParameter::VALUE_BOOLEAN, $parameters['checkbox']->getType()); $this->assertEquals(DefinitionParameter::FLAG_NONE, $parameters['checkbox']->getFlags()); - $this->assertEquals('Hidden field', $parameters['hiddenfield']->getText()); - $this->assertEquals(DefinitionParameter::VALUE_HIDDEN, $parameters['hiddenfield']->getType()); - $this->assertEquals(DefinitionParameter::FLAG_NONE, $parameters['hiddenfield']->getFlags()); $this->assertEquals('Optional text field', $parameters['optionaltext']->getText()); $this->assertEquals(DefinitionParameter::VALUE_TEXT, $parameters['optionaltext']->getType()); $this->assertEquals(DefinitionParameter::FLAG_OPTIONAL, $parameters['optionaltext']->getFlags()); @@ -93,12 +73,10 @@ class LegacyBackendTest extends \Test\TestCase { $this->assertEquals(DefinitionParameter::FLAG_OPTIONAL, $parameters['optionalpassword']->getFlags()); } - public function testNoDependencies() { - $auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin') - ->disableOriginalConstructor() - ->getMock(); + public function testNoDependencies(): void { + $auth = $this->createMock(Builtin::class); - $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest'; + $class = self::class; $definition = [ 'configuration' => [ ], diff --git a/apps/files_external/tests/Command/ApplicableTest.php b/apps/files_external/tests/Command/ApplicableTest.php index fb4326354fa..59db18a42de 100644 --- a/apps/files_external/tests/Command/ApplicableTest.php +++ b/apps/files_external/tests/Command/ApplicableTest.php @@ -1,38 +1,23 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Command; use OCA\Files_External\Command\Applicable; use OCP\IGroupManager; use OCP\IUserManager; +use PHPUnit\Framework\MockObject\MockObject; -class ApplicableTest extends CommandTest { - private function getInstance($storageService) { - /** @var \OCP\IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */ +class ApplicableTest extends CommandTestCase { + private function getInstance($storageService): Applicable { + /** @var IUserManager&MockObject $userManager */ $userManager = $this->createMock(IUserManager::class); - /** @var \OCP\IGroupManager|\PHPUnit\Framework\MockObject\MockObject $groupManager */ + /** @var IGroupManager&MockObject $groupManager */ $groupManager = $this->createMock(IGroupManager::class); $userManager->expects($this->any()) @@ -46,7 +31,7 @@ class ApplicableTest extends CommandTest { return new Applicable($storageService, $userManager, $groupManager); } - public function testListEmpty() { + public function testListEmpty(): void { $mount = $this->getMount(1, '', ''); $storageService = $this->getGlobalStorageService([$mount]); @@ -63,7 +48,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['users' => [], 'groups' => []], $result); } - public function testList() { + public function testList(): void { $mount = $this->getMount(1, '', '', '', [], [], ['test', 'asd']); $storageService = $this->getGlobalStorageService([$mount]); @@ -80,7 +65,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['users' => ['test', 'asd'], 'groups' => []], $result); } - public function testAddSingle() { + public function testAddSingle(): void { $mount = $this->getMount(1, '', '', '', [], [], []); $storageService = $this->getGlobalStorageService([$mount]); @@ -98,7 +83,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['foo'], $mount->getApplicableUsers()); } - public function testAddDuplicate() { + public function testAddDuplicate(): void { $mount = $this->getMount(1, '', '', '', [], [], ['foo']); $storageService = $this->getGlobalStorageService([$mount]); @@ -116,7 +101,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['foo', 'bar'], $mount->getApplicableUsers()); } - public function testRemoveSingle() { + public function testRemoveSingle(): void { $mount = $this->getMount(1, '', '', '', [], [], ['foo', 'bar']); $storageService = $this->getGlobalStorageService([$mount]); @@ -134,7 +119,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['foo'], $mount->getApplicableUsers()); } - public function testRemoveNonExisting() { + public function testRemoveNonExisting(): void { $mount = $this->getMount(1, '', '', '', [], [], ['foo', 'bar']); $storageService = $this->getGlobalStorageService([$mount]); @@ -152,7 +137,7 @@ class ApplicableTest extends CommandTest { $this->assertEquals(['foo'], $mount->getApplicableUsers()); } - public function testRemoveAddRemove() { + public function testRemoveAddRemove(): void { $mount = $this->getMount(1, '', '', '', [], [], ['foo', 'bar']); $storageService = $this->getGlobalStorageService([$mount]); diff --git a/apps/files_external/tests/Command/CommandTest.php b/apps/files_external/tests/Command/CommandTestCase.php index 952ca2a0307..e42ad9cd68a 100644 --- a/apps/files_external/tests/Command/CommandTest.php +++ b/apps/files_external/tests/Command/CommandTestCase.php @@ -1,46 +1,29 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Command; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; +use OCA\Files_External\Service\GlobalStoragesService; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\Input; use Symfony\Component\Console\Output\BufferedOutput; use Test\TestCase; -abstract class CommandTest extends TestCase { +abstract class CommandTestCase extends TestCase { /** * @param StorageConfig[] $mounts - * @return \OCA\Files_External\Service\GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject + * @return GlobalStoragesService&MockObject */ protected function getGlobalStorageService(array $mounts = []) { - $mock = $this->getMockBuilder('OCA\Files_External\Service\GlobalStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $mock = $this->createMock(GlobalStoragesService::class); $this->bindMounts($mock, $mounts); @@ -48,10 +31,10 @@ abstract class CommandTest extends TestCase { } /** - * @param \PHPUnit\Framework\MockObject\MockObject $mock + * @param MockObject $mock * @param StorageConfig[] $mounts */ - protected function bindMounts(\PHPUnit\Framework\MockObject\MockObject $mock, array $mounts) { + protected function bindMounts(MockObject $mock, array $mounts) { $mock->expects($this->any()) ->method('getStorage') ->willReturnCallback(function ($id) use ($mounts) { @@ -87,7 +70,7 @@ abstract class CommandTest extends TestCase { return $mount; } - protected function getInput(Command $command, array $arguments = [], array $options = []) { + protected function getInput(Command $command, array $arguments = [], array $options = []): ArrayInput { $input = new ArrayInput([]); $input->bind($command->getDefinition()); foreach ($arguments as $key => $value) { @@ -99,7 +82,7 @@ abstract class CommandTest extends TestCase { return $input; } - protected function executeCommand(Command $command, Input $input) { + protected function executeCommand(Command $command, Input $input): string { $output = new BufferedOutput(); $this->invokePrivate($command, 'execute', [$input, $output]); return $output->fetch(); diff --git a/apps/files_external/tests/Command/ListCommandTest.php b/apps/files_external/tests/Command/ListCommandTest.php index e9cd3496d71..5b84e500e3f 100644 --- a/apps/files_external/tests/Command/ListCommandTest.php +++ b/apps/files_external/tests/Command/ListCommandTest.php @@ -1,28 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Command; @@ -36,33 +18,27 @@ use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; use OCP\Authentication\LoginCredentials\IStore; use OCP\IL10N; -use OCP\ISession; use OCP\IUserManager; use OCP\IUserSession; -use OCP\Security\ICrypto; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\Console\Output\BufferedOutput; -class ListCommandTest extends CommandTest { - /** - * @return ListCommand|\PHPUnit\Framework\MockObject\MockObject - */ - private function getInstance() { - /** @var GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject $globalService */ +class ListCommandTest extends CommandTestCase { + private function getInstance(): ListCommand { + /** @var GlobalStoragesService&MockObject $globalService */ $globalService = $this->createMock(GlobalStoragesService::class); - /** @var UserStoragesService|\PHPUnit\Framework\MockObject\MockObject $userService */ + /** @var UserStoragesService&MockObject $userService */ $userService = $this->createMock(UserStoragesService::class); - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */ + /** @var IUserManager&MockObject $userManager */ $userManager = $this->createMock(IUserManager::class); - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); return new ListCommand($globalService, $userService, $userSession, $userManager); } - public function testListAuthIdentifier() { + public function testListAuthIdentifier(): void { $l10n = $this->createMock(IL10N::class); - $session = $this->createMock(ISession::class); - $crypto = $this->createMock(ICrypto::class); $instance = $this->getInstance(); $mount1 = new StorageConfig(); $mount1->setAuthMechanism(new Password($l10n)); diff --git a/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php b/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php index 48474a82331..13d25ce5075 100644 --- a/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php +++ b/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php @@ -1,29 +1,11 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Julius Härtl <jus@bitgrid.net> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\files_external\tests\Config; +namespace OCA\Files_External\Tests\Config; use OCA\Files_External\Config\UserPlaceholderHandler; use OCP\IRequest; @@ -32,25 +14,15 @@ use OCP\IUserManager; use OCP\IUserSession; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; +use PHPUnit\Framework\MockObject\MockObject; class UserPlaceholderHandlerTest extends \Test\TestCase { - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject */ - protected $user; - - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - protected $session; - - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - private $shareManager; - - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ - private $request; - - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */ - private $userManager; - - /** @var UserPlaceholderHandler */ - protected $handler; + protected IUser&MockObject $user; + protected IUserSession&MockObject $session; + protected IManager&MockObject $shareManager; + protected IRequest&MockObject $request; + protected IUserManager&MockObject $userManager; + protected UserPlaceholderHandler $handler; protected function setUp(): void { parent::setUp(); @@ -67,13 +39,13 @@ class UserPlaceholderHandlerTest extends \Test\TestCase { $this->handler = new UserPlaceholderHandler($this->session, $this->shareManager, $this->request, $this->userManager); } - protected function setUser() { + protected function setUser(): void { $this->session->expects($this->any()) ->method('getUser') ->willReturn($this->user); } - public function optionProvider() { + public static function optionProvider(): array { return [ ['/foo/bar/$user/foobar', '/foo/bar/alice/foobar'], [['/foo/bar/$user/foobar'], ['/foo/bar/alice/foobar']], @@ -81,18 +53,14 @@ class UserPlaceholderHandlerTest extends \Test\TestCase { ]; } - /** - * @dataProvider optionProvider - */ - public function testHandle($option, $expected) { + #[\PHPUnit\Framework\Attributes\DataProvider('optionProvider')] + public function testHandle(string|array $option, string|array $expected): void { $this->setUser(); $this->assertSame($expected, $this->handler->handle($option)); } - /** - * @dataProvider optionProvider - */ - public function testHandleNoUser($option) { + #[\PHPUnit\Framework\Attributes\DataProvider('optionProvider')] + public function testHandleNoUser(string|array $option): void { $this->shareManager->expects($this->once()) ->method('getShareByToken') ->willThrowException(new ShareNotFound()); diff --git a/apps/files_external/tests/Controller/AjaxControllerTest.php b/apps/files_external/tests/Controller/AjaxControllerTest.php index 304a1807931..b1ea7a2b1b1 100644 --- a/apps/files_external/tests/Controller/AjaxControllerTest.php +++ b/apps/files_external/tests/Controller/AjaxControllerTest.php @@ -1,26 +1,9 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Tests\Controller; @@ -29,35 +12,29 @@ use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\Auth\PublicKey\RSA; use OCP\AppFramework\Http\JSONResponse; use OCP\IGroupManager; +use OCP\IL10N; use OCP\IRequest; use OCP\IUser; use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AjaxControllerTest extends TestCase { - /** @var IRequest */ - private $request; - /** @var RSA */ - private $rsa; - /** @var GlobalAuth */ - private $globalAuth; - /** @var IUserSession */ - private $userSession; - /** @var IGroupManager */ - private $groupManager; - /** @var AjaxController */ - private $ajaxController; + private IRequest&MockObject $request; + private RSA&MockObject $rsa; + private GlobalAuth&MockObject $globalAuth; + private IUserSession&MockObject $userSession; + private IGroupManager&MockObject $groupManager; + private IL10N&MockObject $l10n; + private AjaxController $ajaxController; protected function setUp(): void { $this->request = $this->createMock(IRequest::class); - $this->rsa = $this->getMockBuilder('\\OCA\\Files_External\\Lib\\Auth\\PublicKey\\RSA') - ->disableOriginalConstructor() - ->getMock(); - $this->globalAuth = $this->getMockBuilder('\\OCA\\Files_External\\Lib\\Auth\\Password\GlobalAuth') - ->disableOriginalConstructor() - ->getMock(); + $this->rsa = $this->createMock(RSA::class); + $this->globalAuth = $this->createMock(GlobalAuth::class); $this->userSession = $this->createMock(IUserSession::class); $this->groupManager = $this->createMock(IGroupManager::class); + $this->l10n = $this->createMock(IL10N::class); $this->ajaxController = new AjaxController( 'files_external', @@ -65,13 +42,23 @@ class AjaxControllerTest extends TestCase { $this->rsa, $this->globalAuth, $this->userSession, - $this->groupManager + $this->groupManager, + $this->l10n, ); + $this->l10n->expects($this->any()) + ->method('t') + ->willReturnCallback(function ($string, $args) { + if (!is_array($args)) { + $args = [$args]; + } + return vsprintf($string, $args); + }); + parent::setUp(); } - public function testGetSshKeys() { + public function testGetSshKeys(): void { $this->rsa ->expects($this->once()) ->method('createKey') @@ -92,7 +79,7 @@ class AjaxControllerTest extends TestCase { $this->assertEquals($expected, $this->ajaxController->getSshKeys()); } - public function testSaveGlobalCredentialsAsAdminForAnotherUser() { + public function testSaveGlobalCredentialsAsAdminForAnotherUser(): void { $user = $this->createMock(IUser::class); $user ->expects($this->once()) @@ -106,10 +93,12 @@ class AjaxControllerTest extends TestCase { ->expects($this->never()) ->method('saveAuth'); - $this->assertSame(false, $this->ajaxController->saveGlobalCredentials('UidOfTestUser', 'test', 'password')); + $response = $this->ajaxController->saveGlobalCredentials('UidOfTestUser', 'test', 'password'); + $this->assertSame($response->getStatus(), 403); + $this->assertSame('Permission denied', $response->getData()['message']); } - public function testSaveGlobalCredentialsAsAdminForSelf() { + public function testSaveGlobalCredentialsAsAdminForSelf(): void { $user = $this->createMock(IUser::class); $user ->expects($this->once()) @@ -124,10 +113,11 @@ class AjaxControllerTest extends TestCase { ->method('saveAuth') ->with('MyAdminUid', 'test', 'password'); - $this->assertSame(true, $this->ajaxController->saveGlobalCredentials('MyAdminUid', 'test', 'password')); + $response = $this->ajaxController->saveGlobalCredentials('MyAdminUid', 'test', 'password'); + $this->assertSame($response->getStatus(), 200); } - public function testSaveGlobalCredentialsAsNormalUserForSelf() { + public function testSaveGlobalCredentialsAsNormalUserForSelf(): void { $user = $this->createMock(IUser::class); $user ->method('getUID') @@ -139,10 +129,11 @@ class AjaxControllerTest extends TestCase { ->method('saveAuth') ->with('MyUserUid', 'test', 'password'); - $this->assertSame(true, $this->ajaxController->saveGlobalCredentials('MyUserUid', 'test', 'password')); + $response = $this->ajaxController->saveGlobalCredentials('MyUserUid', 'test', 'password'); + $this->assertSame($response->getStatus(), 200); } - public function testSaveGlobalCredentialsAsNormalUserForAnotherUser() { + public function testSaveGlobalCredentialsAsNormalUserForAnotherUser(): void { $user = $this->createMock(IUser::class); $user ->method('getUID') @@ -154,6 +145,8 @@ class AjaxControllerTest extends TestCase { ->expects($this->never()) ->method('saveAuth'); - $this->assertSame(false, $this->ajaxController->saveGlobalCredentials('AnotherUserUid', 'test', 'password')); + $response = $this->ajaxController->saveGlobalCredentials('AnotherUserUid', 'test', 'password'); + $this->assertSame($response->getStatus(), 403); + $this->assertSame('Permission denied', $response->getData()['message']); } } diff --git a/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php b/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php index a3c1a7b0dae..74a27eb15e4 100644 --- a/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php +++ b/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php @@ -1,33 +1,16 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Controller; use OC\User\User; use OCA\Files_External\Controller\GlobalStoragesController; use OCA\Files_External\Service\BackendService; +use OCA\Files_External\Service\GlobalStoragesService; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IGroupManager; @@ -36,13 +19,11 @@ use OCP\IRequest; use OCP\IUserSession; use Psr\Log\LoggerInterface; -class GlobalStoragesControllerTest extends StoragesControllerTest { +class GlobalStoragesControllerTest extends StoragesControllerTestCase { protected function setUp(): void { parent::setUp(); - $this->service = $this->getMockBuilder('\OCA\Files_External\Service\GlobalStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $this->service = $this->createMock(GlobalStoragesService::class); $this->service->method('getVisibilityType') ->willReturn(BackendService::VISIBILITY_ADMIN); @@ -50,7 +31,7 @@ class GlobalStoragesControllerTest extends StoragesControllerTest { $this->controller = $this->createController(true); } - private function createController($allowCreateLocal = true) { + private function createController(bool $allowCreateLocal = true): GlobalStoragesController { $session = $this->createMock(IUserSession::class); $session->method('getUser') ->willReturn(new User('test', null, $this->createMock(IEventDispatcher::class))); @@ -72,7 +53,7 @@ class GlobalStoragesControllerTest extends StoragesControllerTest { ); } - public function testAddLocalStorageWhenDisabled() { + public function testAddLocalStorageWhenDisabled(): void { $this->controller = $this->createController(false); parent::testAddLocalStorageWhenDisabled(); } diff --git a/apps/files_external/tests/Controller/StoragesControllerTest.php b/apps/files_external/tests/Controller/StoragesControllerTestCase.php index fdaf6e2261f..1eb52f9b459 100644 --- a/apps/files_external/tests/Controller/StoragesControllerTest.php +++ b/apps/files_external/tests/Controller/StoragesControllerTestCase.php @@ -1,97 +1,71 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Controller; use OCA\Files_External\Controller\GlobalStoragesController; +use OCA\Files_External\Controller\UserStoragesController; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\Auth\NullMechanism; use OCA\Files_External\Lib\Backend\Backend; - +use OCA\Files_External\Lib\Backend\SMB; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use PHPUnit\Framework\MockObject\MockObject; -abstract class StoragesControllerTest extends \Test\TestCase { - - /** - * @var GlobalStoragesController - */ - protected $controller; - - /** - * @var GlobalStoragesService|UserStoragesService|MockObject - */ - protected $service; +abstract class StoragesControllerTestCase extends \Test\TestCase { + protected GlobalStoragesController|UserStoragesController $controller; + protected GlobalStoragesService|UserStoragesService|MockObject $service; protected function setUp(): void { - \OCA\Files_External\MountConfig::$skipTest = true; + parent::setUp(); + MountConfig::$skipTest = true; } protected function tearDown(): void { - \OCA\Files_External\MountConfig::$skipTest = false; + MountConfig::$skipTest = false; + parent::tearDown(); } /** - * @return \OCA\Files_External\Lib\Backend\Backend|MockObject + * @return \OCA\Files_External\Lib\Backend\Backend&MockObject */ - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getBackendMock($class = SMB::class, $storageClass = \OCA\Files_External\Lib\Storage\SMB::class) { + $backend = $this->createMock(Backend::class); $backend->method('getStorageClass') ->willReturn($storageClass); $backend->method('getIdentifier') - ->willReturn('identifier:'.$class); + ->willReturn('identifier:' . $class); $backend->method('getParameters') ->willReturn([]); return $backend; } /** - * @return \OCA\Files_External\Lib\Auth\AuthMechanism|MockObject + * @return AuthMechanism|MockObject */ - protected function getAuthMechMock($scheme = 'null', $class = '\OCA\Files_External\Lib\Auth\NullMechanism') { - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getAuthMechMock($scheme = 'null', $class = NullMechanism::class) { + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getScheme') ->willReturn($scheme); $authMech->method('getIdentifier') - ->willReturn('identifier:'.$class); + ->willReturn('identifier:' . $class); $authMech->method('getParameters') ->willReturn([]); return $authMech; } - public function testAddStorage() { + public function testAddStorage(): void { $authMech = $this->getAuthMechMock(); $authMech->method('validateStorage') ->willReturn(true); @@ -118,8 +92,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -132,7 +106,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals($storageConfig->jsonSerialize(), $data); } - public function testAddLocalStorageWhenDisabled() { + public function testAddLocalStorageWhenDisabled(): void { $authMech = $this->getAuthMechMock(); $backend = $this->getBackendMock(); @@ -150,7 +124,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', 'local', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -162,7 +136,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals(Http::STATUS_FORBIDDEN, $response->getStatus()); } - public function testUpdateStorage() { + public function testUpdateStorage(): void { $authMech = $this->getAuthMechMock(); $authMech->method('validateStorage') ->willReturn(true); @@ -190,8 +164,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -204,7 +178,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals($storageConfig->jsonSerialize(), $data); } - public function mountPointNamesProvider() { + public static function mountPointNamesProvider(): array { return [ [''], ['/'], @@ -212,10 +186,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { ]; } - /** - * @dataProvider mountPointNamesProvider - */ - public function testAddOrUpdateStorageInvalidMountPoint($mountPoint) { + #[\PHPUnit\Framework\Attributes\DataProvider('mountPointNamesProvider')] + public function testAddOrUpdateStorageInvalidMountPoint($mountPoint): void { $storageConfig = new StorageConfig(1); $storageConfig->setMountPoint($mountPoint); $storageConfig->setBackend($this->getBackendMock()); @@ -232,8 +204,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( $mountPoint, - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -246,8 +218,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, $mountPoint, - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -258,10 +230,10 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals(Http::STATUS_UNPROCESSABLE_ENTITY, $response->getStatus()); } - public function testAddOrUpdateStorageInvalidBackend() { + public function testAddOrUpdateStorageInvalidBackend(): void { $this->service->expects($this->exactly(2)) ->method('createStorage') - ->will($this->throwException(new \InvalidArgumentException())); + ->willThrowException(new \InvalidArgumentException()); $this->service->expects($this->never()) ->method('addStorage'); $this->service->expects($this->never()) @@ -270,7 +242,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', '\OC\Files\Storage\InvalidStorage', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -284,7 +256,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { 1, 'mount', '\OC\Files\Storage\InvalidStorage', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -295,7 +267,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals(Http::STATUS_UNPROCESSABLE_ENTITY, $response->getStatus()); } - public function testUpdateStorageNonExisting() { + public function testUpdateStorageNonExisting(): void { $authMech = $this->getAuthMechMock(); $authMech->method('validateStorage') ->willReturn(true); @@ -318,13 +290,13 @@ abstract class StoragesControllerTest extends \Test\TestCase { ->willReturn($storageConfig); $this->service->expects($this->once()) ->method('updateStorage') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); $response = $this->controller->update( 255, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -335,7 +307,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals(Http::STATUS_NOT_FOUND, $response->getStatus()); } - public function testDeleteStorage() { + public function testDeleteStorage(): void { $this->service->expects($this->once()) ->method('removeStorage'); @@ -343,16 +315,16 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals(Http::STATUS_NO_CONTENT, $response->getStatus()); } - public function testDeleteStorageNonExisting() { + public function testDeleteStorageNonExisting(): void { $this->service->expects($this->once()) ->method('removeStorage') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); $response = $this->controller->destroy(255); $this->assertEquals(Http::STATUS_NOT_FOUND, $response->getStatus()); } - public function testGetStorage() { + public function testGetStorage(): void { $backend = $this->getBackendMock(); $authMech = $this->getAuthMechMock(); $storageConfig = new StorageConfig(1); @@ -374,7 +346,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals($expected, $response->getData()); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, true, true], [false, true, false], @@ -383,10 +355,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { ]; } - /** - * @dataProvider validateStorageProvider - */ - public function testValidateStorage($backendValidate, $authMechValidate, $expectSuccess) { + #[\PHPUnit\Framework\Attributes\DataProvider('validateStorageProvider')] + public function testValidateStorage(bool $backendValidate, bool $authMechValidate, bool $expectSuccess): void { $backend = $this->getBackendMock(); $backend->method('validateStorage') ->willReturn($backendValidate); @@ -421,8 +391,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], diff --git a/apps/files_external/tests/Controller/UserStoragesControllerTest.php b/apps/files_external/tests/Controller/UserStoragesControllerTest.php index 793a90c527b..3e8d89ec060 100644 --- a/apps/files_external/tests/Controller/UserStoragesControllerTest.php +++ b/apps/files_external/tests/Controller/UserStoragesControllerTest.php @@ -1,35 +1,19 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Controller; use OC\User\User; use OCA\Files_External\Controller\UserStoragesController; +use OCA\Files_External\Lib\Storage\SMB; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Service\BackendService; +use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; @@ -39,18 +23,16 @@ use OCP\IRequest; use OCP\IUserSession; use Psr\Log\LoggerInterface; -class UserStoragesControllerTest extends StoragesControllerTest { +class UserStoragesControllerTest extends StoragesControllerTestCase { /** * @var array */ - private $oldAllowedBackends; + private array $oldAllowedBackends; protected function setUp(): void { parent::setUp(); - $this->service = $this->getMockBuilder('\OCA\Files_External\Service\UserStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $this->service = $this->createMock(UserStoragesService::class); $this->service->method('getVisibilityType') ->willReturn(BackendService::VISIBILITY_PERSONAL); @@ -58,7 +40,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $this->controller = $this->createController(true); } - private function createController($allowCreateLocal = true) { + private function createController(bool $allowCreateLocal = true) { $session = $this->createMock(IUserSession::class); $session->method('getUser') ->willReturn(new User('test', null, $this->createMock(IEventDispatcher::class))); @@ -80,12 +62,12 @@ class UserStoragesControllerTest extends StoragesControllerTest { ); } - public function testAddLocalStorageWhenDisabled() { + public function testAddLocalStorageWhenDisabled(): void { $this->controller = $this->createController(false); parent::testAddLocalStorageWhenDisabled(); } - public function testAddOrUpdateStorageDisallowedBackend() { + public function testAddOrUpdateStorageDisallowedBackend(): void { $backend = $this->getBackendMock(); $backend->method('isVisibleFor') ->with(BackendService::VISIBILITY_PERSONAL) @@ -108,7 +90,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', + SMB::class, '\Auth\Mechanism', [], [], @@ -122,7 +104,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->update( 1, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', + SMB::class, '\Auth\Mechanism', [], [], diff --git a/apps/files_external/tests/DefinitionParameterTest.php b/apps/files_external/tests/DefinitionParameterTest.php index 04d5f6762c5..c535481bf66 100644 --- a/apps/files_external/tests/DefinitionParameterTest.php +++ b/apps/files_external/tests/DefinitionParameterTest.php @@ -1,32 +1,17 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; use OCA\Files_External\Lib\DefinitionParameter as Param; class DefinitionParameterTest extends \Test\TestCase { - public function testJsonSerialization() { + public function testJsonSerialization(): void { $param = new Param('foo', 'bar'); $this->assertEquals([ 'value' => 'bar', @@ -55,21 +40,22 @@ class DefinitionParameterTest extends \Test\TestCase { 'tooltip' => '', ], $param->jsonSerialize()); - $param->setType(Param::VALUE_HIDDEN); - $param->setFlags(Param::FLAG_NONE); + $param->setType(Param::VALUE_TEXT); + $param->setFlags(Param::FLAG_HIDDEN); $this->assertEquals([ 'value' => 'bar', - 'flags' => Param::FLAG_NONE, - 'type' => Param::VALUE_HIDDEN, + 'flags' => Param::FLAG_HIDDEN, + 'type' => Param::VALUE_TEXT, 'tooltip' => '', ], $param->jsonSerialize()); } - public function validateValueProvider() { + public static function validateValueProvider(): array { return [ [Param::VALUE_TEXT, Param::FLAG_NONE, 'abc', true], [Param::VALUE_TEXT, Param::FLAG_NONE, '', false], [Param::VALUE_TEXT, Param::FLAG_OPTIONAL, '', true], + [Param::VALUE_TEXT, Param::FLAG_HIDDEN, '', false], [Param::VALUE_BOOLEAN, Param::FLAG_NONE, false, true], [Param::VALUE_BOOLEAN, Param::FLAG_NONE, 123, false], @@ -79,15 +65,11 @@ class DefinitionParameterTest extends \Test\TestCase { [Param::VALUE_PASSWORD, Param::FLAG_NONE, 'foobar', true], [Param::VALUE_PASSWORD, Param::FLAG_NONE, '', false], - - [Param::VALUE_HIDDEN, Param::FLAG_NONE, '', false] ]; } - /** - * @dataProvider validateValueProvider - */ - public function testValidateValue($type, $flags, $value, $success, $expectedValue = null) { + #[\PHPUnit\Framework\Attributes\DataProvider('validateValueProvider')] + public function testValidateValue($type, $flags, $value, $success, $expectedValue = null): void { $param = new Param('foo', 'bar'); $param->setType($type); $param->setFlags($flags); diff --git a/apps/files_external/tests/FrontendDefinitionTraitTest.php b/apps/files_external/tests/FrontendDefinitionTraitTest.php index 22593a81afa..e0bf066e70a 100644 --- a/apps/files_external/tests/FrontendDefinitionTraitTest.php +++ b/apps/files_external/tests/FrontendDefinitionTraitTest.php @@ -1,40 +1,24 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; use OCA\Files_External\Lib\DefinitionParameter; +use OCA\Files_External\Lib\FrontendDefinitionTrait; use OCA\Files_External\Lib\StorageConfig; class FrontendDefinitionTraitTest extends \Test\TestCase { - public function testJsonSerialization() { + public function testJsonSerialization(): void { $param = $this->getMockBuilder(DefinitionParameter::class) ->disableOriginalConstructor() ->getMock(); $param->method('getName')->willReturn('foo'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameters([$param]); $trait->addCustomJs('foo/bar.js'); @@ -50,17 +34,15 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $this->assertArrayHasKey('foo', $configuration); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, ['foo' => true, 'bar' => true, 'baz' => true]], [false, ['foo' => true, 'bar' => false]] ]; } - /** - * @dataProvider validateStorageProvider - */ - public function testValidateStorage($expectedSuccess, $params) { + #[\PHPUnit\Framework\Attributes\DataProvider('validateStorageProvider')] + public function testValidateStorage(bool $expectedSuccess, array $params): void { $backendParams = []; foreach ($params as $name => $valid) { $param = $this->getMockBuilder(DefinitionParameter::class) @@ -85,14 +67,14 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $storageConfig->expects($this->any()) ->method('setBackendOption'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameters($backendParams); $this->assertEquals($expectedSuccess, $trait->validateStorageDefinition($storageConfig)); } - public function testValidateStorageSet() { + public function testValidateStorageSet(): void { $param = $this->getMockBuilder(DefinitionParameter::class) ->disableOriginalConstructor() ->getMock(); @@ -116,7 +98,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->method('setBackendOption') ->with('param', 'foobar'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameter($param); diff --git a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php index b905f24fb1a..d26aa752ea1 100644 --- a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php +++ b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php @@ -1,27 +1,14 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; +use OCA\Files_External\Lib\LegacyDependencyCheckPolyfill; use OCA\Files_External\Lib\MissingDependency; class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { @@ -29,18 +16,18 @@ class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { /** * @return MissingDependency[] */ - public static function checkDependencies() { + public static function checkDependencies(): array { return [ (new MissingDependency('dependency'))->setMessage('missing dependency'), (new MissingDependency('program'))->setMessage('cannot find program'), ]; } - public function testCheckDependencies() { - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\LegacyDependencyCheckPolyfill'); + public function testCheckDependencies(): void { + $trait = $this->getMockForTrait(LegacyDependencyCheckPolyfill::class); $trait->expects($this->once()) ->method('getStorageClass') - ->willReturn('\OCA\Files_External\Tests\LegacyDependencyCheckPolyfillTest'); + ->willReturn(self::class); $dependencies = $trait->checkDependencies(); $this->assertCount(2, $dependencies); diff --git a/apps/files_external/tests/Listener/StorePasswordListenerTest.php b/apps/files_external/tests/Listener/StorePasswordListenerTest.php index f6521b39410..04635b7dafd 100644 --- a/apps/files_external/tests/Listener/StorePasswordListenerTest.php +++ b/apps/files_external/tests/Listener/StorePasswordListenerTest.php @@ -3,25 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2023, Louis Chmn <louis@chmn.me> - * - * @author Louis Chmn <louis@chmn.me> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Tests\Listener; @@ -39,15 +22,12 @@ use Test\TestCase; * @group DB */ class StorePasswordListenerTest extends TestCase { - /** @var MockObject|IUser */ - protected $mockedUser; + protected IUser&MockObject $mockedUser; protected function setUp(): void { parent::setUp(); $this->mockedUser = $this->createMock(IUser::class); - $this->mockedUser - ->expects($this->any()) - ->method('getUID') + $this->mockedUser->method('getUID') ->willReturn('test'); } @@ -93,7 +73,7 @@ class StorePasswordListenerTest extends TestCase { $storePasswordListener->handle($event); } - public function testClassicLoginSameCredentials() { + public function testClassicLoginSameCredentials(): void { $this->getMockedCredentialManager( [ 'user' => 'test', @@ -104,7 +84,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testClassicLoginNewPassword() { + public function testClassicLoginNewPassword(): void { $this->getMockedCredentialManager( [ 'user' => 'test', @@ -118,7 +98,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testClassicLoginNewUser() { + public function testClassicLoginNewUser(): void { $this->getMockedCredentialManager( [ 'user' => 'test', @@ -132,7 +112,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testSSOLogin() { + public function testSSOLogin(): void { $this->getMockedCredentialManager( [ 'user' => 'test', @@ -143,7 +123,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testPasswordUpdated() { + public function testPasswordUpdated(): void { $this->getMockedCredentialManager( [ 'user' => 'test', @@ -157,7 +137,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testUserLoginWithToken() { + public function testUserLoginWithToken(): void { $this->getMockedCredentialManager( null, new UserLoggedInEvent($this->mockedUser, 'test', 'password', true), @@ -165,7 +145,7 @@ class StorePasswordListenerTest extends TestCase { ); } - public function testNoInitialCredentials() { + public function testNoInitialCredentials(): void { $this->getMockedCredentialManager( false, new PasswordUpdatedEvent($this->mockedUser, 'test', 'password'), diff --git a/apps/files_external/tests/OwnCloudFunctionsTest.php b/apps/files_external/tests/OwnCloudFunctionsTest.php index 0564fa6a727..2e052cb86b0 100644 --- a/apps/files_external/tests/OwnCloudFunctionsTest.php +++ b/apps/files_external/tests/OwnCloudFunctionsTest.php @@ -1,30 +1,15 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; +use OCA\Files_External\Lib\Storage\OwnCloud; + /** * Class OwnCloudFunctions * @@ -33,7 +18,7 @@ namespace OCA\Files_External\Tests; * @package OCA\Files_External\Tests */ class OwnCloudFunctionsTest extends \Test\TestCase { - public function configUrlProvider() { + public static function configUrlProvider(): array { return [ [ [ @@ -102,13 +87,11 @@ class OwnCloudFunctionsTest extends \Test\TestCase { ]; } - /** - * @dataProvider configUrlProvider - */ - public function testConfig($config, $expectedUri) { + #[\PHPUnit\Framework\Attributes\DataProvider('configUrlProvider')] + public function testConfig(array $config, string $expectedUri): void { $config['user'] = 'someuser'; $config['password'] = 'somepassword'; - $instance = new \OCA\Files_External\Lib\Storage\OwnCloud($config); + $instance = new OwnCloud($config); $this->assertEquals($expectedUri, $instance->createBaseUri()); } } diff --git a/apps/files_external/tests/PersonalMountTest.php b/apps/files_external/tests/PersonalMountTest.php index f2b270f087f..618048c3335 100644 --- a/apps/files_external/tests/PersonalMountTest.php +++ b/apps/files_external/tests/PersonalMountTest.php @@ -1,46 +1,28 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Julius Härtl <jus@bitgrid.net> - * @author Robin Appelman <robin@icewind.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; use OC\Files\Mount\Manager; use OC\Files\SetupManagerFactory; +use OC\Files\Storage\Storage; use OCA\Files_External\Lib\PersonalMount; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\Service\UserStoragesService; use Test\TestCase; class PersonalMountTest extends TestCase { - public function testFindByStorageId() { + public function testFindByStorageId(): void { $storageConfig = $this->createMock(StorageConfig::class); - /** @var \OCA\Files_External\Service\UserStoragesService $storageService */ - $storageService = $this->getMockBuilder('\OCA\Files_External\Service\UserStoragesService') - ->disableOriginalConstructor() - ->getMock(); - - $storage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(); + /** @var UserStoragesService $storageService */ + $storageService = $this->createMock(UserStoragesService::class); + + $storage = $this->createMock(Storage::class); $storage->expects($this->any()) ->method('getId') diff --git a/apps/files_external/tests/README.md b/apps/files_external/tests/README.md index 202ae8eee9a..4af03516860 100644 --- a/apps/files_external/tests/README.md +++ b/apps/files_external/tests/README.md @@ -1,3 +1,8 @@ +<!-- + - SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + - SPDX-FileCopyrightText: 2015 ownCloud, Inc. + - SPDX-License-Identifier: AGPL-3.0-only +--> # How to run the files external unit tests ## Components diff --git a/apps/files_external/tests/Service/BackendServiceTest.php b/apps/files_external/tests/Service/BackendServiceTest.php index 9190b63b5d8..ef545688040 100644 --- a/apps/files_external/tests/Service/BackendServiceTest.php +++ b/apps/files_external/tests/Service/BackendServiceTest.php @@ -1,27 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; @@ -31,54 +13,45 @@ use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\Config\IAuthMechanismProvider; use OCA\Files_External\Lib\Config\IBackendProvider; use OCA\Files_External\Service\BackendService; -use OCP\IConfig; +use OCP\IAppConfig; +use PHPUnit\Framework\MockObject\MockObject; class BackendServiceTest extends \Test\TestCase { - - /** @var \OCP\IConfig|\PHPUnit\Framework\MockObject\MockObject */ - protected $config; + protected IAppConfig&MockObject $appConfig; protected function setUp(): void { - $this->config = $this->createMock(IConfig::class); + $this->appConfig = $this->createMock(IAppConfig::class); } /** - * @param string $class - * - * @return \OCA\Files_External\Lib\Backend\Backend|\PHPUnit\Framework\MockObject\MockObject + * @return \OCA\Files_External\Lib\Backend\Backend&MockObject */ - protected function getBackendMock($class) { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); - $backend->method('getIdentifier')->willReturn('identifier:'.$class); - $backend->method('getIdentifierAliases')->willReturn(['identifier:'.$class]); + protected function getBackendMock(string $class) { + $backend = $this->createMock(Backend::class); + $backend->method('getIdentifier')->willReturn('identifier:' . $class); + $backend->method('getIdentifierAliases')->willReturn(['identifier:' . $class]); return $backend; } /** * @param string $class * - * @return \OCA\Files_External\Lib\Auth\AuthMechanism|\PHPUnit\Framework\MockObject\MockObject + * @return AuthMechanism&MockObject */ protected function getAuthMechanismMock($class) { - $backend = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); - $backend->method('getIdentifier')->willReturn('identifier:'.$class); - $backend->method('getIdentifierAliases')->willReturn(['identifier:'.$class]); + $backend = $this->createMock(AuthMechanism::class); + $backend->method('getIdentifier')->willReturn('identifier:' . $class); + $backend->method('getIdentifierAliases')->willReturn(['identifier:' . $class]); return $backend; } - public function testRegisterBackend() { - $service = new BackendService($this->config); + public function testRegisterBackend(): void { + $service = new BackendService($this->appConfig); $backend = $this->getBackendMock('\Foo\Bar'); - /** @var \OCA\Files_External\Lib\Backend\Backend|\PHPUnit\Framework\MockObject\MockObject $backendAlias */ - $backendAlias = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var \OCA\Files_External\Lib\Backend\Backend&MockObject $backendAlias */ + $backendAlias = $this->createMock(Backend::class); $backendAlias->method('getIdentifierAliases') ->willReturn(['identifier_real', 'identifier_alias']); $backendAlias->method('getIdentifier') @@ -98,13 +71,13 @@ class BackendServiceTest extends \Test\TestCase { $this->assertArrayNotHasKey('identifier_alias', $backends); } - public function testBackendProvider() { - $service = new BackendService($this->config); + public function testBackendProvider(): void { + $service = new BackendService($this->appConfig); $backend1 = $this->getBackendMock('\Foo\Bar'); $backend2 = $this->getBackendMock('\Bar\Foo'); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $providerMock */ + /** @var IBackendProvider&MockObject $providerMock */ $providerMock = $this->createMock(IBackendProvider::class); $providerMock->expects($this->once()) ->method('getBackends') @@ -117,13 +90,13 @@ class BackendServiceTest extends \Test\TestCase { $this->assertCount(2, $service->getBackends()); } - public function testAuthMechanismProvider() { - $service = new BackendService($this->config); + public function testAuthMechanismProvider(): void { + $service = new BackendService($this->appConfig); $backend1 = $this->getAuthMechanismMock('\Foo\Bar'); $backend2 = $this->getAuthMechanismMock('\Bar\Foo'); - /** @var IAuthMechanismProvider|\PHPUnit\Framework\MockObject\MockObject $providerMock */ + /** @var IAuthMechanismProvider&MockObject $providerMock */ $providerMock = $this->createMock(IAuthMechanismProvider::class); $providerMock->expects($this->once()) ->method('getAuthMechanisms') @@ -136,21 +109,21 @@ class BackendServiceTest extends \Test\TestCase { $this->assertCount(2, $service->getAuthMechanisms()); } - public function testMultipleBackendProviders() { - $service = new BackendService($this->config); + public function testMultipleBackendProviders(): void { + $service = new BackendService($this->appConfig); $backend1a = $this->getBackendMock('\Foo\Bar'); $backend1b = $this->getBackendMock('\Bar\Foo'); $backend2 = $this->getBackendMock('\Dead\Beef'); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $provider1Mock */ + /** @var IBackendProvider&MockObject $provider1Mock */ $provider1Mock = $this->createMock(IBackendProvider::class); $provider1Mock->expects($this->once()) ->method('getBackends') ->willReturn([$backend1a, $backend1b]); $service->registerBackendProvider($provider1Mock); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $provider2Mock */ + /** @var IBackendProvider&MockObject $provider2Mock */ $provider2Mock = $this->createMock(IBackendProvider::class); $provider2Mock->expects($this->once()) ->method('getBackends') @@ -164,15 +137,17 @@ class BackendServiceTest extends \Test\TestCase { $this->assertCount(3, $service->getBackends()); } - public function testUserMountingBackends() { - $this->config->expects($this->exactly(2)) - ->method('getAppValue') - ->willReturnMap([ - ['files_external', 'allow_user_mounting', 'yes', 'yes'], - ['files_external', 'user_mounting_backends', '', 'identifier:\User\Mount\Allowed,identifier_alias'] - ]); + public function testUserMountingBackends(): void { + $this->appConfig->expects($this->once()) + ->method('getValueString') + ->with('files_external', 'user_mounting_backends') + ->willReturn('identifier:\User\Mount\Allowed,identifier_alias'); + $this->appConfig->expects($this->once()) + ->method('getValueBool') + ->with('files_external', 'allow_user_mounting') + ->willReturn(true); - $service = new BackendService($this->config); + $service = new BackendService($this->appConfig); $backendAllowed = $this->getBackendMock('\User\Mount\Allowed'); $backendAllowed->expects($this->never()) @@ -195,8 +170,8 @@ class BackendServiceTest extends \Test\TestCase { $service->registerBackend($backendAlias); } - public function testGetAvailableBackends() { - $service = new BackendService($this->config); + public function testGetAvailableBackends(): void { + $service = new BackendService($this->appConfig); $backendAvailable = $this->getBackendMock('\Backend\Available'); $backendAvailable->expects($this->once()) @@ -219,7 +194,7 @@ class BackendServiceTest extends \Test\TestCase { $this->assertArrayNotHasKey('identifier:\Backend\NotAvailable', $availableBackends); } - public function invalidConfigPlaceholderProvider() { + public static function invalidConfigPlaceholderProvider(): array { return [ [['@user']], [['$user']], @@ -233,13 +208,11 @@ class BackendServiceTest extends \Test\TestCase { ]; } - /** - * @dataProvider invalidConfigPlaceholderProvider - */ - public function testRegisterConfigHandlerInvalid(array $placeholders) { + #[\PHPUnit\Framework\Attributes\DataProvider('invalidConfigPlaceholderProvider')] + public function testRegisterConfigHandlerInvalid(array $placeholders): void { $this->expectException(\RuntimeException::class); - $service = new BackendService($this->config); + $service = new BackendService($this->appConfig); $mock = $this->createMock(IConfigHandler::class); $cb = function () use ($mock) { return $mock; @@ -249,8 +222,8 @@ class BackendServiceTest extends \Test\TestCase { } } - public function testConfigHandlers() { - $service = new BackendService($this->config); + public function testConfigHandlers(): void { + $service = new BackendService($this->appConfig); $mock = $this->createMock(IConfigHandler::class); $mock->expects($this->exactly(3)) ->method('handle'); diff --git a/apps/files_external/tests/Service/DBConfigServiceTest.php b/apps/files_external/tests/Service/DBConfigServiceTest.php index 2842bfd1b66..85d8b70fda7 100644 --- a/apps/files_external/tests/Service/DBConfigServiceTest.php +++ b/apps/files_external/tests/Service/DBConfigServiceTest.php @@ -1,52 +1,32 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; use OCA\Files_External\Service\DBConfigService; use OCP\IDBConnection; +use OCP\Security\ICrypto; +use OCP\Server; use Test\TestCase; /** * @group DB */ class DBConfigServiceTest extends TestCase { - /** - * @var DBConfigService - */ - private $dbConfig; - - /** - * @var IDBConnection - */ - private $connection; + private IDBConnection $connection; + private DBConfigService $dbConfig; - private $mounts = []; + private array $mounts = []; protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); - $this->dbConfig = new DBConfigService($this->connection, \OC::$server->getCrypto()); + $this->connection = Server::get(IDBConnection::class); + $this->dbConfig = new DBConfigService($this->connection, Server::get(ICrypto::class)); } protected function tearDown(): void { @@ -54,15 +34,16 @@ class DBConfigServiceTest extends TestCase { $this->dbConfig->removeMount($mount); } $this->mounts = []; + parent::tearDown(); } - private function addMount($mountPoint, $storageBackend, $authBackend, $priority, $type) { + private function addMount(string $mountPoint, string $storageBackend, string $authBackend, int $priority, int $type) { $id = $this->dbConfig->addMount($mountPoint, $storageBackend, $authBackend, $priority, $type); $this->mounts[] = $id; return $id; } - public function testAddSimpleMount() { + public function testAddSimpleMount(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $mount = $this->dbConfig->getMountById($id); @@ -76,7 +57,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([], $mount['options']); } - public function testAddApplicable() { + public function testAddApplicable(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_USER, 'test'); @@ -89,14 +70,14 @@ class DBConfigServiceTest extends TestCase { $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_GLOBAL, null); $mount = $this->dbConfig->getMountById($id); - $this->assertEquals([ + $this->assertEqualsCanonicalizing([ ['type' => DBConfigService::APPLICABLE_TYPE_USER, 'value' => 'test', 'mount_id' => $id], ['type' => DBConfigService::APPLICABLE_TYPE_GROUP, 'value' => 'bar', 'mount_id' => $id], ['type' => DBConfigService::APPLICABLE_TYPE_GLOBAL, 'value' => null, 'mount_id' => $id] ], $mount['applicable']); } - public function testAddApplicableDouble() { + public function testAddApplicableDouble(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_USER, 'test'); $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_USER, 'test'); @@ -107,7 +88,7 @@ class DBConfigServiceTest extends TestCase { ], $mount['applicable']); } - public function testDeleteMount() { + public function testDeleteMount(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->removeMount($id); @@ -116,7 +97,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals(null, $mount); } - public function testRemoveApplicable() { + public function testRemoveApplicable(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_USER, 'test'); $this->dbConfig->removeApplicable($id, DBConfigService::APPLICABLE_TYPE_USER, 'test'); @@ -125,7 +106,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([], $mount['applicable']); } - public function testRemoveApplicableGlobal() { + public function testRemoveApplicableGlobal(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_GLOBAL, null); $this->dbConfig->removeApplicable($id, DBConfigService::APPLICABLE_TYPE_GLOBAL, null); @@ -137,7 +118,7 @@ class DBConfigServiceTest extends TestCase { ], $mount['applicable']); } - public function testSetConfig() { + public function testSetConfig(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->setConfig($id, 'foo', 'bar'); @@ -150,7 +131,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals(['foo' => 'bar', 'foo2' => 'bar2'], $mount['config']); } - public function testSetConfigOverwrite() { + public function testSetConfigOverwrite(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->setConfig($id, 'foo', 'bar'); $this->dbConfig->setConfig($id, 'asd', '1'); @@ -160,7 +141,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals(['foo' => 'qwerty', 'asd' => '1'], $mount['config']); } - public function testSetOption() { + public function testSetOption(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->setOption($id, 'foo', 'bar'); @@ -173,7 +154,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals(['foo' => 'bar', 'foo2' => 'bar2'], $mount['options']); } - public function testSetOptionOverwrite() { + public function testSetOptionOverwrite(): void { $id = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->setOption($id, 'foo', 'bar'); $this->dbConfig->setOption($id, 'asd', '1'); @@ -183,7 +164,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals(['foo' => 'qwerty', 'asd' => '1'], $mount['options']); } - public function testGetMountsFor() { + public function testGetMountsFor(): void { $mounts = $this->dbConfig->getMountsFor(DBConfigService::APPLICABLE_TYPE_USER, 'test'); $this->assertEquals([], $mounts); @@ -196,7 +177,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_USER, 'value' => 'test', 'mount_id' => $id]], $mounts[0]['applicable']); } - public function testGetAdminMounts() { + public function testGetAdminMounts(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->addMount('/test2', 'foo2', 'bar2', 100, DBConfigService::MOUNT_TYPE_PERSONAL); @@ -205,7 +186,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals($id1, $mounts[0]['mount_id']); } - public function testGetAdminMountsFor() { + public function testGetAdminMountsFor(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->addMount('/test2', 'foo2', 'bar2', 100, DBConfigService::MOUNT_TYPE_ADMIN); $id3 = $this->addMount('/test3', 'foo3', 'bar3', 100, DBConfigService::MOUNT_TYPE_PERSONAL); @@ -219,7 +200,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_USER, 'value' => 'test', 'mount_id' => $id1]], $mounts[0]['applicable']); } - public function testGetUserMountsFor() { + public function testGetUserMountsFor(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->addMount('/test2', 'foo2', 'bar2', 100, DBConfigService::MOUNT_TYPE_PERSONAL); $id3 = $this->addMount('/test3', 'foo3', 'bar3', 100, DBConfigService::MOUNT_TYPE_PERSONAL); @@ -233,7 +214,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_USER, 'value' => 'test', 'mount_id' => $id3]], $mounts[0]['applicable']); } - public function testGetAdminMountsForGlobal() { + public function testGetAdminMountsForGlobal(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id1, DBConfigService::APPLICABLE_TYPE_GLOBAL, null); @@ -244,7 +225,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_GLOBAL, 'value' => null, 'mount_id' => $id1]], $mounts[0]['applicable']); } - public function testSetMountPoint() { + public function testSetMountPoint(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); @@ -258,7 +239,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals('/foo', $mount['mount_point']); } - public function testSetAuthBackend() { + public function testSetAuthBackend(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); @@ -272,7 +253,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals('bar', $mount['auth_backend']); } - public function testGetMountsForDuplicateByGroup() { + public function testGetMountsForDuplicateByGroup(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $this->dbConfig->addApplicable($id1, DBConfigService::APPLICABLE_TYPE_GROUP, 'group1'); @@ -283,7 +264,7 @@ class DBConfigServiceTest extends TestCase { $this->assertEquals($id1, $mounts[0]['mount_id']); } - public function testGetAllMounts() { + public function testGetAllMounts(): void { $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN); $id2 = $this->addMount('/test2', 'foo2', 'bar2', 100, DBConfigService::MOUNT_TYPE_PERSONAL); diff --git a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php index 7d77ea971f3..0a3749981c8 100644 --- a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php @@ -1,40 +1,22 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; use OC\Files\Filesystem; +use OCA\Files_External\MountConfig; use OCA\Files_External\Service\GlobalStoragesService; /** * @group DB */ -class GlobalStoragesServiceTest extends StoragesServiceTest { +class GlobalStoragesServiceTest extends StoragesServiceTestCase { protected function setUp(): void { parent::setUp(); $this->service = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache, $this->eventDispatcher); @@ -64,7 +46,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]); } - public function storageDataProvider() { + public static function storageDataProvider(): array { return [ // all users [ @@ -133,10 +115,8 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]; } - /** - * @dataProvider storageDataProvider - */ - public function testAddStorage($storageParams) { + #[\PHPUnit\Framework\Attributes\DataProvider('storageDataProvider')] + public function testAddStorage($storageParams): void { $storage = $this->makeStorageConfig($storageParams); $newStorage = $this->service->addStorage($storage); @@ -157,10 +137,8 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { $this->assertEquals($baseId + 1, $nextStorage->getId()); } - /** - * @dataProvider storageDataProvider - */ - public function testUpdateStorage($updatedStorageParams) { + #[\PHPUnit\Framework\Attributes\DataProvider('storageDataProvider')] + public function testUpdateStorage($updatedStorageParams): void { $updatedStorage = $this->makeStorageConfig($updatedStorageParams); $storage = $this->makeStorageConfig([ 'mountPoint' => 'mountpoint', @@ -186,13 +164,13 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { $this->assertEquals($updatedStorage->getMountPoint(), $newStorage->getMountPoint()); $this->assertEquals($updatedStorage->getBackendOptions()['password'], $newStorage->getBackendOptions()['password']); - $this->assertEquals($updatedStorage->getApplicableUsers(), $newStorage->getApplicableUsers()); + $this->assertEqualsCanonicalizing($updatedStorage->getApplicableUsers(), $newStorage->getApplicableUsers()); $this->assertEquals($updatedStorage->getApplicableGroups(), $newStorage->getApplicableGroups()); $this->assertEquals($updatedStorage->getPriority(), $newStorage->getPriority()); $this->assertEquals(0, $newStorage->getStatus()); } - public function hooksAddStorageDataProvider() { + public static function hooksAddStorageDataProvider(): array { return [ // applicable all [ @@ -202,7 +180,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'all' ], ], @@ -215,7 +193,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], ], @@ -228,7 +206,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1', ], ], @@ -240,12 +218,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], ], @@ -258,12 +236,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1' ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -276,22 +254,22 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1' ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -299,10 +277,8 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]; } - /** - * @dataProvider hooksAddStorageDataProvider - */ - public function testHooksAddStorage($applicableUsers, $applicableGroups, $expectedCalls) { + #[\PHPUnit\Framework\Attributes\DataProvider('hooksAddStorageDataProvider')] + public function testHooksAddStorage($applicableUsers, $applicableGroups, $expectedCalls): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers($applicableUsers); $storage->setApplicableGroups($applicableGroups); @@ -321,7 +297,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { } } - public function hooksUpdateStorageDataProvider() { + public static function hooksUpdateStorageDataProvider(): array { return [ [ // nothing to multiple users and groups @@ -334,27 +310,27 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { // delete the "all entry" [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'all', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1' ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -369,12 +345,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -389,12 +365,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -409,18 +385,18 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1' ], // create the "all" entry [ Filesystem::signal_create_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'all' ], ], @@ -437,15 +413,14 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]; } - /** - * @dataProvider hooksUpdateStorageDataProvider - */ + #[\PHPUnit\Framework\Attributes\DataProvider('hooksUpdateStorageDataProvider')] public function testHooksUpdateStorage( - $sourceApplicableUsers, - $sourceApplicableGroups, - $updatedApplicableUsers, - $updatedApplicableGroups, - $expectedCalls) { + array $sourceApplicableUsers, + array $sourceApplicableGroups, + array $updatedApplicableUsers, + array $updatedApplicableGroups, + array $expectedCalls, + ): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers($sourceApplicableUsers); $storage->setApplicableGroups($sourceApplicableGroups); @@ -473,7 +448,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { } - public function testHooksRenameMountPoint() { + public function testHooksRenameMountPoint(): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers(['user1', 'user2']); $storage->setApplicableGroups(['group1', 'group2']); @@ -491,50 +466,50 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1', ], [ Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2', ], // creates new one [ Filesystem::signal_create_mount, '/renamedMountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_create_mount, '/renamedMountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_create_mount, '/renamedMountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1', ], [ Filesystem::signal_create_mount, '/renamedMountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2', ], ]; @@ -552,7 +527,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { } } - public function hooksDeleteStorageDataProvider() { + public static function hooksDeleteStorageDataProvider(): array { return [ [ ['user1', 'user2'], @@ -561,22 +536,22 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user1', ], [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'user2', ], [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group1' ], [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_GROUP, + MountConfig::MOUNT_TYPE_GROUP, 'group2' ], ], @@ -588,7 +563,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { [ [ Filesystem::signal_delete_mount, - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, 'all', ], ], @@ -596,13 +571,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]; } - /** - * @dataProvider hooksDeleteStorageDataProvider - */ + #[\PHPUnit\Framework\Attributes\DataProvider('hooksDeleteStorageDataProvider')] public function testHooksDeleteStorage( - $sourceApplicableUsers, - $sourceApplicableGroups, - $expectedCalls) { + array $sourceApplicableUsers, + array $sourceApplicableGroups, + array $expectedCalls, + ): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers($sourceApplicableUsers); $storage->setApplicableGroups($sourceApplicableGroups); diff --git a/apps/files_external/tests/Service/StoragesServiceTest.php b/apps/files_external/tests/Service/StoragesServiceTestCase.php index 1ea2176ac90..b41eb409468 100644 --- a/apps/files_external/tests/Service/StoragesServiceTest.php +++ b/apps/files_external/tests/Service/StoragesServiceTestCase.php @@ -1,39 +1,23 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; +use OC\Files\Cache\Storage; use OC\Files\Filesystem; - use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Auth\InvalidAuth; +use OCA\Files_External\Lib\Auth\NullMechanism; use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\Backend\InvalidBackend; +use OCA\Files_External\Lib\Backend\SMB; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\DBConfigService; @@ -44,12 +28,16 @@ use OCP\Files\Cache\ICache; use OCP\Files\Config\IUserMountCache; use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage\IStorage; +use OCP\IConfig; use OCP\IDBConnection; use OCP\IUser; +use OCP\Security\ICrypto; use OCP\Server; +use OCP\Util; +use PHPUnit\Framework\MockObject\MockObject; class CleaningDBConfig extends DBConfigService { - private $mountIds = []; + private array $mountIds = []; public function addMount($mountPoint, $storageBackend, $authBackend, $priority, $type) { $id = parent::addMount($mountPoint, $storageBackend, $authBackend, $priority, $type); // TODO: Change the autogenerated stub @@ -67,61 +55,31 @@ class CleaningDBConfig extends DBConfigService { /** * @group DB */ -abstract class StoragesServiceTest extends \Test\TestCase { - /** - * @var StoragesService - */ - protected $service; - - /** @var BackendService */ - protected $backendService; - - /** - * Data directory - * - * @var string - */ - protected $dataDir; - - /** @var CleaningDBConfig */ - protected $dbConfig; - - /** - * Hook calls - * - * @var array - */ - protected static $hookCalls; - - /** - * @var \PHPUnit\Framework\MockObject\MockObject|\OCP\Files\Config\IUserMountCache - */ - protected $mountCache; - - /** - * @var \PHPUnit\Framework\MockObject\MockObject|IEventDispatcher - */ - protected IEventDispatcher $eventDispatcher; +abstract class StoragesServiceTestCase extends \Test\TestCase { + protected StoragesService $service; + protected BackendService $backendService; + protected string $dataDir; + protected CleaningDBConfig $dbConfig; + protected static array $hookCalls; + protected IUserMountCache&MockObject $mountCache; + protected IEventDispatcher&MockObject $eventDispatcher; protected function setUp(): void { parent::setUp(); - $this->dbConfig = new CleaningDBConfig(\OC::$server->getDatabaseConnection(), \OC::$server->getCrypto()); + $this->dbConfig = new CleaningDBConfig(Server::get(IDBConnection::class), Server::get(ICrypto::class)); self::$hookCalls = []; - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $this->dataDir = $config->getSystemValue( 'datadirectory', \OC::$SERVERROOT . '/data/' ); - \OCA\Files_External\MountConfig::$skipTest = true; + MountConfig::$skipTest = true; $this->mountCache = $this->createMock(IUserMountCache::class); $this->eventDispatcher = $this->createMock(IEventDispatcher::class); // prepare BackendService mock - $this->backendService = - $this->getMockBuilder('\OCA\Files_External\Service\BackendService') - ->disableOriginalConstructor() - ->getMock(); + $this->backendService = $this->createMock(BackendService::class); $authMechanisms = [ 'identifier:\Auth\Mechanism' => $this->getAuthMechMock('null', '\Auth\Mechanism'), @@ -164,11 +122,11 @@ abstract class StoragesServiceTest extends \Test\TestCase { ->willReturn($backends); $this->overwriteService(BackendService::class, $this->backendService); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_create_mount, get_class($this), 'createHookCallback'); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_delete_mount, get_class($this), 'deleteHookCallback'); @@ -183,17 +141,16 @@ abstract class StoragesServiceTest extends \Test\TestCase { } protected function tearDown(): void { - \OCA\Files_External\MountConfig::$skipTest = false; + MountConfig::$skipTest = false; self::$hookCalls = []; if ($this->dbConfig) { $this->dbConfig->clean(); } + parent::tearDown(); } - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getBackendMock($class = SMB::class, $storageClass = \OCA\Files_External\Lib\Storage\SMB::class) { + $backend = $this->createMock(Backend::class); $backend->method('getStorageClass') ->willReturn($storageClass); $backend->method('getIdentifier') @@ -201,10 +158,8 @@ abstract class StoragesServiceTest extends \Test\TestCase { return $backend; } - protected function getAuthMechMock($scheme = 'null', $class = '\OCA\Files_External\Lib\Auth\NullMechanism') { - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getAuthMechMock($scheme = 'null', $class = NullMechanism::class) { + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getScheme') ->willReturn($scheme); $authMech->method('getIdentifier') @@ -215,12 +170,8 @@ abstract class StoragesServiceTest extends \Test\TestCase { /** * Creates a StorageConfig instance based on array data - * - * @param array $data - * - * @return StorageConfig storage config instance */ - protected function makeStorageConfig($data) { + protected function makeStorageConfig(array $data): StorageConfig { $storage = new StorageConfig(); if (isset($data['id'])) { $storage->setId($data['id']); @@ -269,13 +220,13 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->service->updateStorage($storage); } - public function testNonExistingStorage() { - $this->expectException(\OCA\Files_External\NotFoundException::class); + public function testNonExistingStorage(): void { + $this->expectException(NotFoundException::class); $this->ActualNonExistingStorageTest(); } - public function deleteStorageDataProvider() { + public static function deleteStorageDataProvider(): array { return [ // regular case, can properly delete the oc_storages entry [ @@ -299,10 +250,8 @@ abstract class StoragesServiceTest extends \Test\TestCase { ]; } - /** - * @dataProvider deleteStorageDataProvider - */ - public function testDeleteStorage($backendOptions, $rustyStorageId) { + #[\PHPUnit\Framework\Attributes\DataProvider('deleteStorageDataProvider')] + public function testDeleteStorage(array $backendOptions, string $rustyStorageId): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\DAV'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); $storage = new StorageConfig(255); @@ -316,10 +265,10 @@ abstract class StoragesServiceTest extends \Test\TestCase { // manually trigger storage entry because normally it happens on first // access, which isn't possible within this test - $storageCache = new \OC\Files\Cache\Storage($rustyStorageId, true, Server::get(IDBConnection::class)); + $storageCache = new Storage($rustyStorageId, true, Server::get(IDBConnection::class)); /** @var IUserMountCache $mountCache */ - $mountCache = \OC::$server->get(IUserMountCache::class); + $mountCache = Server::get(IUserMountCache::class); $mountCache->clear(); $user = $this->createMock(IUser::class); $user->method('getUID')->willReturn('test'); @@ -358,7 +307,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertTrue($caught); // storage id was removed from oc_storages - $qb = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $qb = Server::get(IDBConnection::class)->getQueryBuilder(); $storageCheckQuery = $qb->select('*') ->from('storages') ->where($qb->expr()->eq('numeric_id', $qb->expr()->literal($numericId))); @@ -366,20 +315,20 @@ abstract class StoragesServiceTest extends \Test\TestCase { $result = $storageCheckQuery->execute(); $storages = $result->fetchAll(); $result->closeCursor(); - $this->assertCount(0, $storages, "expected 0 storages, got " . json_encode($storages)); + $this->assertCount(0, $storages, 'expected 0 storages, got ' . json_encode($storages)); } protected function actualDeletedUnexistingStorageTest() { $this->service->removeStorage(255); } - public function testDeleteUnexistingStorage() { - $this->expectException(\OCA\Files_External\NotFoundException::class); + public function testDeleteUnexistingStorage(): void { + $this->expectException(NotFoundException::class); $this->actualDeletedUnexistingStorageTest(); } - public function testCreateStorage() { + public function testCreateStorage(): void { $mountPoint = 'mount'; $backendIdentifier = 'identifier:\OCA\Files_External\Lib\Backend\SMB'; $authMechanismIdentifier = 'identifier:\Auth\Mechanism'; @@ -413,7 +362,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertEquals($priority, $storage->getPriority()); } - public function testCreateStorageInvalidClass() { + public function testCreateStorageInvalidClass(): void { $storage = $this->service->createStorage( 'mount', 'identifier:\OC\Not\A\Backend', @@ -423,7 +372,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertInstanceOf(InvalidBackend::class, $storage->getBackend()); } - public function testCreateStorageInvalidAuthMechanismClass() { + public function testCreateStorageInvalidAuthMechanismClass(): void { $storage = $this->service->createStorage( 'mount', 'identifier:\OCA\Files_External\Lib\Backend\SMB', @@ -433,7 +382,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertInstanceOf(InvalidAuth::class, $storage->getAuthMechanism()); } - public function testGetStoragesBackendNotVisible() { + public function testGetStoragesBackendNotVisible(): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $backend->expects($this->once()) ->method('isVisibleFor') @@ -456,7 +405,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertEmpty($this->service->getStorages()); } - public function testGetStoragesAuthMechanismNotVisible() { + public function testGetStoragesAuthMechanismNotVisible(): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $backend->method('isVisibleFor') ->with($this->service->getVisibilityType()) @@ -479,14 +428,14 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertEmpty($this->service->getStorages()); } - public static function createHookCallback($params) { + public static function createHookCallback($params): void { self::$hookCalls[] = [ 'signal' => Filesystem::signal_create_mount, 'params' => $params ]; } - public static function deleteHookCallback($params) { + public static function deleteHookCallback($params): void { self::$hookCalls[] = [ 'signal' => Filesystem::signal_delete_mount, 'params' => $params @@ -519,7 +468,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { ); } - public function testUpdateStorageMountPoint() { + public function testUpdateStorageMountPoint(): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); diff --git a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php index 5e54e8acb30..2a2f4596fda 100644 --- a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php @@ -1,32 +1,13 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; +use OC\User\User; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\StoragesService; @@ -35,6 +16,8 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; +use OCP\Server; +use PHPUnit\Framework\MockObject\MockObject; use Test\Traits\UserTrait; /** @@ -43,20 +26,9 @@ use Test\Traits\UserTrait; class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { use UserTrait; - /** @var \OCP\IGroupManager|\PHPUnit\Framework\MockObject\MockObject groupManager */ - protected $groupManager; - - /** - * @var StoragesService - */ - protected $globalStoragesService; - - /** - * @var UserGlobalStoragesService - */ - protected $service; - - protected $user; + protected IGroupManager&MockObject $groupManager; + protected StoragesService $globalStoragesService; + protected User $user; public const USER_ID = 'test_user'; public const GROUP_ID = 'test_group'; @@ -67,8 +39,8 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { $this->globalStoragesService = $this->service; - $this->user = new \OC\User\User(self::USER_ID, null, \OC::$server->get(IEventDispatcher::class)); - /** @var \OCP\IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + $this->user = new User(self::USER_ID, null, Server::get(IEventDispatcher::class)); + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); $userSession ->expects($this->any()) @@ -106,7 +78,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { ); } - public function applicableStorageProvider() { + public static function applicableStorageProvider(): array { return [ [[], [], true], @@ -126,10 +98,8 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { ]; } - /** - * @dataProvider applicableStorageProvider - */ - public function testGetStorageWithApplicable($applicableUsers, $applicableGroups, $isVisible) { + #[\PHPUnit\Framework\Attributes\DataProvider('applicableStorageProvider')] + public function testGetStorageWithApplicable($applicableUsers, $applicableGroups, $isVisible): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); @@ -160,7 +130,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { } - public function testAddStorage($storageParams = null) { + public function testAddStorage($storageParams = null): void { $this->expectException(\DomainException::class); $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); @@ -176,7 +146,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { } - public function testUpdateStorage($storageParams = null) { + public function testUpdateStorage($storageParams = null): void { $this->expectException(\DomainException::class); $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); @@ -196,16 +166,14 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { } - public function testNonExistingStorage() { + public function testNonExistingStorage(): void { $this->expectException(\DomainException::class); $this->ActualNonExistingStorageTest(); } - /** - * @dataProvider deleteStorageDataProvider - */ - public function testDeleteStorage($backendOptions, $rustyStorageId) { + #[\PHPUnit\Framework\Attributes\DataProvider('deleteStorageDataProvider')] + public function testDeleteStorage($backendOptions, $rustyStorageId): void { $this->expectException(\DomainException::class); $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); @@ -224,13 +192,13 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { } - public function testDeleteUnexistingStorage() { + public function testDeleteUnexistingStorage(): void { $this->expectException(\DomainException::class); $this->actualDeletedUnexistingStorageTest(); } - public function getUniqueStoragesProvider() { + public static function getUniqueStoragesProvider(): array { return [ // 'all' vs group [100, [], [], 100, [], [self::GROUP_ID], 2], @@ -258,14 +226,12 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { ]; } - /** - * @dataProvider getUniqueStoragesProvider - */ + #[\PHPUnit\Framework\Attributes\DataProvider('getUniqueStoragesProvider')] public function testGetUniqueStorages( $priority1, $applicableUsers1, $applicableGroups1, $priority2, $applicableUsers2, $applicableGroups2, - $expectedPrecedence - ) { + $expectedPrecedence, + ): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $backend->method('isVisibleFor') ->willReturn(true); @@ -305,67 +271,67 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { } } - public function testGetStoragesBackendNotVisible() { + public function testGetStoragesBackendNotVisible(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testGetStoragesAuthMechanismNotVisible() { + public function testGetStoragesAuthMechanismNotVisible(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testHooksAddStorage($a = null, $b = null, $c = null) { + public function testHooksAddStorage($a = null, $b = null, $c = null): void { // we don't test this here $this->addToAssertionCount(1); } - public function testHooksUpdateStorage($a = null, $b = null, $c = null, $d = null, $e = null) { + public function testHooksUpdateStorage($a = null, $b = null, $c = null, $d = null, $e = null): void { // we don't test this here $this->addToAssertionCount(1); } - public function testHooksRenameMountPoint() { + public function testHooksRenameMountPoint(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testHooksDeleteStorage($a = null, $b = null, $c = null) { + public function testHooksDeleteStorage($a = null, $b = null, $c = null): void { // we don't test this here $this->addToAssertionCount(1); } - public function testLegacyConfigConversionApplicableAll() { + public function testLegacyConfigConversionApplicableAll(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testLegacyConfigConversionApplicableUserAndGroup() { + public function testLegacyConfigConversionApplicableUserAndGroup(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testReadLegacyConfigAndGenerateConfigId() { + public function testReadLegacyConfigAndGenerateConfigId(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testReadLegacyConfigNoAuthMechanism() { + public function testReadLegacyConfigNoAuthMechanism(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testReadLegacyConfigClass() { + public function testReadLegacyConfigClass(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testReadEmptyMountPoint() { + public function testReadEmptyMountPoint(): void { // we don't test this here $this->addToAssertionCount(1); } - public function testUpdateStorageMountPoint() { + public function testUpdateStorageMountPoint(): void { // we don't test this here $this->addToAssertionCount(1); } diff --git a/apps/files_external/tests/Service/UserStoragesServiceTest.php b/apps/files_external/tests/Service/UserStoragesServiceTest.php index cda1dd0a27f..0a2f291f6e4 100644 --- a/apps/files_external/tests/Service/UserStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserStoragesServiceTest.php @@ -1,55 +1,37 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Service; use OC\Files\Filesystem; - +use OC\User\User; use OCA\Files_External\Lib\StorageConfig; +use OCA\Files_External\MountConfig; +use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; + use OCA\Files_External\Service\StoragesService; use OCA\Files_External\Service\UserStoragesService; +use OCP\IUserManager; use OCP\IUserSession; +use OCP\Server; +use PHPUnit\Framework\MockObject\MockObject; use Test\Traits\UserTrait; /** * @group DB */ -class UserStoragesServiceTest extends StoragesServiceTest { +class UserStoragesServiceTest extends StoragesServiceTestCase { use UserTrait; - private $user; - - private $userId; + protected User $user; - /** - * @var StoragesService - */ - protected $globalStoragesService; + protected string $userId; + protected StoragesService $globalStoragesService; protected function setUp(): void { parent::setUp(); @@ -58,9 +40,9 @@ class UserStoragesServiceTest extends StoragesServiceTest { $this->userId = $this->getUniqueID('user_'); $this->createUser($this->userId, $this->userId); - $this->user = \OC::$server->getUserManager()->get($this->userId); + $this->user = Server::get(IUserManager::class)->get($this->userId); - /** @var \OCP\IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); $userSession ->expects($this->any()) @@ -86,7 +68,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { ]); } - public function testAddStorage() { + public function testAddStorage(): void { $storage = $this->makeTestStorageData(); $newStorage = $this->service->addStorage($storage); @@ -106,7 +88,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { current(self::$hookCalls), Filesystem::signal_create_mount, $storage->getMountPoint(), - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $this->userId ); @@ -114,7 +96,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { $this->assertEquals($id + 1, $nextStorage->getId()); } - public function testUpdateStorage() { + public function testUpdateStorage(): void { $storage = $this->makeStorageConfig([ 'mountPoint' => 'mountpoint', 'backendIdentifier' => 'identifier:\OCA\Files_External\Lib\Backend\SMB', @@ -146,10 +128,8 @@ class UserStoragesServiceTest extends StoragesServiceTest { $this->assertEmpty(self::$hookCalls); } - /** - * @dataProvider deleteStorageDataProvider - */ - public function testDeleteStorage($backendOptions, $rustyStorageId) { + #[\PHPUnit\Framework\Attributes\DataProvider('deleteStorageDataProvider')] + public function testDeleteStorage($backendOptions, $rustyStorageId): void { parent::testDeleteStorage($backendOptions, $rustyStorageId); // hook called once for user (first one was during test creation) @@ -157,12 +137,12 @@ class UserStoragesServiceTest extends StoragesServiceTest { self::$hookCalls[1], Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $this->userId ); } - public function testHooksRenameMountPoint() { + public function testHooksRenameMountPoint(): void { $storage = $this->makeTestStorageData(); $storage = $this->service->addStorage($storage); @@ -178,21 +158,21 @@ class UserStoragesServiceTest extends StoragesServiceTest { self::$hookCalls[0], Filesystem::signal_delete_mount, '/mountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $this->userId ); $this->assertHookCall( self::$hookCalls[1], Filesystem::signal_create_mount, '/renamedMountpoint', - \OCA\Files_External\MountConfig::MOUNT_TYPE_USER, + MountConfig::MOUNT_TYPE_USER, $this->userId ); } - public function testGetAdminStorage() { - $this->expectException(\OCA\Files_External\NotFoundException::class); + public function testGetAdminStorage(): void { + $this->expectException(NotFoundException::class); $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); diff --git a/apps/files_external/tests/Settings/AdminTest.php b/apps/files_external/tests/Settings/AdminTest.php index bad5da8516d..fd4a1949760 100644 --- a/apps/files_external/tests/Settings/AdminTest.php +++ b/apps/files_external/tests/Settings/AdminTest.php @@ -1,49 +1,28 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Tests\Settings; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; +use OCA\Files_External\MountConfig; use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; use OCP\Encryption\IManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AdminTest extends TestCase { - /** @var Admin */ - private $admin; - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - private $encryptionManager; - /** @var GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject */ - private $globalStoragesService; - /** @var BackendService|\PHPUnit\Framework\MockObject\MockObject */ - private $backendService; - /** @var GlobalAuth|\PHPUnit\Framework\MockObject\MockObject */ - private $globalAuth; + private IManager&MockObject $encryptionManager; + private GlobalStoragesService&MockObject $globalStoragesService; + private BackendService&MockObject $backendService; + private GlobalAuth&MockObject $globalAuth; + private Admin $admin; protected function setUp(): void { parent::setUp(); @@ -60,7 +39,7 @@ class AdminTest extends TestCase { ); } - public function testGetForm() { + public function testGetForm(): void { $this->encryptionManager ->expects($this->once()) ->method('isEnabled') @@ -96,7 +75,7 @@ class AdminTest extends TestCase { 'storages' => ['a', 'b', 'c'], 'backends' => ['d', 'e', 'f'], 'authMechanisms' => ['g', 'h', 'i'], - 'dependencies' => \OCA\Files_External\MountConfig::dependencyMessage($this->backendService->getBackends()), + 'dependencies' => MountConfig::dependencyMessage($this->backendService->getBackends()), 'allowUserMounting' => true, 'globalCredentials' => 'asdf:asdf', 'globalCredentialsUid' => '', @@ -105,11 +84,11 @@ class AdminTest extends TestCase { $this->assertEquals($expected, $this->admin->getForm()); } - public function testGetSection() { + public function testGetSection(): void { $this->assertSame('externalstorages', $this->admin->getSection()); } - public function testGetPriority() { + public function testGetPriority(): void { $this->assertSame(40, $this->admin->getPriority()); } } diff --git a/apps/files_external/tests/Settings/SectionTest.php b/apps/files_external/tests/Settings/SectionTest.php index cfe97896358..c64849ff7ba 100644 --- a/apps/files_external/tests/Settings/SectionTest.php +++ b/apps/files_external/tests/Settings/SectionTest.php @@ -1,47 +1,27 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> - * - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author szaimen <szaimen@e.mail.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Tests\Settings; use OCA\Files_External\Settings\Section; use OCP\IL10N; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SectionTest extends TestCase { - /** @var IL10N */ - private $l; - /** @var IURLGenerator */ - private $urlGenerator; - /** @var Section */ - private $section; + private IL10N&MockObject $l; + private IURLGenerator&MockObject $urlGenerator; + private Section $section; protected function setUp(): void { parent::setUp(); - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->disableOriginalConstructor()->getMock(); - $this->l = $this->getMockBuilder(IL10N::class)->disableOriginalConstructor()->getMock(); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l = $this->createMock(IL10N::class); $this->section = new Section( $this->urlGenerator, @@ -49,11 +29,11 @@ class SectionTest extends TestCase { ); } - public function testGetID() { + public function testGetID(): void { $this->assertSame('externalstorages', $this->section->getID()); } - public function testGetName() { + public function testGetName(): void { $this->l ->expects($this->once()) ->method('t') @@ -63,7 +43,7 @@ class SectionTest extends TestCase { $this->assertSame('External storage', $this->section->getName()); } - public function testGetPriority() { + public function testGetPriority(): void { $this->assertSame(10, $this->section->getPriority()); } } diff --git a/apps/files_external/tests/Storage/Amazons3MultiPartTest.php b/apps/files_external/tests/Storage/Amazons3MultiPartTest.php index d102a2a064e..aa3925899f3 100644 --- a/apps/files_external/tests/Storage/Amazons3MultiPartTest.php +++ b/apps/files_external/tests/Storage/Amazons3MultiPartTest.php @@ -1,27 +1,11 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2023 Robin Appelman <robin@icewind.nl> - * - * @author Maxence Lange <maxence@artificial-owl.com> - * @author Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\files_external\tests\Storage; +namespace OCA\Files_External\Tests\Storage; use OCA\Files_External\Lib\Storage\AmazonS3; @@ -29,6 +13,7 @@ use OCA\Files_External\Lib\Storage\AmazonS3; * Class Amazons3Test * * @group DB + * @group S3 * * @package OCA\Files_External\Tests\Storage */ @@ -41,7 +26,7 @@ class Amazons3MultiPartTest extends \Test\Files\Storage\Storage { parent::setUp(); $this->config = include('files_external/tests/config.amazons3.php'); - if (! is_array($this->config) or ! $this->config['run']) { + if (!is_array($this->config) || !$this->config['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->instance = new AmazonS3($this->config + [ @@ -58,11 +43,7 @@ class Amazons3MultiPartTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function testStat() { + public function testStat(): void { $this->markTestSkipped('S3 doesn\'t update the parents folder mtime'); } - - public function testHashInFileName() { - $this->markTestSkipped('Localstack has a bug with hashes in filename'); - } } diff --git a/apps/files_external/tests/Storage/Amazons3Test.php b/apps/files_external/tests/Storage/Amazons3Test.php index d231539fb54..d02dec0230c 100644 --- a/apps/files_external/tests/Storage/Amazons3Test.php +++ b/apps/files_external/tests/Storage/Amazons3Test.php @@ -1,29 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -33,11 +14,12 @@ use OCA\Files_External\Lib\Storage\AmazonS3; * Class Amazons3Test * * @group DB + * @group S3 * * @package OCA\Files_External\Tests\Storage */ class Amazons3Test extends \Test\Files\Storage\Storage { - private $config; + protected $config; /** @var AmazonS3 */ protected $instance; @@ -45,7 +27,7 @@ class Amazons3Test extends \Test\Files\Storage\Storage { parent::setUp(); $this->config = include('files_external/tests/config.amazons3.php'); - if (! is_array($this->config) or ! $this->config['run']) { + if (!is_array($this->config) || !$this->config['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->instance = new AmazonS3($this->config); @@ -59,11 +41,7 @@ class Amazons3Test extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function testStat() { + public function testStat(): void { $this->markTestSkipped('S3 doesn\'t update the parents folder mtime'); } - - public function testHashInFileName() { - $this->markTestSkipped('Localstack has a bug with hashes in filename'); - } } diff --git a/apps/files_external/tests/Storage/FtpTest.php b/apps/files_external/tests/Storage/FtpTest.php index 9ca06f15112..095a5236049 100644 --- a/apps/files_external/tests/Storage/FtpTest.php +++ b/apps/files_external/tests/Storage/FtpTest.php @@ -1,30 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -67,7 +47,7 @@ class FtpTest extends \Test\Files\Storage\Storage { /** * ftp has no proper way to handle spaces at the end of file names */ - public function directoryProvider() { + public static function directoryProvider(): array { return array_filter(parent::directoryProvider(), function ($item) { return substr($item[0], -1) !== ' '; }); @@ -77,7 +57,7 @@ class FtpTest extends \Test\Files\Storage\Storage { /** * mtime for folders is only with a minute resolution */ - public function testStat() { + public function testStat(): void { $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $ctimeStart = time(); $this->instance->file_put_contents('/lorem.txt', file_get_contents($textFile)); diff --git a/apps/files_external/tests/Storage/OwncloudTest.php b/apps/files_external/tests/Storage/OwncloudTest.php index 88f6277c06a..ab6cd443dba 100644 --- a/apps/files_external/tests/Storage/OwncloudTest.php +++ b/apps/files_external/tests/Storage/OwncloudTest.php @@ -1,29 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; diff --git a/apps/files_external/tests/Storage/SFTP_KeyTest.php b/apps/files_external/tests/Storage/SFTP_KeyTest.php index 558b24f0914..17e2087f91b 100644 --- a/apps/files_external/tests/Storage/SFTP_KeyTest.php +++ b/apps/files_external/tests/Storage/SFTP_KeyTest.php @@ -1,28 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Ross Nicoll <jrn@jrn.me.uk> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Viktor Szépe <viktor@szepe.net> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -60,40 +42,40 @@ class SFTP_KeyTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - - public function testInvalidAddressShouldThrowException() { + + public function testInvalidAddressShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); // I'd use example.com for this, but someone decided to break the spec and make it resolve $this->instance->assertHostAddressValid('notarealaddress...'); } - public function testValidAddressShouldPass() { + public function testValidAddressShouldPass(): void { $this->assertTrue($this->instance->assertHostAddressValid('localhost')); } - - public function testNegativePortNumberShouldThrowException() { + + public function testNegativePortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); $this->instance->assertPortNumberValid('-1'); } - - public function testNonNumericalPortNumberShouldThrowException() { + + public function testNonNumericalPortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); $this->instance->assertPortNumberValid('a'); } - - public function testHighPortNumberShouldThrowException() { + + public function testHighPortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); - + $this->instance->assertPortNumberValid('65536'); } - public function testValidPortNumberShouldPass() { + public function testValidPortNumberShouldPass(): void { $this->assertTrue($this->instance->assertPortNumberValid('22222')); } } diff --git a/apps/files_external/tests/Storage/SftpTest.php b/apps/files_external/tests/Storage/SftpTest.php index 70e93ada2f2..ebfc8ab3c1f 100644 --- a/apps/files_external/tests/Storage/SftpTest.php +++ b/apps/files_external/tests/Storage/SftpTest.php @@ -1,30 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author hkjolhede <hkjolhede@gmail.com> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -66,15 +46,13 @@ class SftpTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - /** - * @dataProvider configProvider - */ - public function testStorageId($config, $expectedStorageId) { + #[\PHPUnit\Framework\Attributes\DataProvider('configProvider')] + public function testStorageId($config, $expectedStorageId): void { $instance = new SFTP($config); $this->assertEquals($expectedStorageId, $instance->getId()); } - public function configProvider() { + public static function configProvider(): array { return [ [ // no root path diff --git a/apps/files_external/tests/Storage/SmbTest.php b/apps/files_external/tests/Storage/SmbTest.php index 6d21f696683..afcb5c1034f 100644 --- a/apps/files_external/tests/Storage/SmbTest.php +++ b/apps/files_external/tests/Storage/SmbTest.php @@ -1,31 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -33,6 +12,7 @@ use OC\Files\Notify\Change; use OC\Files\Notify\RenameChange; use OCA\Files_External\Lib\Storage\SMB; use OCP\Files\Notify\IChange; +use PHPUnit\Framework\ExpectationFailedException; /** * Class SmbTest @@ -71,19 +51,19 @@ class SmbTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function directoryProvider() { + public static function directoryProvider(): array { // doesn't support leading/trailing spaces return [['folder']]; } - public function testRenameWithSpaces() { + public function testRenameWithSpaces(): void { $this->instance->mkdir('with spaces'); $result = $this->instance->rename('with spaces', 'foo bar'); $this->assertTrue($result); $this->assertTrue($this->instance->is_dir('foo bar')); } - public function testStorageId() { + public function testStorageId(): void { $this->instance = new SMB([ 'host' => 'testhost', 'user' => 'testuser', @@ -95,7 +75,23 @@ class SmbTest extends \Test\Files\Storage\Storage { $this->instance = null; } - public function testNotifyGetChanges() { + public function testNotifyGetChanges(): void { + $lastError = null; + for ($i = 0; $i < 5; $i++) { + try { + $this->tryTestNotifyGetChanges(); + return; + } catch (ExpectationFailedException $e) { + $lastError = $e; + $this->tearDown(); + $this->setUp(); + sleep(1); + } + } + throw $lastError; + } + + private function tryTestNotifyGetChanges(): void { $notifyHandler = $this->instance->notify(''); sleep(1); //give time for the notify to start $this->instance->file_put_contents('/newfile.txt', 'test content'); @@ -136,7 +132,7 @@ class SmbTest extends \Test\Files\Storage\Storage { } } - public function testNotifyListen() { + public function testNotifyListen(): void { $notifyHandler = $this->instance->notify(''); usleep(100 * 1000); //give time for the notify to start $this->instance->file_put_contents('/newfile.txt', 'test content'); @@ -159,7 +155,7 @@ class SmbTest extends \Test\Files\Storage\Storage { } } - public function testRenameRoot() { + public function testRenameRoot(): void { // root can't be renamed $this->assertFalse($this->instance->rename('', 'foo1')); @@ -168,12 +164,12 @@ class SmbTest extends \Test\Files\Storage\Storage { $this->instance->rmdir('foo2'); } - public function testUnlinkRoot() { + public function testUnlinkRoot(): void { // root can't be deleted $this->assertFalse($this->instance->unlink('')); } - public function testRmdirRoot() { + public function testRmdirRoot(): void { // root can't be deleted $this->assertFalse($this->instance->rmdir('')); } diff --git a/apps/files_external/tests/Storage/SwiftTest.php b/apps/files_external/tests/Storage/SwiftTest.php index 98a184f37b5..17037e76ee3 100644 --- a/apps/files_external/tests/Storage/SwiftTest.php +++ b/apps/files_external/tests/Storage/SwiftTest.php @@ -1,29 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christian Berendt <berendt@b1-systems.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; @@ -74,7 +55,7 @@ class SwiftTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function testStat() { + public function testStat(): void { $this->markTestSkipped('Swift doesn\'t update the parents folder mtime'); } } diff --git a/apps/files_external/tests/Storage/VersionedAmazonS3Test.php b/apps/files_external/tests/Storage/VersionedAmazonS3Test.php index a16a9944d57..9d413620292 100644 --- a/apps/files_external/tests/Storage/VersionedAmazonS3Test.php +++ b/apps/files_external/tests/Storage/VersionedAmazonS3Test.php @@ -2,29 +2,15 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Robin Appelman <robin@icewind.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Files_External\Tests\Storage; /** * @group DB + * @group S3 */ class VersionedAmazonS3Test extends Amazons3Test { protected function setUp(): void { @@ -40,4 +26,12 @@ class VersionedAmazonS3Test extends Amazons3Test { $this->markTestSkipped("s3 backend doesn't seem to support versioning"); } } + + public function testCopyOverWriteDirectory(): void { + if (isset($this->config['minio'])) { + $this->markTestSkipped('MinIO has a bug with batch deletion on versioned storages, see https://github.com/minio/minio/issues/21366'); + } + + parent::testCopyOverWriteDirectory(); + } } diff --git a/apps/files_external/tests/Storage/WebdavTest.php b/apps/files_external/tests/Storage/WebdavTest.php index bf3eb64a63c..a8de178effd 100644 --- a/apps/files_external/tests/Storage/WebdavTest.php +++ b/apps/files_external/tests/Storage/WebdavTest.php @@ -1,34 +1,17 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests\Storage; use OC\Files\Storage\DAV; use OC\Files\Type\Detection; +use OCP\Files\IMimeTypeDetector; +use OCP\Server; /** * Class WebdavTest @@ -62,11 +45,11 @@ class WebdavTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function testMimetypeFallback() { + public function testMimetypeFallback(): void { $this->instance->file_put_contents('foo.bar', 'asd'); /** @var Detection $mimeDetector */ - $mimeDetector = \OC::$server->getMimeTypeDetector(); + $mimeDetector = Server::get(IMimeTypeDetector::class); $mimeDetector->registerType('bar', 'application/x-bar'); $this->assertEquals('application/x-bar', $this->instance->getMimeType('foo.bar')); diff --git a/apps/files_external/tests/StorageConfigTest.php b/apps/files_external/tests/StorageConfigTest.php index 6f5d8066f92..b3024cb228c 100644 --- a/apps/files_external/tests/StorageConfigTest.php +++ b/apps/files_external/tests/StorageConfigTest.php @@ -1,27 +1,10 @@ <?php + +declare(strict_types=1); /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCA\Files_External\Tests; @@ -31,13 +14,9 @@ use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\StorageConfig; class StorageConfigTest extends \Test\TestCase { - public function testJsonSerialization() { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); - $parameter = $this->getMockBuilder(DefinitionParameter::class) - ->disableOriginalConstructor() - ->getMock(); + public function testJsonSerialization(): void { + $backend = $this->createMock(Backend::class); + $parameter = $this->createMock(DefinitionParameter::class); $parameter ->expects($this->once()) ->method('getType') @@ -49,9 +28,7 @@ class StorageConfigTest extends \Test\TestCase { $backend->method('getIdentifier') ->willReturn('storage::identifier'); - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getIdentifier') ->willReturn('auth::identifier'); diff --git a/apps/files_external/tests/appSpec.js b/apps/files_external/tests/appSpec.js deleted file mode 100644 index 8e5ab5b8d98..00000000000 --- a/apps/files_external/tests/appSpec.js +++ /dev/null @@ -1,102 +0,0 @@ -/** -* @copyright 2014 Vincent Petry <pvince81@owncloud.com> - * - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -describe('OCA.Files_External.App tests', function() { - const App = OCA.Files_External.App - let fileList - - beforeEach(function() { - $('#testArea').append( - '<div id="app-navigation">' - + '<ul><li data-id="files"><a>Files</a></li>' - + '<li data-id="sharingin"><a></a></li>' - + '<li data-id="sharingout"><a></a></li>' - + '</ul></div>' - + '<div id="app-content">' - + '<div id="app-content-files" class="hidden">' - + '</div>' - + '<div id="app-content-extstoragemounts" class="hidden">' - + '</div>' - + '</div>' - + '</div>' - ) - fileList = App.initList($('#app-content-extstoragemounts')) - }) - afterEach(function() { - App.fileList = null - fileList.destroy() - fileList = null - }) - - describe('initialization', function() { - it('inits external mounts list on show', function() { - expect(App.fileList).toBeDefined() - }) - }) - describe('file actions', function() { - it('provides default file actions', function() { - const fileActions = fileList.fileActions - - expect(fileActions.actions.all).toBeDefined() - expect(fileActions.actions.all.Delete).toBeDefined() - expect(fileActions.actions.all.Rename).toBeDefined() - expect(fileActions.actions.all.Download).toBeDefined() - - expect(fileActions.defaults.dir).toEqual('Open') - }) - it('redirects to files app when opening a directory', function() { - const oldList = OCA.Files.App.fileList - // dummy new list to make sure it exists - OCA.Files.App.fileList = new OCA.Files.FileList($('<table><thead></thead><tbody></tbody></table>')) - - const setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView') - // create dummy table so we can click the dom - const $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>' - $('#app-content-extstoragemounts').append($table) - - App._inFileList = null - fileList = App.initList($('#app-content-extstoragemounts')) - - fileList.setFiles([{ - name: 'testdir', - type: 'dir', - path: '/somewhere/inside/subdir', - counterParts: ['user2'], - shareOwner: 'user2', - }]) - - fileList.findFileEl('testdir').find('td a.name').click() - - expect(OCA.Files.App.fileList.getCurrentDirectory()).toEqual('/somewhere/inside/subdir/testdir') - - expect(setActiveViewStub.calledOnce).toEqual(true) - expect(setActiveViewStub.calledWith('files')).toEqual(true) - - setActiveViewStub.restore() - - // restore old list - OCA.Files.App.fileList = oldList - }) - }) -}) diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php index a00308e6d07..ec860cf05a4 100644 --- a/apps/files_external/tests/config.php +++ b/apps/files_external/tests/config.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Christian Berendt <berendt@b1-systems.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ // in case there are private configurations in the users home -> use them $privateConfigFile = $_SERVER['HOME'] . '/owncloud-extfs-test-config.php'; diff --git a/apps/files_external/tests/env/start-amazons3-ceph.sh b/apps/files_external/tests/env/start-amazons3-ceph.sh index 1aa14ac990d..ecaa6e0ff46 100755 --- a/apps/files_external/tests/env/start-amazons3-ceph.sh +++ b/apps/files_external/tests/env/start-amazons3-ceph.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -8,9 +9,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @author Robin McCorkell -# @copyright 2015 ownCloud if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/start-ftp-morrisjobke.sh b/apps/files_external/tests/env/start-ftp-morrisjobke.sh index 3a5f6ffcb67..3074bedce74 100755 --- a/apps/files_external/tests/env/start-ftp-morrisjobke.sh +++ b/apps/files_external/tests/env/start-ftp-morrisjobke.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -8,9 +9,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/start-sftp-atmoz.sh b/apps/files_external/tests/env/start-sftp-atmoz.sh index 0fc0c5c427f..9d444515a8a 100755 --- a/apps/files_external/tests/env/start-sftp-atmoz.sh +++ b/apps/files_external/tests/env/start-sftp-atmoz.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -8,9 +9,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/start-smb-linux.sh b/apps/files_external/tests/env/start-smb-linux.sh index 173dd25ebb9..ca303b521f4 100755 --- a/apps/files_external/tests/env/start-smb-linux.sh +++ b/apps/files_external/tests/env/start-smb-linux.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -8,9 +9,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# # retrieve current folder to place the config in the parent folder thisFolder=`echo $0 | sed 's#env/start-smb-linux\.sh##'` diff --git a/apps/files_external/tests/env/start-smb-windows.sh b/apps/files_external/tests/env/start-smb-windows.sh index a23c879dd96..3c5570a2f80 100755 --- a/apps/files_external/tests/env/start-smb-windows.sh +++ b/apps/files_external/tests/env/start-smb-windows.sh @@ -1,12 +1,10 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # Set environment variable DEBUG to print config file # -# @author Thomas Müller -# @copyright 2015 Thomas Müller <deepdiver@owncloud.com> -# # retrieve current folder to place the config in the parent folder thisFolder=`echo $0 | sed 's#env/start-smb-windows\.sh##'` diff --git a/apps/files_external/tests/env/start-swift-ceph.sh b/apps/files_external/tests/env/start-swift-ceph.sh index 3a299a6fa85..c646b9eef28 100755 --- a/apps/files_external/tests/env/start-swift-ceph.sh +++ b/apps/files_external/tests/env/start-swift-ceph.sh @@ -1,6 +1,7 @@ #!/bin/bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -8,9 +9,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @author Robin McCorkell -# @copyright 2015 ownCloud if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/start-webdav-apache.sh b/apps/files_external/tests/env/start-webdav-apache.sh index c58225d89b0..517f278a366 100755 --- a/apps/files_external/tests/env/start-webdav-apache.sh +++ b/apps/files_external/tests/env/start-webdav-apache.sh @@ -1,6 +1,8 @@ #!/bin/bash # -# ownCloud +# SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors +# SPDX-FileCopyrightText: 2015 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -11,10 +13,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @copyright 2014 Morris Jobke <hey@morrisjobke.de> -# @copyright 2016 Vincent Petry <pvince81@owncloud.com> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/start-webdav-ownCloud.sh b/apps/files_external/tests/env/start-webdav-ownCloud.sh index 870bd5bcdf8..9d833330205 100755 --- a/apps/files_external/tests/env/start-webdav-ownCloud.sh +++ b/apps/files_external/tests/env/start-webdav-ownCloud.sh @@ -1,6 +1,10 @@ #!/usr/bin/env bash # -# ownCloud +#!/bin/bash +# +# SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors +# SPDX-FileCopyrightText: 2014-2015 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script start a docker container to test the files_external tests # against. It will also change the files_external config to use the docker @@ -11,9 +15,6 @@ # # Set environment variable DEBUG to print config file # -# @author Morris Jobke -# @copyright 2014 Morris Jobke <hey@morrisjobke.de> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker setup" diff --git a/apps/files_external/tests/env/stop-amazons3-ceph.sh b/apps/files_external/tests/env/stop-amazons3-ceph.sh index f559f8f9058..5e7aac5d5e7 100755 --- a/apps/files_external/tests/env/stop-amazons3-ceph.sh +++ b/apps/files_external/tests/env/stop-amazons3-ceph.sh @@ -1,13 +1,11 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script stops the docker container the files_external tests were run # against. It will also revert the config changes done in start step. # -# @author Morris Jobke -# @author Robin McCorkell -# @copyright 2015 ownCloud if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker stop" diff --git a/apps/files_external/tests/env/stop-ftp-morrisjobke.sh b/apps/files_external/tests/env/stop-ftp-morrisjobke.sh index eedf8f82a50..cb6c8ee9d94 100755 --- a/apps/files_external/tests/env/stop-ftp-morrisjobke.sh +++ b/apps/files_external/tests/env/stop-ftp-morrisjobke.sh @@ -1,13 +1,11 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script stops the docker container the files_external tests were run # against. It will also revert the config changes done in start step. # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker stop" diff --git a/apps/files_external/tests/env/stop-sftp-atmoz.sh b/apps/files_external/tests/env/stop-sftp-atmoz.sh index 44380152340..0dcdcebf96d 100755 --- a/apps/files_external/tests/env/stop-sftp-atmoz.sh +++ b/apps/files_external/tests/env/stop-sftp-atmoz.sh @@ -1,13 +1,11 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script stops the docker container the files_external tests were run # against. It will also revert the config changes done in start step. # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker stop" diff --git a/apps/files_external/tests/env/stop-smb-linux.sh b/apps/files_external/tests/env/stop-smb-linux.sh index 434d3e166b1..dd9e78d2811 100755 --- a/apps/files_external/tests/env/stop-smb-linux.sh +++ b/apps/files_external/tests/env/stop-smb-linux.sh @@ -1,13 +1,11 @@ #!/usr/bin/env bash # -# ownCloud +# SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later # # This script stops the docker container the files_external tests were run # against. It will also revert the config changes done in start step. # -# @author Morris Jobke -# @copyright 2015 Morris Jobke <hey@morrisjobke.de> -# # retrieve current folder to remove the config from the parent folder thisFolder=`echo $0 | sed 's#env/stop-smb-linux\.sh##'` diff --git a/apps/files_external/tests/env/stop-smb-windows.sh b/apps/files_external/tests/env/stop-smb-windows.sh index 39c49e2c505..268b531e145 100755 --- a/apps/files_external/tests/env/stop-smb-windows.sh +++ b/apps/files_external/tests/env/stop-smb-windows.sh @@ -1,9 +1,7 @@ #!/usr/bin/env bash # -# ownCloud -# -# @author Thomas Müller -# @copyright 2015 Thomas Müller <deepdiver@owncloud.com> +# SPDX-FileCopyrightText: 2015 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # retrieve current folder to remove the config from the parent folder diff --git a/apps/files_external/tests/env/stop-swift-ceph.sh b/apps/files_external/tests/env/stop-swift-ceph.sh index 418f96e63f6..d23ca2f13dc 100755 --- a/apps/files_external/tests/env/stop-swift-ceph.sh +++ b/apps/files_external/tests/env/stop-swift-ceph.sh @@ -1,13 +1,11 @@ #!/bin/bash # -# ownCloud +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # # This script stops the docker container the files_external tests were run # against. It will also revert the config changes done in start step. # -# @author Morris Jobke -# @author Robin McCorkell -# @copyright 2015 ownCloud if ! command -v docker >/dev/null 2>&1; then echo "No docker executable found - skipped docker stop" diff --git a/apps/files_external/tests/env/stop-webdav-apache.sh b/apps/files_external/tests/env/stop-webdav-apache.sh index e898a65cc36..825f39470b1 100755 --- a/apps/files_external/tests/env/stop-webdav-apache.sh +++ b/apps/files_external/tests/env/stop-webdav-apache.sh @@ -1,13 +1,7 @@ #!/bin/bash # -# ownCloud -# -# This script stops the docker container the files_external tests were run -# against. It will also revert the config changes done in start step. -# -# @author Morris Jobke -# @copyright 2014 Morris Jobke <hey@morrisjobke.de> -# @copyright 2016 Vincent Petry <pvince81@owncloud.com> +# SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # if ! command -v docker >/dev/null 2>&1; then diff --git a/apps/files_external/tests/env/stop-webdav-ownCloud.sh b/apps/files_external/tests/env/stop-webdav-ownCloud.sh index 613a22efb8c..140e7cce23b 100755 --- a/apps/files_external/tests/env/stop-webdav-ownCloud.sh +++ b/apps/files_external/tests/env/stop-webdav-ownCloud.sh @@ -1,12 +1,7 @@ #!/usr/bin/env bash # -# ownCloud -# -# This script stops the docker container the files_external tests were run -# against. It will also revert the config changes done in start step. -# -# @author Morris Jobke -# @copyright 2014 Morris Jobke <hey@morrisjobke.de> +# SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. +# SPDX-License-Identifier: AGPL-3.0-only # if ! command -v docker >/dev/null 2>&1; then diff --git a/apps/files_external/tests/env/wait-for-connection b/apps/files_external/tests/env/wait-for-connection index 2c480fb733e..a3ff5591122 100755 --- a/apps/files_external/tests/env/wait-for-connection +++ b/apps/files_external/tests/env/wait-for-connection @@ -1,6 +1,11 @@ #!/usr/bin/php <?php +/** + * SPDX-FileCopyrightText: 2015 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ + $timeout = 60; switch ($argc) { diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js deleted file mode 100644 index 389b76550b7..00000000000 --- a/apps/files_external/tests/js/mountsfilelistSpec.js +++ /dev/null @@ -1,166 +0,0 @@ -/** - * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -describe('OCA.Files_External.FileList tests', function() { - var testFiles, alertStub, notificationStub, fileList; - - beforeEach(function() { - alertStub = sinon.stub(OC.dialogs, 'alert'); - notificationStub = sinon.stub(OC.Notification, 'show'); - - // init parameters and test table elements - $('#testArea').append( - '<div id="app-content">' + - // init horrible parameters - '<input type="hidden" id="permissions" value="31"></input>' + - // dummy controls - '<div class="files-controls">' + - ' <div class="actions creatable"></div>' + - ' <div class="notCreatable"></div>' + - '</div>' + - // dummy table - // TODO: at some point this will be rendered by the fileList class itself! - '<table class="files-filestable">' + - '<thead><tr>' + - '<th class="hidden column-name">' + - ' <div id="column-name-container">' + - ' <a class="name sort columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - ' </div>' + - '</th>' + - '<th id="headerBackend" class="hidden column-backend">' + - ' <a class="backend sort columntitle" data-sort="backend"><span>Storage type</span><span class="sort-indicator"></span></a>' + - '</th>' + - '<th id="headerScope" class="hidden column-scope column-last">' + - ' <a class="scope sort columntitle" data-sort="scope"><span>Scope</span><span class="sort-indicator"></span></a>' + - '</th>' + - '</tr></thead>' + - '<tbody class="files-fileList"></tbody>' + - '<tfoot></tfoot>' + - '</table>' + - '<div class="emptyfilelist emptycontent">Empty content message</div>' + - '</div>' - ); - }); - afterEach(function() { - testFiles = undefined; - fileList.destroy(); - fileList = undefined; - - notificationStub.restore(); - alertStub.restore(); - }); - - describe('loading file list for external storage', function() { - var ocsResponse; - var reloading; - - beforeEach(function() { - fileList = new OCA.Files_External.FileList( - $('#app-content') - ); - - reloading = fileList.reload(); - - /* jshint camelcase: false */ - ocsResponse = { - ocs: { - meta: { - status: 'ok', - statuscode: 100, - message: null - }, - data: [{ - name: 'smb mount', - path: '/mount points', - type: 'dir', - backend: 'SMB', - scope: 'personal', - permissions: OC.PERMISSION_READ | OC.PERMISSION_DELETE - }, { - name: 'sftp mount', - path: '/another mount points', - type: 'dir', - backend: 'SFTP', - scope: 'system', - permissions: OC.PERMISSION_READ - }] - } - }; - }); - it('render storage list', function(done) { - var request; - var $rows; - var $tr; - - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual( - OC.linkToOCS('apps/files_external/api/v1') + 'mounts?format=json' - ); - - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(ocsResponse) - ); - - return reloading.then(function() { - $rows = fileList.$el.find('tbody tr'); - expect($rows.length).toEqual(2); - - $tr = $rows.eq(0); - expect($tr.attr('data-id')).not.toBeDefined(); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('sftp mount'); - expect($tr.attr('data-path')).toEqual('/another mount points'); - expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('1'); // read only - expect($tr.find('a.name').attr('href')).toEqual( - OC.getRootPath() + - '/index.php/apps/files' + - '?dir=/another%20mount%20points/sftp%20mount' - ); - expect($tr.find('.nametext').text().trim()).toEqual('sftp mount'); - expect($tr.find('.column-scope > span').text().trim()).toEqual('System'); - expect($tr.find('.column-backend').text().trim()).toEqual('SFTP'); - - $tr = $rows.eq(1); - expect($tr.attr('data-id')).not.toBeDefined(); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('smb mount'); - expect($tr.attr('data-path')).toEqual('/mount points'); - expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('9'); // read and delete - expect($tr.find('a.name').attr('href')).toEqual( - OC.getRootPath() + - '/index.php/apps/files' + - '?dir=/mount%20points/smb%20mount' - ); - expect($tr.find('.nametext').text().trim()).toEqual('smb mount'); - expect($tr.find('.column-scope > span').text().trim()).toEqual('Personal'); - expect($tr.find('.column-backend').text().trim()).toEqual('SMB'); - }).then(done, done); - }); - }); -}); diff --git a/apps/files_external/tests/js/settingsSpec.js b/apps/files_external/tests/js/settingsSpec.js deleted file mode 100644 index 4032f6f6a37..00000000000 --- a/apps/files_external/tests/js/settingsSpec.js +++ /dev/null @@ -1,471 +0,0 @@ -/** - * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es> - * @author Julius Härtl <jus@bitgrid.net> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -describe('OCA.Files_External.Settings tests', function() { - var clock; - var select2Stub; - var select2ApplicableUsers; - - beforeEach(function() { - clock = sinon.useFakeTimers(); - select2ApplicableUsers = []; - select2Stub = sinon.stub($.fn, 'select2').callsFake(function(args) { - if (args === 'val') { - return select2ApplicableUsers; - } - return { - on: function() { return this; } - }; - }); - - // view still requires an existing DOM table - $('#testArea').append( - '<table id="externalStorage" data-admin="true">' + - '<thead></thead>' + - '<tbody>' + - '<tr id="addMountPoint" data-id="">' + - '<td class="status"></td>' + - '<td class="mountPoint"><input type="text" name="mountPoint"/></td>' + - '<td class="backend">' + - '<select class="selectBackend">' + - '<option disable selected>Add storage</option>' + - '<option value="\\OC\\TestBackend">Test Backend</option>' + - '<option value="\\OC\\AnotherTestBackend">Another Test Backend</option>' + - '<option value="\\OC\\InputsTestBackend">Inputs test backend</option>' + - '</select>' + - '</td>' + - '<td class="authentication"></td>' + - '<td class="configuration"></td>' + - '<td class="applicable">' + - '<input type="checkbox" class="applicableToAllUsers">' + - '<input type="hidden" class="applicableUsers">' + - '</td>' + - '<td class="mountOptionsToggle">'+ - '<div class="icon-more" title="Advanced settings" deluminate_imagetype="unknown"></div>'+ - '<input type="hidden" class="mountOptions"/>'+ - '</td>'+ - '<td class="save">'+ - '<div class="icon-checkmark" title="Save" deluminate_imagetype="unknown"></div>'+ - '</td>'+ - '</tr>' + - '</tbody>' + - '</table>' - ); - // these are usually appended into the data attribute - // within the DOM by the server template - $('#externalStorage .selectBackend:first').data('configurations', { - '\\OC\\TestBackend': { - 'identifier': '\\OC\\TestBackend', - 'name': 'Test Backend', - 'configuration': { - 'field1': { - 'value': 'Display Name 1' - }, - 'field2': { - 'value': 'Display Name 2', - 'flags': 1 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 11 - }, - '\\OC\\AnotherTestBackend': { - 'identifier': '\\OC\\AnotherTestBackend', - 'name': 'Another Test Backend', - 'configuration': { - 'field1': { - 'value': 'Display Name 1' - }, - 'field2': { - 'value': 'Display Name 2', - 'flags': 1 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 12 - }, - '\\OC\\InputsTestBackend': { - 'identifier': '\\OC\\InputsTestBackend', - 'name': 'Inputs test backend', - 'configuration': { - 'field_text': { - 'value': 'Text field' - }, - 'field_password': { - 'value': ',Password field', - 'type': 2 - }, - 'field_bool': { - 'value': 'Boolean field', - 'type': 1 - }, - 'field_hidden': { - 'value': 'Hidden field', - 'type': 3 - }, - 'field_text_optional': { - 'value': 'Text field optional', - 'flags': 1 - }, - 'field_password_optional': { - 'value': 'Password field optional', - 'flags': 1, - 'type': 2 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 13 - } - } - ); - - $('#externalStorage #addMountPoint .authentication:first').data('mechanisms', { - 'mechanism1': { - 'identifier': 'mechanism1', - 'name': 'Mechanism 1', - 'configuration': { - }, - 'scheme': 'builtin', - 'visibility': 3 - }, - }); - - }); - afterEach(function() { - select2Stub.restore(); - clock.restore(); - }); - - describe('storage configuration', function() { - var view; - - function selectBackend(backendName) { - view.$el.find('.selectBackend:first').val(backendName).trigger('change'); - view.$el.find('.applicableToAllUsers').prop('checked', true).trigger('change'); - } - - beforeEach(function() { - var $el = $('#externalStorage'); - view = new OCA.Files_External.Settings.MountConfigListView($el, {encryptionEnabled: false}); - }); - afterEach(function() { - view = null; - }); - describe('selecting backend', function() { - it('populates the row and creates a new empty one', function() { - selectBackend('\\OC\\TestBackend'); - var $firstRow = view.$el.find('tr:first'); - expect($firstRow.find('.backend').text()).toEqual('Test Backend'); - expect($firstRow.find('.selectBackend').length).toEqual(0); - - // TODO: check "remove" button visibility - - // the suggested mount point name - expect($firstRow.find('[name=mountPoint]').val()).toEqual('TestBackend'); - - // TODO: check that the options have been created - - // TODO: check select2 call on the ".applicableUsers" element - - var $emptyRow = $firstRow.next('tr'); - expect($emptyRow.length).toEqual(1); - expect($emptyRow.find('.selectBackend').length).toEqual(1); - expect($emptyRow.find('.applicable select').length).toEqual(0); - - // TODO: check "remove" button visibility - }); - it('shows row even if selection row is hidden', function() { - selectBackend('\\OC\\TestBackend'); - view.$el.find('tr#addMountPoint').hide(); - expect(view.$el.find('tr:first').is(':visible')).toBe(true); - expect(view.$el.find('tr#addMountPoint').is(':visible')).toBe(false); - }); - // TODO: test with personal mounts (no applicable fields) - // TODO: test suggested mount point logic - }); - describe('saving storages', function() { - var $tr; - - beforeEach(function() { - selectBackend('\\OC\\TestBackend'); - $tr = view.$el.find('tr:first'); - }); - it('saves storage after clicking the save button', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - var $mountOptionsField = $tr.find('input.mountOptions'); - expect($mountOptionsField.length).toEqual(1); - $mountOptionsField.val(JSON.stringify({previews:true})); - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(1); - var request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.getRootPath() + '/index.php/apps/files_external/globalstorages'); - expect(JSON.parse(request.requestBody)).toEqual({ - backend: '\\OC\\TestBackend', - authMechanism: 'mechanism1', - backendOptions: { - 'field1': 'test', - 'field2': '' - }, - mountPoint: 'TestBackend', - priority: 11, - applicableUsers: [], - applicableGroups: [], - mountOptions: { - 'previews': true - }, - testOnly: true - }); - - // TODO: respond and check data-id - }); - it('saves storage with applicable users', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - select2ApplicableUsers = ['user1', 'user2', 'group1(group)', 'group2(group)']; - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(1); - var request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.getRootPath() + '/index.php/apps/files_external/globalstorages'); - expect(JSON.parse(request.requestBody)).toEqual({ - backend: '\\OC\\TestBackend', - authMechanism: 'mechanism1', - backendOptions: { - 'field1': 'test', - 'field2': '' - }, - mountPoint: 'TestBackend', - priority: 11, - applicableUsers: ['user1', 'user2'], - applicableGroups: ['group1', 'group2'], - mountOptions: { - encrypt: true, - previews: true, - enable_sharing: false, - filesystem_check_changes: 1, - encoding_compatibility: false, - readonly: false, - }, - testOnly: true - }); - - // TODO: respond and check data-id - }); - it('does not saves storage without applicable users and unchecked all users checkbox', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(0); - }); - - it('saves storage after closing mount options popovermenu', function() { - $tr.find('.mountOptionsToggle .icon-more').click(); - $tr.find('[name=previews]').trigger(new $.Event('keyup', {keyCode: 97})); - $tr.find('input[data-parameter=field1]').val('test'); - - // does not save inside the popovermenu - expect(fakeServer.requests.length).toEqual(0); - - $('body').mouseup(); - - // but after closing the popovermenu - expect(fakeServer.requests.length).toEqual(1); - }); - // TODO: status indicator - }); - describe('validate storage configuration', function() { - var $tr; - - beforeEach(function() { - selectBackend('\\OC\\InputsTestBackend'); - $tr = view.$el.find('tr:first'); - }); - - it('lists missing fields in storage errors', function() { - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - var storage = view.getStorageConfig($tr); - - expect(storage.errors).toEqual({ - backendOptions: ['field_text', 'field_password'], - requiredApplicable: true, - }); - }); - - it('does not list applicable when all users checkbox is ticked', function() { - var storage = view.getStorageConfig($tr); - - expect(storage.errors).toEqual({ - backendOptions: ['field_text', 'field_password'] - }); - }); - - it('highlights missing non-optional fields', function() { - _.each([ - 'field_text', - 'field_password' - ], function(param) { - expect($tr.find('input[data-parameter='+param+']').hasClass('warning-input')).toBe(true); - }); - _.each([ - 'field_bool', - 'field_hidden', - 'field_text_optional', - 'field_password_optional' - ], function(param) { - expect($tr.find('input[data-parameter='+param+']').hasClass('warning-input')).toBe(false); - }); - }); - - it('validates correct storage', function() { - $tr.find('[name=mountPoint]').val('mountpoint'); - - $tr.find('input[data-parameter=field_text]').val('foo'); - $tr.find('input[data-parameter=field_password]').val('bar'); - $tr.find('input[data-parameter=field_text_optional]').val('foobar'); - // don't set field_password_optional - $tr.find('input[data-parameter=field_hidden]').val('baz'); - - var storage = view.getStorageConfig($tr); - - expect(storage.validate()).toBe(true); - }); - - it('checks missing mount point', function() { - $tr.find('[name=mountPoint]').val(''); - - $tr.find('input[data-parameter=field_text]').val('foo'); - $tr.find('input[data-parameter=field_password]').val('bar'); - - var storage = view.getStorageConfig($tr); - - expect(storage.validate()).toBe(false); - }); - }); - describe('update storage', function() { - // TODO - }); - describe('delete storage', function() { - // TODO - }); - describe('recheck storages', function() { - // TODO - }); - describe('mount options popovermenu', function() { - var $tr; - var $td; - - beforeEach(function() { - selectBackend('\\OC\\TestBackend'); - $tr = view.$el.find('tr:first'); - $td = $tr.find('.mountOptionsToggle'); - }); - - it('shows popovermenu when clicking on toggle button, hides when clicking outside', function() { - $td.find('.icon-more').click(); - - expect($td.find('.popovermenu.open').length).toEqual(1); - - $('body').mouseup(); - - expect($td.find('.popovermenu.open').length).toEqual(0); - }); - - it('doesnt show the encryption option when encryption is disabled', function () { - view._encryptionEnabled = false; - $td.find('.icon-more').click(); - - expect($td.find('.popovermenu [name=encrypt]:visible').length).toEqual(0); - - $('body').mouseup(); - - expect($td.find('.popovermenu.open').length).toEqual(0); - }); - - it('reads config from mountOptions field', function() { - $tr.find('input.mountOptions').val(JSON.stringify({previews:false})); - - $td.find('.icon-more').click(); - expect($td.find('.popovermenu [name=previews]').prop('checked')).toEqual(false); - $('body').mouseup(); - - $tr.find('input.mountOptions').val(JSON.stringify({previews:true})); - $td.find('.icon-more').click(); - expect($td.find('.popovermenu [name=previews]').prop('checked')).toEqual(true); - }); - - it('writes config into mountOptions field', function() { - $td.find('.icon-more').click(); - // defaults to true - var $field = $td.find('.popovermenu [name=previews]'); - expect($field.prop('checked')).toEqual(true); - $td.find('.popovermenu [name=filesystem_check_changes]').val(0); - $('body').mouseup(); - - expect(JSON.parse($tr.find('input.mountOptions').val())).toEqual({ - encrypt: true, - previews: true, - enable_sharing: false, - filesystem_check_changes: 0, - encoding_compatibility: false, - readonly: false - }); - }); - }); - }); - describe('allow user mounts section', function() { - // TODO: test allowUserMounting section - }); -}); diff --git a/apps/files_external/tests/sso-setup/apps.config.php b/apps/files_external/tests/sso-setup/apps.config.php index 08f1288bd3d..b3889956a53 100644 --- a/apps/files_external/tests/sso-setup/apps.config.php +++ b/apps/files_external/tests/sso-setup/apps.config.php @@ -1,16 +1,20 @@ <?php +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ $CONFIG = [ - "apps_paths" => [ + 'apps_paths' => [ [ - "path" => "/var/www/html/apps", - "url" => "/apps", - "writable" => false, + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, ], [ - "path" => "/var/www/html/extra-apps", - "url" => "/extra-apps", - "writable" => true, + 'path' => '/var/www/html/extra-apps', + 'url' => '/extra-apps', + 'writable' => true, ], ], ]; diff --git a/apps/files_external/tests/sso-setup/client-cmd.sh b/apps/files_external/tests/sso-setup/client-cmd.sh index c97045bea4c..38b50bada67 100755 --- a/apps/files_external/tests/sso-setup/client-cmd.sh +++ b/apps/files_external/tests/sso-setup/client-cmd.sh @@ -1,4 +1,8 @@ #!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +# DC_IP=$1 shift diff --git a/apps/files_external/tests/sso-setup/setup-sso-nc.sh b/apps/files_external/tests/sso-setup/setup-sso-nc.sh index 60cc51ff68d..d0029ea684e 100755 --- a/apps/files_external/tests/sso-setup/setup-sso-nc.sh +++ b/apps/files_external/tests/sso-setup/setup-sso-nc.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +# + set -e docker exec --user 33 apache ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password diff --git a/apps/files_external/tests/sso-setup/start-apache.sh b/apps/files_external/tests/sso-setup/start-apache.sh index b483c73fa4f..58ad71e3a3a 100755 --- a/apps/files_external/tests/sso-setup/start-apache.sh +++ b/apps/files_external/tests/sso-setup/start-apache.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +# + set -e SCRIPT_DIR="${0%/*}" @@ -10,6 +15,9 @@ APACHE_IP=$(docker inspect apache --format '{{.NetworkSettings.IPAddress}}') docker exec apache chown 33 /var/www/html/config /var/www/html/data /var/www/html/extra-apps docker cp "$SCRIPT_DIR/apps.config.php" apache:/var/www/html/config/apps.config.php +# ensure that samba is started (see https://github.com/icewind1991/samba-krb-test/pull/8) +docker exec dc service samba-ad-dc status || docker exec dc service samba-ad-dc start + # add the dns record for apache docker exec dc samba-tool dns add krb.domain.test domain.test httpd A $APACHE_IP -U administrator --password=passwOrd1 1>&2 diff --git a/apps/files_external/tests/sso-setup/start-dc.sh b/apps/files_external/tests/sso-setup/start-dc.sh index df8b02318df..c08b49477b3 100755 --- a/apps/files_external/tests/sso-setup/start-dc.sh +++ b/apps/files_external/tests/sso-setup/start-dc.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +# + set -e function getContainerHealth { diff --git a/apps/files_external/tests/sso-setup/test-sso-smb.sh b/apps/files_external/tests/sso-setup/test-sso-smb.sh index df0692f4319..46955ae0d3c 100755 --- a/apps/files_external/tests/sso-setup/test-sso-smb.sh +++ b/apps/files_external/tests/sso-setup/test-sso-smb.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash +# +# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later +# + set -e DC_IP="$1" @@ -11,6 +16,7 @@ if [[ "$LOGIN_CONTENT" =~ "Location: http://localhost/success" ]]; then echo "✔️" else echo "❌" + echo "$CONTENT" exit 1 fi echo -n "Getting test file: " @@ -21,5 +27,6 @@ if [[ $CONTENT == "testfile" ]]; then echo "✔️" else echo "❌" + echo "$CONTENT" exit 1 fi |