diff options
Diffstat (limited to 'apps/comments')
297 files changed, 6578 insertions, 8276 deletions
diff --git a/apps/comments/.bowerrc b/apps/comments/.bowerrc deleted file mode 100644 index faee1372545..00000000000 --- a/apps/comments/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "js/vendor" -}
\ No newline at end of file diff --git a/apps/comments/appinfo/app.php b/apps/comments/appinfo/app.php deleted file mode 100644 index 15c545ae1e4..00000000000 --- a/apps/comments/appinfo/app.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Vincent Petry <pvince81@owncloud.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/> - * - */ - -$eventDispatcher = \OC::$server->getEventDispatcher(); -$eventDispatcher->addListener( - 'OCA\Files::loadAdditionalScripts', - function() { - \OCP\Util::addScript('oc-backbone-webdav'); - \OCP\Util::addScript('comments', 'merged'); - \OCP\Util::addStyle('comments', 'autocomplete'); - \OCP\Util::addStyle('comments', 'comments'); - } -); - -$eventDispatcher->addListener(\OCP\Comments\CommentsEntityEvent::EVENT_ENTITY, function(\OCP\Comments\CommentsEntityEvent $event) { - $event->addEntityCollection('files', function($name) { - $nodes = \OC::$server->getUserFolder()->getById(intval($name)); - return !empty($nodes); - }); -}); - -$notificationManager = \OC::$server->getNotificationManager(); -$notificationManager->registerNotifier( - function() { - $application = new \OCP\AppFramework\App('comments'); - return $application->getContainer()->query(\OCA\Comments\Notification\Notifier::class); - }, - function () { - $l = \OC::$server->getL10N('comments'); - return ['id' => 'comments', 'name' => $l->t('Comments')]; - } -); - -$commentsManager = \OC::$server->getCommentsManager(); -$commentsManager->registerEventHandler(function () { - $application = new \OCP\AppFramework\App('comments'); - /** @var \OCA\Comments\EventHandler $handler */ - $handler = $application->getContainer()->query(\OCA\Comments\EventHandler::class); - return $handler; -}); diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml index 61a23cf65f8..dc5af1a70a0 100644 --- a/apps/comments/appinfo/info.xml +++ b/apps/comments/appinfo/info.xml @@ -1,19 +1,28 @@ <?xml version="1.0"?> -<info> +<!-- + - SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + - SPDX-FileCopyrightText: 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>comments</id> <name>Comments</name> + <summary>Files app plugin to add comments to files</summary> <description>Files app plugin to add comments to files</description> - <licence>AGPL</licence> + <version>1.22.0</version> + <licence>agpl</licence> <author>Arthur Schiwon</author> <author>Vincent Petry</author> - <default_enable/> - <version>1.4.0</version> - <dependencies> - <nextcloud min-version="14" max-version="14" /> - </dependencies> <types> <logging/> </types> + <category>office</category> + <category>social</category> + <bugs>https://github.com/nextcloud/server/issues</bugs> + <dependencies> + <nextcloud min-version="32" max-version="32"/> + </dependencies> <activity> <settings> diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php index 37d3496c4ed..903f1b2168c 100644 --- a/apps/comments/appinfo/routes.php +++ b/apps/comments/appinfo/routes.php @@ -1,26 +1,10 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.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: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ - return [ 'routes' => [ ['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'], diff --git a/apps/comments/composer/autoload.php b/apps/comments/composer/autoload.php index c974072d6b7..2bbfd4fbebe 100644 --- a/apps/comments/composer/autoload.php +++ b/apps/comments/composer/autoload.php @@ -2,6 +2,24 @@ // 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 ComposerAutoloaderInitComments::getLoader(); diff --git a/apps/comments/composer/composer.lock b/apps/comments/composer/composer.lock new file mode 100644 index 00000000000..fd0bcbcb753 --- /dev/null +++ b/apps/comments/composer/composer.lock @@ -0,0 +1,18 @@ +{ + "_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": "d751713988987e9331980363e24189ce", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/apps/comments/composer/composer/ClassLoader.php b/apps/comments/composer/composer/ClassLoader.php index dc02dfb114f..7824d8f7eaf 100644 --- a/apps/comments/composer/composer/ClassLoader.php +++ b/apps/comments/composer/composer/ClassLoader.php @@ -37,57 +37,126 @@ namespace Composer\Autoload; * * @author Fabien Potencier <fabien@symfony.com> * @author Jordi Boggiano <j.boggiano@seld.be> - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ + * @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|null */ + private $vendorDir; + // PSR-4 + /** + * @var array<string, array<string, int>> + */ private $prefixLengthsPsr4 = array(); + /** + * @var array<string, list<string>> + */ private $prefixDirsPsr4 = array(); + /** + * @var list<string> + */ private $fallbackDirsPsr4 = array(); // PSR-0 + /** + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array<string, array<string, list<string>>> + */ private $prefixesPsr0 = array(); + /** + * @var list<string> + */ private $fallbackDirsPsr0 = array(); + /** @var bool */ private $useIncludePath = false; + + /** + * @var array<string, string> + */ private $classMap = array(); + + /** @var bool */ private $classMapAuthoritative = false; + + /** + * @var array<string, bool> + */ private $missingClasses = array(); + + /** @var string|null */ private $apcuPrefix; + /** + * @var array<string, self> + */ + private static $registeredLoaders = array(); + + /** + * @param string|null $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return array<string, list<string>> + */ public function getPrefixes() { if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); } + /** + * @return array<string, list<string>> + */ public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } + /** + * @return list<string> + */ public function getFallbackDirs() { return $this->fallbackDirsPsr0; } + /** + * @return list<string> + */ public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } + /** + * @return array<string, string> Array of classname => path + */ public function getClassMap() { return $this->classMap; } /** - * @param array $classMap Class to filename map + * @param array<string, string> $classMap Class to filename map + * + * @return void */ public function addClassMap(array $classMap) { @@ -102,22 +171,25 @@ class ClassLoader * 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 array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param list<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) { + $paths = (array) $paths; if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( - (array) $paths, + $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, - (array) $paths + $paths ); } @@ -126,19 +198,19 @@ class ClassLoader $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; + $this->prefixesPsr0[$first][$prefix] = $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, + $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], - (array) $paths + $paths ); } } @@ -147,25 +219,28 @@ class ClassLoader * 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 array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list<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) { + $paths = (array) $paths; if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( - (array) $paths, + $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, - (array) $paths + $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { @@ -175,18 +250,18 @@ class ClassLoader 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; + $this->prefixDirsPsr4[$prefix] = $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, + $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], - (array) $paths + $paths ); } } @@ -195,8 +270,10 @@ class ClassLoader * 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 array|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param list<string>|string $paths The PSR-0 base directories + * + * @return void */ public function set($prefix, $paths) { @@ -211,10 +288,12 @@ class ClassLoader * 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 array|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list<string>|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException + * + * @return void */ public function setPsr4($prefix, $paths) { @@ -234,6 +313,8 @@ class ClassLoader * Turns on searching the include path for class files. * * @param bool $useIncludePath + * + * @return void */ public function setUseIncludePath($useIncludePath) { @@ -256,6 +337,8 @@ class ClassLoader * that have not been registered with the class map. * * @param bool $classMapAuthoritative + * + * @return void */ public function setClassMapAuthoritative($classMapAuthoritative) { @@ -276,10 +359,12 @@ class ClassLoader * 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') && ini_get('apc.enabled') ? $apcuPrefix : null; + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; } /** @@ -296,33 +381,55 @@ class ClassLoader * 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 bool|null True if loaded, null otherwise + * @return true|null True if loaded, null otherwise */ public function loadClass($class) { if ($file = $this->findFile($class)) { - includeFile($file); + $includeFile = self::$includeFile; + $includeFile($file); return true; } + + return null; } /** @@ -367,6 +474,21 @@ class ClassLoader return $file; } + /** + * Returns the currently registered loaders keyed by their corresponding vendor directories. + * + * @return array<string, 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 @@ -377,7 +499,7 @@ class ClassLoader $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); - $search = $subPath.'\\'; + $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { @@ -432,14 +554,26 @@ class ClassLoader return false; } -} -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; + /** + * @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/comments/composer/composer/InstalledVersions.php b/apps/comments/composer/composer/InstalledVersions.php new file mode 100644 index 00000000000..51e734a774b --- /dev/null +++ b/apps/comments/composer/composer/InstalledVersions.php @@ -0,0 +1,359 @@ +<?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/comments/composer/composer/autoload_classmap.php b/apps/comments/composer/composer/autoload_classmap.php index 0000ab9081a..22f95a934d7 100644 --- a/apps/comments/composer/composer/autoload_classmap.php +++ b/apps/comments/composer/composer/autoload_classmap.php @@ -2,19 +2,27 @@ // autoload_classmap.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = $vendorDir; return array( + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'OCA\\Comments\\Activity\\Filter' => $baseDir . '/../lib/Activity/Filter.php', 'OCA\\Comments\\Activity\\Listener' => $baseDir . '/../lib/Activity/Listener.php', 'OCA\\Comments\\Activity\\Provider' => $baseDir . '/../lib/Activity/Provider.php', 'OCA\\Comments\\Activity\\Setting' => $baseDir . '/../lib/Activity/Setting.php', 'OCA\\Comments\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', + 'OCA\\Comments\\Capabilities' => $baseDir . '/../lib/Capabilities.php', 'OCA\\Comments\\Collaboration\\CommentersSorter' => $baseDir . '/../lib/Collaboration/CommentersSorter.php', - 'OCA\\Comments\\Controller\\Notifications' => $baseDir . '/../lib/Controller/Notifications.php', - 'OCA\\Comments\\EventHandler' => $baseDir . '/../lib/EventHandler.php', - 'OCA\\Comments\\JSSettingsHelper' => $baseDir . '/../lib/JSSettingsHelper.php', + 'OCA\\Comments\\Controller\\NotificationsController' => $baseDir . '/../lib/Controller/NotificationsController.php', + 'OCA\\Comments\\Listener\\CommentsEntityEventListener' => $baseDir . '/../lib/Listener/CommentsEntityEventListener.php', + 'OCA\\Comments\\Listener\\CommentsEventListener' => $baseDir . '/../lib/Listener/CommentsEventListener.php', + 'OCA\\Comments\\Listener\\LoadAdditionalScripts' => $baseDir . '/../lib/Listener/LoadAdditionalScripts.php', + 'OCA\\Comments\\Listener\\LoadSidebarScripts' => $baseDir . '/../lib/Listener/LoadSidebarScripts.php', + 'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => $baseDir . '/../lib/MaxAutoCompleteResultsInitialState.php', 'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php', 'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php', + 'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php', + 'OCA\\Comments\\Search\\LegacyProvider' => $baseDir . '/../lib/Search/LegacyProvider.php', + 'OCA\\Comments\\Search\\Result' => $baseDir . '/../lib/Search/Result.php', ); diff --git a/apps/comments/composer/composer/autoload_namespaces.php b/apps/comments/composer/composer/autoload_namespaces.php index 71c9e91858d..3f5c9296251 100644 --- a/apps/comments/composer/composer/autoload_namespaces.php +++ b/apps/comments/composer/composer/autoload_namespaces.php @@ -2,7 +2,7 @@ // autoload_namespaces.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = $vendorDir; return array( diff --git a/apps/comments/composer/composer/autoload_psr4.php b/apps/comments/composer/composer/autoload_psr4.php index f30d722bf9e..2db1b8decc4 100644 --- a/apps/comments/composer/composer/autoload_psr4.php +++ b/apps/comments/composer/composer/autoload_psr4.php @@ -2,7 +2,7 @@ // autoload_psr4.php @generated by Composer -$vendorDir = dirname(dirname(__FILE__)); +$vendorDir = dirname(__DIR__); $baseDir = $vendorDir; return array( diff --git a/apps/comments/composer/composer/autoload_real.php b/apps/comments/composer/composer/autoload_real.php index 40e29b668a4..7f9d22ca0a2 100644 --- a/apps/comments/composer/composer/autoload_real.php +++ b/apps/comments/composer/composer/autoload_real.php @@ -13,6 +13,9 @@ class ComposerAutoloaderInitComments } } + /** + * @return \Composer\Autoload\ClassLoader + */ public static function getLoader() { if (null !== self::$loader) { @@ -20,20 +23,11 @@ class ComposerAutoloaderInitComments } spl_autoload_register(array('ComposerAutoloaderInitComments', 'loadClassLoader'), true, true); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); spl_autoload_unregister(array('ComposerAutoloaderInitComments', 'loadClassLoader')); - $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitComments::getInitializer($loader)); - } else { - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } + require __DIR__ . '/autoload_static.php'; + call_user_func(\Composer\Autoload\ComposerStaticInitComments::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); diff --git a/apps/comments/composer/composer/autoload_static.php b/apps/comments/composer/composer/autoload_static.php index 662f77f89dc..7e553f8e2e2 100644 --- a/apps/comments/composer/composer/autoload_static.php +++ b/apps/comments/composer/composer/autoload_static.php @@ -21,17 +21,25 @@ class ComposerStaticInitComments ); public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'OCA\\Comments\\Activity\\Filter' => __DIR__ . '/..' . '/../lib/Activity/Filter.php', 'OCA\\Comments\\Activity\\Listener' => __DIR__ . '/..' . '/../lib/Activity/Listener.php', 'OCA\\Comments\\Activity\\Provider' => __DIR__ . '/..' . '/../lib/Activity/Provider.php', 'OCA\\Comments\\Activity\\Setting' => __DIR__ . '/..' . '/../lib/Activity/Setting.php', 'OCA\\Comments\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', + 'OCA\\Comments\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php', 'OCA\\Comments\\Collaboration\\CommentersSorter' => __DIR__ . '/..' . '/../lib/Collaboration/CommentersSorter.php', - 'OCA\\Comments\\Controller\\Notifications' => __DIR__ . '/..' . '/../lib/Controller/Notifications.php', - 'OCA\\Comments\\EventHandler' => __DIR__ . '/..' . '/../lib/EventHandler.php', - 'OCA\\Comments\\JSSettingsHelper' => __DIR__ . '/..' . '/../lib/JSSettingsHelper.php', + 'OCA\\Comments\\Controller\\NotificationsController' => __DIR__ . '/..' . '/../lib/Controller/NotificationsController.php', + 'OCA\\Comments\\Listener\\CommentsEntityEventListener' => __DIR__ . '/..' . '/../lib/Listener/CommentsEntityEventListener.php', + 'OCA\\Comments\\Listener\\CommentsEventListener' => __DIR__ . '/..' . '/../lib/Listener/CommentsEventListener.php', + 'OCA\\Comments\\Listener\\LoadAdditionalScripts' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalScripts.php', + 'OCA\\Comments\\Listener\\LoadSidebarScripts' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarScripts.php', + 'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => __DIR__ . '/..' . '/../lib/MaxAutoCompleteResultsInitialState.php', 'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php', 'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php', + 'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php', + 'OCA\\Comments\\Search\\LegacyProvider' => __DIR__ . '/..' . '/../lib/Search/LegacyProvider.php', + 'OCA\\Comments\\Search\\Result' => __DIR__ . '/..' . '/../lib/Search/Result.php', ); public static function getInitializer(ClassLoader $loader) diff --git a/apps/comments/composer/composer/installed.json b/apps/comments/composer/composer/installed.json new file mode 100644 index 00000000000..f20a6c47c6d --- /dev/null +++ b/apps/comments/composer/composer/installed.json @@ -0,0 +1,5 @@ +{ + "packages": [], + "dev": false, + "dev-package-names": [] +} diff --git a/apps/comments/composer/composer/installed.php b/apps/comments/composer/composer/installed.php new file mode 100644 index 00000000000..1a66c7f2416 --- /dev/null +++ b/apps/comments/composer/composer/installed.php @@ -0,0 +1,23 @@ +<?php return array( + 'root' => array( + 'name' => '__root__', + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../', + 'aliases' => array(), + 'dev' => false, + ), + 'versions' => array( + '__root__' => array( + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/apps/comments/css/autocomplete.scss b/apps/comments/css/autocomplete.scss deleted file mode 100644 index 41695e08301..00000000000 --- a/apps/comments/css/autocomplete.scss +++ /dev/null @@ -1,77 +0,0 @@ -/** - * based upon apps/comments/js/vendor/At.js/dist/css/jquery.atwho.css, - * only changed colors and font-weight - */ - -.atwho-view { - position:absolute; - top: 0; - left: 0; - display: none; - margin-top: 18px; - background: $color-main-background; - color: $color-main-text; - border: 1px solid $color-border; - border-radius: $border-radius; - box-shadow: 0 0 5px $color-box-shadow; - min-width: 120px; - z-index: 11110 !important; -} - -.atwho-view .atwho-header { - padding: 5px; - margin: 5px; - cursor: pointer; - border-bottom: solid 1px $color-border; - color: $color-main-text; - font-size: 11px; - font-weight: bold; -} - -.atwho-view .atwho-header .small { - color: $color-main-text; - float: right; - padding-top: 2px; - margin-right: -5px; - font-size: 12px; - font-weight: normal; -} - -.atwho-view .atwho-header:hover { - cursor: default; -} - -.atwho-view .cur { - background: $color-primary; - color: $color-primary-text; -} -.atwho-view .cur small { - color: $color-primary-text; -} -.atwho-view strong { - color: $color-main-text; - font-weight: normal; -} -.atwho-view .cur strong { - color: $color-primary-text; - font-weight: normal; -} -.atwho-view ul { - /* width: 100px; */ - list-style:none; - padding:0; - margin:auto; - max-height: 200px; - overflow-y: auto; -} -.atwho-view ul li { - display: block; - padding: 5px 10px; - border-bottom: 1px solid $color-border; - cursor: pointer; -} -.atwho-view small { - font-size: smaller; - color: $color-main-text; - font-weight: normal; -} diff --git a/apps/comments/css/comments.css b/apps/comments/css/comments.css deleted file mode 100644 index 311eeebe4db..00000000000 --- a/apps/comments/css/comments.css +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -#commentsTabView .emptycontent { - margin-top: 0; -} - -#commentsTabView .newCommentForm { - position: relative; - margin-bottom: 20px; -} - -#commentsTabView .newCommentForm .message { - width: calc(100% - 81px); /* 36 (left margin) + 30 (right padding) + 15 (right padding of surrounding box) */ - margin-left: 36px; - padding-right: 30px; - display: block; -} - -#commentsTabView .newCommentForm .submit { - position: absolute; - bottom: 0px; - right: 8px; - width: 30px; - margin: 0; - padding: 7px 9px; - background-color: transparent; - border: none; - opacity: .3; -} -#commentsTabView .newCommentForm .submit:not(:disabled):hover, -#commentsTabView .newCommentForm .submit:not(:disabled):focus { - opacity: 1; -} - -#commentsTabView .newCommentForm .submitLoading { - background-position: left; - - /* Match rules for '#commentsTabView .newCommentForm .submit' to place the - loading icon at the same position as the confirm icon */ - position: absolute; - bottom: 0px; - right: 8px; - width: 30px; - margin: 0; - padding: 7px 9px; - - /* Match rules for 'input[type="submit"]' to place the loading icon at the - same position as the confirm icon */ - min-height: 34px; - box-sizing: border-box; -} - -#commentsTabView .newCommentForm .cancel { - margin-right: 6px; -} - -#commentsTabView .newCommentForm div.message { - resize: none; -} - -#commentsTabView .newCommentForm div.message:empty:before { - content: attr(data-placeholder); - color: grey; -} - -#commentsTabView .comment { - position: relative; - margin-bottom: 30px; - word-wrap: break-word; - overflow-wrap: break-word; -} - -#commentsTabView .comment .avatar, -.atwho-view-ul * .avatar{ - width: 32px; - height: 32px; - line-height: 32px; - margin-right: 5px; -} - -#commentsTabView .comment .message .avatar, -.atwho-view-ul * .avatar -{ - display: inline-block; -} - -#activityTabView li.comment.collapsed .activitymessage, -#commentsTabView .comment.collapsed .message { - white-space: pre-wrap; -} - -#activityTabView li.comment.collapsed .activitymessage, -#commentsTabView .comment.collapsed .message { - max-height: 70px; - overflow: hidden; -} - -#activityTabView li.comment .message-overlay, -#commentsTabView .comment .message-overlay { - display: none; -} - -#activityTabView li.comment.collapsed .message-overlay, -#commentsTabView .comment.collapsed .message-overlay { - display: block; - position: absolute; - z-index: 2; - height: 50px; - pointer-events: none; - left: 0; - right: 0; - bottom: 0; - background: -moz-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); - background: -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); - background: -o-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); - background: -ms-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); - background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF'); - background-repeat: no-repeat; -} - -#commentsTabView .authorRow>div:not(.contactsmenu-popover) { - display: inline-block; - vertical-align: middle; -} - -#commentsTabView .authorRow>div.hidden { - display: none !important; -} - -#commentsTabView .comments li .message .avatar-name-wrapper, -.atwho-view-ul * .avatar-name-wrapper, -#commentsTabView .comment .authorRow { - position: relative; - display: inline-flex; - align-items: center; - width: 100%; -} - -#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser), -#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar, -#commentsTabView .comment .authorRow .avatar:not(.currentUser), -#commentsTabView .comment .authorRow .author:not(.currentUser) { - cursor: pointer; -} - -.atwho-view-ul .avatar-name-wrapper, -.atwho-view-ul .avatar-name-wrapper .avatar { - cursor: pointer; -} - -#commentsTabView .comments li .message .atwho-inserted { - margin-left: 5px; -} - -.atwho-view-ul * .avatar-name-wrapper { - white-space: nowrap; -} - -#commentsTabView .comment .author, -#commentsTabView .comment .date { - opacity: .5; -} -#commentsTabView .comment .date { - margin-left: auto; -} - -#commentsTabView .comments li .message { - padding-left: 40px; - display: inline-flex; - flex-wrap: wrap; - align-items: center; -} - -#commentsTabView .comment .action { - opacity: 0; - padding: 5px; -} - -#commentsTabView .comment:hover .action { - opacity: 0.3; -} - -#commentsTabView .comment .action:hover { - opacity: 1; -} - -#commentsTabView .comment .action.delete, -#commentsTabView .comment .deleteLoading { - position: absolute; - right: 0; -} - -#commentsTabView .comment.disabled { - opacity: 0.3; -} - -#commentsTabView .comment.disabled .action { - visibility: hidden; -} - -#commentsTabView .message.error { - color: #e9322d; - border-color: #e9322d; - box-shadow: 0 0 6px #f8b9b7; -} - -.app-files .action-comment { - padding: 16px 14px; -} diff --git a/apps/comments/img/comments-dark.svg b/apps/comments/img/comments-dark.svg index d331ea7711b..b0732c747fe 100644 --- a/apps/comments/img/comments-dark.svg +++ b/apps/comments/img/comments-dark.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#000" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg> +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M240-384h480v-72H240v72Zm0-132h480v-72H240v72Zm0-132h480v-72H240v72Zm-72 408q-29.7 0-50.85-21.15Q96-282.3 96-312v-480q0-29.7 21.15-50.85Q138.3-864 168-864h624q29.7 0 50.85 21.15Q864-821.7 864-792v696L720-240H168Z"/></svg>
\ No newline at end of file diff --git a/apps/comments/img/comments.svg b/apps/comments/img/comments.svg index b99c5f9c087..d4e4573bf91 100644 --- a/apps/comments/img/comments.svg +++ b/apps/comments/img/comments.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#fff" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#fff"><path d="M240-384h480v-72H240v72Zm0-132h480v-72H240v72Zm0-132h480v-72H240v72Zm-72 408q-29.7 0-50.85-21.15Q96-282.3 96-312v-480q0-29.7 21.15-50.85Q138.3-864 168-864h624q29.7 0 50.85 21.15Q864-821.7 864-792v696L720-240H168Z"/></svg>
\ No newline at end of file diff --git a/apps/comments/js/activitytabviewplugin.js b/apps/comments/js/activitytabviewplugin.js deleted file mode 100644 index b6195b80c45..00000000000 --- a/apps/comments/js/activitytabviewplugin.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * @author Joas Schilling <coding@schilljs.com> - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - */ - -(function() { - OCA.Comments.ActivityTabViewPlugin = { - - /** - * Prepare activity for display - * - * @param {OCA.Activity.ActivityModel} model for this activity - * @param {jQuery} $el jQuery handle for this activity - * @param {string} view The view that displayes this activity - */ - prepareModelForDisplay: function (model, $el, view) { - if (model.get('app') !== 'comments' || model.get('type') !== 'comments') { - return; - } - - if (view === 'ActivityTabView') { - $el.addClass('comment'); - if (model.get('message') && this._isLong(model.get('message'))) { - $el.addClass('collapsed'); - var $overlay = $('<div>').addClass('message-overlay'); - $el.find('.activitymessage').after($overlay); - $el.on('click', this._onClickCollapsedComment); - } - } - }, - - /* - * Copy of CommentsTabView._onClickComment() - */ - _onClickCollapsedComment: function(ev) { - var $row = $(ev.target); - if (!$row.is('.comment')) { - $row = $row.closest('.comment'); - } - $row.removeClass('collapsed'); - }, - - /* - * Copy of CommentsTabView._isLong() - */ - _isLong: function(message) { - return message.length > 250 || (message.match(/\n/g) || []).length > 1; - } - }; - - -})(); - -OC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin); diff --git a/apps/comments/js/app.js b/apps/comments/js/app.js deleted file mode 100644 index 547059393a5..00000000000 --- a/apps/comments/js/app.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function() { - if (!OCA.Comments) { - /** - * @namespace - */ - OCA.Comments = {}; - } - -})(); - diff --git a/apps/comments/js/commentcollection.js b/apps/comments/js/commentcollection.js deleted file mode 100644 index a15039cf484..00000000000 --- a/apps/comments/js/commentcollection.js +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function(OC, OCA) { - - /** - * @class OCA.Comments.CommentCollection - * @classdesc - * - * Collection of comments assigned to a file - * - */ - var CommentCollection = OC.Backbone.Collection.extend( - /** @lends OCA.Comments.CommentCollection.prototype */ { - - sync: OC.Backbone.davSync, - - model: OCA.Comments.CommentModel, - - /** - * Object type - * - * @type string - */ - _objectType: 'files', - - /** - * Object id - * - * @type string - */ - _objectId: null, - - /** - * True if there are no more page results left to fetch - * - * @type bool - */ - _endReached: false, - - /** - * Number of comments to fetch per page - * - * @type int - */ - _limit : 20, - - /** - * Initializes the collection - * - * @param {string} [options.objectType] object type - * @param {string} [options.objectId] object id - */ - initialize: function(models, options) { - options = options || {}; - if (options.objectType) { - this._objectType = options.objectType; - } - if (options.objectId) { - this._objectId = options.objectId; - } - }, - - url: function() { - return OC.linkToRemote('dav') + '/comments/' + - encodeURIComponent(this._objectType) + '/' + - encodeURIComponent(this._objectId) + '/'; - }, - - setObjectId: function(objectId) { - this._objectId = objectId; - }, - - hasMoreResults: function() { - return !this._endReached; - }, - - reset: function() { - this._endReached = false; - this._summaryModel = null; - return OC.Backbone.Collection.prototype.reset.apply(this, arguments); - }, - - /** - * Fetch the next set of results - */ - fetchNext: function(options) { - var self = this; - if (!this.hasMoreResults()) { - return null; - } - - var body = '<?xml version="1.0" encoding="utf-8" ?>\n' + - '<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n' + - // load one more so we know there is more - ' <oc:limit>' + (this._limit + 1) + '</oc:limit>\n' + - ' <oc:offset>' + this.length + '</oc:offset>\n' + - '</oc:filter-comments>\n'; - - options = options || {}; - var success = options.success; - options = _.extend({ - remove: false, - parse: true, - data: body, - davProperties: CommentCollection.prototype.model.prototype.davProperties, - success: function(resp) { - if (resp.length <= self._limit) { - // no new entries, end reached - self._endReached = true; - } else { - // remove last entry, for next page load - resp = _.initial(resp); - } - if (!self.set(resp, options)) { - return false; - } - if (success) { - success.apply(null, arguments); - } - self.trigger('sync', 'REPORT', self, options); - } - }, options); - - return this.sync('REPORT', this, options); - }, - - /** - * Returns the matching summary model - * - * @return {OCA.Comments.CommentSummaryModel} summary model - */ - getSummaryModel: function() { - if (!this._summaryModel) { - this._summaryModel = new OCA.Comments.CommentSummaryModel({ - id: this._objectId, - objectType: this._objectType - }); - } - return this._summaryModel; - }, - - /** - * Updates the read marker for this comment thread - * - * @param {Date} [date] optional date, defaults to now - * @param {Object} [options] backbone options - */ - updateReadMarker: function(date, options) { - options = options || {}; - - return this.getSummaryModel().save({ - readMarker: (date || new Date()).toUTCString() - }, options); - } - }); - - OCA.Comments.CommentCollection = CommentCollection; -})(OC, OCA); - diff --git a/apps/comments/js/commentmodel.js b/apps/comments/js/commentmodel.js deleted file mode 100644 index 3711e53c9f3..00000000000 --- a/apps/comments/js/commentmodel.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function(OC, OCA) { - - _.extend(OC.Files.Client, { - PROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id', - PROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message', - PROPERTY_ACTORTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorType', - PROPERTY_ACTORID: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorId', - PROPERTY_ISUNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread', - PROPERTY_OBJECTID: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectId', - PROPERTY_OBJECTTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectType', - PROPERTY_ACTORDISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName', - PROPERTY_CREATIONDATETIME: '{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime', - PROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions' - }); - - /** - * @class OCA.Comments.CommentModel - * @classdesc - * - * Comment - * - */ - var CommentModel = OC.Backbone.Model.extend( - /** @lends OCA.Comments.CommentModel.prototype */ { - sync: OC.Backbone.davSync, - - defaults: { - actorType: 'users', - objectType: 'files' - }, - - davProperties: { - 'id': OC.Files.Client.PROPERTY_FILEID, - 'message': OC.Files.Client.PROPERTY_MESSAGE, - 'actorType': OC.Files.Client.PROPERTY_ACTORTYPE, - 'actorId': OC.Files.Client.PROPERTY_ACTORID, - 'actorDisplayName': OC.Files.Client.PROPERTY_ACTORDISPLAYNAME, - 'creationDateTime': OC.Files.Client.PROPERTY_CREATIONDATETIME, - 'objectType': OC.Files.Client.PROPERTY_OBJECTTYPE, - 'objectId': OC.Files.Client.PROPERTY_OBJECTID, - 'isUnread': OC.Files.Client.PROPERTY_ISUNREAD, - 'mentions': OC.Files.Client.PROPERTY_MENTIONS - }, - - parse: function(data) { - return { - id: data.id, - message: data.message, - actorType: data.actorType, - actorId: data.actorId, - actorDisplayName: data.actorDisplayName, - creationDateTime: data.creationDateTime, - objectType: data.objectType, - objectId: data.objectId, - isUnread: (data.isUnread === 'true'), - mentions: this._parseMentions(data.mentions) - }; - }, - - _parseMentions: function(mentions) { - if(_.isUndefined(mentions)) { - return {}; - } - var result = {}; - for(var i in mentions) { - var mention = mentions[i]; - if(_.isUndefined(mention.localName) || mention.localName !== 'mention') { - continue; - } - result[i] = {}; - for (var child = mention.firstChild; child; child = child.nextSibling) { - if(_.isUndefined(child.localName) || !child.localName.startsWith('mention')) { - continue; - } - result[i][child.localName] = child.textContent; - } - } - return result; - } - }); - - OCA.Comments.CommentModel = CommentModel; -})(OC, OCA); diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js deleted file mode 100644 index 0ad49163508..00000000000 --- a/apps/comments/js/commentstabview.js +++ /dev/null @@ -1,752 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -/* global Handlebars, escapeHTML */ - -(function(OC, OCA) { - var TEMPLATE = - '<ul class="comments">' + - '</ul>' + - '<div class="emptycontent hidden"><div class="icon-comment"></div>' + - '<p>{{emptyResultLabel}}</p></div>' + - '<input type="button" class="showMore hidden" value="{{moreLabel}}"' + - ' name="show-more" id="show-more" />' + - '<div class="loading hidden" style="height: 50px"></div>'; - - var EDIT_COMMENT_TEMPLATE = - '<div class="newCommentRow comment" data-id="{{id}}">' + - ' <div class="authorRow">' + - ' <div class="avatar currentUser" data-username="{{actorId}}"></div>' + - ' <div class="author currentUser">{{actorDisplayName}}</div>' + - '{{#if isEditMode}}' + - ' <a href="#" class="action delete icon icon-delete has-tooltip" title="{{deleteTooltip}}"></a>' + - ' <div class="deleteLoading icon-loading-small hidden"></div>'+ - '{{/if}}' + - ' </div>' + - ' <form class="newCommentForm">' + - ' <div contentEditable="true" class="message" data-placeholder="{{newMessagePlaceholder}}">{{message}}</div>' + - ' <input class="submit icon-confirm" type="submit" value="" />' + - '{{#if isEditMode}}' + - ' <input class="cancel pull-right" type="button" value="{{cancelText}}" />' + - '{{/if}}' + - ' <div class="submitLoading icon-loading-small hidden"></div>'+ - ' </form>' + - '</div>'; - - var COMMENT_TEMPLATE = - '<li class="comment{{#if isUnread}} unread{{/if}}{{#if isLong}} collapsed{{/if}}" data-id="{{id}}">' + - ' <div class="authorRow">' + - ' <div class="avatar{{#if isUserAuthor}} currentUser{{/if}}" {{#if actorId}}data-username="{{actorId}}"{{/if}}> </div>' + - ' <div class="author{{#if isUserAuthor}} currentUser{{/if}}">{{actorDisplayName}}</div>' + - '{{#if isUserAuthor}}' + - ' <a href="#" class="action edit icon icon-rename has-tooltip" title="{{editTooltip}}"></a>' + - '{{/if}}' + - ' <div class="date has-tooltip live-relative-timestamp" data-timestamp="{{timestamp}}" title="{{altDate}}">{{date}}</div>' + - ' </div>' + - ' <div class="message">{{{formattedMessage}}}</div>' + - '{{#if isLong}}' + - ' <div class="message-overlay"></div>' + - '{{/if}}' + - '</li>'; - - /** - * @memberof OCA.Comments - */ - var CommentsTabView = OCA.Files.DetailTabView.extend( - /** @lends OCA.Comments.CommentsTabView.prototype */ { - id: 'commentsTabView', - className: 'tab commentsTabView', - _autoCompleteData: undefined, - - events: { - 'submit .newCommentForm': '_onSubmitComment', - 'click .showMore': '_onClickShowMore', - 'click .action.edit': '_onClickEditComment', - 'click .action.delete': '_onClickDeleteComment', - 'click .cancel': '_onClickCloseComment', - 'click .comment': '_onClickComment', - 'keyup div.message': '_onTextChange', - 'change div.message': '_onTextChange', - 'input div.message': '_onTextChange', - 'paste div.message': '_onPaste' - }, - - _commentMaxLength: 1000, - - initialize: function() { - OCA.Files.DetailTabView.prototype.initialize.apply(this, arguments); - this.collection = new OCA.Comments.CommentCollection(); - this.collection.on('request', this._onRequest, this); - this.collection.on('sync', this._onEndRequest, this); - this.collection.on('add', this._onAddModel, this); - this.collection.on('change:message', this._onChangeModel, this); - - this._commentMaxThreshold = this._commentMaxLength * 0.9; - - // TODO: error handling - _.bindAll(this, '_onTypeComment', '_initAutoComplete', '_onAutoComplete'); - }, - - template: function(params) { - if (!this._template) { - this._template = Handlebars.compile(TEMPLATE); - } - var currentUser = OC.getCurrentUser(); - return this._template(_.extend({ - actorId: currentUser.uid, - actorDisplayName: currentUser.displayName - }, params)); - }, - - editCommentTemplate: function(params) { - if (!this._editCommentTemplate) { - this._editCommentTemplate = Handlebars.compile(EDIT_COMMENT_TEMPLATE); - } - var currentUser = OC.getCurrentUser(); - return this._editCommentTemplate(_.extend({ - actorId: currentUser.uid, - actorDisplayName: currentUser.displayName, - newMessagePlaceholder: t('comments', 'New comment …'), - deleteTooltip: t('comments', 'Delete comment'), - submitText: t('comments', 'Post'), - cancelText: t('comments', 'Cancel') - }, params)); - }, - - commentTemplate: function(params) { - if (!this._commentTemplate) { - this._commentTemplate = Handlebars.compile(COMMENT_TEMPLATE); - } - - params = _.extend({ - editTooltip: t('comments', 'Edit comment'), - isUserAuthor: OC.getCurrentUser().uid === params.actorId, - isLong: this._isLong(params.message) - }, params); - - if (params.actorType === 'deleted_users') { - // makes the avatar a X - params.actorId = null; - params.actorDisplayName = t('comments', '[Deleted user]'); - } - - return this._commentTemplate(params); - }, - - getLabel: function() { - return t('comments', 'Comments'); - }, - - setFileInfo: function(fileInfo) { - if (fileInfo) { - this.model = fileInfo; - - this.render(); - this._initAutoComplete($('#commentsTabView').find('.newCommentForm .message')); - this.collection.setObjectId(this.model.id); - // reset to first page - this.collection.reset([], {silent: true}); - this.nextPage(); - } else { - this.model = null; - this.render(); - this.collection.reset(); - } - }, - - render: function() { - this.$el.html(this.template({ - emptyResultLabel: t('comments', 'No comments yet, start the conversation!'), - moreLabel: t('comments', 'More comments …') - })); - this.$el.find('.comments').before(this.editCommentTemplate({})); - this.$el.find('.has-tooltip').tooltip(); - this.$container = this.$el.find('ul.comments'); - this.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32); - this.delegateEvents(); - this.$el.find('.message').on('keydown input change', this._onTypeComment); - - autosize(this.$el.find('.newCommentRow .message')) - }, - - _initAutoComplete: function($target) { - var s = this; - var limit = 10; - if(!_.isUndefined(OC.appConfig.comments)) { - limit = OC.appConfig.comments.maxAutoCompleteResults; - } - $target.atwho({ - at: '@', - limit: limit, - callbacks: { - remoteFilter: s._onAutoComplete, - highlighter: function (li) { - // misuse the highlighter callback to instead of - // highlighting loads the avatars. - var $li = $(li); - $li.find('.avatar').avatar(undefined, 32); - return $li; - }, - sorter: function (q, items) { return items; } - }, - displayTpl: '<li>' - + '<span class="avatar-name-wrapper">' - + '<div class="avatar" ' - + 'data-username="${id}"' // for avatars - + ' data-user="${id}"' // for contactsmenu - + ' data-user-display-name="${label}"></div>' - + ' <strong>${label}</strong>' - + '</span></li>', - insertTpl: '' - + '<span class="avatar-name-wrapper">' - + '<div class="avatar" ' - + 'data-username="${id}"' // for avatars - + ' data-user="${id}"' // for contactsmenu - + ' data-user-display-name="${label}"></div>' - + ' <strong>${label}</strong>' - + '</span>', - searchKey: "label" - }); - $target.on('inserted.atwho', function (je, $el) { - var editionMode = true; - s._postRenderItem( - // we need to pass the parent of the inserted element - // passing the whole comments form would re-apply and request - // avatars from the server - $(je.target).find( - 'div[data-username="' + $el.find('[data-username]').data('username') + '"]' - ).parent(), - editionMode - ); - }); - }, - - _onAutoComplete: function(query, callback) { - if(_.isEmpty(query)) { - return; - } - var s = this; - if(!_.isUndefined(this._autoCompleteRequestTimer)) { - clearTimeout(this._autoCompleteRequestTimer); - } - this._autoCompleteRequestTimer = _.delay(function() { - if(!_.isUndefined(this._autoCompleteRequestCall)) { - this._autoCompleteRequestCall.abort(); - } - this._autoCompleteRequestCall = $.get( - OC.generateUrl('/autocomplete/get'), - { - search: query, - itemType: 'files', - itemId: s.model.get('id'), - sorter: 'commenters|share-recipients', - limit: OC.appConfig.comments.maxAutoCompleteResults - }, - function (data) { - callback(data); - } - ); - }, 400); - }, - - _formatItem: function(commentModel) { - var timestamp = new Date(commentModel.get('creationDateTime')).getTime(); - var data = _.extend({ - timestamp: timestamp, - date: OC.Util.relativeModifiedDate(timestamp), - altDate: OC.Util.formatDate(timestamp), - formattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions')) - }, commentModel.attributes); - return data; - }, - - _toggleLoading: function(state) { - this._loading = state; - this.$el.find('.loading').toggleClass('hidden', !state); - }, - - _onRequest: function(type) { - if (type === 'REPORT') { - this._toggleLoading(true); - this.$el.find('.showMore').addClass('hidden'); - } - }, - - _onEndRequest: function(type) { - var fileInfoModel = this.model; - this._toggleLoading(false); - this.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length); - this.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults()); - - if (type !== 'REPORT') { - return; - } - - // find first unread comment - var firstUnreadComment = this.collection.findWhere({isUnread: true}); - if (firstUnreadComment) { - // update read marker - this.collection.updateReadMarker( - null, - { - success: function() { - fileInfoModel.set('commentsUnread', 0); - } - } - ); - } - }, - - /** - * takes care of post-rendering after a new comment was added to the - * collection - * - * @param model - * @param collection - * @param options - * @private - */ - _onAddModel: function(model, collection, options) { - // we need to render it immediately, to ensure that the right - // order of comments is kept on opening comments tab - var $comment = $(this.commentTemplate(this._formatItem(model))); - if (!_.isUndefined(options.at) && collection.length > 1) { - this.$container.find('li').eq(options.at).before($comment); - } else { - this.$container.append($comment); - } - this._postRenderItem($comment); - $('#commentsTabView').find('.newCommentForm div.message').text('').prop('contenteditable', true); - - // we need to update the model, because it consists of client data - // only, but the server might add meta data, e.g. about mentions - var oldMentions = model.get('mentions'); - var self = this; - model.fetch({ - success: function (model) { - if(_.isEqual(oldMentions, model.get('mentions'))) { - // don't attempt to render if unnecessary, avoids flickering - return; - } - var $updated = $(self.commentTemplate(self._formatItem(model))); - $comment.html($updated.html()); - self._postRenderItem($comment); - } - }) - - }, - - /** - * takes care of post-rendering after a new comment was edited - * - * @param model - * @private - */ - _onChangeModel: function (model) { - if(model.get('message').trim() === model.previous('message').trim()) { - return; - } - - var $form = this.$container.find('.comment[data-id="' + model.id + '"] form'); - var $row = $form.closest('.comment'); - var $target = $row.data('commentEl'); - if(_.isUndefined($target)) { - // ignore noise – this is only set after editing a comment and hitting post - return; - } - var self = this; - - // we need to update the model, because it consists of client data - // only, but the server might add meta data, e.g. about mentions - model.fetch({ - success: function (model) { - $target.removeClass('hidden'); - $row.remove(); - - var $message = $target.find('.message'); - $message - .html(self._formatMessage(model.get('message'), model.get('mentions'))) - .find('.avatar') - .each(function () { $(this).avatar(); }); - self._postRenderItem($message); - } - }); - }, - - _postRenderItem: function($el, editionMode) { - $el.find('.has-tooltip').tooltip(); - $el.find('.avatar').each(function() { - var $this = $(this); - $this.avatar($this.attr('data-username'), 32); - }); - - var username = $el.find('.avatar').data('username'); - if (username !== oc_current_user) { - $el.find('.authorRow .avatar, .authorRow .author').contactsMenu( - username, 0, $el.find('.authorRow')); - } - - var $message = $el.find('.message'); - if($message.length === 0) { - // it is the case when writing a comment and mentioning a person - $message = $el; - } - this._postRenderMessage($message, editionMode); - }, - - _postRenderMessage: function($el, editionMode) { - if (editionMode) { - return; - } - - $el.find('.avatar').each(function() { - var avatar = $(this); - var strong = $(this).next(); - var appendTo = $(this).parent(); - - var username = $(this).data('username'); - if (username !== oc_current_user) { - $.merge(avatar, strong).contactsMenu(avatar.data('user'), 0, appendTo); - } - }); - }, - - /** - * Convert a message to be displayed in HTML, - * converts newlines to <br> tags. - */ - _formatMessage: function(message, mentions, editMode) { - message = escapeHTML(message).replace(/\n/g, '<br/>'); - - for(var i in mentions) { - if(!mentions.hasOwnProperty(i)) { - return; - } - var mention = '@' + mentions[i].mentionId; - - // escape possible regex characters in the name - mention = mention.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - - var displayName = this._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName); - - // replace every mention either at the start of the input or after a whitespace - // followed by a non-word character. - message = message.replace(new RegExp("(^|\\s)(" + mention + ")\\b", 'g'), - function(match, p1) { - // to get number of whitespaces (0 vs 1) right - return p1+displayName; - } - ); - } - if(editMode !== true) { - message = OCP.Comments.plainToRich(message); - } - return message; - }, - - _composeHTMLMention: function(uid, displayName) { - var avatar = '<div class="avatar" ' - + 'data-username="' + _.escape(uid) + '"' - + ' data-user="' + _.escape(uid) + '"' - + ' data-user-display-name="' - + _.escape(displayName) + '"></div>'; - - var isCurrentUser = (uid === OC.getCurrentUser().uid); - - return '' - + '<span class="atwho-inserted" contenteditable="false">' - + '<span class="avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '">' - + avatar + ' <strong>'+ _.escape(displayName)+'</strong>' - + '</span>' - + '</span>'; - }, - - nextPage: function() { - if (this._loading || !this.collection.hasMoreResults()) { - return; - } - - this.collection.fetchNext(); - }, - - _onClickEditComment: function(ev) { - ev.preventDefault(); - var $comment = $(ev.target).closest('.comment'); - var commentId = $comment.data('id'); - var commentToEdit = this.collection.get(commentId); - var $formRow = $(this.editCommentTemplate(_.extend({ - isEditMode: true, - submitText: t('comments', 'Save') - }, commentToEdit.attributes))); - - $comment.addClass('hidden').removeClass('collapsed'); - // spawn form - $comment.after($formRow); - $formRow.data('commentEl', $comment); - $formRow.find('.message').on('keydown input change', this._onTypeComment); - - // copy avatar element from original to avoid flickering - $formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone()); - $formRow.find('.has-tooltip').tooltip(); - - var $message = $formRow.find('.message'); - $message - .html(this._formatMessage(commentToEdit.get('message'), commentToEdit.get('mentions'), true)) - .find('.avatar') - .each(function () { $(this).avatar(); }); - var editionMode = true; - this._postRenderItem($message, editionMode); - - // Enable autosize - autosize($formRow.find('.message')); - - // enable autocomplete - this._initAutoComplete($formRow.find('.message')); - - return false; - }, - - _onTypeComment: function(ev) { - var $field = $(ev.target); - var len = $field.text().length; - var $submitButton = $field.data('submitButtonEl'); - if (!$submitButton) { - $submitButton = $field.closest('form').find('.submit'); - $field.data('submitButtonEl', $submitButton); - } - $field.tooltip('hide'); - if (len > this._commentMaxThreshold) { - $field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', {count: len, max: this._commentMaxLength})); - $field.tooltip({trigger: 'manual'}); - $field.tooltip('show'); - $field.addClass('error'); - } - - var limitExceeded = (len > this._commentMaxLength); - $field.toggleClass('error', limitExceeded); - $submitButton.prop('disabled', limitExceeded); - - // Submits form with Enter, but Shift+Enter is a new line. If the - // autocomplete popover is being shown Enter does not submit the - // form either; it will be handled by At.js which will add the - // currently selected item to the message. - if (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) { - $submitButton.click(); - ev.preventDefault(); - } - }, - - _onClickComment: function(ev) { - var $row = $(ev.target); - if (!$row.is('.comment')) { - $row = $row.closest('.comment'); - } - $row.removeClass('collapsed'); - }, - - _onClickCloseComment: function(ev) { - ev.preventDefault(); - var $row = $(ev.target).closest('.comment'); - $row.data('commentEl').removeClass('hidden'); - $row.remove(); - return false; - }, - - _onClickDeleteComment: function(ev) { - ev.preventDefault(); - var $comment = $(ev.target).closest('.comment'); - var commentId = $comment.data('id'); - var $loading = $comment.find('.deleteLoading'); - var $commentField = $comment.find('.message'); - var $submit = $comment.find('.submit'); - var $cancel = $comment.find('.cancel'); - - $commentField.prop('contenteditable', false); - $submit.prop('disabled', true); - $cancel.prop('disabled', true); - $comment.addClass('disabled'); - $loading.removeClass('hidden'); - - this.collection.get(commentId).destroy({ - success: function() { - $comment.data('commentEl').remove(); - $comment.remove(); - }, - error: function() { - $loading.addClass('hidden'); - $comment.removeClass('disabled'); - $commentField.prop('contenteditable', true); - $submit.prop('disabled', false); - $cancel.prop('disabled', false); - - OC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with id {id}', {id: commentId})); - } - }); - - return false; - }, - - _onClickShowMore: function(ev) { - ev.preventDefault(); - this.nextPage(); - }, - - /** - * takes care of updating comment element states after submit (either new - * comment or edit). - * - * @param {OC.Backbone.Model} model - * @param {jQuery} $form - * @private - */ - _onSubmitSuccess: function(model, $form) { - var $submit = $form.find('.submit'); - var $loading = $form.find('.submitLoading'); - - $submit.removeClass('hidden'); - $loading.addClass('hidden'); - }, - - _commentBodyHTML2Plain: function($el) { - var $comment = $el.clone(); - - $comment.find('.avatar-name-wrapper').each(function () { - var $this = $(this); - var $inserted = $this.parent(); - $inserted.html('@' + $this.find('.avatar').data('username')); - }); - - $comment.html(OCP.Comments.richToPlain($comment.html())); - - var oldHtml; - var html = $comment.html(); - do { - // replace works one by one - oldHtml = html; - html = oldHtml.replace("<br>", "\n"); // preserve line breaks - } while(oldHtml !== html); - $comment.html(html); - - return $comment.text(); - }, - - _onSubmitComment: function(e) { - var self = this; - var $form = $(e.target); - var commentId = $form.closest('.comment').data('id'); - var currentUser = OC.getCurrentUser(); - var $submit = $form.find('.submit'); - var $loading = $form.find('.submitLoading'); - var $commentField = $form.find('.message'); - var message = $commentField.text().trim(); - e.preventDefault(); - - if (!message.length || message.length > this._commentMaxLength) { - return; - } - - $commentField.prop('contenteditable', false); - $submit.addClass('hidden'); - $loading.removeClass('hidden'); - - message = this._commentBodyHTML2Plain($commentField); - if (commentId) { - // edit mode - var comment = this.collection.get(commentId); - comment.save({ - message: message - }, { - success: function(model) { - self._onSubmitSuccess(model, $form); - }, - error: function() { - self._onSubmitError($form, commentId); - } - }); - } else { - this.collection.create({ - actorId: currentUser.uid, - actorDisplayName: currentUser.displayName, - actorType: 'users', - verb: 'comment', - message: message, - creationDateTime: (new Date()).toUTCString() - }, { - at: 0, - // wait for real creation before adding - wait: true, - success: function(model) { - self._onSubmitSuccess(model, $form); - }, - error: function() { - self._onSubmitError($form, undefined); - } - }); - } - - return false; - }, - - /** - * takes care of updating the UI after an error on submit (either new - * comment or edit). - * - * @param {jQuery} $form - * @param {string|undefined} commentId - * @private - */ - _onSubmitError: function($form, commentId) { - $form.find('.submit').removeClass('hidden'); - $form.find('.submitLoading').addClass('hidden'); - $form.find('.message').prop('contenteditable', true); - - if(!_.isUndefined(commentId)) { - OC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', {id: commentId}), {type: 'error'}); - } else { - OC.Notification.show(t('comments', 'Error occurred while posting comment'), {type: 'error'}); - } - }, - - /** - * ensures the contenteditable div is really empty, when user removed - * all input, so that the placeholder will be shown again - * - * @private - */ - _onTextChange: function() { - var $message = $('#commentsTabView').find('.newCommentForm div.message'); - if(!$message.text().trim().length) { - $message.empty(); - } - }, - - /** - * Limit pasting to plain text - * - * @param e - * @private - */ - _onPaste: function (e) { - e.preventDefault(); - var text = e.originalEvent.clipboardData.getData("text/plain"); - document.execCommand('insertText', false, text); - }, - - /** - * Returns whether the given message is long and needs - * collapsing - */ - _isLong: function(message) { - return message.length > 250 || (message.match(/\n/g) || []).length > 1; - } - }); - - OCA.Comments.CommentsTabView = CommentsTabView; -})(OC, OCA); diff --git a/apps/comments/js/commentsummarymodel.js b/apps/comments/js/commentsummarymodel.js deleted file mode 100644 index ffabbc30fb4..00000000000 --- a/apps/comments/js/commentsummarymodel.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function(OC, OCA) { - - _.extend(OC.Files.Client, { - PROPERTY_READMARKER: '{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker' - }); - - /** - * @class OCA.Comments.CommentSummaryModel - * @classdesc - * - * Model containing summary information related to comments - * like the read marker. - * - */ - var CommentSummaryModel = OC.Backbone.Model.extend( - /** @lends OCA.Comments.CommentSummaryModel.prototype */ { - sync: OC.Backbone.davSync, - - /** - * Object type - * - * @type string - */ - _objectType: 'files', - - /** - * Object id - * - * @type string - */ - _objectId: null, - - davProperties: { - 'readMarker': OC.Files.Client.PROPERTY_READMARKER - }, - - /** - * Initializes the summary model - * - * @param {string} [options.objectType] object type - * @param {string} [options.objectId] object id - */ - initialize: function(attrs, options) { - options = options || {}; - if (options.objectType) { - this._objectType = options.objectType; - } - }, - - url: function() { - return OC.linkToRemote('dav') + '/comments/' + - encodeURIComponent(this._objectType) + '/' + - encodeURIComponent(this.id) + '/'; - } - }); - - OCA.Comments.CommentSummaryModel = CommentSummaryModel; -})(OC, OCA); diff --git a/apps/comments/js/filesplugin.js b/apps/comments/js/filesplugin.js deleted file mode 100644 index 8c5762065a1..00000000000 --- a/apps/comments/js/filesplugin.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -/* global Handlebars */ - -(function() { - - _.extend(OC.Files.Client, { - PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread' - }); - - var TEMPLATE_COMMENTS_UNREAD = - '<a class="action action-comment permanent" title="{{countMessage}}" href="#">' + - '<img class="svg" src="{{iconUrl}}"/>' + - '</a>'; - - OCA.Comments = _.extend({}, OCA.Comments); - if (!OCA.Comments) { - /** - * @namespace - */ - OCA.Comments = {}; - } - - /** - * @namespace - */ - OCA.Comments.FilesPlugin = { - ignoreLists: [ - 'files_trashbin', - 'files.public' - ], - - _formatCommentCount: function(count) { - if (!this._commentsUnreadTemplate) { - this._commentsUnreadTemplate = Handlebars.compile(TEMPLATE_COMMENTS_UNREAD); - } - return this._commentsUnreadTemplate({ - count: count, - countMessage: n('comments', '%n unread comment', '%n unread comments', count), - iconUrl: OC.imagePath('core', 'actions/comment') - }); - }, - - attach: function(fileList) { - var self = this; - if (this.ignoreLists.indexOf(fileList.id) >= 0) { - return; - } - - fileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView')); - - var oldGetWebdavProperties = fileList._getWebdavProperties; - fileList._getWebdavProperties = function() { - var props = oldGetWebdavProperties.apply(this, arguments); - props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD); - return props; - }; - - fileList.filesClient.addFileInfoParser(function(response) { - var data = {}; - var props = response.propStat[0].properties; - var commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD]; - if (!_.isUndefined(commentsUnread) && commentsUnread !== '') { - data.commentsUnread = parseInt(commentsUnread, 10); - } - return data; - }); - - fileList.$el.addClass('has-comments'); - var oldCreateRow = fileList._createRow; - fileList._createRow = function(fileData) { - var $tr = oldCreateRow.apply(this, arguments); - if (fileData.commentsUnread) { - $tr.attr('data-comments-unread', fileData.commentsUnread); - } - return $tr; - }; - - // register "comment" action for reading comments - fileList.fileActions.registerAction({ - name: 'Comment', - displayName: t('comments', 'Comment'), - mime: 'all', - permissions: OC.PERMISSION_READ, - type: OCA.Files.FileActions.TYPE_INLINE, - render: function(actionSpec, isDefault, context) { - var $file = context.$file; - var unreadComments = $file.data('comments-unread'); - if (unreadComments) { - var $actionLink = $(self._formatCommentCount(unreadComments)); - context.$file.find('a.name>span.fileactions').append($actionLink); - return $actionLink; - } - return ''; - }, - actionHandler: function(fileName, context) { - context.$file.find('.action-comment').tooltip('hide'); - // open sidebar in comments section - context.fileList.showDetailsView(fileName, 'commentsTabView'); - } - }); - - // add attribute to "elementToFile" - var oldElementToFile = fileList.elementToFile; - fileList.elementToFile = function($el) { - var fileInfo = oldElementToFile.apply(this, arguments); - var commentsUnread = $el.data('comments-unread'); - if (commentsUnread) { - fileInfo.commentsUnread = commentsUnread; - } - return fileInfo; - }; - } - }; - -})(); - -OC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin); diff --git a/apps/comments/js/merged.json b/apps/comments/js/merged.json deleted file mode 100644 index 0202c7ff55a..00000000000 --- a/apps/comments/js/merged.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - "app.js", - "commentmodel.js", - "commentcollection.js", - "commentsummarymodel.js", - "commentstabview.js", - "filesplugin.js", - "activitytabviewplugin.js", - "vendor/Caret.js/dist/jquery.caret.min.js", - "vendor/At.js/dist/js/jquery.atwho.min.js" -] diff --git a/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js b/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js deleted file mode 100644 index d1e60152b4c..00000000000 --- a/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,h;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i&&(t="(?:^|\\s)"+t),r=decodeURI("%C3%80"),o=decodeURI("%C3%BF"),h=n?" ":"",a=new RegExp(t+"([A-Za-z"+r+"-"+o+"0-9_"+h+"'.+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],o.atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i,n,r;r=t;try{return"string"!=typeof t&&(r=t(e)),r.replace(/\$\{([^\}]*)\}/g,function(t,i,n){return e[i]})}catch(n){return i=n,""}},highlighter:function(t,e){var i;return e?(i=new RegExp(">\\s*([^<]*?)("+e.replace("+","\\+")+")([^<]*)\\s*<","ig"),t.replace(i,function(t,e,i,n){return"> "+e+"<strong>"+i+"</strong>"+n+" <"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t("<div class='atwho-container'></div>"))},e.prototype.setupRootElement=function(e,i){var n,r;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(r){if(n=r,this.iframe=null,t.fn.atwho.debug)throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i?i:this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is("[contentEditable]")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on("compositionstart",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on("compositionend",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on("keyup.atwhoInner",function(t){return function(e){return t.onKeyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.onKeydown(e)}}(this)).on("blur.atwhoInner",function(t){return function(e){var i;return(i=t.controller())?(i.expectedQueryCBId=null,i.view.hide(e,i.getOpt("displayTimeout"))):void 0}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch(e)}}(this)).on("scroll.atwhoInner",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e,i;i=this.controllers;for(t in i)e=i[t],e.destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if(r=null!=(n=this.controller())?n.view:void 0,r&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt("spaceSelectsMatch")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt("tabSelectsMatch")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho["default"],e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r,s;s=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[s].apply(this,i)}catch(r){return n=r,t.error(n+" Or maybe At.js doesn't have function "+s)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt("alias"),n=i?t+"-"+i+".atwho":t+".atwho",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt("callbacks")[t]||e[t]},i.prototype.getOpt=function(t,e){var i,n;try{return this.setting[t]}catch(n){return i=n,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt("insertTpl"),i=t.extend({},e.data("item-data"),{"atwho-at":this.at}),this.callbacks("tplEval").call(this,n,i,"onInsert")},i.prototype.renderView=function(t){var e;return e=this.getOpt("searchKey"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt("limit")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;r>i;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||"click"!==t.type||this.getOpt("lookUpOnClick"))&&(!this.getOpt("suspendOnComposing")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt("delay"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),n>0&&e>n?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;return e=this.$inputor.val(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks("matcher").call(this,this.at,s,this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),n="string"==typeof r,n&&r.length<this.getOpt("minLen",0)?void 0:(n&&r.length<=this.getOpt("maxLen",20)?(o=t-r.length,i=o+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger("matched",[this.at,r.text])):(r=null,this.view.hide()),this.query=r)},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=""===(o=this.getOpt("suffix"))?o:o||" ",t+=o,s=""+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret("pos",r.length+t.length,{iframe:this.app.iframe}),i.is(":focus")||i.focus(),i.change()},i}(r);var l,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;l=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;return t=this.app.window.getSelection(),t.rangeCount>0?t.getRangeAt(0):void 0},n.prototype._setRange=function(e,i,n){return null==n&&(n=this._getRange()),n&&i?(i=t(i)[0],"after"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)):void 0},n.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},n.prototype._movingEvent=function(t){var e;return"click"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,h,l,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(".atwho-query")).contents().unwrap(),r.is(":empty")&&r.remove(),(r=t(".atwho-query",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?(o=d.cloneRange(),o.setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(".atwho-inserted")&&(a=t(d.startContainer).contents().get(c),this._setRange("after",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling),n.is(".atwho-inserted")&&0===d.startOffset&&this._setRange("after",n.contents().last()))}if(t(d.startContainer).closest(".atwho-inserted").addClass("atwho-query").siblings().removeClass("atwho-query"),(r=t(".atwho-query",this.app.document)).length>0&&r.is(":empty")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass("atwho-inserted"),r.length>0)switch(e.which){case i.LEFT:return this._setRange("before",r.get(0),d),void r.removeClass("atwho-query");case i.RIGHT:return this._setRange("after",r.get(0).nextSibling,d),void r.removeClass("atwho-query")}if(r.length>0&&(f=r.attr("data-atwho-at-query"))&&(r.empty().html(f).attr("data-atwho-at-query",null),this._setRange("after",r.get(0),d)),o=d.cloneRange(),o.setStart(d.startContainer,0),u=this.callbacks("matcher").call(this,this.at,o.toString(),this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),h="string"==typeof u,0===r.length&&h&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t("<span/>",this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass("atwho-query"),d.surroundContents(r.get(0)),l=r.contents().last().get(0),l&&(/firefox/i.test(navigator.userAgent)?(d.setStart(l,l.length),d.setEnd(l,l.length),this._clearRange(d)):this._setRange("after",l,d))),!(h&&u.length<this.getOpt("minLen",0)))return h&&u.length<=this.getOpt("maxLen",20)?(p={text:u,el:r},this.trigger("matched",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass("atwho-inserted")?r.removeClass("atwho-query"):!1!==this.callbacks("afterMatchFailed").call(this,this.at,r)&&this._setRange("after",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i,n;return n=this.query.el.offset(),n&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(i=(e=t(this.app.iframe)).offset(),n.left+=i.left-this.$inputor.scrollLeft(),n.top+=i.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(":focus")||this.$inputor.focus(),n=this.getOpt("functionOverrides"),n.insert?n.insert.call(this,t,e):(o=""===(o=this.getOpt("suffix"))?o:o||" ",i=e.data("item-data"),this.query.el.removeClass("atwho-query").addClass("atwho-inserted").html(t).attr("data-atwho-at-query",""+i["atwho-at"]+this.query.text).attr("contenteditable","false"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(""+o)),this._setRange("after",s,r)),this.$inputor.is(":focus")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt("searchKey"),n=this.context.callbacks("filter").call(this.context,t,n,r)||[],i=this.context.callbacks("remoteFilter"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt("alias")||this.context.at.charCodeAt(0),t=this.context.getOpt("headerTpl"),t&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:"at-view-"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find("ul"),i=0,n=0,e.on("mousemove.atwho-view","li",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,o=t(r.currentTarget),!o.hasClass("cur")))return e.find(".cur").removeClass("cur"),o.addClass("cur")}}(this)).on("click.atwho-view","li",function(i){return function(n){return e.find(".cur").removeClass("cur"),t(n.currentTarget).addClass("cur"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(".cur").length>0},e.prototype.choose=function(t){var e,i;return(e=this.$el.find(".cur")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks("beforeInsert").call(this.context,i,e,t),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.getOpt("hideWithoutSuffix")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks("beforeReposition"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger("reposition",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),e=t.next(),e.length||(e=this.$el.find("li:first")),e.addClass("cur"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),i=t.prev(),i.length||(i=this.$el.find("li:last")),i.addClass("cur"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt("scrollDuration"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger("hidden",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;if(!(t.isArray(e)&&e.length>0))return void this.hide();for(this.$el.find("ul").empty(),n=this.$el.find("ul"),h=this.context.getOpt("displayTpl"),r=0,s=e.length;s>r;r++)o=e[r],o=t.extend({},o,{"atwho-at":this.context.at}),a=this.context.callbacks("tplEval").call(this.context,h,o,"onDisplay"),i=t(this.context.callbacks("highlighter").call(this.context,a,this.context.query.text)),i.data("item-data",o),n.append(i);return this.show(),this.context.getOpt("highlightFirst")?n.find("li:first").addClass("cur"):void 0},e}();var p;p={load:function(t,e){var i;return(i=this.controller(t))?i.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data("atwho"))||o.data("atwho",s=new n(this)),"object"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error("Method "+e+" does not exist on jQuery.atwho"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho["default"]={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1});
\ No newline at end of file diff --git a/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js b/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js deleted file mode 100644 index a4d02eae247..00000000000 --- a/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jquery.caret 2015-02-01 */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l;k="caret",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint("EndToEnd",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart("character",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(){var b,c,d,e,f;return j.getSelection&&(d=this.range())?(d.endOffset-1>0&&d.endContainer===!this.domInputor&&(b=d.cloneRange(),b.setStart(d.endContainer,d.endOffset-1),b.setEnd(d.endContainer,d.endOffset),e=b.getBoundingClientRect(),c={height:e.height,left:e.left+e.width,top:e.top},b.detach()),c&&0!==(null!=c?c.height:void 0)||(b=d.cloneRange(),f=a(h.createTextNode("|")),b.insertNode(f[0]),b.selectNode(f[0]),e=b.getBoundingClientRect(),c={height:e.height,left:e.left,top:e.top},f.remove(),b.detach())):h.selection&&(c=this.getOldIEOffset()),c&&(c.top+=a(j).scrollTop(),c.left+=a(j).scrollLeft()),c},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\r\n/g,"\n"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints("StartToEnd",a)>-1?c:-g.moveStart("character",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move("character",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move("character",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\s/g," ")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g="<span style='position: relative; display: inline;'>"+f(i)+"</span>",g+="<span id='caret' style='position: relative; display: inline;'>|</span>",g+="<span style='position: relative; display: inline;'>"+f(e)+"</span>",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find("#caret"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||"true"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error("Method "+d+" does not exist on jQuery.caret")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});
\ No newline at end of file diff --git a/apps/comments/l10n/af.js b/apps/comments/l10n/af.js deleted file mode 100644 index eeceac66ed0..00000000000 --- a/apps/comments/l10n/af.js +++ /dev/null @@ -1,34 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Kommentare", - "New comment …" : "Nuwe kommentaar…", - "Delete comment" : "Skrap kommentaar", - "Post" : "Plaas", - "Cancel" : "Kanselleer", - "Edit comment" : "Wysig kommentaar", - "[Deleted user]" : "[Geskrapte gebruiker]", - "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!", - "More comments …" : "Nog kommentare …", - "Save" : "Bewaar", - "Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}", - "Error occurred while retrieving comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is", - "Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is", - "Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is", - "_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"], - "Comment" : "Kommentaar", - "You commented" : "U het kommentaar gelewer", - "%1$s commented" : "%1$s het kommentaar gelewer", - "{author} commented" : "{outeur} het kommentaar gelewer", - "You commented on %1$s" : "U het op %1$s kommentaar gelewer", - "You commented on {file}" : "U het op {lêer} kommentaar gelewer", - "%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer", - "{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer", - "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem", - "{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem", - "Unknown user" : "Onbekende gebruiker", - "A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem", - "A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/af.json b/apps/comments/l10n/af.json deleted file mode 100644 index 16d5c8efa0e..00000000000 --- a/apps/comments/l10n/af.json +++ /dev/null @@ -1,32 +0,0 @@ -{ "translations": { - "Comments" : "Kommentare", - "New comment …" : "Nuwe kommentaar…", - "Delete comment" : "Skrap kommentaar", - "Post" : "Plaas", - "Cancel" : "Kanselleer", - "Edit comment" : "Wysig kommentaar", - "[Deleted user]" : "[Geskrapte gebruiker]", - "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!", - "More comments …" : "Nog kommentare …", - "Save" : "Bewaar", - "Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}", - "Error occurred while retrieving comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is", - "Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is", - "Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is", - "_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"], - "Comment" : "Kommentaar", - "You commented" : "U het kommentaar gelewer", - "%1$s commented" : "%1$s het kommentaar gelewer", - "{author} commented" : "{outeur} het kommentaar gelewer", - "You commented on %1$s" : "U het op %1$s kommentaar gelewer", - "You commented on {file}" : "U het op {lêer} kommentaar gelewer", - "%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer", - "{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer", - "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem", - "{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem", - "Unknown user" : "Onbekende gebruiker", - "A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem", - "A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/af_ZA.js b/apps/comments/l10n/af_ZA.js deleted file mode 100644 index 0f841f8ec48..00000000000 --- a/apps/comments/l10n/af_ZA.js +++ /dev/null @@ -1,6 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Kanselleer" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/af_ZA.json b/apps/comments/l10n/af_ZA.json deleted file mode 100644 index 81ad64aac33..00000000000 --- a/apps/comments/l10n/af_ZA.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "translations": { - "Cancel" : "Kanselleer" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/ar.js b/apps/comments/l10n/ar.js index 380ff321551..725c42c1cb4 100644 --- a/apps/comments/l10n/ar.js +++ b/apps/comments/l10n/ar.js @@ -2,26 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "تعليقات", - "Unknown user" : "مستخدم غير معروف", - "New comment …" : "تعليق جديد", - "Delete comment" : "حذف التعليق", - "Post" : "ارسال", - "Cancel" : "إلغاء", - "Edit comment" : "تعديل التعليق", - "[Deleted user]" : "[مستخدم محذوف]", - "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!", - "More comments …" : "مزيد من التعليقات...", - "Save" : "حفظ", - "Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}", - "Error occurred while retrieving comment with id {id}" : "حصل خطأ أثناء عرض التعليق رقم {id}", - "Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}", - "Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق", - "Comment" : "تعليق", "You commented" : "قمت بكتابة تعليق", - "%1$s commented" : "%1$s كتب تعليق", + "{author} commented" : "{author} علّق", + "You commented on %1$s" : "لقد علقت على %1$s", "You commented on {file}" : "علقت على {file}", "%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s", "{author} commented on {file}" : "{author} علّق على {file}", - "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات" + "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات", + "Files" : "الملفّات", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "تمت الإشارة إليك في \"{file}\"، في تعليقٍ من قِبَل حسابٍ تمّ حذفه سلفاً", + "{user} mentioned you in a comment on \"{file}\"" : "أشار إليك {user} في تعليق على {file}", + "Files app plugin to add comments to files" : "المكوِّن الإضافي لتطبيق الملفات لإضافة تعليقات إلى الملفات", + "Edit comment" : "تعديل التعليق", + "Delete comment" : "حذف التعليق", + "Cancel edit" : "إلغاء التعديل", + "New comment" : "تعليق جديد", + "Write a comment …" : "أكتُب تعليق ...", + "Post comment" : "أضف تعليق", + "@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي", + "Could not reload comments" : "تعذّرت إعادة تحميل التعليقات", + "Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة", + "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات", + "No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!", + "No more messages" : "لامزيد من الرسائل", + "Retry" : "أعد المحاولة", + "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"], + "Comment" : "تعليق", + "An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق", + "Comment deleted" : "التعليق محذوف", + "An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق", + "An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق" }, "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/comments/l10n/ar.json b/apps/comments/l10n/ar.json index 20871a07487..4438e60ebf3 100644 --- a/apps/comments/l10n/ar.json +++ b/apps/comments/l10n/ar.json @@ -1,25 +1,34 @@ { "translations": { "Comments" : "تعليقات", - "Unknown user" : "مستخدم غير معروف", - "New comment …" : "تعليق جديد", - "Delete comment" : "حذف التعليق", - "Post" : "ارسال", - "Cancel" : "إلغاء", - "Edit comment" : "تعديل التعليق", - "[Deleted user]" : "[مستخدم محذوف]", - "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!", - "More comments …" : "مزيد من التعليقات...", - "Save" : "حفظ", - "Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}", - "Error occurred while retrieving comment with id {id}" : "حصل خطأ أثناء عرض التعليق رقم {id}", - "Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}", - "Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق", - "Comment" : "تعليق", "You commented" : "قمت بكتابة تعليق", - "%1$s commented" : "%1$s كتب تعليق", + "{author} commented" : "{author} علّق", + "You commented on %1$s" : "لقد علقت على %1$s", "You commented on {file}" : "علقت على {file}", "%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s", "{author} commented on {file}" : "{author} علّق على {file}", - "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات" + "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات", + "Files" : "الملفّات", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "تمت الإشارة إليك في \"{file}\"، في تعليقٍ من قِبَل حسابٍ تمّ حذفه سلفاً", + "{user} mentioned you in a comment on \"{file}\"" : "أشار إليك {user} في تعليق على {file}", + "Files app plugin to add comments to files" : "المكوِّن الإضافي لتطبيق الملفات لإضافة تعليقات إلى الملفات", + "Edit comment" : "تعديل التعليق", + "Delete comment" : "حذف التعليق", + "Cancel edit" : "إلغاء التعديل", + "New comment" : "تعليق جديد", + "Write a comment …" : "أكتُب تعليق ...", + "Post comment" : "أضف تعليق", + "@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي", + "Could not reload comments" : "تعذّرت إعادة تحميل التعليقات", + "Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة", + "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات", + "No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!", + "No more messages" : "لامزيد من الرسائل", + "Retry" : "أعد المحاولة", + "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"], + "Comment" : "تعليق", + "An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق", + "Comment deleted" : "التعليق محذوف", + "An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق", + "An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق" },"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/comments/l10n/ast.js b/apps/comments/l10n/ast.js index 1f31c5d5732..0ee30bdbb53 100644 --- a/apps/comments/l10n/ast.js +++ b/apps/comments/l10n/ast.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Comentariu nuevu...", - "Delete comment" : "Desaniciar comentariu", - "Post" : "Espublizar", - "Cancel" : "Encaboxar", - "Edit comment" : "Editar comentariu", - "[Deleted user]" : "[Usuariu desaniciáu]", - "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", - "More comments …" : "Más comentarios...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}", - "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}", - "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}", - "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], - "Comment" : "Comentariu", "You commented" : "Comentesti", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Comentesti en %1$s", - "You commented on {file}" : "Comentesti en {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{autor} comentó en {ficheru}", + "You commented on %1$s" : "Comentesti en: %1$s", + "You commented on {file}" : "Comentesti en: {file}", + "%1$s commented on %2$s" : "%1$s comentó en: %2$s", + "{author} commented on {file}" : "{author} comentó en: {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»", - "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»", - "Unknown user" : "Usuariu desconocíu", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»" + "Files" : "Ficheros", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mentáronte en «{file}», nun comentariu d'una cuenta que ta desaniciada", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentóte nun comentariu de: «{file}»", + "Files app plugin to add comments to files" : "Plugin de l'aplicación Ficheros p'amestar comentarios a los ficheros", + "Edit comment" : "Editar el comentariu", + "Delete comment" : "Desaniciar el comentariu", + "Cancel edit" : "Anular la edición", + "New comment" : "Comentariu nuevu", + "Write a comment …" : "Escribi un comentariu…", + "Post comment" : "Espublizar el comentariu", + "@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente", + "Could not reload comments" : "Nun se pudieron recargar los comentarios", + "Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos", + "Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios", + "No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!", + "No more messages" : "Nun hai más mensaxes", + "Retry" : "Retentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"], + "Comment" : "Comentariu", + "An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu", + "Comment deleted" : "Desanicióse'l comentariu", + "An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu", + "An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ast.json b/apps/comments/l10n/ast.json index 9027a3c5f86..43193924d64 100644 --- a/apps/comments/l10n/ast.json +++ b/apps/comments/l10n/ast.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Comentariu nuevu...", - "Delete comment" : "Desaniciar comentariu", - "Post" : "Espublizar", - "Cancel" : "Encaboxar", - "Edit comment" : "Editar comentariu", - "[Deleted user]" : "[Usuariu desaniciáu]", - "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", - "More comments …" : "Más comentarios...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}", - "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}", - "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}", - "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], - "Comment" : "Comentariu", "You commented" : "Comentesti", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Comentesti en %1$s", - "You commented on {file}" : "Comentesti en {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{autor} comentó en {ficheru}", + "You commented on %1$s" : "Comentesti en: %1$s", + "You commented on {file}" : "Comentesti en: {file}", + "%1$s commented on %2$s" : "%1$s comentó en: %2$s", + "{author} commented on {file}" : "{author} comentó en: {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»", - "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»", - "Unknown user" : "Usuariu desconocíu", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»" + "Files" : "Ficheros", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mentáronte en «{file}», nun comentariu d'una cuenta que ta desaniciada", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentóte nun comentariu de: «{file}»", + "Files app plugin to add comments to files" : "Plugin de l'aplicación Ficheros p'amestar comentarios a los ficheros", + "Edit comment" : "Editar el comentariu", + "Delete comment" : "Desaniciar el comentariu", + "Cancel edit" : "Anular la edición", + "New comment" : "Comentariu nuevu", + "Write a comment …" : "Escribi un comentariu…", + "Post comment" : "Espublizar el comentariu", + "@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente", + "Could not reload comments" : "Nun se pudieron recargar los comentarios", + "Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos", + "Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios", + "No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!", + "No more messages" : "Nun hai más mensaxes", + "Retry" : "Retentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"], + "Comment" : "Comentariu", + "An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu", + "Comment deleted" : "Desanicióse'l comentariu", + "An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu", + "An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/az.js b/apps/comments/l10n/az.js deleted file mode 100644 index 75428f67cc5..00000000000 --- a/apps/comments/l10n/az.js +++ /dev/null @@ -1,8 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Dayandır", - "Save" : "Saxla", - "Comment" : "Komentariya" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/az.json b/apps/comments/l10n/az.json deleted file mode 100644 index c54d6648c59..00000000000 --- a/apps/comments/l10n/az.json +++ /dev/null @@ -1,6 +0,0 @@ -{ "translations": { - "Cancel" : "Dayandır", - "Save" : "Saxla", - "Comment" : "Komentariya" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/bg.js b/apps/comments/l10n/bg.js index ee323661bf0..a645c5a543f 100644 --- a/apps/comments/l10n/bg.js +++ b/apps/comments/l10n/bg.js @@ -2,33 +2,29 @@ OC.L10N.register( "comments", { "Comments" : "Коментари", - "New comment …" : "Нов коментар...", - "Delete comment" : "Изтрий коментар", - "Post" : "Публикация", - "Cancel" : "Отказ", - "Edit comment" : "Редактирай коментра", - "[Deleted user]" : "[Изтрит потребител]", - "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!", - "More comments …" : "Още коментари...", - "Save" : "Запазване", - "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}", - "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}", - "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}", - "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], - "Comment" : "Коментар", "You commented" : "Вие коментирахте", - "%1$s commented" : "%1$s коментира", "{author} commented" : "{author} коментира", "You commented on %1$s" : "Ти коментира за %1$s", "You commented on {file}" : "Ти коментира за {file}", "%1$s commented on %2$s" : "%1$s коментиран за %2$s", "{author} commented on {file}" : "{author} коментира за {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", - "Unknown user" : "Непознат потребител", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”" + "Files" : "Файлове", + "{user} mentioned you in a comment on \"{file}\"" : "{user} ви спомена в коментар за “{file}”", + "Files app plugin to add comments to files" : "Добавка на приложението Файлове за добавяне на коментари към файловете", + "Edit comment" : "Редактирай коментра", + "Delete comment" : "Изтрий коментар", + "Cancel edit" : "Отказ на редактиране", + "Post comment" : "Публикуване на коментар", + "Unable to load the comments list" : "Списъкът с коментари не може да се зареди", + "No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!", + "No more messages" : " Няма повече съобщения", + "Retry" : "Опитай отново", + "_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"], + "Comment" : "Коментар", + "An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара", + "Comment deleted" : " Изтрит е коментар", + "An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара", + "An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/bg.json b/apps/comments/l10n/bg.json index 21d84ad2b00..5bb763dbc5d 100644 --- a/apps/comments/l10n/bg.json +++ b/apps/comments/l10n/bg.json @@ -1,32 +1,28 @@ { "translations": { "Comments" : "Коментари", - "New comment …" : "Нов коментар...", - "Delete comment" : "Изтрий коментар", - "Post" : "Публикация", - "Cancel" : "Отказ", - "Edit comment" : "Редактирай коментра", - "[Deleted user]" : "[Изтрит потребител]", - "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!", - "More comments …" : "Още коментари...", - "Save" : "Запазване", - "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}", - "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}", - "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}", - "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], - "Comment" : "Коментар", "You commented" : "Вие коментирахте", - "%1$s commented" : "%1$s коментира", "{author} commented" : "{author} коментира", "You commented on %1$s" : "Ти коментира за %1$s", "You commented on {file}" : "Ти коментира за {file}", "%1$s commented on %2$s" : "%1$s коментиран за %2$s", "{author} commented on {file}" : "{author} коментира за {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", - "Unknown user" : "Непознат потребител", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”" + "Files" : "Файлове", + "{user} mentioned you in a comment on \"{file}\"" : "{user} ви спомена в коментар за “{file}”", + "Files app plugin to add comments to files" : "Добавка на приложението Файлове за добавяне на коментари към файловете", + "Edit comment" : "Редактирай коментра", + "Delete comment" : "Изтрий коментар", + "Cancel edit" : "Отказ на редактиране", + "Post comment" : "Публикуване на коментар", + "Unable to load the comments list" : "Списъкът с коментари не може да се зареди", + "No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!", + "No more messages" : " Няма повече съобщения", + "Retry" : "Опитай отново", + "_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"], + "Comment" : "Коментар", + "An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара", + "Comment deleted" : " Изтрит е коментар", + "An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара", + "An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/bg_BG.js b/apps/comments/l10n/bg_BG.js deleted file mode 100644 index 6aa5a63fa28..00000000000 --- a/apps/comments/l10n/bg_BG.js +++ /dev/null @@ -1,39 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Коментари", - "Unknown user" : "Непознат потребител", - "New comment …" : "Нов коментар...", - "Delete comment" : "Изтрий коментар", - "Post" : "Публикация", - "Cancel" : "Отказ", - "Edit comment" : "Редактирай коментра", - "[Deleted user]" : "[Изтрит потребител]", - "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!", - "More comments …" : "Още коментари...", - "Save" : "Запазване", - "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}", - "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}", - "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}", - "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], - "Comment" : "Коментар", - "You commented" : "Вие коментирахте", - "%1$s commented" : "%1$s коментира", - "{author} commented" : "{author} коментира", - "You commented on %1$s" : "Ти коментира за %1$s", - "You commented on {file}" : "Ти коментира за {file}", - "%1$s commented on %2$s" : "%1$s коментиран за %2$s", - "{author} commented on {file}" : "{author} коментира за {file}", - "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", - "Type in a new comment..." : "Напиши нов коментар...", - "No other comments available" : "Няма други коментари", - "More comments..." : "Още коментари...", - "{count} unread comments" : "{count} непрочетени коментари", - "You commented on %2$s" : "Ти коментира за %2$s" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/bg_BG.json b/apps/comments/l10n/bg_BG.json deleted file mode 100644 index dc3ed5416a9..00000000000 --- a/apps/comments/l10n/bg_BG.json +++ /dev/null @@ -1,37 +0,0 @@ -{ "translations": { - "Comments" : "Коментари", - "Unknown user" : "Непознат потребител", - "New comment …" : "Нов коментар...", - "Delete comment" : "Изтрий коментар", - "Post" : "Публикация", - "Cancel" : "Отказ", - "Edit comment" : "Редактирай коментра", - "[Deleted user]" : "[Изтрит потребител]", - "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!", - "More comments …" : "Още коментари...", - "Save" : "Запазване", - "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}", - "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}", - "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}", - "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], - "Comment" : "Коментар", - "You commented" : "Вие коментирахте", - "%1$s commented" : "%1$s коментира", - "{author} commented" : "{author} коментира", - "You commented on %1$s" : "Ти коментира за %1$s", - "You commented on {file}" : "Ти коментира за {file}", - "%1$s commented on %2$s" : "%1$s коментиран за %2$s", - "{author} commented on {file}" : "{author} коментира за {file}", - "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”", - "Type in a new comment..." : "Напиши нов коментар...", - "No other comments available" : "Няма други коментари", - "More comments..." : "Още коментари...", - "{count} unread comments" : "{count} непрочетени коментари", - "You commented on %2$s" : "Ти коментира за %2$s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/bn_BD.js b/apps/comments/l10n/bn_BD.js deleted file mode 100644 index fcff25b8402..00000000000 --- a/apps/comments/l10n/bn_BD.js +++ /dev/null @@ -1,8 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "বাতিল", - "Save" : "সংরক্ষণ", - "Comment" : "মন্তব্য" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/bn_BD.json b/apps/comments/l10n/bn_BD.json deleted file mode 100644 index 81cd8fe1a48..00000000000 --- a/apps/comments/l10n/bn_BD.json +++ /dev/null @@ -1,6 +0,0 @@ -{ "translations": { - "Cancel" : "বাতিল", - "Save" : "সংরক্ষণ", - "Comment" : "মন্তব্য" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/bn_IN.js b/apps/comments/l10n/bn_IN.js deleted file mode 100644 index 7b479dc0264..00000000000 --- a/apps/comments/l10n/bn_IN.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "বাতিল করা", - "Save" : "সেভ" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/bn_IN.json b/apps/comments/l10n/bn_IN.json deleted file mode 100644 index 9df2ea07062..00000000000 --- a/apps/comments/l10n/bn_IN.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "বাতিল করা", - "Save" : "সেভ" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/bs.js b/apps/comments/l10n/bs.js deleted file mode 100644 index b1f98fedfa6..00000000000 --- a/apps/comments/l10n/bs.js +++ /dev/null @@ -1,8 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Odustani", - "Save" : "Spremi", - "Comment" : "Komentar" -}, -"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/comments/l10n/bs.json b/apps/comments/l10n/bs.json deleted file mode 100644 index d73df1a46c6..00000000000 --- a/apps/comments/l10n/bs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ "translations": { - "Cancel" : "Odustani", - "Save" : "Spremi", - "Comment" : "Komentar" -},"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/comments/l10n/ca.js b/apps/comments/l10n/ca.js index d798017ef75..a8f3ce6d136 100644 --- a/apps/comments/l10n/ca.js +++ b/apps/comments/l10n/ca.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentaris", - "New comment …" : "Nou comentari...", - "Delete comment" : "Esborrar comentari", - "Post" : "Publica", - "Cancel" : "Cancel·la", - "Edit comment" : "Editar comentari", - "[Deleted user]" : "[usuari Esborrat]", - "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!", - "More comments …" : "Més comentaris...", - "Save" : "Desa", - "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}", - "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}", - "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}", - "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari", - "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"], + "You commented" : "Heu escrit un comentari", + "{author} commented" : "{author} ha escrit un comentari", + "You commented on %1$s" : "Heu escrit un comentari a %1$s", + "You commented on {file}" : "Heu escrit un comentari a {file}", + "%1$s commented on %2$s" : "%1$s ha escrit un comentari a %2$s", + "{author} commented on {file}" : "{author} ha escrit un comentari a {file}", + "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per a fitxers", + "Files" : "Fitxers", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un compte que s'ha suprimit", + "{user} mentioned you in a comment on \"{file}\"" : "{user} us ha esmentat en un comentari a «{file}»", + "Files app plugin to add comments to files" : "Connector de l'aplicació Fitxers per a afegir comentaris als fitxers", + "Edit comment" : "Edita el comentari", + "Delete comment" : "Suprimeix el comentari", + "Cancel edit" : "Cancel·la l'edició", + "New comment" : "Comentari nou", + "Write a comment …" : "Escriviu un comentari…", + "Post comment" : "Publica el comentari", + "@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent", + "Could not reload comments" : "No s'han pogut tornar a carregar els comentaris", + "Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits", + "Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris", + "No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!", + "No more messages" : "No hi ha més missatges", + "Retry" : "Torna-ho a provar", + "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"], "Comment" : "Comentari", - "You commented" : "Heu comentat", - "%1$s commented" : "%1$s ha comentat", - "{author} commented" : "{author} ha comentat", - "You commented on %1$s" : "Heu comentat a %1$s", - "You commented on {file}" : "Heu comentat a {file}", - "%1$s commented on %2$s" : "%1$s ha comentat a %2$s", - "{author} commented on {file}" : "{author} ha comentat a {file}", - "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”", - "Unknown user" : "Usuari desconegut", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”" + "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari", + "Comment deleted" : "S'ha suprimit el comentari", + "An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari", + "An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ca.json b/apps/comments/l10n/ca.json index ed8005829c7..d1f4ce2c7fe 100644 --- a/apps/comments/l10n/ca.json +++ b/apps/comments/l10n/ca.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Comentaris", - "New comment …" : "Nou comentari...", - "Delete comment" : "Esborrar comentari", - "Post" : "Publica", - "Cancel" : "Cancel·la", - "Edit comment" : "Editar comentari", - "[Deleted user]" : "[usuari Esborrat]", - "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!", - "More comments …" : "Més comentaris...", - "Save" : "Desa", - "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}", - "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}", - "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}", - "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari", - "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"], + "You commented" : "Heu escrit un comentari", + "{author} commented" : "{author} ha escrit un comentari", + "You commented on %1$s" : "Heu escrit un comentari a %1$s", + "You commented on {file}" : "Heu escrit un comentari a {file}", + "%1$s commented on %2$s" : "%1$s ha escrit un comentari a %2$s", + "{author} commented on {file}" : "{author} ha escrit un comentari a {file}", + "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per a fitxers", + "Files" : "Fitxers", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un compte que s'ha suprimit", + "{user} mentioned you in a comment on \"{file}\"" : "{user} us ha esmentat en un comentari a «{file}»", + "Files app plugin to add comments to files" : "Connector de l'aplicació Fitxers per a afegir comentaris als fitxers", + "Edit comment" : "Edita el comentari", + "Delete comment" : "Suprimeix el comentari", + "Cancel edit" : "Cancel·la l'edició", + "New comment" : "Comentari nou", + "Write a comment …" : "Escriviu un comentari…", + "Post comment" : "Publica el comentari", + "@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent", + "Could not reload comments" : "No s'han pogut tornar a carregar els comentaris", + "Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits", + "Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris", + "No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!", + "No more messages" : "No hi ha més missatges", + "Retry" : "Torna-ho a provar", + "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"], "Comment" : "Comentari", - "You commented" : "Heu comentat", - "%1$s commented" : "%1$s ha comentat", - "{author} commented" : "{author} ha comentat", - "You commented on %1$s" : "Heu comentat a %1$s", - "You commented on {file}" : "Heu comentat a {file}", - "%1$s commented on %2$s" : "%1$s ha comentat a %2$s", - "{author} commented on {file}" : "{author} ha comentat a {file}", - "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”", - "Unknown user" : "Usuari desconegut", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”" + "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari", + "Comment deleted" : "S'ha suprimit el comentari", + "An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari", + "An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/cs.js b/apps/comments/l10n/cs.js index 52785210636..1c8d69c14e5 100644 --- a/apps/comments/l10n/cs.js +++ b/apps/comments/l10n/cs.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Komentáře", - "New comment …" : "Nový komentář ...", - "Delete comment" : "Smazat komentář", - "Post" : "Zveřejnit", - "Cancel" : "Zrušit", + "You commented" : "Okomentovali jste", + "{author} commented" : "{author} okomentoval(a)", + "You commented on %1$s" : "Okomentovali jste %1$s", + "You commented on {file}" : "Okomentovali jste {file}", + "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s", + "{author} commented on {file}" : "{author} okomentoval(a) {file}", + "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům", + "Files" : "Soubory", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“", + "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům", "Edit comment" : "Upravit komentář", - "[Deleted user]" : "[Smazaný uživatel]", + "Delete comment" : "Smazat komentář", + "Cancel edit" : "Zrušit úpravu", + "New comment" : "Nový komentář", + "Write a comment …" : "Napsat komentář…", + "Post comment" : "Odeslat komentář", + "@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr", + "Could not reload comments" : "Znovunačtení komentářů se nezdařilo", + "Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené", + "Unable to load the comments list" : "Nedaří se načíst seznam komentářů", "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!", - "More comments …" : "Více komentářů ...", - "Save" : "Uložit", - "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}", - "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", - "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], + "No more messages" : "Žádné další zprávy", + "Retry" : "Zkusit znovu", + "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"], "Comment" : "Komentář", - "You commented" : "Okomentoval(a) jsi", - "%1$s commented" : "%1$s okomentován", - "{author} commented" : "{author} okomentoval(a)", - "You commented on %1$s" : "Okomentoval(a) jste %1$s", - "You commented on {file}" : "Okomentoval(a) jste {file}", - "%1$s commented on %2$s" : "%1$s okomentoval %2$s", - "{author} commented on {file}" : "{author} okomentoval(a) {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s", - "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”", - "Unknown user" : "Neznámý uživatel", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"" + "An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře", + "Comment deleted" : "Komentář smazán", + "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře", + "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"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/comments/l10n/cs.json b/apps/comments/l10n/cs.json index 334ff58dd55..c933b71a7c6 100644 --- a/apps/comments/l10n/cs.json +++ b/apps/comments/l10n/cs.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Komentáře", - "New comment …" : "Nový komentář ...", - "Delete comment" : "Smazat komentář", - "Post" : "Zveřejnit", - "Cancel" : "Zrušit", + "You commented" : "Okomentovali jste", + "{author} commented" : "{author} okomentoval(a)", + "You commented on %1$s" : "Okomentovali jste %1$s", + "You commented on {file}" : "Okomentovali jste {file}", + "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s", + "{author} commented on {file}" : "{author} okomentoval(a) {file}", + "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům", + "Files" : "Soubory", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“", + "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům", "Edit comment" : "Upravit komentář", - "[Deleted user]" : "[Smazaný uživatel]", + "Delete comment" : "Smazat komentář", + "Cancel edit" : "Zrušit úpravu", + "New comment" : "Nový komentář", + "Write a comment …" : "Napsat komentář…", + "Post comment" : "Odeslat komentář", + "@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr", + "Could not reload comments" : "Znovunačtení komentářů se nezdařilo", + "Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené", + "Unable to load the comments list" : "Nedaří se načíst seznam komentářů", "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!", - "More comments …" : "Více komentářů ...", - "Save" : "Uložit", - "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}", - "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", - "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], + "No more messages" : "Žádné další zprávy", + "Retry" : "Zkusit znovu", + "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"], "Comment" : "Komentář", - "You commented" : "Okomentoval(a) jsi", - "%1$s commented" : "%1$s okomentován", - "{author} commented" : "{author} okomentoval(a)", - "You commented on %1$s" : "Okomentoval(a) jste %1$s", - "You commented on {file}" : "Okomentoval(a) jste {file}", - "%1$s commented on %2$s" : "%1$s okomentoval %2$s", - "{author} commented on {file}" : "{author} okomentoval(a) {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s", - "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”", - "Unknown user" : "Neznámý uživatel", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" + "An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře", + "Comment deleted" : "Komentář smazán", + "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře", + "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře" +},"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/comments/l10n/cs_CZ.js b/apps/comments/l10n/cs_CZ.js deleted file mode 100644 index da14fcf91b8..00000000000 --- a/apps/comments/l10n/cs_CZ.js +++ /dev/null @@ -1,39 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komentáře", - "Unknown user" : "Neznámý uživatel", - "New comment …" : "Nový komentář ...", - "Delete comment" : "Smazat komentář", - "Post" : "Zveřejnit", - "Cancel" : "Zrušit", - "Edit comment" : "Upravit komentář", - "[Deleted user]" : "[Smazaný uživatel]", - "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!", - "More comments …" : "Více komentářů ...", - "Save" : "Uložit", - "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}", - "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", - "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], - "Comment" : "Komentář", - "You commented" : "Okomentoval(a) jsi", - "%1$s commented" : "%1$s okomentován", - "{author} commented" : "{author} okomentoval(a)", - "You commented on %1$s" : "Okomentoval(a) jste %1$s", - "You commented on {file}" : "Okomentoval(a) jste {file}", - "%1$s commented on %2$s" : "%1$s okomentoval %2$s", - "{author} commented on {file}" : "{author} okomentoval(a) {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s", - "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”", - "Type in a new comment..." : "Zadat nový komentář...", - "No other comments available" : "Nejsou dostupné žádné další komentáře", - "More comments..." : "Více komentářů...", - "{count} unread comments" : "{count} nepřečtených komentářů", - "You commented on %2$s" : "Okomentoval(a) jsi %2$s" -}, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/comments/l10n/cs_CZ.json b/apps/comments/l10n/cs_CZ.json deleted file mode 100644 index 1f1a84b6c09..00000000000 --- a/apps/comments/l10n/cs_CZ.json +++ /dev/null @@ -1,37 +0,0 @@ -{ "translations": { - "Comments" : "Komentáře", - "Unknown user" : "Neznámý uživatel", - "New comment …" : "Nový komentář ...", - "Delete comment" : "Smazat komentář", - "Post" : "Zveřejnit", - "Cancel" : "Zrušit", - "Edit comment" : "Upravit komentář", - "[Deleted user]" : "[Smazaný uživatel]", - "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!", - "More comments …" : "Více komentářů ...", - "Save" : "Uložit", - "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}", - "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", - "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], - "Comment" : "Komentář", - "You commented" : "Okomentoval(a) jsi", - "%1$s commented" : "%1$s okomentován", - "{author} commented" : "{author} okomentoval(a)", - "You commented on %1$s" : "Okomentoval(a) jste %1$s", - "You commented on {file}" : "Okomentoval(a) jste {file}", - "%1$s commented on %2$s" : "%1$s okomentoval %2$s", - "{author} commented on {file}" : "{author} okomentoval(a) {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s", - "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”", - "Type in a new comment..." : "Zadat nový komentář...", - "No other comments available" : "Nejsou dostupné žádné další komentáře", - "More comments..." : "Více komentářů...", - "{count} unread comments" : "{count} nepřečtených komentářů", - "You commented on %2$s" : "Okomentoval(a) jsi %2$s" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/cy_GB.js b/apps/comments/l10n/cy_GB.js deleted file mode 100644 index 4e1c6a57f6e..00000000000 --- a/apps/comments/l10n/cy_GB.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Diddymu", - "Save" : "Cadw" -}, -"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); diff --git a/apps/comments/l10n/cy_GB.json b/apps/comments/l10n/cy_GB.json deleted file mode 100644 index 1ea3eafef30..00000000000 --- a/apps/comments/l10n/cy_GB.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Diddymu", - "Save" : "Cadw" -},"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/comments/l10n/da.js b/apps/comments/l10n/da.js index 8701bb639f1..23c4b9873e7 100644 --- a/apps/comments/l10n/da.js +++ b/apps/comments/l10n/da.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar ...", - "Delete comment" : "Slet kommentar", - "Post" : "Indlæg", - "Cancel" : "Annullér", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet user]", - "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!", - "More comments …" : "Flere kommentarer...", - "Save" : "Gem", - "Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}", - "Error occurred while retrieving comment with id {id}" : "Der opstod fejl under hentning af kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}", - "Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"], - "Comment" : "Kommentér", "You commented" : "Du kommenterede", - "%1$s commented" : "%1$s kommenterede", "{author} commented" : "{author} kommenterede", "You commented on %1$s" : "Du kommenterede %1$s", "You commented on {file}" : "Du kommenterede {file}", "%1$s commented on %2$s" : "%1$s kommenterede %2$s", "{author} commented on {file}" : "{author} kommenterede {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"", - "Unknown user" : "Ukendt bruger", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer", + "Edit comment" : "Rediger kommentar", + "Delete comment" : "Slet kommentar", + "Cancel edit" : "Annuller redigering", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv kommentar…", + "Post comment" : "Skriv kommentar", + "@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger", + "Could not reload comments" : "Kunne ikke indlæse kommentarer", + "Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst", + "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten", + "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!", + "No more messages" : "Ikke flere beskeder", + "Retry" : "Prøv igen", + "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"], + "Comment" : "Kommenter", + "An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren", + "Comment deleted" : "Kommentar slettet", + "An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren", + "An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/da.json b/apps/comments/l10n/da.json index 2725cdb94a3..4abcd817f3b 100644 --- a/apps/comments/l10n/da.json +++ b/apps/comments/l10n/da.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar ...", - "Delete comment" : "Slet kommentar", - "Post" : "Indlæg", - "Cancel" : "Annullér", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet user]", - "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!", - "More comments …" : "Flere kommentarer...", - "Save" : "Gem", - "Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}", - "Error occurred while retrieving comment with id {id}" : "Der opstod fejl under hentning af kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}", - "Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"], - "Comment" : "Kommentér", "You commented" : "Du kommenterede", - "%1$s commented" : "%1$s kommenterede", "{author} commented" : "{author} kommenterede", "You commented on %1$s" : "Du kommenterede %1$s", "You commented on {file}" : "Du kommenterede {file}", "%1$s commented on %2$s" : "%1$s kommenterede %2$s", "{author} commented on {file}" : "{author} kommenterede {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"", - "Unknown user" : "Ukendt bruger", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\"" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer", + "Edit comment" : "Rediger kommentar", + "Delete comment" : "Slet kommentar", + "Cancel edit" : "Annuller redigering", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv kommentar…", + "Post comment" : "Skriv kommentar", + "@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger", + "Could not reload comments" : "Kunne ikke indlæse kommentarer", + "Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst", + "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten", + "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!", + "No more messages" : "Ikke flere beskeder", + "Retry" : "Prøv igen", + "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"], + "Comment" : "Kommenter", + "An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren", + "Comment deleted" : "Kommentar slettet", + "An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren", + "An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/de.js b/apps/comments/l10n/de.js index 9df6ee853f0..dc964592b19 100644 --- a/apps/comments/l10n/de.js +++ b/apps/comments/l10n/de.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentare", - "New comment …" : "Neuer Kommentar …", - "Delete comment" : "Kommentar löschen", - "Post" : "Speichern", - "Cancel" : "Abbrechen", - "Edit comment" : "Kommentar bearbeiten", - "[Deleted user]" : "[Gelöschter Benutzer]", - "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!", - "More comments …" : "Weitere Kommentare…", - "Save" : "Speichern", - "Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}", - "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten", - "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten", - "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], - "Comment" : "Kommentar", - "You commented" : "Von Dir kommentiert", - "%1$s commented" : "%1$s kommentierte", + "You commented" : "Du hast kommentiert", "{author} commented" : "{author} kommentierte", "You commented on %1$s" : "Du hast %1$s kommentiert", "You commented on {file}" : "Du hast {file} kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s", "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ", - "Unknown user" : "Unbekannter Benutzer", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt" + "Files" : "Dateien", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du wurdest in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt", + "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", + "Edit comment" : "Kommentar bearbeiten", + "Delete comment" : "Kommentar löschen", + "Cancel edit" : "Bearbeiten abbrechen", + "New comment" : "Neuer Kommentar", + "Write a comment …" : "Einen Kommentar schreiben …", + "Post comment" : "Kommentar veröffentlichen", + "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", + "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", + "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden", + "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden", + "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!", + "No more messages" : "Keine weiteren Nachrichten", + "Retry" : "Wiederholen", + "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten", + "Comment deleted" : "Kommentar gelöscht", + "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", + "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/de.json b/apps/comments/l10n/de.json index 708267fc616..d0679199b23 100644 --- a/apps/comments/l10n/de.json +++ b/apps/comments/l10n/de.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Kommentare", - "New comment …" : "Neuer Kommentar …", - "Delete comment" : "Kommentar löschen", - "Post" : "Speichern", - "Cancel" : "Abbrechen", - "Edit comment" : "Kommentar bearbeiten", - "[Deleted user]" : "[Gelöschter Benutzer]", - "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!", - "More comments …" : "Weitere Kommentare…", - "Save" : "Speichern", - "Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}", - "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten", - "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten", - "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], - "Comment" : "Kommentar", - "You commented" : "Von Dir kommentiert", - "%1$s commented" : "%1$s kommentierte", + "You commented" : "Du hast kommentiert", "{author} commented" : "{author} kommentierte", "You commented on %1$s" : "Du hast %1$s kommentiert", "You commented on {file}" : "Du hast {file} kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s", "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ", - "Unknown user" : "Unbekannter Benutzer", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt" + "Files" : "Dateien", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du wurdest in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt", + "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", + "Edit comment" : "Kommentar bearbeiten", + "Delete comment" : "Kommentar löschen", + "Cancel edit" : "Bearbeiten abbrechen", + "New comment" : "Neuer Kommentar", + "Write a comment …" : "Einen Kommentar schreiben …", + "Post comment" : "Kommentar veröffentlichen", + "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", + "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", + "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden", + "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden", + "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!", + "No more messages" : "Keine weiteren Nachrichten", + "Retry" : "Wiederholen", + "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten", + "Comment deleted" : "Kommentar gelöscht", + "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", + "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/de_AT.js b/apps/comments/l10n/de_AT.js deleted file mode 100644 index f92cad6bcde..00000000000 --- a/apps/comments/l10n/de_AT.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Abbrechen", - "Save" : "Speichern" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/de_AT.json b/apps/comments/l10n/de_AT.json deleted file mode 100644 index 45d2f9e21dd..00000000000 --- a/apps/comments/l10n/de_AT.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Abbrechen", - "Save" : "Speichern" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/de_DE.js b/apps/comments/l10n/de_DE.js index a2ef3431198..8a492c10bd3 100644 --- a/apps/comments/l10n/de_DE.js +++ b/apps/comments/l10n/de_DE.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentare", - "New comment …" : "Neuer Kommentar …", - "Delete comment" : "Kommentar löschen", - "Post" : "Speichern", - "Cancel" : "Abbrechen", - "Edit comment" : "Kommentar bearbeiten", - "[Deleted user]" : "[gelöschter Benutzer]", - "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!", - "More comments …" : "Weitere Kommentare …", - "Save" : "Speichern", - "Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt", - "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten", - "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten", - "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], - "Comment" : "Kommentar", "You commented" : "Sie haben kommentiert", - "%1$s commented" : "%1$s kommentierte", "{author} commented" : "{author} kommentierte", "You commented on %1$s" : "Sie haben %1$s kommentiert", "You commented on {file}" : "Sie haben {file} kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s", "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt", - "Unknown user" : "Unbekannter Benutzer", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt" + "Files" : "Dateien", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sie wurden in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Sie in einem Kommentar zu \"{file}\" erwähnt", + "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", + "Edit comment" : "Kommentar bearbeiten", + "Delete comment" : "Kommentar löschen", + "Cancel edit" : "Bearbeiten abbrechen", + "New comment" : "Neuer Kommentar", + "Write a comment …" : "Schreiben Sie einen Kommentar …", + "Post comment" : "Kommentar veröffentlichen", + "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", + "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", + "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden", + "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden", + "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!", + "No more messages" : "Keine weiteren Nachrichten", + "Retry" : "Wiederholen", + "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten", + "Comment deleted" : "Kommentar gelöscht", + "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", + "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/de_DE.json b/apps/comments/l10n/de_DE.json index fb636bd9500..44f2bbd961d 100644 --- a/apps/comments/l10n/de_DE.json +++ b/apps/comments/l10n/de_DE.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Kommentare", - "New comment …" : "Neuer Kommentar …", - "Delete comment" : "Kommentar löschen", - "Post" : "Speichern", - "Cancel" : "Abbrechen", - "Edit comment" : "Kommentar bearbeiten", - "[Deleted user]" : "[gelöschter Benutzer]", - "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!", - "More comments …" : "Weitere Kommentare …", - "Save" : "Speichern", - "Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt", - "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten", - "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten", - "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], - "Comment" : "Kommentar", "You commented" : "Sie haben kommentiert", - "%1$s commented" : "%1$s kommentierte", "{author} commented" : "{author} kommentierte", "You commented on %1$s" : "Sie haben %1$s kommentiert", "You commented on {file}" : "Sie haben {file} kommentiert", "%1$s commented on %2$s" : "%1$s kommentierte %2$s", "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt", - "Unknown user" : "Unbekannter Benutzer", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt" + "Files" : "Dateien", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sie wurden in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Sie in einem Kommentar zu \"{file}\" erwähnt", + "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", + "Edit comment" : "Kommentar bearbeiten", + "Delete comment" : "Kommentar löschen", + "Cancel edit" : "Bearbeiten abbrechen", + "New comment" : "Neuer Kommentar", + "Write a comment …" : "Schreiben Sie einen Kommentar …", + "Post comment" : "Kommentar veröffentlichen", + "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker", + "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden", + "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden", + "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden", + "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!", + "No more messages" : "Keine weiteren Nachrichten", + "Retry" : "Wiederholen", + "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten", + "Comment deleted" : "Kommentar gelöscht", + "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", + "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/el.js b/apps/comments/l10n/el.js index 4a63e08b926..80b8c2b00fe 100644 --- a/apps/comments/l10n/el.js +++ b/apps/comments/l10n/el.js @@ -2,33 +2,30 @@ OC.L10N.register( "comments", { "Comments" : "Σχόλια", - "New comment …" : "Νέο σχόλιο ...", - "Delete comment" : "Διαγραφή σχολίου", - "Post" : "Δημοσίευση", - "Cancel" : "Ακύρωση", - "Edit comment" : "Επεξεργασία σχολίου", - "[Deleted user]" : "[Διαγραμμένος χρήστης]", - "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", - "More comments …" : "Περισσότερα σχόλια ...", - "Save" : "Αποθήκευση", - "Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}", - "Error occurred while retrieving comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την λήψη σχολίου με αναγνωριστικό {id}", - "Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}", - "Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου", - "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"], - "Comment" : "Σχόλιο", "You commented" : "Σχολιάσατε", - "%1$s commented" : "%1$s σχολίασε", "{author} commented" : "Ο {author} σχολίασε", "You commented on %1$s" : "Σχολιάσατε στο %1$s", "You commented on {file}" : "Σχολιάσατε στο {file}", "%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s", "{author} commented on {file}" : "Ο {author} σχολίασε στο {file}", "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”", - "Unknown user" : "Άγνωστος χρήστης", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”" + "Files" : "Αρχεία", + "{user} mentioned you in a comment on \"{file}\"" : "Ο/η {user} σας ανέφερε σε σχόλιο στο “{file}”", + "Files app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία", + "Edit comment" : "Επεξεργασία σχολίου", + "Delete comment" : "Διαγραφή σχολίου", + "Cancel edit" : "Ακύρωση επεξεργασίας", + "New comment" : "Νέο σχόλιο", + "Post comment" : "Αναρτήστε σχόλιο", + "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.", + "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", + "No more messages" : "Δεν υπάρχουν άλλα μηνύματα", + "Retry" : "Δοκιμή ξανά", + "_1 new comment_::_{unread} new comments_" : ["1 νέο σχόλιο","{unread} νέα σχόλια"], + "Comment" : "Σχόλιο", + "An error occurred while trying to edit the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια επεξεργασίας του σχολίου", + "Comment deleted" : "Το σχόλιο διαγράφηκε", + "An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου", + "An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/el.json b/apps/comments/l10n/el.json index 0801a87b103..3c0c4a730e9 100644 --- a/apps/comments/l10n/el.json +++ b/apps/comments/l10n/el.json @@ -1,32 +1,29 @@ { "translations": { "Comments" : "Σχόλια", - "New comment …" : "Νέο σχόλιο ...", - "Delete comment" : "Διαγραφή σχολίου", - "Post" : "Δημοσίευση", - "Cancel" : "Ακύρωση", - "Edit comment" : "Επεξεργασία σχολίου", - "[Deleted user]" : "[Διαγραμμένος χρήστης]", - "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", - "More comments …" : "Περισσότερα σχόλια ...", - "Save" : "Αποθήκευση", - "Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}", - "Error occurred while retrieving comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την λήψη σχολίου με αναγνωριστικό {id}", - "Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}", - "Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου", - "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"], - "Comment" : "Σχόλιο", "You commented" : "Σχολιάσατε", - "%1$s commented" : "%1$s σχολίασε", "{author} commented" : "Ο {author} σχολίασε", "You commented on %1$s" : "Σχολιάσατε στο %1$s", "You commented on {file}" : "Σχολιάσατε στο {file}", "%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s", "{author} commented on {file}" : "Ο {author} σχολίασε στο {file}", "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”", - "Unknown user" : "Άγνωστος χρήστης", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”" + "Files" : "Αρχεία", + "{user} mentioned you in a comment on \"{file}\"" : "Ο/η {user} σας ανέφερε σε σχόλιο στο “{file}”", + "Files app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία", + "Edit comment" : "Επεξεργασία σχολίου", + "Delete comment" : "Διαγραφή σχολίου", + "Cancel edit" : "Ακύρωση επεξεργασίας", + "New comment" : "Νέο σχόλιο", + "Post comment" : "Αναρτήστε σχόλιο", + "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.", + "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!", + "No more messages" : "Δεν υπάρχουν άλλα μηνύματα", + "Retry" : "Δοκιμή ξανά", + "_1 new comment_::_{unread} new comments_" : ["1 νέο σχόλιο","{unread} νέα σχόλια"], + "Comment" : "Σχόλιο", + "An error occurred while trying to edit the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια επεξεργασίας του σχολίου", + "Comment deleted" : "Το σχόλιο διαγράφηκε", + "An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου", + "An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/en_GB.js b/apps/comments/l10n/en_GB.js index 20e3f12897e..20843d54147 100644 --- a/apps/comments/l10n/en_GB.js +++ b/apps/comments/l10n/en_GB.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comments", - "New comment …" : "New comment …", - "Delete comment" : "Delete comment", - "Post" : "Post", - "Cancel" : "Cancel", - "Edit comment" : "Edit comment", - "[Deleted user]" : "[Deleted user]", - "No comments yet, start the conversation!" : "No comments yet, start the conversation!", - "More comments …" : "More comments …", - "Save" : "Save", - "Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}", - "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}", - "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}", - "Error occurred while posting comment" : "Error occurred while posting comment", - "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"], - "Comment" : "Comment", "You commented" : "You commented", - "%1$s commented" : "%1$s commented", "{author} commented" : "{author} commented", "You commented on %1$s" : "You commented on %1$s", "You commented on {file}" : "You commented on {file}", "%1$s commented on %2$s" : "%1$s commented on %2$s", "{author} commented on {file}" : "{author} commented on {file}", "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”", - "Unknown user" : "Unknown user", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”" + "Files" : "Files", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "You were mentioned on \"{file}\", in a comment by an account that has since been deleted", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin to add comments to files", + "Edit comment" : "Edit comment", + "Delete comment" : "Delete comment", + "Cancel edit" : "Cancel edit", + "New comment" : "New comment", + "Write a comment …" : "Write a comment …", + "Post comment" : "Post comment", + "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker", + "Could not reload comments" : "Could not reload comments", + "Failed to mark comments as read" : "Failed to mark comments as read", + "Unable to load the comments list" : "Unable to load the comments list", + "No comments yet, start the conversation!" : "No comments yet, start the conversation!", + "No more messages" : "No more messages", + "Retry" : "Retry", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"], + "Comment" : "Comment", + "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment", + "Comment deleted" : "Comment deleted", + "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment", + "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/en_GB.json b/apps/comments/l10n/en_GB.json index 284015bba52..1d61dbdf9a6 100644 --- a/apps/comments/l10n/en_GB.json +++ b/apps/comments/l10n/en_GB.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Comments", - "New comment …" : "New comment …", - "Delete comment" : "Delete comment", - "Post" : "Post", - "Cancel" : "Cancel", - "Edit comment" : "Edit comment", - "[Deleted user]" : "[Deleted user]", - "No comments yet, start the conversation!" : "No comments yet, start the conversation!", - "More comments …" : "More comments …", - "Save" : "Save", - "Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}", - "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}", - "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}", - "Error occurred while posting comment" : "Error occurred while posting comment", - "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"], - "Comment" : "Comment", "You commented" : "You commented", - "%1$s commented" : "%1$s commented", "{author} commented" : "{author} commented", "You commented on %1$s" : "You commented on %1$s", "You commented on {file}" : "You commented on {file}", "%1$s commented on %2$s" : "%1$s commented on %2$s", "{author} commented on {file}" : "{author} commented on {file}", "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”", - "Unknown user" : "Unknown user", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”" + "Files" : "Files", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "You were mentioned on \"{file}\", in a comment by an account that has since been deleted", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin to add comments to files", + "Edit comment" : "Edit comment", + "Delete comment" : "Delete comment", + "Cancel edit" : "Cancel edit", + "New comment" : "New comment", + "Write a comment …" : "Write a comment …", + "Post comment" : "Post comment", + "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker", + "Could not reload comments" : "Could not reload comments", + "Failed to mark comments as read" : "Failed to mark comments as read", + "Unable to load the comments list" : "Unable to load the comments list", + "No comments yet, start the conversation!" : "No comments yet, start the conversation!", + "No more messages" : "No more messages", + "Retry" : "Retry", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"], + "Comment" : "Comment", + "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment", + "Comment deleted" : "Comment deleted", + "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment", + "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/eo.js b/apps/comments/l10n/eo.js deleted file mode 100644 index c9416bf59a9..00000000000 --- a/apps/comments/l10n/eo.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Type in a new comment..." : "Tajpu novan komenton...", - "Delete comment" : "Forigi komenton", - "Post" : "Afiŝi", - "Cancel" : "Nuligi", - "Edit comment" : "Redakti komenton", - "[Deleted user]" : "[Forigita uzanto]", - "Comments" : "Komentoj", - "No other comments available" : "Neniu alia komento disponeblas", - "More comments..." : "Pli da komentoj...", - "Save" : "Konservi", - "Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}", - "{count} unread comments" : "{count} nelegitaj komentoj", - "Comment" : "Komento", - "%1$s commented" : "%1$s komentis", - "%1$s commented on %2$s" : "%1$s komentis %2$s" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/eo.json b/apps/comments/l10n/eo.json deleted file mode 100644 index b14d92caefa..00000000000 --- a/apps/comments/l10n/eo.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Type in a new comment..." : "Tajpu novan komenton...", - "Delete comment" : "Forigi komenton", - "Post" : "Afiŝi", - "Cancel" : "Nuligi", - "Edit comment" : "Redakti komenton", - "[Deleted user]" : "[Forigita uzanto]", - "Comments" : "Komentoj", - "No other comments available" : "Neniu alia komento disponeblas", - "More comments..." : "Pli da komentoj...", - "Save" : "Konservi", - "Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}", - "{count} unread comments" : "{count} nelegitaj komentoj", - "Comment" : "Komento", - "%1$s commented" : "%1$s komentis", - "%1$s commented on %2$s" : "%1$s komentis %2$s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es.js b/apps/comments/l10n/es.js index 7b6ed49be1f..38edb32d713 100644 --- a/apps/comments/l10n/es.js +++ b/apps/comments/l10n/es.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Nuevo comentario", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario eliminado]", - "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}", - "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}", - "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"], - "Comment" : "Comentar", "You commented" : "Has comentado", - "%1$s commented" : "%1$s comentados", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Has comentado en %1$s", "You commented on {file}" : "Has comentado en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”" + "Files" : "Archivos", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cacelar edición", + "New comment" : "Comentario nuevo", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "Fallo al marcar los comentarios como leídos", + "Unable to load the comments list" : "No se pudo cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es.json b/apps/comments/l10n/es.json index ef4a4e9d923..51ae29fc0fa 100644 --- a/apps/comments/l10n/es.json +++ b/apps/comments/l10n/es.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Nuevo comentario", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario eliminado]", - "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}", - "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}", - "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"], - "Comment" : "Comentar", "You commented" : "Has comentado", - "%1$s commented" : "%1$s comentados", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Has comentado en %1$s", "You commented on {file}" : "Has comentado en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "Files" : "Archivos", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cacelar edición", + "New comment" : "Comentario nuevo", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "Fallo al marcar los comentarios como leídos", + "Unable to load the comments list" : "No se pudo cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/es_419.js b/apps/comments/l10n/es_419.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_419.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_419.json b/apps/comments/l10n/es_419.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_419.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_AR.js b/apps/comments/l10n/es_AR.js deleted file mode 100644 index f1df8024c17..00000000000 --- a/apps/comments/l10n/es_AR.js +++ /dev/null @@ -1,34 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Nuevo comentario ...", - "Delete comment" : "Borrar comentario", - "Post" : "Post", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}", - "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con id {id}", - "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}", - "Error occurred while posting comment" : "Se ha producido un error al publicar un comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentar", - "You commented" : "Ud. ha comentado", - "%1$s commented" : "%1$s comentados", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Ud. ah comentado en %1$s", - "You commented on {file}" : "Ud. ha comentado en {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_AR.json b/apps/comments/l10n/es_AR.json deleted file mode 100644 index 032f4a58f5a..00000000000 --- a/apps/comments/l10n/es_AR.json +++ /dev/null @@ -1,32 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Nuevo comentario ...", - "Delete comment" : "Borrar comentario", - "Post" : "Post", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}", - "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con id {id}", - "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}", - "Error occurred while posting comment" : "Se ha producido un error al publicar un comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentar", - "You commented" : "Ud. ha comentado", - "%1$s commented" : "%1$s comentados", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Ud. ah comentado en %1$s", - "You commented on {file}" : "Ud. ha comentado en {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_CL.js b/apps/comments/l10n/es_CL.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_CL.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_CL.json b/apps/comments/l10n/es_CL.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_CL.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_CO.js b/apps/comments/l10n/es_CO.js index df46f2006af..b8516c1449b 100644 --- a/apps/comments/l10n/es_CO.js +++ b/apps/comments/l10n/es_CO.js @@ -2,35 +2,34 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_CO.json b/apps/comments/l10n/es_CO.json index d388b93cb63..c212111b999 100644 --- a/apps/comments/l10n/es_CO.json +++ b/apps/comments/l10n/es_CO.json @@ -1,34 +1,33 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/es_CR.js b/apps/comments/l10n/es_CR.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_CR.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_CR.json b/apps/comments/l10n/es_CR.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_CR.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_DO.js b/apps/comments/l10n/es_DO.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_DO.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_DO.json b/apps/comments/l10n/es_DO.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_DO.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_EC.js b/apps/comments/l10n/es_EC.js index df46f2006af..1a90e73546f 100644 --- a/apps/comments/l10n/es_EC.js +++ b/apps/comments/l10n/es_EC.js @@ -2,35 +2,30 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" + "Files" : "Archivo", + "{user} mentioned you in a comment on \"{file}\"" : "{user} te mencionó en un comentario en \"{file}\"", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "Post comment" : "Publicar comentario", + "Failed to mark comments as read" : "Error al marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario eliminado", + "An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_EC.json b/apps/comments/l10n/es_EC.json index d388b93cb63..23c9432df1a 100644 --- a/apps/comments/l10n/es_EC.json +++ b/apps/comments/l10n/es_EC.json @@ -1,34 +1,29 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "Files" : "Archivo", + "{user} mentioned you in a comment on \"{file}\"" : "{user} te mencionó en un comentario en \"{file}\"", + "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "Post comment" : "Publicar comentario", + "Failed to mark comments as read" : "Error al marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario eliminado", + "An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/es_GT.js b/apps/comments/l10n/es_GT.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_GT.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_GT.json b/apps/comments/l10n/es_GT.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_GT.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_HN.js b/apps/comments/l10n/es_HN.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_HN.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_HN.json b/apps/comments/l10n/es_HN.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_HN.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_MX.js b/apps/comments/l10n/es_MX.js index df46f2006af..30959ef751f 100644 --- a/apps/comments/l10n/es_MX.js +++ b/apps/comments/l10n/es_MX.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} lo mencionó en un comentario en \"{file}\"", + "Files app plugin to add comments to files" : "Un complemento a la aplicación de Archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_MX.json b/apps/comments/l10n/es_MX.json index d388b93cb63..db42c396705 100644 --- a/apps/comments/l10n/es_MX.json +++ b/apps/comments/l10n/es_MX.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", "{author} commented" : "{author} comentó", "You commented on %1$s" : "Usted comentó en %1$s", "You commented on {file}" : "Hiciste un comentario de {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", "{author} commented on {file}" : "{author} comentó en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "Files" : "Archivo", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado", + "{user} mentioned you in a comment on \"{file}\"" : "{user} lo mencionó en un comentario en \"{file}\"", + "Files app plugin to add comments to files" : "Un complemento a la aplicación de Archivos para agregar comentarios a los archivos", + "Edit comment" : "Editar comentario", + "Delete comment" : "Borrar comentario", + "Cancel edit" : "Cancelar edición", + "New comment" : "Nuevo comentario", + "Write a comment …" : "Escribir un comentario …", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente", + "Could not reload comments" : "No se pudieron recargar los comentarios", + "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos", + "Unable to load the comments list" : "No se puede cargar la lista de comentarios", + "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", + "No more messages" : "No hay más mensajes", + "Retry" : "Reintentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", + "Comment deleted" : "Comentario borrado", + "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario", + "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/es_NI.js b/apps/comments/l10n/es_NI.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_NI.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_NI.json b/apps/comments/l10n/es_NI.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_NI.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_PA.js b/apps/comments/l10n/es_PA.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_PA.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_PA.json b/apps/comments/l10n/es_PA.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_PA.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_PE.js b/apps/comments/l10n/es_PE.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_PE.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_PE.json b/apps/comments/l10n/es_PE.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_PE.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_PR.js b/apps/comments/l10n/es_PR.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_PR.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_PR.json b/apps/comments/l10n/es_PR.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_PR.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_PY.js b/apps/comments/l10n/es_PY.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_PY.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_PY.json b/apps/comments/l10n/es_PY.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_PY.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_SV.js b/apps/comments/l10n/es_SV.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_SV.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_SV.json b/apps/comments/l10n/es_SV.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_SV.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/es_UY.js b/apps/comments/l10n/es_UY.js deleted file mode 100644 index df46f2006af..00000000000 --- a/apps/comments/l10n/es_UY.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/es_UY.json b/apps/comments/l10n/es_UY.json deleted file mode 100644 index d388b93cb63..00000000000 --- a/apps/comments/l10n/es_UY.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "New comment …" : "Comentario nuevo ...", - "Delete comment" : "Borrar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario borrado]", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "More comments …" : "Más comentarios ...", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}", - "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}", - "Error occurred while posting comment" : "Se presentó un error al publicar el comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "You commented" : "Comentaste", - "%1$s commented" : "%1$s comentó", - "{author} commented" : "{author} comentó", - "You commented on %1$s" : "Usted comentó en %1$s", - "You commented on {file}" : "Hiciste un comentario de {file}", - "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "{author} commented on {file}" : "{author} comentó en {file}", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”", - "Unknown user" : "Usuario desconocido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/et_EE.js b/apps/comments/l10n/et_EE.js index 952ac372a3d..f8e80d0e690 100644 --- a/apps/comments/l10n/et_EE.js +++ b/apps/comments/l10n/et_EE.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentaarid", - "New comment …" : "Uus kommentaar", - "Delete comment" : "Kustuta kommentaar", - "Post" : "Postita", - "Cancel" : "Loobu", - "Edit comment" : "Muuda kommentaari", - "[Deleted user]" : "[Kustutatud kasutaja]", - "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust", - "More comments …" : "Veel kommentaare ...", - "Save" : "Salvesta", - "Allowed characters {count} of {max}" : "Lubatud märkide arv {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Kommentaari {id} laadimisel tekkis tõrge", - "Error occurred while updating comment with id {id}" : "Kommentaari {id} uuendamisel tekkis tõrge", - "Error occurred while posting comment" : "Viga kommentaari postitamisel", - "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"], - "Comment" : "Kommentaar", "You commented" : "Sa kommenteerisid", - "%1$s commented" : "%1$s kommenteeris", "{author} commented" : "{author} kommenteeris", "You commented on %1$s" : "Sa kommmenteerisid %1$s", "You commented on {file}" : "Sa kommenteerisid faili {file}", "%1$s commented on %2$s" : "%1$s kommenteeris %2$s", "{author} commented on {file}" : "{author} kommenteeris faili {file}", "<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris", - "{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris", - "Unknown user" : "Tundmatu kasutaja", - "A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Kustutatud kasutaja mainis sind faili \"{file}\" kommentaaris" + "Files" : "Failid", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sind mainiti \"{file}\" kommentaarides konto poolt, mis on nüüdseks kustutatud", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mainis sind faili \"{file}\" kommentaaris", + "Files app plugin to add comments to files" : "Failid rakenduse laiendus failidele kommentaaride lisamiseks", + "Edit comment" : "Muuda kommentaari", + "Delete comment" : "Kustuta kommentaar", + "Cancel edit" : "Loobu muutmisest", + "New comment" : "Uus kommentaar", + "Write a comment …" : "Kirjuta kommentaar...", + "Post comment" : "Postita kommentaar", + "@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks", + "Could not reload comments" : "Ei saanud kommentaare uuesti laadida", + "Failed to mark comments as read" : "Kommentaaride loetuks märkimine ebaõnnestus", + "Unable to load the comments list" : "Kommentaaride loendi laadimine ebaõnnestus", + "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust!", + "No more messages" : "Rohkem teateid pole", + "Retry" : "Proovi uuesti", + "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"], + "Comment" : "Kommentaar", + "An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge", + "Comment deleted" : "Kommentaar kustutatud", + "An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge", + "An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/et_EE.json b/apps/comments/l10n/et_EE.json index abe05a2eb81..3c56525cb0c 100644 --- a/apps/comments/l10n/et_EE.json +++ b/apps/comments/l10n/et_EE.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Kommentaarid", - "New comment …" : "Uus kommentaar", - "Delete comment" : "Kustuta kommentaar", - "Post" : "Postita", - "Cancel" : "Loobu", - "Edit comment" : "Muuda kommentaari", - "[Deleted user]" : "[Kustutatud kasutaja]", - "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust", - "More comments …" : "Veel kommentaare ...", - "Save" : "Salvesta", - "Allowed characters {count} of {max}" : "Lubatud märkide arv {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Kommentaari {id} laadimisel tekkis tõrge", - "Error occurred while updating comment with id {id}" : "Kommentaari {id} uuendamisel tekkis tõrge", - "Error occurred while posting comment" : "Viga kommentaari postitamisel", - "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"], - "Comment" : "Kommentaar", "You commented" : "Sa kommenteerisid", - "%1$s commented" : "%1$s kommenteeris", "{author} commented" : "{author} kommenteeris", "You commented on %1$s" : "Sa kommmenteerisid %1$s", "You commented on {file}" : "Sa kommenteerisid faili {file}", "%1$s commented on %2$s" : "%1$s kommenteeris %2$s", "{author} commented on {file}" : "{author} kommenteeris faili {file}", "<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris", - "{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris", - "Unknown user" : "Tundmatu kasutaja", - "A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Kustutatud kasutaja mainis sind faili \"{file}\" kommentaaris" + "Files" : "Failid", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sind mainiti \"{file}\" kommentaarides konto poolt, mis on nüüdseks kustutatud", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mainis sind faili \"{file}\" kommentaaris", + "Files app plugin to add comments to files" : "Failid rakenduse laiendus failidele kommentaaride lisamiseks", + "Edit comment" : "Muuda kommentaari", + "Delete comment" : "Kustuta kommentaar", + "Cancel edit" : "Loobu muutmisest", + "New comment" : "Uus kommentaar", + "Write a comment …" : "Kirjuta kommentaar...", + "Post comment" : "Postita kommentaar", + "@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks", + "Could not reload comments" : "Ei saanud kommentaare uuesti laadida", + "Failed to mark comments as read" : "Kommentaaride loetuks märkimine ebaõnnestus", + "Unable to load the comments list" : "Kommentaaride loendi laadimine ebaõnnestus", + "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust!", + "No more messages" : "Rohkem teateid pole", + "Retry" : "Proovi uuesti", + "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"], + "Comment" : "Kommentaar", + "An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge", + "Comment deleted" : "Kommentaar kustutatud", + "An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge", + "An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/eu.js b/apps/comments/l10n/eu.js index aa2a3711acd..efa029c41ad 100644 --- a/apps/comments/l10n/eu.js +++ b/apps/comments/l10n/eu.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Iruzkinak", - "New comment …" : "Iruzkin berria...", + "You commented" : "Iruzkindu duzu", + "{author} commented" : "{author}-(e)k iruzkindu du", + "You commented on %1$s" : "%1$s-en iruzkindu duzu", + "You commented on {file}" : "{file} fitxategian iruzkina egin duzu", + "%1$s commented on %2$s" : "%1$s-ek %2$s-en iruzkindu du", + "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkina egin du", + "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak</strong>", + "Files" : "Fitxategiak", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den kontu baten iruzkin batean", + "{user} mentioned you in a comment on \"{file}\"" : "{user} erabiltzaileak aipatu zaitu \"{file}\"-eko iruzkin batean", + "Files app plugin to add comments to files" : "Fitxategiak aplikazioko plugina, fitxategiei iruzkinak gehitzeko", + "Edit comment" : "Editatu iruzkina", "Delete comment" : "Ezabatu iruzkina", - "Post" : "Bidali", - "Cancel" : "Utzi", - "Edit comment" : "Iruzkina editatu", - "[Deleted user]" : "[Deleted user]", + "Cancel edit" : "Utzi editatzeari", + "New comment" : "Iruzkin berria", + "Write a comment …" : "Idatzi iruzkin bat ...", + "Post comment" : "Argitaratu iruzkina", + "@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako", + "Could not reload comments" : "Ezin izan dira iruzkinak freskatu", + "Failed to mark comments as read" : "Iruzkinak irakurritako gisa markatzeak huts egin du", + "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu", "No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!", - "More comments …" : "Iruzkin gehiago...", - "Save" : "Gorde", - "Allowed characters {count} of {max}" : "Onartutako karaktereak {max}-tik {count}", - "Error occurred while retrieving comment with id {id}" : "Akatsa gertatu da {id} id duen iruzkina berreskuratzerakoan", - "Error occurred while updating comment with id {id}" : "Akats bat gertatu da {id} id duen iruzkina aldatzerakoan", - "Error occurred while posting comment" : "Akats bat gertatu da iruzkina bidaltzerakoan", - "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"], - "Comment" : "Iruzkina", - "You commented" : "Iruzkindu duzu", - "%1$s commented" : "%1$s iruzkin du", - "{author} commented" : "{author}-(e)k iruzkin du", - "You commented on %1$s" : "%1$s-en Iruzkin duzu", - "You commented on {file}" : "{file}-en Iruzkin duzu", - "%1$s commented on %2$s" : "%1$s %2$s-en iruzkin du", - "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkin du", - "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s-(e)k aipatu zaitu iruzkinean “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user}-(e)k aipatu zaitu iruzkinean “{file}”", - "Unknown user" : "Erabiltzaile ezezaguna", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean “{file}”" + "No more messages" : "Ez da mezu gehiagorik", + "Retry" : "Saiatu berriro", + "_1 new comment_::_{unread} new comments_" : ["Iruzkin berri 1","{unread} iruzkin berri"], + "Comment" : "Iruzkindu", + "An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean", + "Comment deleted" : "Iruzkina ezabatu da", + "An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean", + "An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/eu.json b/apps/comments/l10n/eu.json index 2fdafcf45fc..9df5961d387 100644 --- a/apps/comments/l10n/eu.json +++ b/apps/comments/l10n/eu.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Iruzkinak", - "New comment …" : "Iruzkin berria...", + "You commented" : "Iruzkindu duzu", + "{author} commented" : "{author}-(e)k iruzkindu du", + "You commented on %1$s" : "%1$s-en iruzkindu duzu", + "You commented on {file}" : "{file} fitxategian iruzkina egin duzu", + "%1$s commented on %2$s" : "%1$s-ek %2$s-en iruzkindu du", + "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkina egin du", + "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak</strong>", + "Files" : "Fitxategiak", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den kontu baten iruzkin batean", + "{user} mentioned you in a comment on \"{file}\"" : "{user} erabiltzaileak aipatu zaitu \"{file}\"-eko iruzkin batean", + "Files app plugin to add comments to files" : "Fitxategiak aplikazioko plugina, fitxategiei iruzkinak gehitzeko", + "Edit comment" : "Editatu iruzkina", "Delete comment" : "Ezabatu iruzkina", - "Post" : "Bidali", - "Cancel" : "Utzi", - "Edit comment" : "Iruzkina editatu", - "[Deleted user]" : "[Deleted user]", + "Cancel edit" : "Utzi editatzeari", + "New comment" : "Iruzkin berria", + "Write a comment …" : "Idatzi iruzkin bat ...", + "Post comment" : "Argitaratu iruzkina", + "@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako", + "Could not reload comments" : "Ezin izan dira iruzkinak freskatu", + "Failed to mark comments as read" : "Iruzkinak irakurritako gisa markatzeak huts egin du", + "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu", "No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!", - "More comments …" : "Iruzkin gehiago...", - "Save" : "Gorde", - "Allowed characters {count} of {max}" : "Onartutako karaktereak {max}-tik {count}", - "Error occurred while retrieving comment with id {id}" : "Akatsa gertatu da {id} id duen iruzkina berreskuratzerakoan", - "Error occurred while updating comment with id {id}" : "Akats bat gertatu da {id} id duen iruzkina aldatzerakoan", - "Error occurred while posting comment" : "Akats bat gertatu da iruzkina bidaltzerakoan", - "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"], - "Comment" : "Iruzkina", - "You commented" : "Iruzkindu duzu", - "%1$s commented" : "%1$s iruzkin du", - "{author} commented" : "{author}-(e)k iruzkin du", - "You commented on %1$s" : "%1$s-en Iruzkin duzu", - "You commented on {file}" : "{file}-en Iruzkin duzu", - "%1$s commented on %2$s" : "%1$s %2$s-en iruzkin du", - "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkin du", - "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s-(e)k aipatu zaitu iruzkinean “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user}-(e)k aipatu zaitu iruzkinean “{file}”", - "Unknown user" : "Erabiltzaile ezezaguna", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean “{file}”" + "No more messages" : "Ez da mezu gehiagorik", + "Retry" : "Saiatu berriro", + "_1 new comment_::_{unread} new comments_" : ["Iruzkin berri 1","{unread} iruzkin berri"], + "Comment" : "Iruzkindu", + "An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean", + "Comment deleted" : "Iruzkina ezabatu da", + "An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean", + "An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/fa.js b/apps/comments/l10n/fa.js index 2eed645ec36..3317f902043 100644 --- a/apps/comments/l10n/fa.js +++ b/apps/comments/l10n/fa.js @@ -1,8 +1,36 @@ OC.L10N.register( "comments", { - "Cancel" : "منصرف شدن", - "Save" : "ذخیره", - "Comment" : "نظر" + "Comments" : "نظرات", + "You commented" : "دیدگاه شما", + "{author} commented" : "{author} دیدگاهی گذاشت", + "You commented on %1$s" : "دیدگاهی برای %1$s ثبت کردید", + "You commented on {file}" : "دیدگاهی برای {file} ثبت کردید", + "%1$s commented on %2$s" : "%1$s دیدگاهی برای %2$s ثبت کرد", + "{author} commented on {file}" : "{author} دیدگاهی برای {file} ثبت کرد", + "<strong>Comments</strong> for files" : "<strong>دیدگاههای</strong> زیر پروندهها ", + "Files" : "پروندهها", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "شما در «{file}» و در دیدگاهی که توسط حسابی که بعدتر پاک شده است مورد اشاره قرار گرفتهاید", + "{user} mentioned you in a comment on \"{file}\"" : "{user} در دیدگاهش زیر «{file}» به شما اشاره کرد", + "Files app plugin to add comments to files" : "افزونهٔ برنامهٔ Files برای افزودن دیدگاه به پروندهها", + "Edit comment" : "ویرایش دیدگاه", + "Delete comment" : "حذف دیدگاه", + "Cancel edit" : "Cancel edit", + "New comment" : "دیدگاه جدید", + "Write a comment …" : "دیدگاهی بنویسید...", + "Post comment" : "فرستادن دیدگاه", + "@ for mentions, : for emoji, / for smart picker" : "@ برای اشاره، : برای شکلک، / برای انتخابگر هوشمند", + "Could not reload comments" : "ناتوانی در دریافت دیدگاهها", + "Failed to mark comments as read" : "ناتوانی در علامت زدن دیدگاههای به عنوان خوانده شده", + "Unable to load the comments list" : "ناتوانی در دریافت فهرست دیدگاهها", + "No comments yet, start the conversation!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!", + "No more messages" : "No more messages", + "Retry" : "تلاش دوباره", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} دیدگاه جدید"], + "Comment" : "نظر", + "An error occurred while trying to edit the comment" : "خطایی در خلال تلاش برای ویرایش دیدگاه رخ داد", + "Comment deleted" : "دیدگاه حذف شد", + "An error occurred while trying to delete the comment" : "خطایی در خلال تلاش برای حذف دیدگاه رخ داد", + "An error occurred while trying to create the comment" : "خطایی در خلال تلاش برای ایجاد دیدگاه رخ داد" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/fa.json b/apps/comments/l10n/fa.json index 5b99e9f2896..59df258f222 100644 --- a/apps/comments/l10n/fa.json +++ b/apps/comments/l10n/fa.json @@ -1,6 +1,34 @@ { "translations": { - "Cancel" : "منصرف شدن", - "Save" : "ذخیره", - "Comment" : "نظر" -},"pluralForm" :"nplurals=1; plural=0;" + "Comments" : "نظرات", + "You commented" : "دیدگاه شما", + "{author} commented" : "{author} دیدگاهی گذاشت", + "You commented on %1$s" : "دیدگاهی برای %1$s ثبت کردید", + "You commented on {file}" : "دیدگاهی برای {file} ثبت کردید", + "%1$s commented on %2$s" : "%1$s دیدگاهی برای %2$s ثبت کرد", + "{author} commented on {file}" : "{author} دیدگاهی برای {file} ثبت کرد", + "<strong>Comments</strong> for files" : "<strong>دیدگاههای</strong> زیر پروندهها ", + "Files" : "پروندهها", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "شما در «{file}» و در دیدگاهی که توسط حسابی که بعدتر پاک شده است مورد اشاره قرار گرفتهاید", + "{user} mentioned you in a comment on \"{file}\"" : "{user} در دیدگاهش زیر «{file}» به شما اشاره کرد", + "Files app plugin to add comments to files" : "افزونهٔ برنامهٔ Files برای افزودن دیدگاه به پروندهها", + "Edit comment" : "ویرایش دیدگاه", + "Delete comment" : "حذف دیدگاه", + "Cancel edit" : "Cancel edit", + "New comment" : "دیدگاه جدید", + "Write a comment …" : "دیدگاهی بنویسید...", + "Post comment" : "فرستادن دیدگاه", + "@ for mentions, : for emoji, / for smart picker" : "@ برای اشاره، : برای شکلک، / برای انتخابگر هوشمند", + "Could not reload comments" : "ناتوانی در دریافت دیدگاهها", + "Failed to mark comments as read" : "ناتوانی در علامت زدن دیدگاههای به عنوان خوانده شده", + "Unable to load the comments list" : "ناتوانی در دریافت فهرست دیدگاهها", + "No comments yet, start the conversation!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!", + "No more messages" : "No more messages", + "Retry" : "تلاش دوباره", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} دیدگاه جدید"], + "Comment" : "نظر", + "An error occurred while trying to edit the comment" : "خطایی در خلال تلاش برای ویرایش دیدگاه رخ داد", + "Comment deleted" : "دیدگاه حذف شد", + "An error occurred while trying to delete the comment" : "خطایی در خلال تلاش برای حذف دیدگاه رخ داد", + "An error occurred while trying to create the comment" : "خطایی در خلال تلاش برای ایجاد دیدگاه رخ داد" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/fi.js b/apps/comments/l10n/fi.js index 20389f92707..28a05c1659d 100644 --- a/apps/comments/l10n/fi.js +++ b/apps/comments/l10n/fi.js @@ -2,33 +2,33 @@ OC.L10N.register( "comments", { "Comments" : "Kommentit", - "New comment …" : "Uusi kommentti…", - "Delete comment" : "Poista kommentti", - "Post" : "Lähetä", - "Cancel" : "Peruuta", - "Edit comment" : "Muokkaa kommenttia", - "[Deleted user]" : "[Poistettu käyttäjä]", - "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", - "More comments …" : "Lisää kommentteja…", - "Save" : "Tallenna", - "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", - "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", - "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], - "Comment" : "Kommentti", "You commented" : "Kommentoit", - "%1$s commented" : "%1$s kommentoi", "{author} commented" : "{author} kommentoi", "You commented on %1$s" : "Kommentoit %1$s", "You commented on {file}" : "Kommentoit tiedostoa {file}", "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s", "{author} commented on {file}" : "{author} kommentoi tiedostoa {file}", "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainitsi sinut kommentissa “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa", - "Unknown user" : "Tuntematon käyttäjä", - "A (now) deleted user mentioned you in a comment on “%s”" : "Poistettu käyttäjä mainitsi sinut kommentissa \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Poistettu käyttäjä mainitsi sinut tiedoston \"{file}\" kommentissa" + "Files" : "Tiedostot", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa", + "Edit comment" : "Muokkaa kommenttia", + "Delete comment" : "Poista kommentti", + "Cancel edit" : "Peruuta muokkaus", + "New comment" : "Uusi kommentti", + "Write a comment …" : "Kirjoita kommentti…", + "Post comment" : "Lähetä viesti", + "@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle", + "Could not reload comments" : "Kommenttien lataus epäonnistui", + "Failed to mark comments as read" : "Kommenttien merkitseminen luetuksi epäonnistui", + "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata", + "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", + "No more messages" : "Ei enempää viestejä", + "Retry" : "Yritä uudelleen", + "_1 new comment_::_{unread} new comments_" : ["1 uusi kommentti","{unread} uutta kommenttia"], + "Comment" : "Kommentti", + "An error occurred while trying to edit the comment" : "Kommenttia muokatessa tapahtui virhe", + "Comment deleted" : "Kommentti poistettu", + "An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe", + "An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/fi.json b/apps/comments/l10n/fi.json index 6d92e0d4be2..a8943301573 100644 --- a/apps/comments/l10n/fi.json +++ b/apps/comments/l10n/fi.json @@ -1,32 +1,32 @@ { "translations": { "Comments" : "Kommentit", - "New comment …" : "Uusi kommentti…", - "Delete comment" : "Poista kommentti", - "Post" : "Lähetä", - "Cancel" : "Peruuta", - "Edit comment" : "Muokkaa kommenttia", - "[Deleted user]" : "[Poistettu käyttäjä]", - "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", - "More comments …" : "Lisää kommentteja…", - "Save" : "Tallenna", - "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", - "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", - "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], - "Comment" : "Kommentti", "You commented" : "Kommentoit", - "%1$s commented" : "%1$s kommentoi", "{author} commented" : "{author} kommentoi", "You commented on %1$s" : "Kommentoit %1$s", "You commented on {file}" : "Kommentoit tiedostoa {file}", "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s", "{author} commented on {file}" : "{author} kommentoi tiedostoa {file}", "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainitsi sinut kommentissa “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa", - "Unknown user" : "Tuntematon käyttäjä", - "A (now) deleted user mentioned you in a comment on “%s”" : "Poistettu käyttäjä mainitsi sinut kommentissa \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Poistettu käyttäjä mainitsi sinut tiedoston \"{file}\" kommentissa" + "Files" : "Tiedostot", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa", + "Edit comment" : "Muokkaa kommenttia", + "Delete comment" : "Poista kommentti", + "Cancel edit" : "Peruuta muokkaus", + "New comment" : "Uusi kommentti", + "Write a comment …" : "Kirjoita kommentti…", + "Post comment" : "Lähetä viesti", + "@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle", + "Could not reload comments" : "Kommenttien lataus epäonnistui", + "Failed to mark comments as read" : "Kommenttien merkitseminen luetuksi epäonnistui", + "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata", + "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", + "No more messages" : "Ei enempää viestejä", + "Retry" : "Yritä uudelleen", + "_1 new comment_::_{unread} new comments_" : ["1 uusi kommentti","{unread} uutta kommenttia"], + "Comment" : "Kommentti", + "An error occurred while trying to edit the comment" : "Kommenttia muokatessa tapahtui virhe", + "Comment deleted" : "Kommentti poistettu", + "An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe", + "An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/fi_FI.js b/apps/comments/l10n/fi_FI.js deleted file mode 100644 index 18a26d6f1f0..00000000000 --- a/apps/comments/l10n/fi_FI.js +++ /dev/null @@ -1,30 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Kommentit", - "New comment …" : "Uusi kommentti …", - "Delete comment" : "Poista kommentti", - "Post" : "Lähetä", - "Cancel" : "Peruuta", - "Edit comment" : "Muokkaa kommenttia", - "[Deleted user]" : "[Poistettu käyttäjä]", - "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", - "More comments …" : "Lisää kommentteja …", - "Save" : "Tallenna", - "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", - "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", - "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], - "Comment" : "Kommentti", - "You commented" : "Kommentoit", - "%1$s commented" : "%1$s kommentoi", - "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s", - "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>", - "Type in a new comment..." : "Kirjoita uusi kommentti...", - "No other comments available" : "Ei muita kommentteja saatavilla", - "More comments..." : "Lisää kommentteja...", - "{count} unread comments" : "{count} lukematonta kommenttia", - "You commented on %2$s" : "Kommentoit %2$s" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/fi_FI.json b/apps/comments/l10n/fi_FI.json deleted file mode 100644 index b5b825454cc..00000000000 --- a/apps/comments/l10n/fi_FI.json +++ /dev/null @@ -1,28 +0,0 @@ -{ "translations": { - "Comments" : "Kommentit", - "New comment …" : "Uusi kommentti …", - "Delete comment" : "Poista kommentti", - "Post" : "Lähetä", - "Cancel" : "Peruuta", - "Edit comment" : "Muokkaa kommenttia", - "[Deleted user]" : "[Poistettu käyttäjä]", - "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!", - "More comments …" : "Lisää kommentteja …", - "Save" : "Tallenna", - "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", - "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", - "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], - "Comment" : "Kommentti", - "You commented" : "Kommentoit", - "%1$s commented" : "%1$s kommentoi", - "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s", - "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>", - "Type in a new comment..." : "Kirjoita uusi kommentti...", - "No other comments available" : "Ei muita kommentteja saatavilla", - "More comments..." : "Lisää kommentteja...", - "{count} unread comments" : "{count} lukematonta kommenttia", - "You commented on %2$s" : "Kommentoit %2$s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/fil.js b/apps/comments/l10n/fil.js deleted file mode 100644 index e3734cb6ceb..00000000000 --- a/apps/comments/l10n/fil.js +++ /dev/null @@ -1,6 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "I-cancel" -}, -"nplurals=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/fil.json b/apps/comments/l10n/fil.json deleted file mode 100644 index a368f5adea8..00000000000 --- a/apps/comments/l10n/fil.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "translations": { - "Cancel" : "I-cancel" -},"pluralForm" :"nplurals=2; plural=(n > 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/fr.js b/apps/comments/l10n/fr.js index 3a0fa3cbc9a..a1f24df6b80 100644 --- a/apps/comments/l10n/fr.js +++ b/apps/comments/l10n/fr.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Commentaires", - "New comment …" : "Nouveau commentaire...", - "Delete comment" : "Supprimer le commentaire", - "Post" : "Poster", - "Cancel" : "Annuler", - "Edit comment" : "Modifier le commentaire", - "[Deleted user]" : "[Utilisateur supprimé]", - "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !", - "More comments …" : "Plus de commentaires ...", - "Save" : "Enregistrer", - "Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés", - "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}", - "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}", - "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire", - "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus"], - "Comment" : "Commenter", "You commented" : "Vous avez commenté", - "%1$s commented" : "%1$s a commenté", "{author} commented" : "{author} a commenté", "You commented on %1$s" : "Vous avez commenté %1$s", "You commented on {file}" : "Vous avez commenté {file}", "%1$s commented on %2$s" : "%1$s a commenté %2$s", "{author} commented on {file}" : "{author} a commenté sur {file}", "<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"%s\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"{file}\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vous a mentionné⋅e dans un commentaire sur “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} vous a mentionné⋅e dans un commentaire sur “{file}”", - "Unknown user" : "Utilisateur·trice inconnu·e", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “{file}”" + "Files" : "Fichiers", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »", + "Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers", + "Edit comment" : "Modifier le commentaire", + "Delete comment" : "Supprimer le commentaire", + "Cancel edit" : "Annuler les modifications", + "New comment" : "Nouveau commentaire", + "Write a comment …" : "Écrire un commentaire…", + "Post comment" : "Publier le commentaire", + "@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent", + "Could not reload comments" : "Impossible de recharger les commentaires", + "Failed to mark comments as read" : "Les commentaires n'ont pas été marqués comme lus", + "Unable to load the comments list" : "Impossible de charger la liste des commentaires", + "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !", + "No more messages" : "Aucun autre message", + "Retry" : "Réessayer", + "_1 new comment_::_{unread} new comments_" : ["1 nouveau commentaire","{unread} nouveaux commentaires","{unread} nouveaux commentaires"], + "Comment" : "Commenter", + "An error occurred while trying to edit the comment" : "Une erreur s'est produite lors de la tentative de modification du commentaire", + "Comment deleted" : "Commentaire supprimé", + "An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire", + "An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire" }, -"nplurals=2; plural=(n > 1);"); +"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/fr.json b/apps/comments/l10n/fr.json index 8c66c7b6c09..861754c9719 100644 --- a/apps/comments/l10n/fr.json +++ b/apps/comments/l10n/fr.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Commentaires", - "New comment …" : "Nouveau commentaire...", - "Delete comment" : "Supprimer le commentaire", - "Post" : "Poster", - "Cancel" : "Annuler", - "Edit comment" : "Modifier le commentaire", - "[Deleted user]" : "[Utilisateur supprimé]", - "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !", - "More comments …" : "Plus de commentaires ...", - "Save" : "Enregistrer", - "Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés", - "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}", - "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}", - "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire", - "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus"], - "Comment" : "Commenter", "You commented" : "Vous avez commenté", - "%1$s commented" : "%1$s a commenté", "{author} commented" : "{author} a commenté", "You commented on %1$s" : "Vous avez commenté %1$s", "You commented on {file}" : "Vous avez commenté {file}", "%1$s commented on %2$s" : "%1$s a commenté %2$s", "{author} commented on {file}" : "{author} a commenté sur {file}", "<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"%s\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"{file}\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vous a mentionné⋅e dans un commentaire sur “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} vous a mentionné⋅e dans un commentaire sur “{file}”", - "Unknown user" : "Utilisateur·trice inconnu·e", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “{file}”" -},"pluralForm" :"nplurals=2; plural=(n > 1);" + "Files" : "Fichiers", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »", + "Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers", + "Edit comment" : "Modifier le commentaire", + "Delete comment" : "Supprimer le commentaire", + "Cancel edit" : "Annuler les modifications", + "New comment" : "Nouveau commentaire", + "Write a comment …" : "Écrire un commentaire…", + "Post comment" : "Publier le commentaire", + "@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent", + "Could not reload comments" : "Impossible de recharger les commentaires", + "Failed to mark comments as read" : "Les commentaires n'ont pas été marqués comme lus", + "Unable to load the comments list" : "Impossible de charger la liste des commentaires", + "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !", + "No more messages" : "Aucun autre message", + "Retry" : "Réessayer", + "_1 new comment_::_{unread} new comments_" : ["1 nouveau commentaire","{unread} nouveaux commentaires","{unread} nouveaux commentaires"], + "Comment" : "Commenter", + "An error occurred while trying to edit the comment" : "Une erreur s'est produite lors de la tentative de modification du commentaire", + "Comment deleted" : "Commentaire supprimé", + "An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire", + "An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire" +},"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/comments/l10n/ga.js b/apps/comments/l10n/ga.js new file mode 100644 index 00000000000..32438cb60ec --- /dev/null +++ b/apps/comments/l10n/ga.js @@ -0,0 +1,36 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Tuairimí", + "You commented" : "Rinne tú trácht", + "{author} commented" : "Rinne {author} nóta tráchta", + "You commented on %1$s" : "Rinne tú trácht ar%1$s", + "You commented on {file}" : "Rinne tú trácht ar {file}", + "%1$s commented on %2$s" : "%1$s trácht ar %2$s", + "{author} commented on {file}" : "{author} trácht ar {file}", + "<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid", + "Files" : "Comhaid", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin", + "{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"", + "Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid", + "Edit comment" : "Cuir trácht in eagar", + "Delete comment" : "Scrios nóta tráchta", + "Cancel edit" : "Cealaigh eagarthóireacht", + "New comment" : "Trácht nua", + "Write a comment …" : "Scríobh trácht…", + "Post comment" : "Post trácht", + "@ for mentions, : for emoji, / for smart picker" : "@ le haghaidh tagairtí, : le haghaidh emoji, / le haghaidh roghnóir cliste", + "Could not reload comments" : "Níorbh fhéidir na nótaí tráchta a athlódáil", + "Failed to mark comments as read" : "Theip ar nótaí tráchta a mharcáil mar léite", + "Unable to load the comments list" : "Ní féidir an liosta tuairimí a lódáil", + "No comments yet, start the conversation!" : "Gan trácht ar bith go fóill, cuir tús leis an gcomhrá!", + "No more messages" : "Níl a thuilleadh teachtaireachtaí", + "Retry" : "Bain triail eile as", + "_1 new comment_::_{unread} new comments_" : ["1 trácht nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua"], + "Comment" : "Trácht", + "An error occurred while trying to edit the comment" : "Tharla earráid agus an nóta tráchta á chur in eagar", + "Comment deleted" : "Trácht scriosta", + "An error occurred while trying to delete the comment" : "Tharla earráid agus an nóta tráchta á scriosadh", + "An error occurred while trying to create the comment" : "Tharla earráid agus an nóta tráchta á chruthú" +}, +"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"); diff --git a/apps/comments/l10n/ga.json b/apps/comments/l10n/ga.json new file mode 100644 index 00000000000..4442145dea6 --- /dev/null +++ b/apps/comments/l10n/ga.json @@ -0,0 +1,34 @@ +{ "translations": { + "Comments" : "Tuairimí", + "You commented" : "Rinne tú trácht", + "{author} commented" : "Rinne {author} nóta tráchta", + "You commented on %1$s" : "Rinne tú trácht ar%1$s", + "You commented on {file}" : "Rinne tú trácht ar {file}", + "%1$s commented on %2$s" : "%1$s trácht ar %2$s", + "{author} commented on {file}" : "{author} trácht ar {file}", + "<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid", + "Files" : "Comhaid", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin", + "{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"", + "Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid", + "Edit comment" : "Cuir trácht in eagar", + "Delete comment" : "Scrios nóta tráchta", + "Cancel edit" : "Cealaigh eagarthóireacht", + "New comment" : "Trácht nua", + "Write a comment …" : "Scríobh trácht…", + "Post comment" : "Post trácht", + "@ for mentions, : for emoji, / for smart picker" : "@ le haghaidh tagairtí, : le haghaidh emoji, / le haghaidh roghnóir cliste", + "Could not reload comments" : "Níorbh fhéidir na nótaí tráchta a athlódáil", + "Failed to mark comments as read" : "Theip ar nótaí tráchta a mharcáil mar léite", + "Unable to load the comments list" : "Ní féidir an liosta tuairimí a lódáil", + "No comments yet, start the conversation!" : "Gan trácht ar bith go fóill, cuir tús leis an gcomhrá!", + "No more messages" : "Níl a thuilleadh teachtaireachtaí", + "Retry" : "Bain triail eile as", + "_1 new comment_::_{unread} new comments_" : ["1 trácht nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua"], + "Comment" : "Trácht", + "An error occurred while trying to edit the comment" : "Tharla earráid agus an nóta tráchta á chur in eagar", + "Comment deleted" : "Trácht scriosta", + "An error occurred while trying to delete the comment" : "Tharla earráid agus an nóta tráchta á scriosadh", + "An error occurred while trying to create the comment" : "Tharla earráid agus an nóta tráchta á chruthú" +},"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/comments/l10n/gl.js b/apps/comments/l10n/gl.js index f151a238db4..364e95abc69 100644 --- a/apps/comments/l10n/gl.js +++ b/apps/comments/l10n/gl.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "New comment …" : "Comentario novo …", - "Delete comment" : "Eliminar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario eliminado]", - "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!", - "More comments …" : "Máis comentarios …", - "Save" : "Gardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Produciuse un erro ao recuperar o comentario co ID {id}", - "Error occurred while updating comment with id {id}" : "Produciuse un erro ao actualizar o comentario co ID {id}", - "Error occurred while posting comment" : "Produciuse un erro ao publicar o comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"], - "Comment" : "Comentario", - "You commented" : "Vostede comentou", - "%1$s commented" : "%1$s comentados", + "You commented" : "Vde. comentou", "{author} commented" : "{author} comentou", - "You commented on %1$s" : "Vostede comentou en %1$s", - "You commented on {file}" : "Vostede comentou en {file}", + "You commented on %1$s" : "Vde. comentou en %1$s", + "You commented on {file}" : "Vde. comentou en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentou en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para ficheiros", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionouno a vostede nun comentario en «%2$s»", - "{user} mentioned you in a comment on “{file}”" : "{user} mencionouno a vostede nun comentario en «{file}»", - "Unknown user" : "Usuario descoñecido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «%s»", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «{file}»" + "Files" : "Ficheiros", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mencionárono en «{file}», nun comentario dunha conta que xa foi eliminada", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionouno a Vde. nun comentario en «{file}»", + "Files app plugin to add comments to files" : "Complemento da aplicación de ficheiros para engadir comentarios aos ficheiros", + "Edit comment" : "Editar comentario", + "Delete comment" : "Eliminar comentario", + "Cancel edit" : "Cancelar a edición", + "New comment" : "Comentario novo", + "Write a comment …" : "Escriba un comentario…", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente", + "Could not reload comments" : "Non foi posíbel volver cargar os comentarios", + "Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos", + "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios", + "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!", + "No more messages" : "Non hai máis mensaxes", + "Retry" : "Volver tentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Produciuse un erro cando tentaba editar o comentario", + "Comment deleted" : "Comentario eliminado", + "An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario", + "An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/gl.json b/apps/comments/l10n/gl.json index 54864e6710c..128f8e5251f 100644 --- a/apps/comments/l10n/gl.json +++ b/apps/comments/l10n/gl.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Comentarios", - "New comment …" : "Comentario novo …", - "Delete comment" : "Eliminar comentario", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentario", - "[Deleted user]" : "[Usuario eliminado]", - "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!", - "More comments …" : "Máis comentarios …", - "Save" : "Gardar", - "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}", - "Error occurred while retrieving comment with id {id}" : "Produciuse un erro ao recuperar o comentario co ID {id}", - "Error occurred while updating comment with id {id}" : "Produciuse un erro ao actualizar o comentario co ID {id}", - "Error occurred while posting comment" : "Produciuse un erro ao publicar o comentario", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"], - "Comment" : "Comentario", - "You commented" : "Vostede comentou", - "%1$s commented" : "%1$s comentados", + "You commented" : "Vde. comentou", "{author} commented" : "{author} comentou", - "You commented on %1$s" : "Vostede comentou en %1$s", - "You commented on {file}" : "Vostede comentou en {file}", + "You commented on %1$s" : "Vde. comentou en %1$s", + "You commented on {file}" : "Vde. comentou en {file}", "%1$s commented on %2$s" : "%1$s comentados en %2$s", "{author} commented on {file}" : "{author} comentou en {file}", "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para ficheiros", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionouno a vostede nun comentario en «%2$s»", - "{user} mentioned you in a comment on “{file}”" : "{user} mencionouno a vostede nun comentario en «{file}»", - "Unknown user" : "Usuario descoñecido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «%s»", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «{file}»" + "Files" : "Ficheiros", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mencionárono en «{file}», nun comentario dunha conta que xa foi eliminada", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionouno a Vde. nun comentario en «{file}»", + "Files app plugin to add comments to files" : "Complemento da aplicación de ficheiros para engadir comentarios aos ficheiros", + "Edit comment" : "Editar comentario", + "Delete comment" : "Eliminar comentario", + "Cancel edit" : "Cancelar a edición", + "New comment" : "Comentario novo", + "Write a comment …" : "Escriba un comentario…", + "Post comment" : "Publicar comentario", + "@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente", + "Could not reload comments" : "Non foi posíbel volver cargar os comentarios", + "Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos", + "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios", + "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!", + "No more messages" : "Non hai máis mensaxes", + "Retry" : "Volver tentar", + "_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"], + "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Produciuse un erro cando tentaba editar o comentario", + "Comment deleted" : "Comentario eliminado", + "An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario", + "An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/he.js b/apps/comments/l10n/he.js index d21f53e4326..e1d0256599a 100644 --- a/apps/comments/l10n/he.js +++ b/apps/comments/l10n/he.js @@ -1,25 +1,30 @@ OC.L10N.register( "comments", { - "Delete comment" : "מחיקת תגובה", - "Post" : "פרסום", - "Cancel" : "ביטול", - "Edit comment" : "עריכת תגובה", - "[Deleted user]" : "[משתמשים מוסרים]", "Comments" : "תגובות", - "Save" : "שמירה", - "Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}", - "Error occurred while retrieving comment with id {id}" : "שגיאה אירעה כאשר אוחזרה תגובה עם מספר זיהוי {id}", - "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}", - "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה", - "Comment" : "תגובה", "You commented" : "הערות שלך", - "%1$s commented" : "התקבלו תגובות %1$s", - "You commented on %2$s" : "הערות שלך ב- %2$s", + "{author} commented" : "התקבלה תגובה מאת {author}", + "You commented on %1$s" : "הגבת על %1$s", + "You commented on {file}" : "הגבת על {file}", "%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ", - "Type in a new comment..." : "יש להכניס תגובה חדשה...", - "No other comments available" : "אין תגובות אחרות זמינות", - "More comments..." : "תגובות נוספות...", - "{count} unread comments" : "{count} תגובות שלא נקראו" + "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}", + "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים", + "Files" : "קבצים", + "{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”", + "Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים", + "Edit comment" : "עריכת תגובה", + "Delete comment" : "מחיקת תגובה", + "Cancel edit" : "בטל עריכה", + "Post comment" : "פרסם תגובה", + "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות", + "No comments yet, start the conversation!" : "אין תגובות עדיין, בואו נתחיל לקשקש!", + "No more messages" : "אין יותר הודעות", + "Retry" : "ניסיון חוזר", + "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות"], + "Comment" : "תגובה", + "An error occurred while trying to edit the comment" : "אירעה שגיאה בניסיון לערוך את התגובה", + "Comment deleted" : "נמחקה הערה", + "An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה", + "An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"); diff --git a/apps/comments/l10n/he.json b/apps/comments/l10n/he.json index 5cf6472acb0..c59bb70dfd1 100644 --- a/apps/comments/l10n/he.json +++ b/apps/comments/l10n/he.json @@ -1,23 +1,28 @@ { "translations": { - "Delete comment" : "מחיקת תגובה", - "Post" : "פרסום", - "Cancel" : "ביטול", - "Edit comment" : "עריכת תגובה", - "[Deleted user]" : "[משתמשים מוסרים]", "Comments" : "תגובות", - "Save" : "שמירה", - "Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}", - "Error occurred while retrieving comment with id {id}" : "שגיאה אירעה כאשר אוחזרה תגובה עם מספר זיהוי {id}", - "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}", - "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה", - "Comment" : "תגובה", "You commented" : "הערות שלך", - "%1$s commented" : "התקבלו תגובות %1$s", - "You commented on %2$s" : "הערות שלך ב- %2$s", + "{author} commented" : "התקבלה תגובה מאת {author}", + "You commented on %1$s" : "הגבת על %1$s", + "You commented on {file}" : "הגבת על {file}", "%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ", - "Type in a new comment..." : "יש להכניס תגובה חדשה...", - "No other comments available" : "אין תגובות אחרות זמינות", - "More comments..." : "תגובות נוספות...", - "{count} unread comments" : "{count} תגובות שלא נקראו" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}", + "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים", + "Files" : "קבצים", + "{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”", + "Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים", + "Edit comment" : "עריכת תגובה", + "Delete comment" : "מחיקת תגובה", + "Cancel edit" : "בטל עריכה", + "Post comment" : "פרסם תגובה", + "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות", + "No comments yet, start the conversation!" : "אין תגובות עדיין, בואו נתחיל לקשקש!", + "No more messages" : "אין יותר הודעות", + "Retry" : "ניסיון חוזר", + "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות"], + "Comment" : "תגובה", + "An error occurred while trying to edit the comment" : "אירעה שגיאה בניסיון לערוך את התגובה", + "Comment deleted" : "נמחקה הערה", + "An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה", + "An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה" +},"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/comments/l10n/hi.js b/apps/comments/l10n/hi.js deleted file mode 100644 index ed49cce9227..00000000000 --- a/apps/comments/l10n/hi.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "रद्द करें ", - "Save" : "सहेजें" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/hi.json b/apps/comments/l10n/hi.json deleted file mode 100644 index f6b1d3d1b1b..00000000000 --- a/apps/comments/l10n/hi.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "रद्द करें ", - "Save" : "सहेजें" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/hr.js b/apps/comments/l10n/hr.js index d7aa807254c..00cd18cb7fb 100644 --- a/apps/comments/l10n/hr.js +++ b/apps/comments/l10n/hr.js @@ -1,7 +1,29 @@ OC.L10N.register( "comments", { - "Cancel" : "Odustanite", - "Save" : "Spremi" + "Comments" : "Komentari", + "You commented" : "Vi ste komentirali", + "{author} commented" : "{author} je komentirao", + "You commented on %1$s" : "Vi ste komentirali %1$s", + "You commented on {file}" : "Komentirali ste {file}", + "%1$s commented on %2$s" : "%1$s je komentirao %2$s", + "{author} commented on {file}" : "{author} je komentirao {file}", + "<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke", + "Files" : "Datoteke", + "Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke", + "Edit comment" : "Uredi komentar", + "Delete comment" : "Izbriši komentar", + "Cancel edit" : "Otkaži uređivanje", + "Post comment" : "Objavi komentar", + "Unable to load the comments list" : "Nije moguće učitati popis komentara", + "No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!", + "No more messages" : "Nema više poruka", + "Retry" : "Pokušaj ponovno", + "_1 new comment_::_{unread} new comments_" : ["1 novi komentar","{unread} novih komentara","{unread} novih komentara"], + "Comment" : "Komentar", + "An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara", + "Comment deleted" : "Komentar izbrisan", + "An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara", + "An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara" }, "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/comments/l10n/hr.json b/apps/comments/l10n/hr.json index 78c71af4fd2..e6447eef1af 100644 --- a/apps/comments/l10n/hr.json +++ b/apps/comments/l10n/hr.json @@ -1,5 +1,27 @@ { "translations": { - "Cancel" : "Odustanite", - "Save" : "Spremi" + "Comments" : "Komentari", + "You commented" : "Vi ste komentirali", + "{author} commented" : "{author} je komentirao", + "You commented on %1$s" : "Vi ste komentirali %1$s", + "You commented on {file}" : "Komentirali ste {file}", + "%1$s commented on %2$s" : "%1$s je komentirao %2$s", + "{author} commented on {file}" : "{author} je komentirao {file}", + "<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke", + "Files" : "Datoteke", + "Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke", + "Edit comment" : "Uredi komentar", + "Delete comment" : "Izbriši komentar", + "Cancel edit" : "Otkaži uređivanje", + "Post comment" : "Objavi komentar", + "Unable to load the comments list" : "Nije moguće učitati popis komentara", + "No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!", + "No more messages" : "Nema više poruka", + "Retry" : "Pokušaj ponovno", + "_1 new comment_::_{unread} new comments_" : ["1 novi komentar","{unread} novih komentara","{unread} novih komentara"], + "Comment" : "Komentar", + "An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara", + "Comment deleted" : "Komentar izbrisan", + "An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara", + "An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara" },"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/comments/l10n/hu.js b/apps/comments/l10n/hu.js index cb85eadb037..05b0f519e0b 100644 --- a/apps/comments/l10n/hu.js +++ b/apps/comments/l10n/hu.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Hozzászólások", - "New comment …" : "Új hozzászólás...", - "Delete comment" : "Hozzászólás törlése", - "Post" : "Küldés", - "Cancel" : "Mégsem", - "Edit comment" : "Hozzászólás szerkesztése", - "[Deleted user]" : "[Törölt felhasználó]", - "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!", - "More comments …" : "Több hozzászólás...", - "Save" : "Mentés", - "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}", - "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}", - "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], - "Comment" : "Hozzászólás", - "You commented" : "Hozzászóltál", - "%1$s commented" : "%1$s hozzászólt", + "You commented" : "Hozzászólt", "{author} commented" : "{author} hozzászólt", - "You commented on %1$s" : "Hozzászoltál ehhez: %1$s", - "You commented on {file}" : "Hozzászóltál ehhez: {file}", + "You commented on %1$s" : "Hozzászólt ehhez: %1$s", + "You commented on {file}" : "Hozzászólt ehhez: {file}", "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s", "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}", "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “%s”, egy már törölt felhasználó hozzászólásában", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”", - "Unknown user" : "Ismeretlen felhasználó", - "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”" + "Files" : "Fájlok", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt fiók hozzászólásában", + "{user} mentioned you in a comment on \"{file}\"" : "{user} megemlítette egy hozzászólásban ennél: „{file}”", + "Files app plugin to add comments to files" : "A Fájlok alkalmazás bővítménye, amellyel megjegyzések adhatóak a fájlokhoz", + "Edit comment" : "Hozzászólás szerkesztése", + "Delete comment" : "Hozzászólás törlése", + "Cancel edit" : "Változások elvetése", + "New comment" : "Új hozzászólás", + "Write a comment …" : "Hozzászólás írása…", + "Post comment" : "Hozzászólás közzététele", + "@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz", + "Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.", + "Failed to mark comments as read" : "A hozzászólások olvasottnak jelölése sikertelen", + "Unable to load the comments list" : "A hozzászólások betöltése sikertelen", + "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!", + "No more messages" : "Nincs több üzenet", + "Retry" : "Újra", + "_1 new comment_::_{unread} new comments_" : ["1 új hozzászólás","{unread} új hozzászólás"], + "Comment" : "Hozzászólás", + "An error occurred while trying to edit the comment" : "Hiba történt a megjegyzés szerkesztése közben", + "Comment deleted" : "Hozzászólás törölve", + "An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben", + "An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/hu.json b/apps/comments/l10n/hu.json index e29d12e2081..962f1c72c06 100644 --- a/apps/comments/l10n/hu.json +++ b/apps/comments/l10n/hu.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Hozzászólások", - "New comment …" : "Új hozzászólás...", - "Delete comment" : "Hozzászólás törlése", - "Post" : "Küldés", - "Cancel" : "Mégsem", - "Edit comment" : "Hozzászólás szerkesztése", - "[Deleted user]" : "[Törölt felhasználó]", - "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!", - "More comments …" : "Több hozzászólás...", - "Save" : "Mentés", - "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}", - "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}", - "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], - "Comment" : "Hozzászólás", - "You commented" : "Hozzászóltál", - "%1$s commented" : "%1$s hozzászólt", + "You commented" : "Hozzászólt", "{author} commented" : "{author} hozzászólt", - "You commented on %1$s" : "Hozzászoltál ehhez: %1$s", - "You commented on {file}" : "Hozzászóltál ehhez: {file}", + "You commented on %1$s" : "Hozzászólt ehhez: %1$s", + "You commented on {file}" : "Hozzászólt ehhez: {file}", "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s", "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}", "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “%s”, egy már törölt felhasználó hozzászólásában", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”", - "Unknown user" : "Ismeretlen felhasználó", - "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”" + "Files" : "Fájlok", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt fiók hozzászólásában", + "{user} mentioned you in a comment on \"{file}\"" : "{user} megemlítette egy hozzászólásban ennél: „{file}”", + "Files app plugin to add comments to files" : "A Fájlok alkalmazás bővítménye, amellyel megjegyzések adhatóak a fájlokhoz", + "Edit comment" : "Hozzászólás szerkesztése", + "Delete comment" : "Hozzászólás törlése", + "Cancel edit" : "Változások elvetése", + "New comment" : "Új hozzászólás", + "Write a comment …" : "Hozzászólás írása…", + "Post comment" : "Hozzászólás közzététele", + "@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz", + "Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.", + "Failed to mark comments as read" : "A hozzászólások olvasottnak jelölése sikertelen", + "Unable to load the comments list" : "A hozzászólások betöltése sikertelen", + "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!", + "No more messages" : "Nincs több üzenet", + "Retry" : "Újra", + "_1 new comment_::_{unread} new comments_" : ["1 új hozzászólás","{unread} új hozzászólás"], + "Comment" : "Hozzászólás", + "An error occurred while trying to edit the comment" : "Hiba történt a megjegyzés szerkesztése közben", + "Comment deleted" : "Hozzászólás törölve", + "An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben", + "An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/hu_HU.js b/apps/comments/l10n/hu_HU.js deleted file mode 100644 index 253e6a90155..00000000000 --- a/apps/comments/l10n/hu_HU.js +++ /dev/null @@ -1,39 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Hozzászólások", - "Unknown user" : "Ismeretlen felhasználó", - "New comment …" : "Új hozzászólás...", - "Delete comment" : "Hozzászólás törlése", - "Post" : "Küldés", - "Cancel" : "Mégsem", - "Edit comment" : "Hozzászólás szerkesztése", - "[Deleted user]" : "[Törölt felhasználó]", - "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!", - "More comments …" : "Több hozzászólás...", - "Save" : "Mentés", - "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}", - "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}", - "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], - "Comment" : "Hozzászólás", - "You commented" : "Hozzászóltál", - "%1$s commented" : "%1$s hozzászólt", - "{author} commented" : "{author} hozzászólt", - "You commented on %1$s" : "Hozzászoltál ehhez: %1$s", - "You commented on {file}" : "Hozzászóltál ehhez: {file}", - "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s", - "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}", - "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz", - "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”", - "Type in a new comment..." : "Új hozzászólás írása...", - "No other comments available" : "Nincs több hozzászólás.", - "More comments..." : "Több hozzászólás...", - "{count} unread comments" : "{count} olvasatlan hozzászólás", - "You commented on %2$s" : "Hozzászólt ehhez: %2$s" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/hu_HU.json b/apps/comments/l10n/hu_HU.json deleted file mode 100644 index 43c6a6f3cc0..00000000000 --- a/apps/comments/l10n/hu_HU.json +++ /dev/null @@ -1,37 +0,0 @@ -{ "translations": { - "Comments" : "Hozzászólások", - "Unknown user" : "Ismeretlen felhasználó", - "New comment …" : "Új hozzászólás...", - "Delete comment" : "Hozzászólás törlése", - "Post" : "Küldés", - "Cancel" : "Mégsem", - "Edit comment" : "Hozzászólás szerkesztése", - "[Deleted user]" : "[Törölt felhasználó]", - "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!", - "More comments …" : "Több hozzászólás...", - "Save" : "Mentés", - "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}", - "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}", - "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], - "Comment" : "Hozzászólás", - "You commented" : "Hozzászóltál", - "%1$s commented" : "%1$s hozzászólt", - "{author} commented" : "{author} hozzászólt", - "You commented on %1$s" : "Hozzászoltál ehhez: %1$s", - "You commented on {file}" : "Hozzászóltál ehhez: {file}", - "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s", - "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}", - "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz", - "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”", - "Type in a new comment..." : "Új hozzászólás írása...", - "No other comments available" : "Nincs több hozzászólás.", - "More comments..." : "Több hozzászólás...", - "{count} unread comments" : "{count} olvasatlan hozzászólás", - "You commented on %2$s" : "Hozzászólt ehhez: %2$s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/hy.js b/apps/comments/l10n/hy.js deleted file mode 100644 index 6e6fa514244..00000000000 --- a/apps/comments/l10n/hy.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Չեղարկել", - "Save" : "Պահպանել" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/hy.json b/apps/comments/l10n/hy.json deleted file mode 100644 index 1d692e6d00d..00000000000 --- a/apps/comments/l10n/hy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Չեղարկել", - "Save" : "Պահպանել" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/ia.js b/apps/comments/l10n/ia.js deleted file mode 100644 index 923ad299811..00000000000 --- a/apps/comments/l10n/ia.js +++ /dev/null @@ -1,34 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Commentarios", - "New comment …" : "Nove commentario ...", - "Delete comment" : "Deler commentario", - "Post" : "Publicar", - "Cancel" : "Cancellar", - "Edit comment" : "Modificar commentario", - "[Deleted user]" : "[Usator delite]", - "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!", - "More comments …" : "Plus commentarios ...", - "Save" : "Salveguardar", - "Allowed characters {count} of {max}" : "{count} characteres permittite de {max}", - "Error occurred while retrieving comment with id {id}" : "Un error occurreva durante le recuperation del commentario identificate per {id}", - "Error occurred while updating comment with id {id}" : "Un error occurreva durante le actualisation del commentario identificate per {id}", - "Error occurred while posting comment" : "Un error occurreva durante le publication del commentario", - "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"], - "Comment" : "Commentario", - "You commented" : "Tu commentava", - "%1$s commented" : "%1$s commentava", - "{author} commented" : "{author} commentava", - "You commented on %1$s" : "Tu commentava in %1$s", - "You commented on {file}" : "Tu commentava in {file}", - "%1$s commented on %2$s" : "%1$s commentava in %2$s", - "{author} commented on {file}" : "{author} commentava in {file}", - "<strong>Comments</strong> for files" : "<strong>Commentarios</strong> pro files", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentionava tu in un commentario in “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mentionava tu in un commentario in “{file}”", - "Unknown user" : "Usator incognite", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un (ora) delite usator mentionava tu in un commentario in “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (ora) delite usator mentionava tu in un commentario in “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ia.json b/apps/comments/l10n/ia.json deleted file mode 100644 index 66fa31cf90c..00000000000 --- a/apps/comments/l10n/ia.json +++ /dev/null @@ -1,32 +0,0 @@ -{ "translations": { - "Comments" : "Commentarios", - "New comment …" : "Nove commentario ...", - "Delete comment" : "Deler commentario", - "Post" : "Publicar", - "Cancel" : "Cancellar", - "Edit comment" : "Modificar commentario", - "[Deleted user]" : "[Usator delite]", - "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!", - "More comments …" : "Plus commentarios ...", - "Save" : "Salveguardar", - "Allowed characters {count} of {max}" : "{count} characteres permittite de {max}", - "Error occurred while retrieving comment with id {id}" : "Un error occurreva durante le recuperation del commentario identificate per {id}", - "Error occurred while updating comment with id {id}" : "Un error occurreva durante le actualisation del commentario identificate per {id}", - "Error occurred while posting comment" : "Un error occurreva durante le publication del commentario", - "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"], - "Comment" : "Commentario", - "You commented" : "Tu commentava", - "%1$s commented" : "%1$s commentava", - "{author} commented" : "{author} commentava", - "You commented on %1$s" : "Tu commentava in %1$s", - "You commented on {file}" : "Tu commentava in {file}", - "%1$s commented on %2$s" : "%1$s commentava in %2$s", - "{author} commented on {file}" : "{author} commentava in {file}", - "<strong>Comments</strong> for files" : "<strong>Commentarios</strong> pro files", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentionava tu in un commentario in “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mentionava tu in un commentario in “{file}”", - "Unknown user" : "Usator incognite", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un (ora) delite usator mentionava tu in un commentario in “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (ora) delite usator mentionava tu in un commentario in “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/id.js b/apps/comments/l10n/id.js index 62de36ea934..10e0fa73ee3 100644 --- a/apps/comments/l10n/id.js +++ b/apps/comments/l10n/id.js @@ -1,25 +1,28 @@ OC.L10N.register( "comments", { - "Delete comment" : "Hapus komentar", - "Post" : "Posting", - "Cancel" : "Batal", - "Edit comment" : "Sunting komentar", - "[Deleted user]" : "[Hapus pengguna]", "Comments" : "Komentar", - "Save" : "Simpan", - "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}", - "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}", - "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}", - "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar", - "Comment" : "Komentar", "You commented" : "Anda berkomentar", - "%1$s commented" : "%1$s dikomentari", - "You commented on %2$s" : "Anda berkomentar di %2$s", + "{author} commented" : "{author} berkomentar", + "You commented on %1$s" : "Anda berkomentar pada %1$s", + "You commented on {file}" : "Anda berkomentar pada {file} ", "%1$s commented on %2$s" : "%1$s dikomentari pada %2$s", - "Type in a new comment..." : "Ketik di komentar baru...", - "No other comments available" : "Tidak ada komentar lainnya", - "More comments..." : "Komentar lainya...", - "{count} unread comments" : "{count} komentar belum dibaca" + "{author} commented on {file}" : "{author} berkomentar pada {file}", + "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file", + "{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ", + "Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file", + "Edit comment" : "Sunting komentar", + "Delete comment" : "Hapus komentar", + "Cancel edit" : "Batal sunting", + "Post comment" : "Posting komentar", + "Unable to load the comments list" : "Tidak dapat memuat daftar komentar", + "No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!", + "No more messages" : "Tidak ada pesan lagi", + "Retry" : "Ulangi", + "Comment" : "Komentar", + "An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar", + "Comment deleted" : "Komentar dihapus", + "An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar", + "An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/id.json b/apps/comments/l10n/id.json index 7850564c77d..56ecdc58c2c 100644 --- a/apps/comments/l10n/id.json +++ b/apps/comments/l10n/id.json @@ -1,23 +1,26 @@ { "translations": { - "Delete comment" : "Hapus komentar", - "Post" : "Posting", - "Cancel" : "Batal", - "Edit comment" : "Sunting komentar", - "[Deleted user]" : "[Hapus pengguna]", "Comments" : "Komentar", - "Save" : "Simpan", - "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}", - "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}", - "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}", - "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar", - "Comment" : "Komentar", "You commented" : "Anda berkomentar", - "%1$s commented" : "%1$s dikomentari", - "You commented on %2$s" : "Anda berkomentar di %2$s", + "{author} commented" : "{author} berkomentar", + "You commented on %1$s" : "Anda berkomentar pada %1$s", + "You commented on {file}" : "Anda berkomentar pada {file} ", "%1$s commented on %2$s" : "%1$s dikomentari pada %2$s", - "Type in a new comment..." : "Ketik di komentar baru...", - "No other comments available" : "Tidak ada komentar lainnya", - "More comments..." : "Komentar lainya...", - "{count} unread comments" : "{count} komentar belum dibaca" + "{author} commented on {file}" : "{author} berkomentar pada {file}", + "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file", + "{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ", + "Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file", + "Edit comment" : "Sunting komentar", + "Delete comment" : "Hapus komentar", + "Cancel edit" : "Batal sunting", + "Post comment" : "Posting komentar", + "Unable to load the comments list" : "Tidak dapat memuat daftar komentar", + "No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!", + "No more messages" : "Tidak ada pesan lagi", + "Retry" : "Ulangi", + "Comment" : "Komentar", + "An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar", + "Comment deleted" : "Komentar dihapus", + "An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar", + "An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/is.js b/apps/comments/l10n/is.js index d86c4ecf0d9..d4b6327070b 100644 --- a/apps/comments/l10n/is.js +++ b/apps/comments/l10n/is.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Athugasemdir", - "New comment …" : "Ný athugasemd ...", - "Delete comment" : "Eyða athugasemd", - "Post" : "Senda", - "Cancel" : "Hætta við", - "Edit comment" : "Breyta athugasemd", - "[Deleted user]" : "[Eyddur notandi]", - "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!", - "More comments …" : "Fleiri athugasemdir ...", - "Save" : "Vista", - "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}", - "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}", - "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}", - "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd", - "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"], - "Comment" : "Athugasemd", "You commented" : "Þú settir inn athugasemd", - "%1$s commented" : "%1$s setti inn athugasemd", "{author} commented" : "{author} setti inn athugasemd", "You commented on %1$s" : "Þú settir inn athugasemd við %1$s", "You commented on {file}" : "Þú settir inn athugasemd við {file}", "%1$s commented on %2$s" : "%1$s setti inn athugasemd um %2$s", "{author} commented on {file}" : "{author} setti inn athugasemd við {file}", "<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s minntist á þig í athugasemd við “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} minntist á þig í athugasemd við “{file}”", - "Unknown user" : "Óþekktur notandi", - "A (now) deleted user mentioned you in a comment on “%s”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “{file}”" + "Files" : "Skráaforrit", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Minnst var á þig í \"{file}\", í athugasemd frá notandaaðgangi sem síðan þá hefur verið eytt", + "{user} mentioned you in a comment on \"{file}\"" : "{user} minntist á þig í athugasemd við \"{file}\"", + "Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár", + "Edit comment" : "Breyta athugasemd", + "Delete comment" : "Eyða athugasemd", + "Cancel edit" : "Hætta við breytingar", + "New comment" : "Ný athugasemd", + "Write a comment …" : "Skrifa athugasemd ...", + "Post comment" : "Senda inn athugasemd", + "@ for mentions, : for emoji, / for smart picker" : "@ til að minnast á, : fyrir tjáningartákn, / fyrir snjallveljara", + "Could not reload comments" : "Gat ekki endurlesið athugasemdir", + "Failed to mark comments as read" : "Tókst ekki að merkja athugasemdir sem lesnar", + "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir", + "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!", + "No more messages" : "Engin fleiri skilaboð", + "Retry" : "Reyna aftur", + "_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"], + "Comment" : "Athugasemd", + "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni", + "Comment deleted" : "Athugasemd var eytt", + "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni", + "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/comments/l10n/is.json b/apps/comments/l10n/is.json index 32650436cca..458a1704c3b 100644 --- a/apps/comments/l10n/is.json +++ b/apps/comments/l10n/is.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Athugasemdir", - "New comment …" : "Ný athugasemd ...", - "Delete comment" : "Eyða athugasemd", - "Post" : "Senda", - "Cancel" : "Hætta við", - "Edit comment" : "Breyta athugasemd", - "[Deleted user]" : "[Eyddur notandi]", - "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!", - "More comments …" : "Fleiri athugasemdir ...", - "Save" : "Vista", - "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}", - "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}", - "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}", - "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd", - "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"], - "Comment" : "Athugasemd", "You commented" : "Þú settir inn athugasemd", - "%1$s commented" : "%1$s setti inn athugasemd", "{author} commented" : "{author} setti inn athugasemd", "You commented on %1$s" : "Þú settir inn athugasemd við %1$s", "You commented on {file}" : "Þú settir inn athugasemd við {file}", "%1$s commented on %2$s" : "%1$s setti inn athugasemd um %2$s", "{author} commented on {file}" : "{author} setti inn athugasemd við {file}", "<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s minntist á þig í athugasemd við “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} minntist á þig í athugasemd við “{file}”", - "Unknown user" : "Óþekktur notandi", - "A (now) deleted user mentioned you in a comment on “%s”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “{file}”" + "Files" : "Skráaforrit", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Minnst var á þig í \"{file}\", í athugasemd frá notandaaðgangi sem síðan þá hefur verið eytt", + "{user} mentioned you in a comment on \"{file}\"" : "{user} minntist á þig í athugasemd við \"{file}\"", + "Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár", + "Edit comment" : "Breyta athugasemd", + "Delete comment" : "Eyða athugasemd", + "Cancel edit" : "Hætta við breytingar", + "New comment" : "Ný athugasemd", + "Write a comment …" : "Skrifa athugasemd ...", + "Post comment" : "Senda inn athugasemd", + "@ for mentions, : for emoji, / for smart picker" : "@ til að minnast á, : fyrir tjáningartákn, / fyrir snjallveljara", + "Could not reload comments" : "Gat ekki endurlesið athugasemdir", + "Failed to mark comments as read" : "Tókst ekki að merkja athugasemdir sem lesnar", + "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir", + "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!", + "No more messages" : "Engin fleiri skilaboð", + "Retry" : "Reyna aftur", + "_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"], + "Comment" : "Athugasemd", + "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni", + "Comment deleted" : "Athugasemd var eytt", + "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni", + "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/comments/l10n/it.js b/apps/comments/l10n/it.js index eb51fb31e10..e2aac0c0b86 100644 --- a/apps/comments/l10n/it.js +++ b/apps/comments/l10n/it.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Commenti", - "New comment …" : "Nuovo commento...", - "Delete comment" : "Elimina commento", - "Post" : "Commento", - "Cancel" : "Annulla", - "Edit comment" : "Modifica commento", - "[Deleted user]" : "[Utente eliminato]", - "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!", - "More comments …" : "Altri commenti...", - "Save" : "Salva", - "Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}", - "Error occurred while retrieving comment with id {id}" : "Si è verificato un errore durante il tentativo di recupero del commento con id {id}", - "Error occurred while updating comment with id {id}" : "Si è verificato un errore durante il tentativo di aggiornamento del commento con id {id}", - "Error occurred while posting comment" : "Si è verificato un errore durante la pubblicazione del commento.", - "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti"], - "Comment" : "Commento", "You commented" : "Hai commentato", - "%1$s commented" : "%1$s ha commentato", "{author} commented" : "{author} ha commentato", "You commented on %1$s" : "Hai commentato su %1$s", "You commented on {file}" : "Hai commentato su {file}", "%1$s commented on %2$s" : "%1$s ha commentato %2$s", "{author} commented on {file}" : "{author} ha commentato su {file}", "<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"%s\", in un commento di un utente che è stato eliminato", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un utente che è stato eliminato", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ti ha menzionato in un commento su \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} ti ha menzionato in un commento su \"{file}\".", - "Unknown user" : "Utente sconosciuto", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"%s\".", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"{file}\"." + "Files" : "File", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un account che è stato eliminato", + "{user} mentioned you in a comment on \"{file}\"" : "{user} ti ha menzionato in un commento su \"{file}\"", + "Files app plugin to add comments to files" : "Estensione dell'applicazione File per aggiungere commenti ai file", + "Edit comment" : "Modifica commento", + "Delete comment" : "Elimina commento", + "Cancel edit" : "Annulla modifica", + "New comment" : "Nuovo commento", + "Write a comment …" : "Scrivi un commento...", + "Post comment" : "Pubblica commento", + "@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente", + "Could not reload comments" : "Impossibile ricaricare i commenti", + "Failed to mark comments as read" : "Impossibile segnare i commenti come letti", + "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti", + "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!", + "No more messages" : "Non ci sono altri messaggi", + "Retry" : "Riprova", + "_1 new comment_::_{unread} new comments_" : ["1 nuovo commento","{unread} nuovi commenti","{unread} nuovi commenti"], + "Comment" : "Commento", + "An error occurred while trying to edit the comment" : "Si è verificato un errore durante il tentativo di modificare il commento", + "Comment deleted" : "Commento eliminato", + "An error occurred while trying to delete the comment" : "Si è verificato un errore durante il tentativo di eliminare il commento", + "An error occurred while trying to create the comment" : "Si è verificato un errore durante il tentativo di creare il commento" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/it.json b/apps/comments/l10n/it.json index 818f79b01f8..09ba85ad60e 100644 --- a/apps/comments/l10n/it.json +++ b/apps/comments/l10n/it.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Commenti", - "New comment …" : "Nuovo commento...", - "Delete comment" : "Elimina commento", - "Post" : "Commento", - "Cancel" : "Annulla", - "Edit comment" : "Modifica commento", - "[Deleted user]" : "[Utente eliminato]", - "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!", - "More comments …" : "Altri commenti...", - "Save" : "Salva", - "Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}", - "Error occurred while retrieving comment with id {id}" : "Si è verificato un errore durante il tentativo di recupero del commento con id {id}", - "Error occurred while updating comment with id {id}" : "Si è verificato un errore durante il tentativo di aggiornamento del commento con id {id}", - "Error occurred while posting comment" : "Si è verificato un errore durante la pubblicazione del commento.", - "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti"], - "Comment" : "Commento", "You commented" : "Hai commentato", - "%1$s commented" : "%1$s ha commentato", "{author} commented" : "{author} ha commentato", "You commented on %1$s" : "Hai commentato su %1$s", "You commented on {file}" : "Hai commentato su {file}", "%1$s commented on %2$s" : "%1$s ha commentato %2$s", "{author} commented on {file}" : "{author} ha commentato su {file}", "<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"%s\", in un commento di un utente che è stato eliminato", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un utente che è stato eliminato", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ti ha menzionato in un commento su \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} ti ha menzionato in un commento su \"{file}\".", - "Unknown user" : "Utente sconosciuto", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"%s\".", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"{file}\"." -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "Files" : "File", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un account che è stato eliminato", + "{user} mentioned you in a comment on \"{file}\"" : "{user} ti ha menzionato in un commento su \"{file}\"", + "Files app plugin to add comments to files" : "Estensione dell'applicazione File per aggiungere commenti ai file", + "Edit comment" : "Modifica commento", + "Delete comment" : "Elimina commento", + "Cancel edit" : "Annulla modifica", + "New comment" : "Nuovo commento", + "Write a comment …" : "Scrivi un commento...", + "Post comment" : "Pubblica commento", + "@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente", + "Could not reload comments" : "Impossibile ricaricare i commenti", + "Failed to mark comments as read" : "Impossibile segnare i commenti come letti", + "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti", + "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!", + "No more messages" : "Non ci sono altri messaggi", + "Retry" : "Riprova", + "_1 new comment_::_{unread} new comments_" : ["1 nuovo commento","{unread} nuovi commenti","{unread} nuovi commenti"], + "Comment" : "Commento", + "An error occurred while trying to edit the comment" : "Si è verificato un errore durante il tentativo di modificare il commento", + "Comment deleted" : "Commento eliminato", + "An error occurred while trying to delete the comment" : "Si è verificato un errore durante il tentativo di eliminare il commento", + "An error occurred while trying to create the comment" : "Si è verificato un errore durante il tentativo di creare il commento" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/ja.js b/apps/comments/l10n/ja.js index afe78324645..60800bfb5f9 100644 --- a/apps/comments/l10n/ja.js +++ b/apps/comments/l10n/ja.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "コメント", - "New comment …" : "新しいコメント...", - "Delete comment" : "コメントを削除", - "Post" : "追加", - "Cancel" : "キャンセル", - "Edit comment" : "コメントを編集", - "[Deleted user]" : "[削除済みユーザー]", - "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!", - "More comments …" : "その他のコメント...", - "Save" : "保存", - "Allowed characters {count} of {max}" : "入力文字数 {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "コメントID {id} のコメントを取得する際にエラーが発生", - "Error occurred while updating comment with id {id}" : "コメントID {id} のコメントをアップロードする際にエラーが発生", - "Error occurred while posting comment" : "コメント投稿時にエラーが発生", - "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"], - "Comment" : "コメント", "You commented" : "コメント済", - "%1$s commented" : "%1$s がコメントを追加", "{author} commented" : "{author} がコメントしました", - "You commented on %1$s" : "%1$s にコメントしました", + "You commented on %1$s" : "%1$s についてコメントしました", "You commented on {file}" : "{file} にコメントしました", "%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました", "{author} commented on {file}" : "{author} が{file} にコメントしました", - "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</ strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s さんが “%2$s” のコメントであなたについて言及しました。", - "{user} mentioned you in a comment on “{file}”" : "{user} さんが ““{file}” のコメントであなたについて言及しました。", - "Unknown user" : "不明なユーザー", - "A (now) deleted user mentioned you in a comment on “%s”" : "(現在)削除されたユーザーが \"%s\" のコメントであなたのことについて言及しました", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(現在)削除されたユーザーが \"{file}\" のコメントであなたのことについて言及しました" + "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき", + "Files" : "ファイル", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "あなたは \"{file}\" で、削除されたアカウントのコメントで言及されました", + "{user} mentioned you in a comment on \"{file}\"" : "{user} さんが \"{file}\" のコメント内であなたついて言及しました", + "Files app plugin to add comments to files" : "ファイルにコメントを追加するためのファイルアプリプラグイン", + "Edit comment" : "コメントを編集", + "Delete comment" : "コメントを削除", + "Cancel edit" : "編集をキャンセル", + "New comment" : "新しいコメント", + "Write a comment …" : "コメントを書く...", + "Post comment" : "コメントを投稿", + "@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/", + "Could not reload comments" : "コメントをリロードできませんでした", + "Failed to mark comments as read" : "コメントを既読にすることができませんでした", + "Unable to load the comments list" : "コメントリストを読み込めませんでした", + "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!", + "No more messages" : "これ以上のメッセージはありません", + "Retry" : "再試行", + "_1 new comment_::_{unread} new comments_" : ["の未読のコメント {unread}"], + "Comment" : "コメント", + "An error occurred while trying to edit the comment" : "コメント編集中にエラーが発生しました", + "Comment deleted" : "コメントが削除されました", + "An error occurred while trying to delete the comment" : "コメントの削除中にエラーが発生しました", + "An error occurred while trying to create the comment" : "コメント中にエラーが発生しました" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/ja.json b/apps/comments/l10n/ja.json index 5faf8d6f95f..08014639e97 100644 --- a/apps/comments/l10n/ja.json +++ b/apps/comments/l10n/ja.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "コメント", - "New comment …" : "新しいコメント...", - "Delete comment" : "コメントを削除", - "Post" : "追加", - "Cancel" : "キャンセル", - "Edit comment" : "コメントを編集", - "[Deleted user]" : "[削除済みユーザー]", - "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!", - "More comments …" : "その他のコメント...", - "Save" : "保存", - "Allowed characters {count} of {max}" : "入力文字数 {count} / {max}", - "Error occurred while retrieving comment with id {id}" : "コメントID {id} のコメントを取得する際にエラーが発生", - "Error occurred while updating comment with id {id}" : "コメントID {id} のコメントをアップロードする際にエラーが発生", - "Error occurred while posting comment" : "コメント投稿時にエラーが発生", - "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"], - "Comment" : "コメント", "You commented" : "コメント済", - "%1$s commented" : "%1$s がコメントを追加", "{author} commented" : "{author} がコメントしました", - "You commented on %1$s" : "%1$s にコメントしました", + "You commented on %1$s" : "%1$s についてコメントしました", "You commented on {file}" : "{file} にコメントしました", "%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました", "{author} commented on {file}" : "{author} が{file} にコメントしました", - "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</ strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s さんが “%2$s” のコメントであなたについて言及しました。", - "{user} mentioned you in a comment on “{file}”" : "{user} さんが ““{file}” のコメントであなたについて言及しました。", - "Unknown user" : "不明なユーザー", - "A (now) deleted user mentioned you in a comment on “%s”" : "(現在)削除されたユーザーが \"%s\" のコメントであなたのことについて言及しました", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(現在)削除されたユーザーが \"{file}\" のコメントであなたのことについて言及しました" + "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき", + "Files" : "ファイル", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "あなたは \"{file}\" で、削除されたアカウントのコメントで言及されました", + "{user} mentioned you in a comment on \"{file}\"" : "{user} さんが \"{file}\" のコメント内であなたついて言及しました", + "Files app plugin to add comments to files" : "ファイルにコメントを追加するためのファイルアプリプラグイン", + "Edit comment" : "コメントを編集", + "Delete comment" : "コメントを削除", + "Cancel edit" : "編集をキャンセル", + "New comment" : "新しいコメント", + "Write a comment …" : "コメントを書く...", + "Post comment" : "コメントを投稿", + "@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/", + "Could not reload comments" : "コメントをリロードできませんでした", + "Failed to mark comments as read" : "コメントを既読にすることができませんでした", + "Unable to load the comments list" : "コメントリストを読み込めませんでした", + "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!", + "No more messages" : "これ以上のメッセージはありません", + "Retry" : "再試行", + "_1 new comment_::_{unread} new comments_" : ["の未読のコメント {unread}"], + "Comment" : "コメント", + "An error occurred while trying to edit the comment" : "コメント編集中にエラーが発生しました", + "Comment deleted" : "コメントが削除されました", + "An error occurred while trying to delete the comment" : "コメントの削除中にエラーが発生しました", + "An error occurred while trying to create the comment" : "コメント中にエラーが発生しました" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/ka.js b/apps/comments/l10n/ka.js new file mode 100644 index 00000000000..4d721d8441c --- /dev/null +++ b/apps/comments/l10n/ka.js @@ -0,0 +1,32 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Comments", + "You commented" : "You commented", + "{author} commented" : "{author} commented", + "You commented on %1$s" : "You commented on %1$s", + "You commented on {file}" : "You commented on {file}", + "%1$s commented on %2$s" : "%1$s commented on %2$s", + "{author} commented on {file}" : "{author} commented on {file}", + "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin to add comments to files", + "Edit comment" : "Edit comment", + "Delete comment" : "Delete comment", + "Cancel edit" : "Cancel edit", + "Post comment" : "Post comment", + "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker", + "Could not reload comments" : "Could not reload comments", + "Failed to mark comments as read" : "Failed to mark comments as read", + "Unable to load the comments list" : "Unable to load the comments list", + "No comments yet, start the conversation!" : "No comments yet, start the conversation!", + "No more messages" : "No more messages", + "Retry" : "Retry", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"], + "Comment" : "Comment", + "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment", + "Comment deleted" : "Comment deleted", + "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment", + "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment" +}, +"nplurals=2; plural=(n!=1);"); diff --git a/apps/comments/l10n/ka.json b/apps/comments/l10n/ka.json new file mode 100644 index 00000000000..a8625a23f7a --- /dev/null +++ b/apps/comments/l10n/ka.json @@ -0,0 +1,30 @@ +{ "translations": { + "Comments" : "Comments", + "You commented" : "You commented", + "{author} commented" : "{author} commented", + "You commented on %1$s" : "You commented on %1$s", + "You commented on {file}" : "You commented on {file}", + "%1$s commented on %2$s" : "%1$s commented on %2$s", + "{author} commented on {file}" : "{author} commented on {file}", + "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"", + "Files app plugin to add comments to files" : "Files app plugin to add comments to files", + "Edit comment" : "Edit comment", + "Delete comment" : "Delete comment", + "Cancel edit" : "Cancel edit", + "Post comment" : "Post comment", + "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker", + "Could not reload comments" : "Could not reload comments", + "Failed to mark comments as read" : "Failed to mark comments as read", + "Unable to load the comments list" : "Unable to load the comments list", + "No comments yet, start the conversation!" : "No comments yet, start the conversation!", + "No more messages" : "No more messages", + "Retry" : "Retry", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"], + "Comment" : "Comment", + "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment", + "Comment deleted" : "Comment deleted", + "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment", + "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment" +},"pluralForm" :"nplurals=2; plural=(n!=1);" +}
\ No newline at end of file diff --git a/apps/comments/l10n/ka_GE.js b/apps/comments/l10n/ka_GE.js deleted file mode 100644 index 8b70a2d2243..00000000000 --- a/apps/comments/l10n/ka_GE.js +++ /dev/null @@ -1,36 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "კომენტარები", - "New comment …" : "ახალი კომენტარი ...", - "Delete comment" : "კომენტარის გაუქმება", - "Post" : "პოსტი", - "Cancel" : "უარყოფა", - "Edit comment" : "კომენტარის ცვლილება", - "[Deleted user]" : "[გაუქმებული მომხმარებელი]", - "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ", - "More comments …" : "მეტი კომენტარი ...", - "Save" : "შენახვა", - "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან", - "Error occurred while retrieving comment with id {id}" : "კომენტარის id-ით {id}-ის მიღებისას წარმოიშვა შეცდომა", - "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა", - "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"], - "Comment" : "კომენტარის დამატება", - "You commented" : "თქვენ გააკეთეთ კომენტარი", - "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი", - "{author} commented" : "{author} მომხმარებელმა გააკეთა კომენტარი", - "You commented on %1$s" : "თქვენ გააკეთეთ კომენტარი %1$s-ზე", - "You commented on {file}" : "თქვენ გააკეთეთ კომენტარი {file}-ზე", - "%1$s commented on %2$s" : "%1$s მომხმარებელმა გააკეთა კომენტარი %2$s-ზე", - "{author} commented on {file}" : "{author} მომხმარებელმა გააკეთა კომენტარი {file}-ზე", - "<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებზე", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “%s”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “{file}”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s გახსენათ “%2$s”-ზე გაკეთებულ კომენტარში", - "{user} mentioned you in a comment on “{file}”" : "{user} გახსენათ “{file}” ფაილზე გაკეტებულ კომენტარში", - "Unknown user" : "უცნობი მომხმარებელი", - "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\"" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/ka_GE.json b/apps/comments/l10n/ka_GE.json deleted file mode 100644 index df3226ad00e..00000000000 --- a/apps/comments/l10n/ka_GE.json +++ /dev/null @@ -1,34 +0,0 @@ -{ "translations": { - "Comments" : "კომენტარები", - "New comment …" : "ახალი კომენტარი ...", - "Delete comment" : "კომენტარის გაუქმება", - "Post" : "პოსტი", - "Cancel" : "უარყოფა", - "Edit comment" : "კომენტარის ცვლილება", - "[Deleted user]" : "[გაუქმებული მომხმარებელი]", - "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ", - "More comments …" : "მეტი კომენტარი ...", - "Save" : "შენახვა", - "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან", - "Error occurred while retrieving comment with id {id}" : "კომენტარის id-ით {id}-ის მიღებისას წარმოიშვა შეცდომა", - "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა", - "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"], - "Comment" : "კომენტარის დამატება", - "You commented" : "თქვენ გააკეთეთ კომენტარი", - "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი", - "{author} commented" : "{author} მომხმარებელმა გააკეთა კომენტარი", - "You commented on %1$s" : "თქვენ გააკეთეთ კომენტარი %1$s-ზე", - "You commented on {file}" : "თქვენ გააკეთეთ კომენტარი {file}-ზე", - "%1$s commented on %2$s" : "%1$s მომხმარებელმა გააკეთა კომენტარი %2$s-ზე", - "{author} commented on {file}" : "{author} მომხმარებელმა გააკეთა კომენტარი {file}-ზე", - "<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებზე", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “%s”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “{file}”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s გახსენათ “%2$s”-ზე გაკეთებულ კომენტარში", - "{user} mentioned you in a comment on “{file}”" : "{user} გახსენათ “{file}” ფაილზე გაკეტებულ კომენტარში", - "Unknown user" : "უცნობი მომხმარებელი", - "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\"" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/km.js b/apps/comments/l10n/km.js deleted file mode 100644 index 16f065c86b3..00000000000 --- a/apps/comments/l10n/km.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "បោះបង់", - "Save" : "រក្សាទុក" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/km.json b/apps/comments/l10n/km.json deleted file mode 100644 index 20de21d56a1..00000000000 --- a/apps/comments/l10n/km.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "បោះបង់", - "Save" : "រក្សាទុក" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/kn.js b/apps/comments/l10n/kn.js deleted file mode 100644 index 97a48f9cb3e..00000000000 --- a/apps/comments/l10n/kn.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "ರದ್ದು", - "Save" : "ಉಳಿಸಿ" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/kn.json b/apps/comments/l10n/kn.json deleted file mode 100644 index 8a2b49fc262..00000000000 --- a/apps/comments/l10n/kn.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "ರದ್ದು", - "Save" : "ಉಳಿಸಿ" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/ko.js b/apps/comments/l10n/ko.js index 344ce0cdd01..5b75a6eea40 100644 --- a/apps/comments/l10n/ko.js +++ b/apps/comments/l10n/ko.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "댓글", - "New comment …" : "새로운 댓글 …", - "Delete comment" : "댓글 삭제", - "Post" : "게시", - "Cancel" : "취소", - "Edit comment" : "댓글 편집", - "[Deleted user]" : "[삭제된 사용자]", - "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", - "More comments …" : "더 많은 댓글 …", - "Save" : "저장", - "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능", - "Error occurred while retrieving comment with id {id}" : "댓글 ID {id}을(를) 가져오는 중 오류가 발생했습니다", - "Error occurred while updating comment with id {id}" : "댓글 ID {id}을(를) 업데이트하는 동안 오류가 발생했습니다 ", - "Error occurred while posting comment" : "댓글을 게시하는 중 오류가 발생했습니다", - "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"], - "Comment" : "설명", "You commented" : "댓글 남김", - "%1$s commented" : "%1$s 님의 댓글", "{author} commented" : "{author} 님이 댓글 남김", "You commented on %1$s" : "%1$s에 댓글 남김", "You commented on {file}" : "{file}에 댓글 남김", "%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김", "{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김", "<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “%s”의 댓글에서 여러분을 언급함", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 여러분을 언급함", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함", - "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함", - "Unknown user" : "알 수 없는 사용자", - "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함" + "Files" : "파일", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함", + "Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인", + "Edit comment" : "댓글 편집", + "Delete comment" : "댓글 삭제", + "Cancel edit" : "편집 취소", + "New comment" : "새로운 댓글", + "Write a comment …" : "댓글 쓰기 ...", + "Post comment" : "댓글 게시", + "@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.", + "Could not reload comments" : "댓글을 다시 불러올 수 없음", + "Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음", + "Unable to load the comments list" : "댓글 목록을 불러올 수 없음", + "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", + "No more messages" : "메시지 더 이상 없음", + "Retry" : "다시 시도", + "_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"], + "Comment" : "설명", + "An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생", + "Comment deleted" : "댓글이 삭제됨", + "An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생", + "An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/ko.json b/apps/comments/l10n/ko.json index da3f833874b..a8aed7edea4 100644 --- a/apps/comments/l10n/ko.json +++ b/apps/comments/l10n/ko.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "댓글", - "New comment …" : "새로운 댓글 …", - "Delete comment" : "댓글 삭제", - "Post" : "게시", - "Cancel" : "취소", - "Edit comment" : "댓글 편집", - "[Deleted user]" : "[삭제된 사용자]", - "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", - "More comments …" : "더 많은 댓글 …", - "Save" : "저장", - "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능", - "Error occurred while retrieving comment with id {id}" : "댓글 ID {id}을(를) 가져오는 중 오류가 발생했습니다", - "Error occurred while updating comment with id {id}" : "댓글 ID {id}을(를) 업데이트하는 동안 오류가 발생했습니다 ", - "Error occurred while posting comment" : "댓글을 게시하는 중 오류가 발생했습니다", - "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"], - "Comment" : "설명", "You commented" : "댓글 남김", - "%1$s commented" : "%1$s 님의 댓글", "{author} commented" : "{author} 님이 댓글 남김", "You commented on %1$s" : "%1$s에 댓글 남김", "You commented on {file}" : "{file}에 댓글 남김", "%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김", "{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김", "<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “%s”의 댓글에서 여러분을 언급함", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 여러분을 언급함", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함", - "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함", - "Unknown user" : "알 수 없는 사용자", - "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함" + "Files" : "파일", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함", + "Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인", + "Edit comment" : "댓글 편집", + "Delete comment" : "댓글 삭제", + "Cancel edit" : "편집 취소", + "New comment" : "새로운 댓글", + "Write a comment …" : "댓글 쓰기 ...", + "Post comment" : "댓글 게시", + "@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.", + "Could not reload comments" : "댓글을 다시 불러올 수 없음", + "Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음", + "Unable to load the comments list" : "댓글 목록을 불러올 수 없음", + "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", + "No more messages" : "메시지 더 이상 없음", + "Retry" : "다시 시도", + "_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"], + "Comment" : "설명", + "An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생", + "Comment deleted" : "댓글이 삭제됨", + "An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생", + "An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/ku_IQ.js b/apps/comments/l10n/ku_IQ.js deleted file mode 100644 index bbbe6f95bb1..00000000000 --- a/apps/comments/l10n/ku_IQ.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "لابردن", - "Save" : "پاشکهوتکردن" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ku_IQ.json b/apps/comments/l10n/ku_IQ.json deleted file mode 100644 index 1a46f867235..00000000000 --- a/apps/comments/l10n/ku_IQ.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "لابردن", - "Save" : "پاشکهوتکردن" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/lb.js b/apps/comments/l10n/lb.js deleted file mode 100644 index d7f8c5884ac..00000000000 --- a/apps/comments/l10n/lb.js +++ /dev/null @@ -1,8 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Ofbriechen", - "Save" : "Späicheren", - "Comment" : "Kommentar" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/lb.json b/apps/comments/l10n/lb.json deleted file mode 100644 index bfa307a7e8d..00000000000 --- a/apps/comments/l10n/lb.json +++ /dev/null @@ -1,6 +0,0 @@ -{ "translations": { - "Cancel" : "Ofbriechen", - "Save" : "Späicheren", - "Comment" : "Kommentar" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js index 323f74dadcc..c61f36f8af8 100644 --- a/apps/comments/l10n/lt_LT.js +++ b/apps/comments/l10n/lt_LT.js @@ -2,33 +2,28 @@ OC.L10N.register( "comments", { "Comments" : "Komentarai", - "New comment …" : "Naujas komentaras …", - "Delete comment" : "Ištrinti komentarą", - "Post" : "Įrašas", - "Cancel" : "Atsisakyti", - "Edit comment" : "Redaguoti komentarą", - "[Deleted user]" : "[Ištrintas naudotojas]", - "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!", - "More comments …" : "Daugiau komentarų …", - "Save" : "Įrašyti", - "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", - "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}", - "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", - "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], - "Comment" : "Komentaras", "You commented" : "Jūs pakomentavote", - "%1$s commented" : "%1$s pakomentavo", "{author} commented" : "{author} pakomentavo", "You commented on %1$s" : "Pakomentavote %1$s", "You commented on {file}" : "Pakomentavote {file}", "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", "{author} commented on {file}" : "{author} pakomentavo {file}", - "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”", - "Unknown user" : "Nežinomas naudotojas", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"" + "<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>", + "Files" : "Failai", + "Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus", + "Edit comment" : "Taisyti komentarą", + "Delete comment" : "Ištrinti komentarą", + "Cancel edit" : "Atsisakyti taisymo", + "New comment" : "Naujas komentaras", + "Post comment" : "Paskelbti komentarą", + "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo", + "No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!", + "Retry" : "Bandyti dar kartą", + "_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"], + "Comment" : "Komentaras", + "An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida", + "Comment deleted" : "Komentaras ištrintas", + "An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida", + "An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"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/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json index 1290f72f39b..eed1892b83d 100644 --- a/apps/comments/l10n/lt_LT.json +++ b/apps/comments/l10n/lt_LT.json @@ -1,32 +1,27 @@ { "translations": { "Comments" : "Komentarai", - "New comment …" : "Naujas komentaras …", - "Delete comment" : "Ištrinti komentarą", - "Post" : "Įrašas", - "Cancel" : "Atsisakyti", - "Edit comment" : "Redaguoti komentarą", - "[Deleted user]" : "[Ištrintas naudotojas]", - "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!", - "More comments …" : "Daugiau komentarų …", - "Save" : "Įrašyti", - "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", - "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}", - "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", - "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], - "Comment" : "Komentaras", "You commented" : "Jūs pakomentavote", - "%1$s commented" : "%1$s pakomentavo", "{author} commented" : "{author} pakomentavo", "You commented on %1$s" : "Pakomentavote %1$s", "You commented on {file}" : "Pakomentavote {file}", "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", "{author} commented on {file}" : "{author} pakomentavo {file}", - "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”", - "Unknown user" : "Nežinomas naudotojas", - "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" + "<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>", + "Files" : "Failai", + "Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus", + "Edit comment" : "Taisyti komentarą", + "Delete comment" : "Ištrinti komentarą", + "Cancel edit" : "Atsisakyti taisymo", + "New comment" : "Naujas komentaras", + "Post comment" : "Paskelbti komentarą", + "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo", + "No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!", + "Retry" : "Bandyti dar kartą", + "_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"], + "Comment" : "Komentaras", + "An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida", + "Comment deleted" : "Komentaras ištrintas", + "An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida", + "An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida" +},"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/comments/l10n/lv.js b/apps/comments/l10n/lv.js deleted file mode 100644 index e82c5cac90d..00000000000 --- a/apps/comments/l10n/lv.js +++ /dev/null @@ -1,32 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komentāri", - "New comment …" : "Jauns komentārs...", - "Delete comment" : "Dzēst komentāru", - "Post" : "Pievienot", - "Cancel" : "Atcelt", - "Edit comment" : "Rediģēt komentāru", - "[Deleted user]" : "[Dzēsts lietotājs]", - "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!", - "More comments …" : "Vairāk komentāri...", - "Save" : "Saglabāt", - "Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}", - "Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}", - "Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}", - "Error occurred while posting comment" : "Notika kļūda pievienojot komentāru", - "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"], - "Comment" : "Komentārs", - "You commented" : "Tu komentēji", - "%1$s commented" : "%1$s komentēja", - "{author} commented" : "{author} komentēja", - "You commented on %1$s" : "Tu komentēji %1$s", - "You commented on {file}" : "Tu komentēji {file}", - "%1$s commented on %2$s" : "%1$s komentēja %2$s", - "{author} commented on {file}" : "{author} komentārs {file}", - "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”", - "Unknown user" : "Nezināms lietotājs" -}, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/comments/l10n/lv.json b/apps/comments/l10n/lv.json deleted file mode 100644 index ffe078c360f..00000000000 --- a/apps/comments/l10n/lv.json +++ /dev/null @@ -1,30 +0,0 @@ -{ "translations": { - "Comments" : "Komentāri", - "New comment …" : "Jauns komentārs...", - "Delete comment" : "Dzēst komentāru", - "Post" : "Pievienot", - "Cancel" : "Atcelt", - "Edit comment" : "Rediģēt komentāru", - "[Deleted user]" : "[Dzēsts lietotājs]", - "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!", - "More comments …" : "Vairāk komentāri...", - "Save" : "Saglabāt", - "Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}", - "Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}", - "Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}", - "Error occurred while posting comment" : "Notika kļūda pievienojot komentāru", - "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"], - "Comment" : "Komentārs", - "You commented" : "Tu komentēji", - "%1$s commented" : "%1$s komentēja", - "{author} commented" : "{author} komentēja", - "You commented on %1$s" : "Tu komentēji %1$s", - "You commented on {file}" : "Tu komentēji {file}", - "%1$s commented on %2$s" : "%1$s komentēja %2$s", - "{author} commented on {file}" : "{author} komentārs {file}", - "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”", - "Unknown user" : "Nezināms lietotājs" -},"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/comments/l10n/mk.js b/apps/comments/l10n/mk.js index eadb14aba45..9c73793ce49 100644 --- a/apps/comments/l10n/mk.js +++ b/apps/comments/l10n/mk.js @@ -1,9 +1,36 @@ OC.L10N.register( "comments", { - "Cancel" : "Откажи", - "Save" : "Сними", + "Comments" : "Коментари", + "You commented" : "Kоментиравте", + "{author} commented" : "{author} коментираше", + "You commented on %1$s" : "Коментиравте на %1$s", + "You commented on {file}" : "Коментиравте на {file}", + "%1$s commented on %2$s" : "%1$s коментираше на %2$s", + "{author} commented on {file}" : "{author} коментираше на {file}", + "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за датотеки", + "Files" : "Датотеки", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Бевте спомнати на “{file}”, во коментар од корисник кој сега е избришан", + "{user} mentioned you in a comment on \"{file}\"" : "{user} те спомна во коментар на датотеката “{file}”", + "Files app plugin to add comments to files" : "Додади додаток за коментирање на датотеки", + "Edit comment" : "Измени го коментарот", + "Delete comment" : "Избриши коментар", + "Cancel edit" : "Откажи ажурирање", + "New comment" : "Нов коментар", + "Write a comment …" : "Напиши коментар ...", + "Post comment" : "Објави коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ за спомнување, : за емоција, / за паметен избор", + "Could not reload comments" : "Неможе да се вчитаат коментарите", + "Failed to mark comments as read" : "Неуспешно означување на коментарот како прочитан", + "Unable to load the comments list" : "Неможе да се вчита листата на коментари", + "No comments yet, start the conversation!" : "Сеуште нема коментари, започнете разговор!", + "No more messages" : "Нема повеќе пораки", + "Retry" : "Обидете се повторно", + "_1 new comment_::_{unread} new comments_" : ["1 нов коментар","{unread} нови коментари"], "Comment" : "Коментар", - "%1$s commented" : "%1$s коментиран" + "An error occurred while trying to edit the comment" : "Настана грешка при обид за ажурирање на коментар", + "Comment deleted" : "Коментарот е избришан", + "An error occurred while trying to delete the comment" : "Настана грешка при обидот за бришење на коментар", + "An error occurred while trying to create the comment" : "Настана грешка при обидот за креирање на коментар" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/comments/l10n/mk.json b/apps/comments/l10n/mk.json index 106972fb5ec..5cd8c7b1076 100644 --- a/apps/comments/l10n/mk.json +++ b/apps/comments/l10n/mk.json @@ -1,7 +1,34 @@ { "translations": { - "Cancel" : "Откажи", - "Save" : "Сними", + "Comments" : "Коментари", + "You commented" : "Kоментиравте", + "{author} commented" : "{author} коментираше", + "You commented on %1$s" : "Коментиравте на %1$s", + "You commented on {file}" : "Коментиравте на {file}", + "%1$s commented on %2$s" : "%1$s коментираше на %2$s", + "{author} commented on {file}" : "{author} коментираше на {file}", + "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за датотеки", + "Files" : "Датотеки", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Бевте спомнати на “{file}”, во коментар од корисник кој сега е избришан", + "{user} mentioned you in a comment on \"{file}\"" : "{user} те спомна во коментар на датотеката “{file}”", + "Files app plugin to add comments to files" : "Додади додаток за коментирање на датотеки", + "Edit comment" : "Измени го коментарот", + "Delete comment" : "Избриши коментар", + "Cancel edit" : "Откажи ажурирање", + "New comment" : "Нов коментар", + "Write a comment …" : "Напиши коментар ...", + "Post comment" : "Објави коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ за спомнување, : за емоција, / за паметен избор", + "Could not reload comments" : "Неможе да се вчитаат коментарите", + "Failed to mark comments as read" : "Неуспешно означување на коментарот како прочитан", + "Unable to load the comments list" : "Неможе да се вчита листата на коментари", + "No comments yet, start the conversation!" : "Сеуште нема коментари, започнете разговор!", + "No more messages" : "Нема повеќе пораки", + "Retry" : "Обидете се повторно", + "_1 new comment_::_{unread} new comments_" : ["1 нов коментар","{unread} нови коментари"], "Comment" : "Коментар", - "%1$s commented" : "%1$s коментиран" + "An error occurred while trying to edit the comment" : "Настана грешка при обид за ажурирање на коментар", + "Comment deleted" : "Коментарот е избришан", + "An error occurred while trying to delete the comment" : "Настана грешка при обидот за бришење на коментар", + "An error occurred while trying to create the comment" : "Настана грешка при обидот за креирање на коментар" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/comments/l10n/mn.js b/apps/comments/l10n/mn.js deleted file mode 100644 index 53c2a9287b8..00000000000 --- a/apps/comments/l10n/mn.js +++ /dev/null @@ -1,32 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Сэтгэгдэл", - "New comment …" : "Шинэ сэтгэгдэл", - "Delete comment" : "Сэтгэгдэл устгах", - "Post" : "Нийтлэл", - "Cancel" : "Цуцлах", - "Edit comment" : "Сэтгэгдэл засах", - "[Deleted user]" : "[Хэрэглэгч устгагдсан]", - "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна", - "More comments …" : "Дараагийн сэтгэгдэлүүд", - "Save" : "Хадгалах", - "Allowed characters {count} of {max}" : "{max} боломжойгоос {count} тэмдэгт орсон байна", - "Error occurred while retrieving comment with id {id}" : "{id} дугаартай сэтгэгдлийг авахад алдаа гарлаа", - "Error occurred while updating comment with id {id}" : "{id} дугаартай сэтгэгдлийг шинэчилэхэд алдаа гарлаа", - "Error occurred while posting comment" : "Сэтгэгдлийг хадгалахад алдаа гарлаа", - "Comment" : "Сэтгэгдэл", - "You commented" : "Та сэтгэгдэл бичсэн байна", - "%1$s commented" : "%1$s сэтгэгдэл бичсэн", - "{author} commented" : "{author} сэтгэгдэл бичсэн", - "You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна", - "You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна", - "%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн", - "{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн", - "<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s нь таныг “%2$s”-ы сэтгэгдэлд дурдсан", - "{user} mentioned you in a comment on “{file}”" : "{user} нь таныг “{file}”-ын сэтгэгдэлд дурдсан", - "Unknown user" : " хэрэглэгч", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/mn.json b/apps/comments/l10n/mn.json deleted file mode 100644 index 0276bbb4a9e..00000000000 --- a/apps/comments/l10n/mn.json +++ /dev/null @@ -1,30 +0,0 @@ -{ "translations": { - "Comments" : "Сэтгэгдэл", - "New comment …" : "Шинэ сэтгэгдэл", - "Delete comment" : "Сэтгэгдэл устгах", - "Post" : "Нийтлэл", - "Cancel" : "Цуцлах", - "Edit comment" : "Сэтгэгдэл засах", - "[Deleted user]" : "[Хэрэглэгч устгагдсан]", - "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна", - "More comments …" : "Дараагийн сэтгэгдэлүүд", - "Save" : "Хадгалах", - "Allowed characters {count} of {max}" : "{max} боломжойгоос {count} тэмдэгт орсон байна", - "Error occurred while retrieving comment with id {id}" : "{id} дугаартай сэтгэгдлийг авахад алдаа гарлаа", - "Error occurred while updating comment with id {id}" : "{id} дугаартай сэтгэгдлийг шинэчилэхэд алдаа гарлаа", - "Error occurred while posting comment" : "Сэтгэгдлийг хадгалахад алдаа гарлаа", - "Comment" : "Сэтгэгдэл", - "You commented" : "Та сэтгэгдэл бичсэн байна", - "%1$s commented" : "%1$s сэтгэгдэл бичсэн", - "{author} commented" : "{author} сэтгэгдэл бичсэн", - "You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна", - "You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна", - "%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн", - "{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн", - "<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s нь таныг “%2$s”-ы сэтгэгдэлд дурдсан", - "{user} mentioned you in a comment on “{file}”" : "{user} нь таныг “{file}”-ын сэтгэгдэлд дурдсан", - "Unknown user" : " хэрэглэгч", - "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/ms_MY.js b/apps/comments/l10n/ms_MY.js deleted file mode 100644 index 37e8518632d..00000000000 --- a/apps/comments/l10n/ms_MY.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Batal", - "Save" : "Simpan" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/ms_MY.json b/apps/comments/l10n/ms_MY.json deleted file mode 100644 index dd6b20cbd7b..00000000000 --- a/apps/comments/l10n/ms_MY.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Batal", - "Save" : "Simpan" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/my_MM.js b/apps/comments/l10n/my_MM.js deleted file mode 100644 index 2fd6d1d1a9c..00000000000 --- a/apps/comments/l10n/my_MM.js +++ /dev/null @@ -1,6 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "ပယ်ဖျက်မည်" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/my_MM.json b/apps/comments/l10n/my_MM.json deleted file mode 100644 index 28a85e87b39..00000000000 --- a/apps/comments/l10n/my_MM.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "translations": { - "Cancel" : "ပယ်ဖျက်မည်" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/nb.js b/apps/comments/l10n/nb.js index 2ca162d6b07..dcc1127639a 100644 --- a/apps/comments/l10n/nb.js +++ b/apps/comments/l10n/nb.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar", - "Delete comment" : "Slett kommentar", - "Post" : "Send", - "Cancel" : "Avbryt", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet bruker]", - "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", - "More comments …" : "Flere kommentarer..", - "Save" : "Lagre", - "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "En feil oppstod under posting av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "Comment" : "Kommentar", "You commented" : "Du kommenterte", - "%1$s commented" : "%1$s kommentert", "{author} commented" : "{author} kommenterte", "You commented on %1$s" : "Du kommenterte på %1$s", "You commented on {file}" : "Du kommenterte på {file}", "%1$s commented on %2$s" : "%1$s kommenterte %2$s", "{author} commented on {file}" : "{author} kommenterte på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"%s\", i en kommentar av en bruker som siden har blitt slettet", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”", - "Unknown user" : "Ukjent bruker", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du ble nevnt på \"{file}\", i en kommentar av en konto som siden har blitt slettet", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nevnte deg i en kommentar til \"{file}\"", + "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer", + "Edit comment" : "Rediger kommentar", + "Delete comment" : "Slett kommentar", + "Cancel edit" : "Avbryt endring", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv en kommentar...", + "Post comment" : "Send kommentar", + "@ for mentions, : for emoji, / for smart picker" : "@ for nevner, : for emoji, / for smartvelger", + "Could not reload comments" : "Kunne ikke laste inn kommentarene på nytt", + "Failed to mark comments as read" : "Markering av kommentarer som lest feilet", + "Unable to load the comments list" : "Kan ikke laste inn kommentarlisten", + "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", + "No more messages" : "Ingen flere meldinger", + "Retry" : "Prøv igjen", + "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren", + "Comment deleted" : "Kommentar slettet", + "An error occurred while trying to delete the comment" : "Det oppsto en feil under forsøk på å slette kommentaren", + "An error occurred while trying to create the comment" : "Det oppsto en feil under forsøket på å opprette kommentaren" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/nb.json b/apps/comments/l10n/nb.json index 2c5a2861609..84c7337798d 100644 --- a/apps/comments/l10n/nb.json +++ b/apps/comments/l10n/nb.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar", - "Delete comment" : "Slett kommentar", - "Post" : "Send", - "Cancel" : "Avbryt", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet bruker]", - "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", - "More comments …" : "Flere kommentarer..", - "Save" : "Lagre", - "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "En feil oppstod under posting av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "Comment" : "Kommentar", "You commented" : "Du kommenterte", - "%1$s commented" : "%1$s kommentert", "{author} commented" : "{author} kommenterte", "You commented on %1$s" : "Du kommenterte på %1$s", "You commented on {file}" : "Du kommenterte på {file}", "%1$s commented on %2$s" : "%1$s kommenterte %2$s", "{author} commented on {file}" : "{author} kommenterte på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"%s\", i en kommentar av en bruker som siden har blitt slettet", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”", - "Unknown user" : "Ukjent bruker", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du ble nevnt på \"{file}\", i en kommentar av en konto som siden har blitt slettet", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nevnte deg i en kommentar til \"{file}\"", + "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer", + "Edit comment" : "Rediger kommentar", + "Delete comment" : "Slett kommentar", + "Cancel edit" : "Avbryt endring", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv en kommentar...", + "Post comment" : "Send kommentar", + "@ for mentions, : for emoji, / for smart picker" : "@ for nevner, : for emoji, / for smartvelger", + "Could not reload comments" : "Kunne ikke laste inn kommentarene på nytt", + "Failed to mark comments as read" : "Markering av kommentarer som lest feilet", + "Unable to load the comments list" : "Kan ikke laste inn kommentarlisten", + "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", + "No more messages" : "Ingen flere meldinger", + "Retry" : "Prøv igjen", + "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren", + "Comment deleted" : "Kommentar slettet", + "An error occurred while trying to delete the comment" : "Det oppsto en feil under forsøk på å slette kommentaren", + "An error occurred while trying to create the comment" : "Det oppsto en feil under forsøket på å opprette kommentaren" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/nb_NO.js b/apps/comments/l10n/nb_NO.js deleted file mode 100644 index d6ac9a2b7b6..00000000000 --- a/apps/comments/l10n/nb_NO.js +++ /dev/null @@ -1,39 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Kommentarer", - "Unknown user" : "Ukjent bruker", - "New comment …" : "Ny kommentar", - "Delete comment" : "Slett kommentar", - "Post" : "Send", - "Cancel" : "Avbryt", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet bruker]", - "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", - "More comments …" : "Flere kommentarer..", - "Save" : "Lagre", - "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "En feil oppstod under posting av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "Comment" : "Kommentar", - "You commented" : "Du kommenterte", - "%1$s commented" : "%1$s kommentert", - "{author} commented" : "{author} kommenterte", - "You commented on %1$s" : "Du kommenterte på %1$s", - "You commented on {file}" : "Du kommenterte på {file}", - "%1$s commented on %2$s" : "%1$s kommenterte %2$s", - "{author} commented on {file}" : "{author} kommenterte på {file}", - "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”", - "Type in a new comment..." : "Skriv inn en ny kommentar...", - "No other comments available" : "Ingen andre kommentarer tilgjengelig", - "More comments..." : "Flere kommentarer..", - "{count} unread comments" : "{count} uleste kommentarer", - "You commented on %2$s" : "Du kommenterte til %2$s" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/nb_NO.json b/apps/comments/l10n/nb_NO.json deleted file mode 100644 index 293eca39e84..00000000000 --- a/apps/comments/l10n/nb_NO.json +++ /dev/null @@ -1,37 +0,0 @@ -{ "translations": { - "Comments" : "Kommentarer", - "Unknown user" : "Ukjent bruker", - "New comment …" : "Ny kommentar", - "Delete comment" : "Slett kommentar", - "Post" : "Send", - "Cancel" : "Avbryt", - "Edit comment" : "Rediger kommentar", - "[Deleted user]" : "[Slettet bruker]", - "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", - "More comments …" : "Flere kommentarer..", - "Save" : "Lagre", - "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "En feil oppstod under posting av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "Comment" : "Kommentar", - "You commented" : "Du kommenterte", - "%1$s commented" : "%1$s kommentert", - "{author} commented" : "{author} kommenterte", - "You commented on %1$s" : "Du kommenterte på %1$s", - "You commented on {file}" : "Du kommenterte på {file}", - "%1$s commented on %2$s" : "%1$s kommenterte %2$s", - "{author} commented on {file}" : "{author} kommenterte på {file}", - "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”", - "Type in a new comment..." : "Skriv inn en ny kommentar...", - "No other comments available" : "Ingen andre kommentarer tilgjengelig", - "More comments..." : "Flere kommentarer..", - "{count} unread comments" : "{count} uleste kommentarer", - "You commented on %2$s" : "Du kommenterte til %2$s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/nds.js b/apps/comments/l10n/nds.js deleted file mode 100644 index 9fc7bc4cfe2..00000000000 --- a/apps/comments/l10n/nds.js +++ /dev/null @@ -1,6 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Abbrechen" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/nds.json b/apps/comments/l10n/nds.json deleted file mode 100644 index 8c981f87994..00000000000 --- a/apps/comments/l10n/nds.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "translations": { - "Cancel" : "Abbrechen" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/nl.js b/apps/comments/l10n/nl.js index c27033507a2..cb42f547b7c 100644 --- a/apps/comments/l10n/nl.js +++ b/apps/comments/l10n/nl.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Reacties", - "New comment …" : "Nieuwe reactie ...", - "Delete comment" : "Verwijder reactie", - "Post" : "Reageer", - "Cancel" : "Annuleren", - "Edit comment" : "Bewerk reactie", - "[Deleted user]" : "[Verwijderde gebruiker]", - "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!", - "More comments …" : "Meer reacties ...", - "Save" : "Opslaan", - "Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens", - "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}", - "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}", - "Error occurred while posting comment" : "Er trad een fout op bij plaatsen reactie", - "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"], - "Comment" : "Reactie", "You commented" : "Je reageerde", - "%1$s commented" : "%1$s heeft gereageerd", "{author} commented" : "{author} reageerde", "You commented on %1$s" : "Je reageerde op %1$s", "You commented on {file}" : "Je reageerde op {file}", "%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s", "{author} commented on {file}" : "{author} reageerde op {file}", "<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Je werd op “%s”, in een reactie vermeld door een sindsdien verwijderde gebruiker", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vermeldde jou in een reactie op “%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\"", - "Unknown user" : "Onbekende gebruiker", - "A (now) deleted user mentioned you in a comment on “%s”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"{file}\"" + "Files" : "Bestanden", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd", + "{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"", + "Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen", + "Edit comment" : "Reactie bewerken", + "Delete comment" : "Reactie verwijderen", + "Cancel edit" : "Bewerking annuleren", + "New comment" : "Nieuwe reactie", + "Write a comment …" : "Schrijf een reactie…", + "Post comment" : "Reactie plaatsen", + "@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker", + "Could not reload comments" : "Kon reactie niet opnieuw laden", + "Failed to mark comments as read" : "Kon reacties niet als gelezen markeren", + "Unable to load the comments list" : "Kan reactielijst niet laden", + "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!", + "No more messages" : "Geen berichten meer", + "Retry" : "Opnieuw proberen", + "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"], + "Comment" : "Reactie", + "An error occurred while trying to edit the comment" : "Er is een fout opgetreden bij het bewerken van de reactie", + "Comment deleted" : "Reactie verwijderd", + "An error occurred while trying to delete the comment" : "Er is een fout opgetreden bij het verwijderen van de reactie", + "An error occurred while trying to create the comment" : "Er is een fout opgetreden bij het aanmaken van de reactie" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/nl.json b/apps/comments/l10n/nl.json index bde62425a10..6d660138be1 100644 --- a/apps/comments/l10n/nl.json +++ b/apps/comments/l10n/nl.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Reacties", - "New comment …" : "Nieuwe reactie ...", - "Delete comment" : "Verwijder reactie", - "Post" : "Reageer", - "Cancel" : "Annuleren", - "Edit comment" : "Bewerk reactie", - "[Deleted user]" : "[Verwijderde gebruiker]", - "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!", - "More comments …" : "Meer reacties ...", - "Save" : "Opslaan", - "Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens", - "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}", - "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}", - "Error occurred while posting comment" : "Er trad een fout op bij plaatsen reactie", - "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"], - "Comment" : "Reactie", "You commented" : "Je reageerde", - "%1$s commented" : "%1$s heeft gereageerd", "{author} commented" : "{author} reageerde", "You commented on %1$s" : "Je reageerde op %1$s", "You commented on {file}" : "Je reageerde op {file}", "%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s", "{author} commented on {file}" : "{author} reageerde op {file}", "<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Je werd op “%s”, in een reactie vermeld door een sindsdien verwijderde gebruiker", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vermeldde jou in een reactie op “%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\"", - "Unknown user" : "Onbekende gebruiker", - "A (now) deleted user mentioned you in a comment on “%s”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"{file}\"" + "Files" : "Bestanden", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd", + "{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"", + "Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen", + "Edit comment" : "Reactie bewerken", + "Delete comment" : "Reactie verwijderen", + "Cancel edit" : "Bewerking annuleren", + "New comment" : "Nieuwe reactie", + "Write a comment …" : "Schrijf een reactie…", + "Post comment" : "Reactie plaatsen", + "@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker", + "Could not reload comments" : "Kon reactie niet opnieuw laden", + "Failed to mark comments as read" : "Kon reacties niet als gelezen markeren", + "Unable to load the comments list" : "Kan reactielijst niet laden", + "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!", + "No more messages" : "Geen berichten meer", + "Retry" : "Opnieuw proberen", + "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"], + "Comment" : "Reactie", + "An error occurred while trying to edit the comment" : "Er is een fout opgetreden bij het bewerken van de reactie", + "Comment deleted" : "Reactie verwijderd", + "An error occurred while trying to delete the comment" : "Er is een fout opgetreden bij het verwijderen van de reactie", + "An error occurred while trying to create the comment" : "Er is een fout opgetreden bij het aanmaken van de reactie" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/nn_NO.js b/apps/comments/l10n/nn_NO.js deleted file mode 100644 index ce79cf242bc..00000000000 --- a/apps/comments/l10n/nn_NO.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Avbryt", - "Save" : "Lagra" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/nn_NO.json b/apps/comments/l10n/nn_NO.json deleted file mode 100644 index 51f3ed49364..00000000000 --- a/apps/comments/l10n/nn_NO.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Avbryt", - "Save" : "Lagra" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/oc.js b/apps/comments/l10n/oc.js index 94b99dfa366..cee38c3d2ec 100644 --- a/apps/comments/l10n/oc.js +++ b/apps/comments/l10n/oc.js @@ -1,23 +1,28 @@ OC.L10N.register( "comments", { - "Type in a new comment..." : "Escriure un comentari novèl...", - "Delete comment" : "Suprimir lo comentari", - "Post" : "Mandar", - "Cancel" : "Anullar", - "Edit comment" : "Modificar lo comentari", - "[Deleted user]" : "[Utilizaire suprimit]", "Comments" : "Comentaris", - "No other comments available" : "Pas cap d'autre comentari", - "More comments..." : "Mai de comentaris...", - "Save" : "Enregistrar", - "Allowed characters {count} of {max}" : "{count} sus {max} caractèrs autorizats", - "{count} unread comments" : "{count} comentaris pas legits", - "Comment" : "Comentar", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> pels fichièrs <em>(totjorn listats dins lo flux)</em>", "You commented" : "Avètz comentat", - "%1$s commented" : "%1$s a comentat", - "You commented on %2$s" : "Avètz comentat %2$s", - "%1$s commented on %2$s" : "%1$s a comentat %2$s" + "{author} commented" : "{author} a comentat", + "You commented on %1$s" : "Comentèretz %1$s", + "You commented on {file}" : "Comentèretz {file}", + "%1$s commented on %2$s" : "%1$s comentèt %2$s", + "{author} commented on {file}" : "{author} comentèt {file}", + "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> de fichièrs", + "Files app plugin to add comments to files" : "Extension d’aplication Fichièrs per apondre de comentaris als fichièrs", + "Edit comment" : "Modificar lo comentari", + "Delete comment" : "Suprimir lo comentari", + "Cancel edit" : "Anullar la modificacion", + "Post comment" : "Publicar lo comentari", + "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris", + "No comments yet, start the conversation!" : "Cap de comentari pel moment, començat la conversacion !", + "No more messages" : "Pas mai de messatge", + "Retry" : "Tornar ensajar", + "_1 new comment_::_{unread} new comments_" : ["1 comentari novèl","{unread} comentaris novèls"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Error en ensajant de modificar lo comentari", + "Comment deleted" : "Comentari suprimit", + "An error occurred while trying to delete the comment" : "Error en ensajant de suprimir lo comentari", + "An error occurred while trying to create the comment" : "Error en ensajant de crear lo comentari" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/oc.json b/apps/comments/l10n/oc.json index 229d863ffc1..5d4636fb27e 100644 --- a/apps/comments/l10n/oc.json +++ b/apps/comments/l10n/oc.json @@ -1,21 +1,26 @@ { "translations": { - "Type in a new comment..." : "Escriure un comentari novèl...", - "Delete comment" : "Suprimir lo comentari", - "Post" : "Mandar", - "Cancel" : "Anullar", - "Edit comment" : "Modificar lo comentari", - "[Deleted user]" : "[Utilizaire suprimit]", "Comments" : "Comentaris", - "No other comments available" : "Pas cap d'autre comentari", - "More comments..." : "Mai de comentaris...", - "Save" : "Enregistrar", - "Allowed characters {count} of {max}" : "{count} sus {max} caractèrs autorizats", - "{count} unread comments" : "{count} comentaris pas legits", - "Comment" : "Comentar", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> pels fichièrs <em>(totjorn listats dins lo flux)</em>", "You commented" : "Avètz comentat", - "%1$s commented" : "%1$s a comentat", - "You commented on %2$s" : "Avètz comentat %2$s", - "%1$s commented on %2$s" : "%1$s a comentat %2$s" + "{author} commented" : "{author} a comentat", + "You commented on %1$s" : "Comentèretz %1$s", + "You commented on {file}" : "Comentèretz {file}", + "%1$s commented on %2$s" : "%1$s comentèt %2$s", + "{author} commented on {file}" : "{author} comentèt {file}", + "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> de fichièrs", + "Files app plugin to add comments to files" : "Extension d’aplication Fichièrs per apondre de comentaris als fichièrs", + "Edit comment" : "Modificar lo comentari", + "Delete comment" : "Suprimir lo comentari", + "Cancel edit" : "Anullar la modificacion", + "Post comment" : "Publicar lo comentari", + "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris", + "No comments yet, start the conversation!" : "Cap de comentari pel moment, començat la conversacion !", + "No more messages" : "Pas mai de messatge", + "Retry" : "Tornar ensajar", + "_1 new comment_::_{unread} new comments_" : ["1 comentari novèl","{unread} comentaris novèls"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Error en ensajant de modificar lo comentari", + "Comment deleted" : "Comentari suprimit", + "An error occurred while trying to delete the comment" : "Error en ensajant de suprimir lo comentari", + "An error occurred while trying to create the comment" : "Error en ensajant de crear lo comentari" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/pa.js b/apps/comments/l10n/pa.js deleted file mode 100644 index 98e2affcd12..00000000000 --- a/apps/comments/l10n/pa.js +++ /dev/null @@ -1,6 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "ਰੱਦ ਕਰੋ" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/pa.json b/apps/comments/l10n/pa.json deleted file mode 100644 index 2472134c5f2..00000000000 --- a/apps/comments/l10n/pa.json +++ /dev/null @@ -1,4 +0,0 @@ -{ "translations": { - "Cancel" : "ਰੱਦ ਕਰੋ" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js index 813b90ef042..918cfffa852 100644 --- a/apps/comments/l10n/pl.js +++ b/apps/comments/l10n/pl.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Komentarze", - "New comment …" : "Nowy komentarz...", - "Delete comment" : "Skasuj komentarz", - "Post" : "Zapisz", - "Cancel" : "Anuluj", + "You commented" : "Skomentowałeś", + "{author} commented" : "{author} skomentował", + "You commented on %1$s" : "Skomentowałeś w %1$s", + "You commented on {file}" : "Skomentowałeś w {file}", + "%1$s commented on %2$s" : "%1$s skomentował %2$s", + "{author} commented on {file}" : "{author} skomentował w {file}", + "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", + "Files" : "Pliki", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Wspomniano o Tobie w „{file}” w komentarzu konta, które zostało już usunięte", + "{user} mentioned you in a comment on \"{file}\"" : "{user} wspomniał o Tobie w komentarzu do “{file}”", + "Files app plugin to add comments to files" : "Plugin umożliwiający dodawanie komentarzy w aplikacji Pliki", "Edit comment" : "Edytuj komentarz", - "[Deleted user]" : "[Usunięty użytkownik]", - "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!", - "More comments …" : "Więcej komentarzy ...", - "Save" : "Zapisz", - "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.", - "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.", - "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd", - "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"], + "Delete comment" : "Usuń komentarz", + "Cancel edit" : "Anuluj edycję", + "New comment" : "Nowy komentarz", + "Write a comment …" : "Napisz komentarz…", + "Post comment" : "Wyślij komentarz", + "@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania", + "Could not reload comments" : "Nie można ponownie wczytać komentarzy", + "Failed to mark comments as read" : "Nie udało się oznaczyć komentarzy jako przeczytane", + "Unable to load the comments list" : "Nie można załadować listy komentarzy", + "No comments yet, start the conversation!" : "Brak komentarzy, rozpocznij rozmowę!", + "No more messages" : "Nie ma więcej wiadomości", + "Retry" : "Powtórz", + "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"], "Comment" : "Komentarz", - "You commented" : "Skomentowałeś/-aś", - "%1$s commented" : "%1$s skomentował/-a", - "{author} commented" : "{author} skomentował/-a", - "You commented on %1$s" : "Skomentowałeś/-aś w %1$s", - "You commented on {file}" : "Skomentowałeś/-aś w {file}", - "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s", - "{author} commented on {file}" : "{author} skomentował/-a w {file}", - "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"%s\" przez użytkownika, który został usunięty", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"{file}\" w komentarzach przez użytkownika, który został usunięty", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”", - "Unknown user" : "Nieznany użytkownik", - "A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”" + "An error occurred while trying to edit the comment" : "Wystąpił błąd podczas próby edycji komentarza", + "Comment deleted" : "Komentarz usunięty", + "An error occurred while trying to delete the comment" : "Wystąpił błąd podczas próby usunięcia komentarza", + "An error occurred while trying to create the comment" : "Wystąpił błąd podczas próby utworzenia komentarza" }, "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/comments/l10n/pl.json b/apps/comments/l10n/pl.json index 00694693059..a541f40224a 100644 --- a/apps/comments/l10n/pl.json +++ b/apps/comments/l10n/pl.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Komentarze", - "New comment …" : "Nowy komentarz...", - "Delete comment" : "Skasuj komentarz", - "Post" : "Zapisz", - "Cancel" : "Anuluj", + "You commented" : "Skomentowałeś", + "{author} commented" : "{author} skomentował", + "You commented on %1$s" : "Skomentowałeś w %1$s", + "You commented on {file}" : "Skomentowałeś w {file}", + "%1$s commented on %2$s" : "%1$s skomentował %2$s", + "{author} commented on {file}" : "{author} skomentował w {file}", + "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", + "Files" : "Pliki", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Wspomniano o Tobie w „{file}” w komentarzu konta, które zostało już usunięte", + "{user} mentioned you in a comment on \"{file}\"" : "{user} wspomniał o Tobie w komentarzu do “{file}”", + "Files app plugin to add comments to files" : "Plugin umożliwiający dodawanie komentarzy w aplikacji Pliki", "Edit comment" : "Edytuj komentarz", - "[Deleted user]" : "[Usunięty użytkownik]", - "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!", - "More comments …" : "Więcej komentarzy ...", - "Save" : "Zapisz", - "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.", - "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.", - "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd", - "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"], + "Delete comment" : "Usuń komentarz", + "Cancel edit" : "Anuluj edycję", + "New comment" : "Nowy komentarz", + "Write a comment …" : "Napisz komentarz…", + "Post comment" : "Wyślij komentarz", + "@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania", + "Could not reload comments" : "Nie można ponownie wczytać komentarzy", + "Failed to mark comments as read" : "Nie udało się oznaczyć komentarzy jako przeczytane", + "Unable to load the comments list" : "Nie można załadować listy komentarzy", + "No comments yet, start the conversation!" : "Brak komentarzy, rozpocznij rozmowę!", + "No more messages" : "Nie ma więcej wiadomości", + "Retry" : "Powtórz", + "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"], "Comment" : "Komentarz", - "You commented" : "Skomentowałeś/-aś", - "%1$s commented" : "%1$s skomentował/-a", - "{author} commented" : "{author} skomentował/-a", - "You commented on %1$s" : "Skomentowałeś/-aś w %1$s", - "You commented on {file}" : "Skomentowałeś/-aś w {file}", - "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s", - "{author} commented on {file}" : "{author} skomentował/-a w {file}", - "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"%s\" przez użytkownika, który został usunięty", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"{file}\" w komentarzach przez użytkownika, który został usunięty", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”", - "Unknown user" : "Nieznany użytkownik", - "A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”" + "An error occurred while trying to edit the comment" : "Wystąpił błąd podczas próby edycji komentarza", + "Comment deleted" : "Komentarz usunięty", + "An error occurred while trying to delete the comment" : "Wystąpił błąd podczas próby usunięcia komentarza", + "An error occurred while trying to create the comment" : "Wystąpił błąd podczas próby utworzenia komentarza" },"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/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js index 54ba334ef63..035edefd0bc 100644 --- a/apps/comments/l10n/pt_BR.js +++ b/apps/comments/l10n/pt_BR.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentários", - "New comment …" : "Novo comentário", - "Delete comment" : "Excluir comentário", - "Post" : "Postar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentário", - "[Deleted user]" : "[Usuário excluído]", - "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!", - "More comments …" : "Mais comentários...", - "Save" : "Salvar", - "Allowed characters {count} of {max}" : "{count} de {max} caracteres permitidos", - "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro durante a recuperação do comentário com id {id}", - "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com id {id}", - "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário", - "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos"], - "Comment" : "Comentar", "You commented" : "Você comentou", - "%1$s commented" : "%1$s comentou", "{author} commented" : "{author} comentou", "You commented on %1$s" : "Você comentou em %1$s", "You commented on {file}" : "Você comentou sobre {file}", "%1$s commented on %2$s" : "%1$s comentaram em %2$s", "{author} commented on {file}" : "{author} comentou em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"\", “%s”, em um comentário por um usuário que já foi excluído", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário por um usuário que já foi excluído", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”", - "Unknown user" : "Usuário desconhecido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído (agora) mencionou você em um comentário sobre “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário (now) recém excluído mencionou você em um comentário sobre “{file}”" + "Files" : "Arquivos", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"", + "Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários", + "Edit comment" : "Editar comentário", + "Delete comment" : "Excluir comentário", + "Cancel edit" : "Cancelar edição", + "New comment" : "Novo comentário", + "Write a comment …" : "Escreva um comentário …", + "Post comment" : "Postar comentário", + "@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente", + "Could not reload comments" : "Não foi possível recarregar comentários", + "Failed to mark comments as read" : "Falha ao marcar comentários como lidos", + "Unable to load the comments list" : "Não foi possível carregar a lista de comentários", + "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!", + "No more messages" : "Sem mais mensagens", + "Retry" : "Tentar novamente", + "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Ocorreu um erro ao tentar editar o comentário", + "Comment deleted" : "Comentário excluído", + "An error occurred while trying to delete the comment" : "Ocorreu um erro ao tentar excluir o comentário", + "An error occurred while trying to create the comment" : "Ocorreu um erro ao tentar criar o comentário" }, -"nplurals=2; plural=(n > 1);"); +"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json index 4218a60661a..c1cb3d4c814 100644 --- a/apps/comments/l10n/pt_BR.json +++ b/apps/comments/l10n/pt_BR.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Comentários", - "New comment …" : "Novo comentário", - "Delete comment" : "Excluir comentário", - "Post" : "Postar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentário", - "[Deleted user]" : "[Usuário excluído]", - "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!", - "More comments …" : "Mais comentários...", - "Save" : "Salvar", - "Allowed characters {count} of {max}" : "{count} de {max} caracteres permitidos", - "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro durante a recuperação do comentário com id {id}", - "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com id {id}", - "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário", - "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos"], - "Comment" : "Comentar", "You commented" : "Você comentou", - "%1$s commented" : "%1$s comentou", "{author} commented" : "{author} comentou", "You commented on %1$s" : "Você comentou em %1$s", "You commented on {file}" : "Você comentou sobre {file}", "%1$s commented on %2$s" : "%1$s comentaram em %2$s", "{author} commented on {file}" : "{author} comentou em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"\", “%s”, em um comentário por um usuário que já foi excluído", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário por um usuário que já foi excluído", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”", - "Unknown user" : "Usuário desconhecido", - "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído (agora) mencionou você em um comentário sobre “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário (now) recém excluído mencionou você em um comentário sobre “{file}”" -},"pluralForm" :"nplurals=2; plural=(n > 1);" + "Files" : "Arquivos", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída", + "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"", + "Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários", + "Edit comment" : "Editar comentário", + "Delete comment" : "Excluir comentário", + "Cancel edit" : "Cancelar edição", + "New comment" : "Novo comentário", + "Write a comment …" : "Escreva um comentário …", + "Post comment" : "Postar comentário", + "@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente", + "Could not reload comments" : "Não foi possível recarregar comentários", + "Failed to mark comments as read" : "Falha ao marcar comentários como lidos", + "Unable to load the comments list" : "Não foi possível carregar a lista de comentários", + "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!", + "No more messages" : "Sem mais mensagens", + "Retry" : "Tentar novamente", + "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], + "Comment" : "Comentar", + "An error occurred while trying to edit the comment" : "Ocorreu um erro ao tentar editar o comentário", + "Comment deleted" : "Comentário excluído", + "An error occurred while trying to delete the comment" : "Ocorreu um erro ao tentar excluir o comentário", + "An error occurred while trying to create the comment" : "Ocorreu um erro ao tentar criar o comentário" +},"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/comments/l10n/pt_PT.js b/apps/comments/l10n/pt_PT.js index bc1a4cef17d..e3b5e0f070a 100644 --- a/apps/comments/l10n/pt_PT.js +++ b/apps/comments/l10n/pt_PT.js @@ -1,25 +1,27 @@ OC.L10N.register( "comments", { - "Delete comment" : "Eliminar comentário", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentário", - "[Deleted user]" : "[Utilizador eliminado]", "Comments" : "Comentários", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes", - "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}", - "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}", - "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário", - "Comment" : "Comentário", "You commented" : "Comentou", - "%1$s commented" : "%1$s comentou", - "You commented on %2$s" : "Comentou %2$s", - "%1$s commented on %2$s" : "%1$s comentou %2$s", - "Type in a new comment..." : "Escreva um novo comentário...", - "No other comments available" : "Nenhum outro comentário disponível", - "More comments..." : "Mais comentários...", - "{count} unread comments" : "{count} comentários não lidos" + "{author} commented" : "{author} comentou", + "You commented on %1$s" : "Você comentou em %1$s", + "You commented on {file}" : "Você comentou em {file}", + "%1$s commented on %2$s" : "%1$s comentou em %2$s", + "{author} commented on {file}" : "{author} comentou em {file}", + "<strong>Comments</strong> for files" : "<strong>Comentários</strong> aos ficheiros", + "Files" : "Ficheiros", + "Files app plugin to add comments to files" : "Plug-in da aplicação de ficheiros para adicionar comentários aos ficheiros", + "Edit comment" : "Editar comentário", + "Delete comment" : "Eliminar comentário", + "Cancel edit" : "Cancelar edição", + "New comment" : "Novo comentário", + "Write a comment …" : "Escreva um comentário...", + "Post comment" : "Publicar comentário", + "No comments yet, start the conversation!" : "Ainda sem comentários, inicie uma conversação!", + "No more messages" : "Sem mais mensagens", + "Retry" : "Repetir", + "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], + "Comment" : "Comentário", + "Comment deleted" : "Comentário eliminado" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/pt_PT.json b/apps/comments/l10n/pt_PT.json index 7370bfc43b7..5f681b1ae42 100644 --- a/apps/comments/l10n/pt_PT.json +++ b/apps/comments/l10n/pt_PT.json @@ -1,23 +1,25 @@ { "translations": { - "Delete comment" : "Eliminar comentário", - "Post" : "Publicar", - "Cancel" : "Cancelar", - "Edit comment" : "Editar comentário", - "[Deleted user]" : "[Utilizador eliminado]", "Comments" : "Comentários", - "Save" : "Guardar", - "Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes", - "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}", - "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}", - "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário", - "Comment" : "Comentário", "You commented" : "Comentou", - "%1$s commented" : "%1$s comentou", - "You commented on %2$s" : "Comentou %2$s", - "%1$s commented on %2$s" : "%1$s comentou %2$s", - "Type in a new comment..." : "Escreva um novo comentário...", - "No other comments available" : "Nenhum outro comentário disponível", - "More comments..." : "Mais comentários...", - "{count} unread comments" : "{count} comentários não lidos" -},"pluralForm" :"nplurals=2; plural=(n != 1);" + "{author} commented" : "{author} comentou", + "You commented on %1$s" : "Você comentou em %1$s", + "You commented on {file}" : "Você comentou em {file}", + "%1$s commented on %2$s" : "%1$s comentou em %2$s", + "{author} commented on {file}" : "{author} comentou em {file}", + "<strong>Comments</strong> for files" : "<strong>Comentários</strong> aos ficheiros", + "Files" : "Ficheiros", + "Files app plugin to add comments to files" : "Plug-in da aplicação de ficheiros para adicionar comentários aos ficheiros", + "Edit comment" : "Editar comentário", + "Delete comment" : "Eliminar comentário", + "Cancel edit" : "Cancelar edição", + "New comment" : "Novo comentário", + "Write a comment …" : "Escreva um comentário...", + "Post comment" : "Publicar comentário", + "No comments yet, start the conversation!" : "Ainda sem comentários, inicie uma conversação!", + "No more messages" : "Sem mais mensagens", + "Retry" : "Repetir", + "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], + "Comment" : "Comentário", + "Comment deleted" : "Comentário eliminado" +},"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/comments/l10n/ro.js b/apps/comments/l10n/ro.js index 7b34fee8721..d9ee2da0dcc 100644 --- a/apps/comments/l10n/ro.js +++ b/apps/comments/l10n/ro.js @@ -2,33 +2,31 @@ OC.L10N.register( "comments", { "Comments" : "Comentarii", - "New comment …" : "Comentariu nou...", - "Delete comment" : "Șterge comentariul", - "Post" : "Postează", - "Cancel" : "Anulează", - "Edit comment" : "Editează comentariul", - "[Deleted user]" : "[Utilizator șters]", - "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", - "More comments …" : "Mai multe comentarii...", - "Save" : "Salvează", - "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}", - "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}", - "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}", - "Error occurred while posting comment" : "Eroare la postarea comentariului", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], - "Comment" : "Comentariu", "You commented" : "Ai comentat", - "%1$s commented" : "%1$s a comentat", "{author} commented" : " {author} a comentat", "You commented on %1$s" : "Ai comentat la %1$s", "You commented on {file}" : "Ai comentat la {file}", "%1$s commented on %2$s" : "%1$s a comentat la %2$s", "{author} commented on {file}" : " {author} a comentat la {file}", "<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”", - "Unknown user" : "Utilizator necunoscut", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”" + "{user} mentioned you in a comment on \"{file}\"" : "{user} te-a menționat într-un comentariu la fișierul \"{file}\"", + "Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii", + "Edit comment" : "Editează comentariul", + "Delete comment" : "Șterge comentariul", + "Cancel edit" : "Anulați editarea", + "Post comment" : "Postează comentariu", + "@ for mentions, : for emoji, / for smart picker" : "@ pentru mențiuni, : pentru emoji, / pentru smart picker", + "Could not reload comments" : "Nu se pot reîncărca comentariile", + "Failed to mark comments as read" : "Eroare la marcarea comentariilor ca citite", + "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată", + "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", + "No more messages" : "Nu mai sunt mesaje", + "Retry" : "Reîncearcă", + "_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"], + "Comment" : "Comentariu", + "An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul", + "Comment deleted" : "Comentariul a fost șters", + "An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul", + "An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/comments/l10n/ro.json b/apps/comments/l10n/ro.json index 0216f3eeb8a..f8db4ddc882 100644 --- a/apps/comments/l10n/ro.json +++ b/apps/comments/l10n/ro.json @@ -1,32 +1,30 @@ { "translations": { "Comments" : "Comentarii", - "New comment …" : "Comentariu nou...", - "Delete comment" : "Șterge comentariul", - "Post" : "Postează", - "Cancel" : "Anulează", - "Edit comment" : "Editează comentariul", - "[Deleted user]" : "[Utilizator șters]", - "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", - "More comments …" : "Mai multe comentarii...", - "Save" : "Salvează", - "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}", - "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}", - "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}", - "Error occurred while posting comment" : "Eroare la postarea comentariului", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], - "Comment" : "Comentariu", "You commented" : "Ai comentat", - "%1$s commented" : "%1$s a comentat", "{author} commented" : " {author} a comentat", "You commented on %1$s" : "Ai comentat la %1$s", "You commented on {file}" : "Ai comentat la {file}", "%1$s commented on %2$s" : "%1$s a comentat la %2$s", "{author} commented on {file}" : " {author} a comentat la {file}", "<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”", - "Unknown user" : "Utilizator necunoscut", - "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”" + "{user} mentioned you in a comment on \"{file}\"" : "{user} te-a menționat într-un comentariu la fișierul \"{file}\"", + "Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii", + "Edit comment" : "Editează comentariul", + "Delete comment" : "Șterge comentariul", + "Cancel edit" : "Anulați editarea", + "Post comment" : "Postează comentariu", + "@ for mentions, : for emoji, / for smart picker" : "@ pentru mențiuni, : pentru emoji, / pentru smart picker", + "Could not reload comments" : "Nu se pot reîncărca comentariile", + "Failed to mark comments as read" : "Eroare la marcarea comentariilor ca citite", + "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată", + "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", + "No more messages" : "Nu mai sunt mesaje", + "Retry" : "Reîncearcă", + "_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"], + "Comment" : "Comentariu", + "An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul", + "Comment deleted" : "Comentariul a fost șters", + "An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul", + "An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul" },"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/comments/l10n/ru.js b/apps/comments/l10n/ru.js index 1766a658d60..c6dc089a1d4 100644 --- a/apps/comments/l10n/ru.js +++ b/apps/comments/l10n/ru.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Комментарии", - "New comment …" : "Новый комментарий...", - "Delete comment" : "Удалить комментарий", - "Post" : "Опубликовать", - "Cancel" : "Отмена", - "Edit comment" : "Редактировать комментарий", - "[Deleted user]" : "[Удалённый пользователь]", - "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!", - "More comments …" : "Ещё комментарии...", - "Save" : "Сохранить", - "Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}", - "Error occurred while retrieving comment with id {id}" : "При получении комментария с id {id} произошла ошибка", - "Error occurred while updating comment with id {id}" : "При обновлении комментария с id {id} произошла ошибка", - "Error occurred while posting comment" : "При сохранении комментария произошла ошибка", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"], - "Comment" : "Комментарий", "You commented" : "Вы прокомментировали", - "%1$s commented" : "%1$s прокомментировано", "{author} commented" : "{author} прокомментировал", "You commented on %1$s" : "Вы прокомментировали %1$s", - "You commented on {file}" : "Вы прокомментировали {file}", + "You commented on {file}" : "Вы прокомментировали «{file}»", "%1$s commented on %2$s" : "%1$s прокомментировано на %2$s", "{author} commented on {file}" : "{author} прокомментировал {file}", "<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «%s» пользователем, учётная запись которого была удалена", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «{file}» пользователем, учётная запись которого была удалена", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.", - "Unknown user" : "Неизвестный пользователь", - "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”." + "Files" : "Файлы", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вы были упомянуты в комментарии к «{file}» пользователем, учётная запись которого была удалена.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул(а) вас в комментарии к «{file}»", + "Files app plugin to add comments to files" : "Модуль приложения «Файлы», позволяющий комментировать файлы", + "Edit comment" : "Редактировать комментарий", + "Delete comment" : "Удалить комментарий", + "Cancel edit" : "Отменить правку", + "New comment" : "Новый комментарий", + "Write a comment …" : "Напишите комментарий…", + "Post comment" : "Опубликовать комментарий", + "@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора", + "Could not reload comments" : "Не удалось перезагрузить комментарии", + "Failed to mark comments as read" : "Не удалось пометить комментарии как прочитанные", + "Unable to load the comments list" : "Невозможно загрузить список комментариев", + "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!", + "No more messages" : "Сообщений нет", + "Retry" : "Повторить", + "_1 new comment_::_{unread} new comments_" : ["1 новый комментарий","{unread} новых комментариев","{unread} новых комментариев","{unread} новых комментариев"], + "Comment" : "Комментарий", + "An error occurred while trying to edit the comment" : "Попытка редактирования комментария завершилась ошибкой", + "Comment deleted" : "Комментарий удалён", + "An error occurred while trying to delete the comment" : "Попытка удаления комментария завершилась ошибкой", + "An error occurred while trying to create the comment" : "Попытка создания комментария завершилась ошибкой" }, "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/comments/l10n/ru.json b/apps/comments/l10n/ru.json index eecfec2017c..30a7ba82f37 100644 --- a/apps/comments/l10n/ru.json +++ b/apps/comments/l10n/ru.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Комментарии", - "New comment …" : "Новый комментарий...", - "Delete comment" : "Удалить комментарий", - "Post" : "Опубликовать", - "Cancel" : "Отмена", - "Edit comment" : "Редактировать комментарий", - "[Deleted user]" : "[Удалённый пользователь]", - "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!", - "More comments …" : "Ещё комментарии...", - "Save" : "Сохранить", - "Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}", - "Error occurred while retrieving comment with id {id}" : "При получении комментария с id {id} произошла ошибка", - "Error occurred while updating comment with id {id}" : "При обновлении комментария с id {id} произошла ошибка", - "Error occurred while posting comment" : "При сохранении комментария произошла ошибка", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"], - "Comment" : "Комментарий", "You commented" : "Вы прокомментировали", - "%1$s commented" : "%1$s прокомментировано", "{author} commented" : "{author} прокомментировал", "You commented on %1$s" : "Вы прокомментировали %1$s", - "You commented on {file}" : "Вы прокомментировали {file}", + "You commented on {file}" : "Вы прокомментировали «{file}»", "%1$s commented on %2$s" : "%1$s прокомментировано на %2$s", "{author} commented on {file}" : "{author} прокомментировал {file}", "<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «%s» пользователем, учётная запись которого была удалена", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «{file}» пользователем, учётная запись которого была удалена", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.", - "Unknown user" : "Неизвестный пользователь", - "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”." + "Files" : "Файлы", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вы были упомянуты в комментарии к «{file}» пользователем, учётная запись которого была удалена.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул(а) вас в комментарии к «{file}»", + "Files app plugin to add comments to files" : "Модуль приложения «Файлы», позволяющий комментировать файлы", + "Edit comment" : "Редактировать комментарий", + "Delete comment" : "Удалить комментарий", + "Cancel edit" : "Отменить правку", + "New comment" : "Новый комментарий", + "Write a comment …" : "Напишите комментарий…", + "Post comment" : "Опубликовать комментарий", + "@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора", + "Could not reload comments" : "Не удалось перезагрузить комментарии", + "Failed to mark comments as read" : "Не удалось пометить комментарии как прочитанные", + "Unable to load the comments list" : "Невозможно загрузить список комментариев", + "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!", + "No more messages" : "Сообщений нет", + "Retry" : "Повторить", + "_1 new comment_::_{unread} new comments_" : ["1 новый комментарий","{unread} новых комментариев","{unread} новых комментариев","{unread} новых комментариев"], + "Comment" : "Комментарий", + "An error occurred while trying to edit the comment" : "Попытка редактирования комментария завершилась ошибкой", + "Comment deleted" : "Комментарий удалён", + "An error occurred while trying to delete the comment" : "Попытка удаления комментария завершилась ошибкой", + "An error occurred while trying to create the comment" : "Попытка создания комментария завершилась ошибкой" },"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/comments/l10n/sc.js b/apps/comments/l10n/sc.js new file mode 100644 index 00000000000..1980bde60d4 --- /dev/null +++ b/apps/comments/l10n/sc.js @@ -0,0 +1,31 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Cummentos", + "You commented" : "As cummentadu", + "{author} commented" : "{author} at cummentadu", + "You commented on %1$s" : "As cummentadu in %1$s", + "You commented on {file}" : "As cummentadu {file}", + "%1$s commented on %2$s" : "%1$s at cummentadu %2$s", + "{author} commented on {file}" : "{author} at cummentadu {file}", + "<strong>Comments</strong> for files" : "<strong>Cummentos</strong> pro archìvios", + "Files" : "Archìvios", + "Files app plugin to add comments to files" : "Estensione de s'aplicatzione archìvios pro agiùnghere cummentos a archìvios", + "Edit comment" : "Modìfica cummentu", + "Delete comment" : "Cantzella cummentu", + "Cancel edit" : "Annulla modìfica", + "New comment" : "Cummentu nou", + "Post comment" : "Pùblica cummentu", + "@ for mentions, : for emoji, / for smart picker" : "@ pro mèntovos, : pro emojis, / pro su seletzionadore inteligente", + "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos", + "No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!", + "No more messages" : "Perunu àteru messàgiu", + "Retry" : "Torra a proare", + "_1 new comment_::_{unread} new comments_" : ["1 cummentu nou","{unread} cummentos noos"], + "Comment" : "Cummenta", + "An error occurred while trying to edit the comment" : "Ddoe at àpidu un'errore proende a modificare su cummentu", + "Comment deleted" : "Cummentu cantzelladu", + "An error occurred while trying to delete the comment" : "B'at àpidu un'errore proende a cantzellare su cummentu", + "An error occurred while trying to create the comment" : "B'at àpidu un'errore proende a creare su cummentu" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/sc.json b/apps/comments/l10n/sc.json new file mode 100644 index 00000000000..1c7987c118d --- /dev/null +++ b/apps/comments/l10n/sc.json @@ -0,0 +1,29 @@ +{ "translations": { + "Comments" : "Cummentos", + "You commented" : "As cummentadu", + "{author} commented" : "{author} at cummentadu", + "You commented on %1$s" : "As cummentadu in %1$s", + "You commented on {file}" : "As cummentadu {file}", + "%1$s commented on %2$s" : "%1$s at cummentadu %2$s", + "{author} commented on {file}" : "{author} at cummentadu {file}", + "<strong>Comments</strong> for files" : "<strong>Cummentos</strong> pro archìvios", + "Files" : "Archìvios", + "Files app plugin to add comments to files" : "Estensione de s'aplicatzione archìvios pro agiùnghere cummentos a archìvios", + "Edit comment" : "Modìfica cummentu", + "Delete comment" : "Cantzella cummentu", + "Cancel edit" : "Annulla modìfica", + "New comment" : "Cummentu nou", + "Post comment" : "Pùblica cummentu", + "@ for mentions, : for emoji, / for smart picker" : "@ pro mèntovos, : pro emojis, / pro su seletzionadore inteligente", + "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos", + "No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!", + "No more messages" : "Perunu àteru messàgiu", + "Retry" : "Torra a proare", + "_1 new comment_::_{unread} new comments_" : ["1 cummentu nou","{unread} cummentos noos"], + "Comment" : "Cummenta", + "An error occurred while trying to edit the comment" : "Ddoe at àpidu un'errore proende a modificare su cummentu", + "Comment deleted" : "Cummentu cantzelladu", + "An error occurred while trying to delete the comment" : "B'at àpidu un'errore proende a cantzellare su cummentu", + "An error occurred while trying to create the comment" : "B'at àpidu un'errore proende a creare su cummentu" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/comments/l10n/si_LK.js b/apps/comments/l10n/si_LK.js deleted file mode 100644 index 8f030041abe..00000000000 --- a/apps/comments/l10n/si_LK.js +++ /dev/null @@ -1,33 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "අදහස් දැක්වීම්", - "New comment …" : "අලුත් අදහස් දැක්වීමක් ...", - "Delete comment" : "අදහස් දැක්වීම මකන්න", - "Post" : "ලිපියක්", - "Cancel" : "එපා", - "Edit comment" : "අදහස වෙනස් කරන්න", - "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]", - "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !", - "More comments …" : "තවත් අදහස් ...", - "Save" : "සුරකින්න", - "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත", - "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත", - "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත", - "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත", - "Comment" : "අදහස", - "You commented" : "ඔයාගේ අදහස", - "%1$s commented" : "%1$s අදහස් දක්වා ඇත", - "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත", - "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත", - "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත", - "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත", - "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත", - "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත", - "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත", - "Unknown user" : "හදුනානොගත් සේවාදායකයා", - "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත", - "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/si_LK.json b/apps/comments/l10n/si_LK.json deleted file mode 100644 index 5a7331b6e9e..00000000000 --- a/apps/comments/l10n/si_LK.json +++ /dev/null @@ -1,31 +0,0 @@ -{ "translations": { - "Comments" : "අදහස් දැක්වීම්", - "New comment …" : "අලුත් අදහස් දැක්වීමක් ...", - "Delete comment" : "අදහස් දැක්වීම මකන්න", - "Post" : "ලිපියක්", - "Cancel" : "එපා", - "Edit comment" : "අදහස වෙනස් කරන්න", - "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]", - "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !", - "More comments …" : "තවත් අදහස් ...", - "Save" : "සුරකින්න", - "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත", - "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත", - "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත", - "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත", - "Comment" : "අදහස", - "You commented" : "ඔයාගේ අදහස", - "%1$s commented" : "%1$s අදහස් දක්වා ඇත", - "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත", - "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත", - "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත", - "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත", - "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත", - "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත", - "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත", - "Unknown user" : "හදුනානොගත් සේවාදායකයා", - "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත", - "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/sk.js b/apps/comments/l10n/sk.js index 66df1f73d7e..380b8c88fb5 100644 --- a/apps/comments/l10n/sk.js +++ b/apps/comments/l10n/sk.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Komentáre", - "New comment …" : "Nový komentár ...", - "Delete comment" : "Zmazať komentár", - "Post" : "Odoslať", - "Cancel" : "Zrušiť", - "Edit comment" : "Upraviť komentár", - "[Deleted user]" : "[Zmazaný užívateľ]", - "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", - "More comments …" : "Ďalšie komentáre ...", - "Save" : "Uložiť", - "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba", - "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", - "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], - "Comment" : "Komentár", "You commented" : "Komentovali ste", - "%1$s commented" : "%1$s komentoval", "{author} commented" : "{author} komentoval", "You commented on %1$s" : "Komentovali ste %1$s", "You commented on {file}" : "Komentovali ste {file}", "%1$s commented on %2$s" : "%1$s komentoval %2$s", "{author} commented on {file}" : "{author} komentoval {file}", "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás spomenul v komentári k \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} vás spomenul v komentári k “{file}”", - "Unknown user" : "Neznámy používateľ", - "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\"" + "Files" : "Súbory", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári užívateľom ktorý bol už vymazaný", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vás spomenul v komentári k “{file}”", + "Files app plugin to add comments to files" : "Zásuvný modul aplikácie súborov, ktorý umožňuje súborom pridávať komentáre", + "Edit comment" : "Upraviť komentár", + "Delete comment" : "Zmazať komentár", + "Cancel edit" : "Zrušiť upravovanie", + "New comment" : "Nový komentár", + "Write a comment …" : "Napísať komentár ...", + "Post comment" : "Odoslať komentár", + "@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber", + "Could not reload comments" : "Nepodarilo sa obnoviť komentáre", + "Failed to mark comments as read" : "Nepodarilo sa označiť komentáre ako prečítané.", + "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov", + "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", + "No more messages" : "Žiadne ďaĺšie správy", + "Retry" : "Skúsiť znova", + "_1 new comment_::_{unread} new comments_" : ["1 nový komentár","{unread} nové komentáre","{unread} nových komentárov","{unread} nových komentárov"], + "Comment" : "Komentár", + "An error occurred while trying to edit the comment" : "Vyskytla sa chyba pri editovaní komentára", + "Comment deleted" : "Komentár bol odstránený", + "An error occurred while trying to delete the comment" : "Vyskytla sa chyba pri mazaní komentára", + "An error occurred while trying to create the comment" : "Vyskytla sa chyba pri vytváraní komentára" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"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/comments/l10n/sk.json b/apps/comments/l10n/sk.json index 56f2d70fc37..e617085d50a 100644 --- a/apps/comments/l10n/sk.json +++ b/apps/comments/l10n/sk.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Komentáre", - "New comment …" : "Nový komentár ...", - "Delete comment" : "Zmazať komentár", - "Post" : "Odoslať", - "Cancel" : "Zrušiť", - "Edit comment" : "Upraviť komentár", - "[Deleted user]" : "[Zmazaný užívateľ]", - "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", - "More comments …" : "Ďalšie komentáre ...", - "Save" : "Uložiť", - "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba", - "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", - "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], - "Comment" : "Komentár", "You commented" : "Komentovali ste", - "%1$s commented" : "%1$s komentoval", "{author} commented" : "{author} komentoval", "You commented on %1$s" : "Komentovali ste %1$s", "You commented on {file}" : "Komentovali ste {file}", "%1$s commented on %2$s" : "%1$s komentoval %2$s", "{author} commented on {file}" : "{author} komentoval {file}", "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás spomenul v komentári k \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} vás spomenul v komentári k “{file}”", - "Unknown user" : "Neznámy používateľ", - "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" + "Files" : "Súbory", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári užívateľom ktorý bol už vymazaný", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vás spomenul v komentári k “{file}”", + "Files app plugin to add comments to files" : "Zásuvný modul aplikácie súborov, ktorý umožňuje súborom pridávať komentáre", + "Edit comment" : "Upraviť komentár", + "Delete comment" : "Zmazať komentár", + "Cancel edit" : "Zrušiť upravovanie", + "New comment" : "Nový komentár", + "Write a comment …" : "Napísať komentár ...", + "Post comment" : "Odoslať komentár", + "@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber", + "Could not reload comments" : "Nepodarilo sa obnoviť komentáre", + "Failed to mark comments as read" : "Nepodarilo sa označiť komentáre ako prečítané.", + "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov", + "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", + "No more messages" : "Žiadne ďaĺšie správy", + "Retry" : "Skúsiť znova", + "_1 new comment_::_{unread} new comments_" : ["1 nový komentár","{unread} nové komentáre","{unread} nových komentárov","{unread} nových komentárov"], + "Comment" : "Komentár", + "An error occurred while trying to edit the comment" : "Vyskytla sa chyba pri editovaní komentára", + "Comment deleted" : "Komentár bol odstránený", + "An error occurred while trying to delete the comment" : "Vyskytla sa chyba pri mazaní komentára", + "An error occurred while trying to create the comment" : "Vyskytla sa chyba pri vytváraní komentára" +},"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/comments/l10n/sk_SK.js b/apps/comments/l10n/sk_SK.js deleted file mode 100644 index ed68f8f11ed..00000000000 --- a/apps/comments/l10n/sk_SK.js +++ /dev/null @@ -1,34 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komentáre", - "Unknown user" : "Neznámy používateľ", - "New comment …" : "Nový komentár ...", - "Delete comment" : "Zmazať komentár", - "Post" : "Odoslať", - "Cancel" : "Zrušiť", - "Edit comment" : "Upraviť komentár", - "[Deleted user]" : "[Zmazaný užívateľ]", - "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", - "More comments …" : "Ďalšie komentáre ...", - "Save" : "Uložiť", - "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba", - "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", - "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], - "Comment" : "Komentár", - "You commented" : "Komentovali ste", - "%1$s commented" : "%1$s komentoval", - "{author} commented" : "{author} komentoval", - "You commented on %1$s" : "Komentovali ste %1$s", - "You commented on {file}" : "Komentovali ste {file}", - "%1$s commented on %2$s" : "%1$s komentoval %2$s", - "{author} commented on {file}" : "{author} komentoval {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory", - "Type in a new comment..." : "Zadať nový komentár...", - "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné", - "More comments..." : "Ďalšie komentáre...", - "{count} unread comments" : "{count} neprečítaných komentárov" -}, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/comments/l10n/sk_SK.json b/apps/comments/l10n/sk_SK.json deleted file mode 100644 index f85f7dfb3e2..00000000000 --- a/apps/comments/l10n/sk_SK.json +++ /dev/null @@ -1,32 +0,0 @@ -{ "translations": { - "Comments" : "Komentáre", - "Unknown user" : "Neznámy používateľ", - "New comment …" : "Nový komentár ...", - "Delete comment" : "Zmazať komentár", - "Post" : "Odoslať", - "Cancel" : "Zrušiť", - "Edit comment" : "Upraviť komentár", - "[Deleted user]" : "[Zmazaný užívateľ]", - "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!", - "More comments …" : "Ďalšie komentáre ...", - "Save" : "Uložiť", - "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}", - "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba", - "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", - "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], - "Comment" : "Komentár", - "You commented" : "Komentovali ste", - "%1$s commented" : "%1$s komentoval", - "{author} commented" : "{author} komentoval", - "You commented on %1$s" : "Komentovali ste %1$s", - "You commented on {file}" : "Komentovali ste {file}", - "%1$s commented on %2$s" : "%1$s komentoval %2$s", - "{author} commented on {file}" : "{author} komentoval {file}", - "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory", - "Type in a new comment..." : "Zadať nový komentár...", - "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné", - "More comments..." : "Ďalšie komentáre...", - "{count} unread comments" : "{count} neprečítaných komentárov" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/sl.js b/apps/comments/l10n/sl.js index 8718a374b4d..5731163c19f 100644 --- a/apps/comments/l10n/sl.js +++ b/apps/comments/l10n/sl.js @@ -1,25 +1,36 @@ OC.L10N.register( "comments", { - "Delete comment" : "Izbriši opombo", - "Post" : "Objavi", - "Cancel" : "Prekliči", - "Edit comment" : "Uredi opombo", - "[Deleted user]" : "[Izbrisan uporabnik]", "Comments" : "Opombe", - "Save" : "Shrani", - "Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}", - "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}", - "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}", - "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja", + "You commented" : "Napišete opombo", + "{author} commented" : "{author} vpiše opombo", + "You commented on %1$s" : "Napišete opombo za %1$s", + "You commented on {file}" : "Napišete opombo na {file}", + "%1$s commented on %2$s" : "%1$s napiše opombo na %2$s", + "{author} commented on {file}" : "{author} napiše opombo na {file}", + "<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam", + "Files" : "Datoteke", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«", + "Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam", + "Edit comment" : "Uredi opombo", + "Delete comment" : "Izbriši opombo", + "Cancel edit" : "Prekliči urejanje", + "New comment" : "Nova opomba", + "Write a comment …" : "Dopišite opombo ...", + "Post comment" : "Objavi opombo", + "@ for mentions, : for emoji, / for smart picker" : "@ za omenjanje osebe, : za izris izraznih ikon, / za pametni izbirnik", + "Could not reload comments" : "Opomb ni mogoče posodobiti", + "Failed to mark comments as read" : "Označevanje opomb kot prebranih je spodletelo", + "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb", + "No comments yet, start the conversation!" : "Ni še odzivov, bodite prvi!", + "No more messages" : "Ni drugih sporočil", + "Retry" : "Poskusi znova", + "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"], "Comment" : "Opomba", - "You commented" : "Vaša opomba", - "%1$s commented" : "%1$s opomb", - "You commented on %2$s" : "Napisali ste opombo na %2$s", - "%1$s commented on %2$s" : "%1$s opomb ob %2$s", - "Type in a new comment..." : "Vpis nove opombe ...", - "No other comments available" : "Ni drugih opomb", - "More comments..." : "Več opomb ...", - "{count} unread comments" : "{count} neprebranih opomb" + "An error occurred while trying to edit the comment" : "Prišlo je do napake med poskusom urejanja opombe", + "Comment deleted" : "Opomba je izbrisana", + "An error occurred while trying to delete the comment" : "Prišlo je do napake med brisanjem opombe", + "An error occurred while trying to create the comment" : "Prišlo je do napake med ustvarjanjem opombe" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/comments/l10n/sl.json b/apps/comments/l10n/sl.json index 33bb84c99e1..0ee0fcad23f 100644 --- a/apps/comments/l10n/sl.json +++ b/apps/comments/l10n/sl.json @@ -1,23 +1,34 @@ { "translations": { - "Delete comment" : "Izbriši opombo", - "Post" : "Objavi", - "Cancel" : "Prekliči", - "Edit comment" : "Uredi opombo", - "[Deleted user]" : "[Izbrisan uporabnik]", "Comments" : "Opombe", - "Save" : "Shrani", - "Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}", - "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}", - "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}", - "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja", + "You commented" : "Napišete opombo", + "{author} commented" : "{author} vpiše opombo", + "You commented on %1$s" : "Napišete opombo za %1$s", + "You commented on {file}" : "Napišete opombo na {file}", + "%1$s commented on %2$s" : "%1$s napiše opombo na %2$s", + "{author} commented on {file}" : "{author} napiše opombo na {file}", + "<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam", + "Files" : "Datoteke", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.", + "{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«", + "Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam", + "Edit comment" : "Uredi opombo", + "Delete comment" : "Izbriši opombo", + "Cancel edit" : "Prekliči urejanje", + "New comment" : "Nova opomba", + "Write a comment …" : "Dopišite opombo ...", + "Post comment" : "Objavi opombo", + "@ for mentions, : for emoji, / for smart picker" : "@ za omenjanje osebe, : za izris izraznih ikon, / za pametni izbirnik", + "Could not reload comments" : "Opomb ni mogoče posodobiti", + "Failed to mark comments as read" : "Označevanje opomb kot prebranih je spodletelo", + "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb", + "No comments yet, start the conversation!" : "Ni še odzivov, bodite prvi!", + "No more messages" : "Ni drugih sporočil", + "Retry" : "Poskusi znova", + "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"], "Comment" : "Opomba", - "You commented" : "Vaša opomba", - "%1$s commented" : "%1$s opomb", - "You commented on %2$s" : "Napisali ste opombo na %2$s", - "%1$s commented on %2$s" : "%1$s opomb ob %2$s", - "Type in a new comment..." : "Vpis nove opombe ...", - "No other comments available" : "Ni drugih opomb", - "More comments..." : "Več opomb ...", - "{count} unread comments" : "{count} neprebranih opomb" + "An error occurred while trying to edit the comment" : "Prišlo je do napake med poskusom urejanja opombe", + "Comment deleted" : "Opomba je izbrisana", + "An error occurred while trying to delete the comment" : "Prišlo je do napake med brisanjem opombe", + "An error occurred while trying to create the comment" : "Prišlo je do napake med ustvarjanjem opombe" },"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/comments/l10n/sq.js b/apps/comments/l10n/sq.js deleted file mode 100644 index 200a8221f9d..00000000000 --- a/apps/comments/l10n/sq.js +++ /dev/null @@ -1,34 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komente", - "New comment …" : "Koment i ri ...", - "Delete comment" : "Fshije komentin", - "Post" : "Postoje", - "Cancel" : "Anuloje", - "Edit comment" : "Përpunoni komentin", - "[Deleted user]" : "[Përdorues i fshirë]", - "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!", - "More comments …" : "Më shumë komente ...", - "Save" : "Ruaje", - "Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}", - "Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}", - "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}", - "Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti", - "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "], - "Comment" : "Koment", - "You commented" : "Komentuat", - "%1$s commented" : "%1$s komentoi", - "{author} commented" : "{autori} u komentua", - "You commented on %1$s" : "Ju komentuat në %1$s", - "You commented on {file}" : "Ju komentuat në {file}", - "%1$s commented on %2$s" : "%1$s komentoi te %2$s", - "{author} commented on {file}" : "{author} komentoi në {file}", - "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”", - "Unknown user" : "Përdorues i panjohur", - "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/sq.json b/apps/comments/l10n/sq.json deleted file mode 100644 index 137cfef16de..00000000000 --- a/apps/comments/l10n/sq.json +++ /dev/null @@ -1,32 +0,0 @@ -{ "translations": { - "Comments" : "Komente", - "New comment …" : "Koment i ri ...", - "Delete comment" : "Fshije komentin", - "Post" : "Postoje", - "Cancel" : "Anuloje", - "Edit comment" : "Përpunoni komentin", - "[Deleted user]" : "[Përdorues i fshirë]", - "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!", - "More comments …" : "Më shumë komente ...", - "Save" : "Ruaje", - "Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}", - "Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}", - "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}", - "Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti", - "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "], - "Comment" : "Koment", - "You commented" : "Komentuat", - "%1$s commented" : "%1$s komentoi", - "{author} commented" : "{autori} u komentua", - "You commented on %1$s" : "Ju komentuat në %1$s", - "You commented on {file}" : "Ju komentuat në {file}", - "%1$s commented on %2$s" : "%1$s komentoi te %2$s", - "{author} commented on {file}" : "{author} komentoi në {file}", - "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”", - "Unknown user" : "Përdorues i panjohur", - "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/sr.js b/apps/comments/l10n/sr.js index d51b102897e..95c34a5368f 100644 --- a/apps/comments/l10n/sr.js +++ b/apps/comments/l10n/sr.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Коментари", - "New comment …" : "Нови коментар …", - "Delete comment" : "Обриши коментар", - "Post" : "Објави", - "Cancel" : "Откажи", - "Edit comment" : "Измени коментар", - "[Deleted user]" : "[Обрисан корисник]", - "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију", - "More comments …" : "Преостали коментари …", - "Save" : "Сачувај", - "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}", - "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}", - "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}", - "Error occurred while posting comment" : "Дошло је до грешке при објави коментара", - "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], - "Comment" : "Коментар", "You commented" : "Искоментарисали сте", - "%1$s commented" : "%1$s коментарисао", "{author} commented" : "{author} коментарисао", "You commented on %1$s" : "Коментарисали сте на %1$s", "You commented on {file}" : "Коментаристали сте на {file}", "%1$s commented on %2$s" : "%1$s коментарисао на %2$s", "{author} commented on {file}" : "{author} коментарисао на {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Поменути сте у \"%s\", у коментару који је оставио корисник који је од тада избрисан", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Поменути сте на фајлу \"{file}\", у коментару који је оставио корисник који је од тада избрисан", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”", - "Unknown user" : "Непознат корисник", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”" + "Files" : "Фајлови", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Поменути сте за „{file}”, у коментару налога који је касније обрисан", + "{user} mentioned you in a comment on \"{file}\"" : "{user} вас је поменуо у коментару за „{file}", + "Files app plugin to add comments to files" : "Додатак апликацији за фајлове да додајете коментаре на фајлове", + "Edit comment" : "Измени коментар", + "Delete comment" : "Обриши коментар", + "Cancel edit" : "Поништи измену", + "New comment" : "Нови коментар", + "Write a comment …" : "Напишите коментар…", + "Post comment" : "Објави коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач", + "Could not reload comments" : "Коментари не могу поново да се учитају", + "Failed to mark comments as read" : "Није успело означавање коментара као прочитаних", + "Unable to load the comments list" : "Не могуи да учитам списак коментара", + "No comments yet, start the conversation!" : "Још нема коментара. Започните дискусију!", + "No more messages" : "Нема више порука", + "Retry" : "Покушај поново", + "_1 new comment_::_{unread} new comments_" : ["1 нови коментар","{unread} нова коментара","{unread} нова коментара"], + "Comment" : "Коментар", + "An error occurred while trying to edit the comment" : "Грешка приликом покушаја мењања коментара", + "Comment deleted" : "Коментар обрисан", + "An error occurred while trying to delete the comment" : "Грешка приликом покушаја брисања коментара", + "An error occurred while trying to create the comment" : "Грешка приликом покушаја креирања коментара" }, "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/comments/l10n/sr.json b/apps/comments/l10n/sr.json index f92a2d1fabe..80120b1efd6 100644 --- a/apps/comments/l10n/sr.json +++ b/apps/comments/l10n/sr.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Коментари", - "New comment …" : "Нови коментар …", - "Delete comment" : "Обриши коментар", - "Post" : "Објави", - "Cancel" : "Откажи", - "Edit comment" : "Измени коментар", - "[Deleted user]" : "[Обрисан корисник]", - "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију", - "More comments …" : "Преостали коментари …", - "Save" : "Сачувај", - "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}", - "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}", - "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}", - "Error occurred while posting comment" : "Дошло је до грешке при објави коментара", - "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], - "Comment" : "Коментар", "You commented" : "Искоментарисали сте", - "%1$s commented" : "%1$s коментарисао", "{author} commented" : "{author} коментарисао", "You commented on %1$s" : "Коментарисали сте на %1$s", "You commented on {file}" : "Коментаристали сте на {file}", "%1$s commented on %2$s" : "%1$s коментарисао на %2$s", "{author} commented on {file}" : "{author} коментарисао на {file}", "<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Поменути сте у \"%s\", у коментару који је оставио корисник који је од тада избрисан", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Поменути сте на фајлу \"{file}\", у коментару који је оставио корисник који је од тада избрисан", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"", - "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”", - "Unknown user" : "Непознат корисник", - "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”" + "Files" : "Фајлови", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Поменути сте за „{file}”, у коментару налога који је касније обрисан", + "{user} mentioned you in a comment on \"{file}\"" : "{user} вас је поменуо у коментару за „{file}", + "Files app plugin to add comments to files" : "Додатак апликацији за фајлове да додајете коментаре на фајлове", + "Edit comment" : "Измени коментар", + "Delete comment" : "Обриши коментар", + "Cancel edit" : "Поништи измену", + "New comment" : "Нови коментар", + "Write a comment …" : "Напишите коментар…", + "Post comment" : "Објави коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач", + "Could not reload comments" : "Коментари не могу поново да се учитају", + "Failed to mark comments as read" : "Није успело означавање коментара као прочитаних", + "Unable to load the comments list" : "Не могуи да учитам списак коментара", + "No comments yet, start the conversation!" : "Још нема коментара. Започните дискусију!", + "No more messages" : "Нема више порука", + "Retry" : "Покушај поново", + "_1 new comment_::_{unread} new comments_" : ["1 нови коментар","{unread} нова коментара","{unread} нова коментара"], + "Comment" : "Коментар", + "An error occurred while trying to edit the comment" : "Грешка приликом покушаја мењања коментара", + "Comment deleted" : "Коментар обрисан", + "An error occurred while trying to delete the comment" : "Грешка приликом покушаја брисања коментара", + "An error occurred while trying to create the comment" : "Грешка приликом покушаја креирања коментара" },"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/comments/l10n/sr@latin.js b/apps/comments/l10n/sr@latin.js deleted file mode 100644 index c2185e95e92..00000000000 --- a/apps/comments/l10n/sr@latin.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "Odustani", - "Save" : "Sačuvaj" -}, -"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/comments/l10n/sr@latin.json b/apps/comments/l10n/sr@latin.json deleted file mode 100644 index f61bed4853a..00000000000 --- a/apps/comments/l10n/sr@latin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "Odustani", - "Save" : "Sačuvaj" -},"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/comments/l10n/sv.js b/apps/comments/l10n/sv.js index 94b78efb128..c96b8c94ee8 100644 --- a/apps/comments/l10n/sv.js +++ b/apps/comments/l10n/sv.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar ...", - "Delete comment" : "Radera kommentar", - "Post" : "Skicka", - "Cancel" : "Avbryt", - "Edit comment" : "Redigera kommentar", - "[Deleted user]" : "[Raderad användare]", - "No comments yet, start the conversation!" : "Inga kommentarer ännu.", - "More comments …" : "Fler kommentarer ...", - "Save" : "Spara", - "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"], - "Comment" : "Kommentar", "You commented" : "Du kommenterade", - "%1$s commented" : "%1$s kommenterade", "{author} commented" : "{author} kommenterade", "You commented on %1$s" : "Du kommenterade på %1$s", "You commented on {file}" : "Du kommenterade på {file}", "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "{author} commented on {file}" : "{author} kommenterade på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"", - "Unknown user" : "Okänd användare", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\"" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nämnde dig i kommentar för \"{file}\"", + "Files app plugin to add comments to files" : "Filer-appinsticksmodul för att lägga till kommentarer till filer", + "Edit comment" : "Redigera kommentar", + "Delete comment" : "Ta bort kommentar", + "Cancel edit" : "Avbryt redigering", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv en kommentar ...", + "Post comment" : "Publicera kommentar", + "@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker", + "Could not reload comments" : "Kunde inte ladda om kommentarer", + "Failed to mark comments as read" : "Kunde inte markera kommentarer som lästa", + "Unable to load the comments list" : "Kunde inte ladda kommentarlistan", + "No comments yet, start the conversation!" : "Inga kommentarer ännu.", + "No more messages" : "Inga fler meddelanden", + "Retry" : "Försök igen", + "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nya kommentarer"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Ett fel uppstod vid redigering av kommentaren", + "Comment deleted" : "Kommentar borttagen", + "An error occurred while trying to delete the comment" : "Ett fel uppstod vid borttagning av kommentaren", + "An error occurred while trying to create the comment" : "Ett fel uppstod vid skapande av kommentaren" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/sv.json b/apps/comments/l10n/sv.json index ae50ff98d29..90d10190185 100644 --- a/apps/comments/l10n/sv.json +++ b/apps/comments/l10n/sv.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "Kommentarer", - "New comment …" : "Ny kommentar ...", - "Delete comment" : "Radera kommentar", - "Post" : "Skicka", - "Cancel" : "Avbryt", - "Edit comment" : "Redigera kommentar", - "[Deleted user]" : "[Raderad användare]", - "No comments yet, start the conversation!" : "Inga kommentarer ännu.", - "More comments …" : "Fler kommentarer ...", - "Save" : "Spara", - "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}", - "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}", - "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}", - "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar", - "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"], - "Comment" : "Kommentar", "You commented" : "Du kommenterade", - "%1$s commented" : "%1$s kommenterade", "{author} commented" : "{author} kommenterade", "You commented on %1$s" : "Du kommenterade på %1$s", "You commented on {file}" : "Du kommenterade på {file}", "%1$s commented on %2$s" : "%1$s kommenterade på %2$s", "{author} commented on {file}" : "{author} kommenterade på {file}", "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"", - "Unknown user" : "Okänd användare", - "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"", - "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\"" + "Files" : "Filer", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen", + "{user} mentioned you in a comment on \"{file}\"" : "{user} nämnde dig i kommentar för \"{file}\"", + "Files app plugin to add comments to files" : "Filer-appinsticksmodul för att lägga till kommentarer till filer", + "Edit comment" : "Redigera kommentar", + "Delete comment" : "Ta bort kommentar", + "Cancel edit" : "Avbryt redigering", + "New comment" : "Ny kommentar", + "Write a comment …" : "Skriv en kommentar ...", + "Post comment" : "Publicera kommentar", + "@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker", + "Could not reload comments" : "Kunde inte ladda om kommentarer", + "Failed to mark comments as read" : "Kunde inte markera kommentarer som lästa", + "Unable to load the comments list" : "Kunde inte ladda kommentarlistan", + "No comments yet, start the conversation!" : "Inga kommentarer ännu.", + "No more messages" : "Inga fler meddelanden", + "Retry" : "Försök igen", + "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nya kommentarer"], + "Comment" : "Kommentar", + "An error occurred while trying to edit the comment" : "Ett fel uppstod vid redigering av kommentaren", + "Comment deleted" : "Kommentar borttagen", + "An error occurred while trying to delete the comment" : "Ett fel uppstod vid borttagning av kommentaren", + "An error occurred while trying to create the comment" : "Ett fel uppstod vid skapande av kommentaren" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/sw.js b/apps/comments/l10n/sw.js new file mode 100644 index 00000000000..dbe931a3406 --- /dev/null +++ b/apps/comments/l10n/sw.js @@ -0,0 +1,36 @@ +OC.L10N.register( + "comments", + { + "Comments" : "Maoni", + "You commented" : "Ulitoa maoni", + "{author} commented" : "{author} alitoa maoni", + "You commented on %1$s" : "Ulitoa maoni katika %1$s", + "You commented on {file}" : "Ulitoa maoni katika {file}", + "%1$s commented on %2$s" : "%1$salitoa maoni katika %2$s", + "{author} commented on {file}" : "{author}alitoa maoni katika {file}", + "<strong>Comments</strong> for files" : "<strong>maoni</strong>kwa faili", + "Files" : "Mafaili", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Ulitajwa kwenye \"{file}\", kwenye maoni ya akaunti ambayo imefutwa", + "{user} mentioned you in a comment on \"{file}\"" : "{user}amekutaja katika maoni kwenye\"{file}\"", + "Files app plugin to add comments to files" : "Programu-jalizi ya Faili ili kuongeza maoni kwenye faili ", + "Edit comment" : "Hariri maoni", + "Delete comment" : "Futa maoni", + "Cancel edit" : "Sistisha uhariri", + "New comment" : "Maoni mapya", + "Write a comment …" : "Andika maoni...", + "Post comment" : "Tuma maoni", + "@ for mentions, : for emoji, / for smart picker" : "@ kwa mitajo, : kwa emoji, / kwa kichagua smart", + "Could not reload comments" : "Haikuweza kupakia maoni", + "Failed to mark comments as read" : "imeshindwa kuweka alama kwenye maoni kama yamesomwa", + "Unable to load the comments list" : "Haiwezi kupakia orodha ya maoni", + "No comments yet, start the conversation!" : "Bado hakuna maoni, anza mazungumzo", + "No more messages" : "Hakuna jumbe zaidi", + "Retry" : "Jaribu tene", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread}maoni mapya "], + "Comment" : "Maoni", + "An error occurred while trying to edit the comment" : "Hitilafu ilitokea wakati wa kujaribu kuhariri maoni", + "Comment deleted" : "Maoni yamefutwa", + "An error occurred while trying to delete the comment" : "Hitilafu ilitokea wakati wa kujaribu kufuta maoni", + "An error occurred while trying to create the comment" : "Hitilafu ilitokea wakati wa kujaribu kuunda maoni" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/sw.json b/apps/comments/l10n/sw.json new file mode 100644 index 00000000000..86dff80baf2 --- /dev/null +++ b/apps/comments/l10n/sw.json @@ -0,0 +1,34 @@ +{ "translations": { + "Comments" : "Maoni", + "You commented" : "Ulitoa maoni", + "{author} commented" : "{author} alitoa maoni", + "You commented on %1$s" : "Ulitoa maoni katika %1$s", + "You commented on {file}" : "Ulitoa maoni katika {file}", + "%1$s commented on %2$s" : "%1$salitoa maoni katika %2$s", + "{author} commented on {file}" : "{author}alitoa maoni katika {file}", + "<strong>Comments</strong> for files" : "<strong>maoni</strong>kwa faili", + "Files" : "Mafaili", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Ulitajwa kwenye \"{file}\", kwenye maoni ya akaunti ambayo imefutwa", + "{user} mentioned you in a comment on \"{file}\"" : "{user}amekutaja katika maoni kwenye\"{file}\"", + "Files app plugin to add comments to files" : "Programu-jalizi ya Faili ili kuongeza maoni kwenye faili ", + "Edit comment" : "Hariri maoni", + "Delete comment" : "Futa maoni", + "Cancel edit" : "Sistisha uhariri", + "New comment" : "Maoni mapya", + "Write a comment …" : "Andika maoni...", + "Post comment" : "Tuma maoni", + "@ for mentions, : for emoji, / for smart picker" : "@ kwa mitajo, : kwa emoji, / kwa kichagua smart", + "Could not reload comments" : "Haikuweza kupakia maoni", + "Failed to mark comments as read" : "imeshindwa kuweka alama kwenye maoni kama yamesomwa", + "Unable to load the comments list" : "Haiwezi kupakia orodha ya maoni", + "No comments yet, start the conversation!" : "Bado hakuna maoni, anza mazungumzo", + "No more messages" : "Hakuna jumbe zaidi", + "Retry" : "Jaribu tene", + "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread}maoni mapya "], + "Comment" : "Maoni", + "An error occurred while trying to edit the comment" : "Hitilafu ilitokea wakati wa kujaribu kuhariri maoni", + "Comment deleted" : "Maoni yamefutwa", + "An error occurred while trying to delete the comment" : "Hitilafu ilitokea wakati wa kujaribu kufuta maoni", + "An error occurred while trying to create the comment" : "Hitilafu ilitokea wakati wa kujaribu kuunda maoni" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/comments/l10n/ta_LK.js b/apps/comments/l10n/ta_LK.js deleted file mode 100644 index 8d16f1e90b6..00000000000 --- a/apps/comments/l10n/ta_LK.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "இரத்து செய்க", - "Save" : "சேமிக்க " -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ta_LK.json b/apps/comments/l10n/ta_LK.json deleted file mode 100644 index b1a589161a6..00000000000 --- a/apps/comments/l10n/ta_LK.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "இரத்து செய்க", - "Save" : "சேமிக்க " -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/te.js b/apps/comments/l10n/te.js deleted file mode 100644 index ac519b5e833..00000000000 --- a/apps/comments/l10n/te.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "రద్దుచేయి", - "Save" : "భద్రపరచు" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/te.json b/apps/comments/l10n/te.json deleted file mode 100644 index 3184274b231..00000000000 --- a/apps/comments/l10n/te.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "రద్దుచేయి", - "Save" : "భద్రపరచు" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/th_TH.js b/apps/comments/l10n/th_TH.js deleted file mode 100644 index f8b2d4e2648..00000000000 --- a/apps/comments/l10n/th_TH.js +++ /dev/null @@ -1,23 +0,0 @@ -OC.L10N.register( - "comments", - { - "Type in a new comment..." : "เพิ่มความคิดเห็นใหม่ ...", - "Delete comment" : "ลบความคิดเห็น", - "Post" : "โพสต์", - "Cancel" : "ยกเลิก", - "Edit comment" : "แก้ไขความคิดเห็น", - "[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]", - "Comments" : "ความคิดเห็น", - "No other comments available" : "ยังไม่มีความคิดเห็นอื่นๆ", - "More comments..." : "ความคิดเห็นอื่นๆ ...", - "Save" : "บันทึก", - "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร", - "{count} unread comments" : "{count} ความคิดเห็นที่ยังไม่ได้อ่าน", - "Comment" : "แสดงความคิดเห็น", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>ความคิดเห็น</strong> สำหรับไฟล์ <em>(ระบุไว้เสมอในสตรีม)</em>", - "You commented" : "คุณได้แสดงความคิดเห็นแล้ว", - "%1$s commented" : "%1$s ได้ถูกแสดงความคิดเห็น", - "You commented on %2$s" : "คุณได้แสดงความคิดเห็นบน %2$s", - "%1$s commented on %2$s" : "%1$s ได้ถูกแสดงความคิดเห็นบน %2$s" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/th_TH.json b/apps/comments/l10n/th_TH.json deleted file mode 100644 index 88740585e3c..00000000000 --- a/apps/comments/l10n/th_TH.json +++ /dev/null @@ -1,21 +0,0 @@ -{ "translations": { - "Type in a new comment..." : "เพิ่มความคิดเห็นใหม่ ...", - "Delete comment" : "ลบความคิดเห็น", - "Post" : "โพสต์", - "Cancel" : "ยกเลิก", - "Edit comment" : "แก้ไขความคิดเห็น", - "[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]", - "Comments" : "ความคิดเห็น", - "No other comments available" : "ยังไม่มีความคิดเห็นอื่นๆ", - "More comments..." : "ความคิดเห็นอื่นๆ ...", - "Save" : "บันทึก", - "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร", - "{count} unread comments" : "{count} ความคิดเห็นที่ยังไม่ได้อ่าน", - "Comment" : "แสดงความคิดเห็น", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>ความคิดเห็น</strong> สำหรับไฟล์ <em>(ระบุไว้เสมอในสตรีม)</em>", - "You commented" : "คุณได้แสดงความคิดเห็นแล้ว", - "%1$s commented" : "%1$s ได้ถูกแสดงความคิดเห็น", - "You commented on %2$s" : "คุณได้แสดงความคิดเห็นบน %2$s", - "%1$s commented on %2$s" : "%1$s ได้ถูกแสดงความคิดเห็นบน %2$s" -},"pluralForm" :"nplurals=1; plural=0;" -}
\ No newline at end of file diff --git a/apps/comments/l10n/tr.js b/apps/comments/l10n/tr.js index 0baf7ae0619..c8294d0ec30 100644 --- a/apps/comments/l10n/tr.js +++ b/apps/comments/l10n/tr.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Yorumlar", - "New comment …" : "Yorum ekle ...", - "Delete comment" : "Yorumu sil", - "Post" : "Gönder", - "Cancel" : "İptal", - "Edit comment" : "Yorumu düzenle", - "[Deleted user]" : "[Silinmiş kullanıcı]", - "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir sohbet başlatın!", - "More comments …" : "Diğer yorumlar ...", - "Save" : "Kaydet", - "Allowed characters {count} of {max}" : "Yazılabilecek karakter sayısı {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "{id} kodlu yorum alınırken sorun çıktı", - "Error occurred while updating comment with id {id}" : "{id} kodlu yorum güncellenirken sorun çıktı", - "Error occurred while posting comment" : "Yorum gönderilirken sorun çıktı", - "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"], - "Comment" : "Yorum", "You commented" : "Yorum yaptınız", - "%1$s commented" : "%1$s yorumlanmış", "{author} commented" : "{author} yorum yaptı", "You commented on %1$s" : "%1$s hakkında yorum yaptınız", "You commented on {file}" : "{file} hakkında yorum yaptınız", "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı", - "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "\"%s\" hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "“{file}” hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti", - "{user} mentioned you in a comment on “{file}”" : "{user}, “{file}” hakkındaki bir yorumda sizden bahsetti", - "Unknown user" : "Bilinmeyen kullanıcı", - "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti" + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorum</strong> yapıldığında", + "Files" : "Dosyalar", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\" hakkında bir yorumda silinmiş bir hesap tarafından anıldınız", + "{user} mentioned you in a comment on \"{file}\"" : "{user}, \"{file}\" hakkındaki bir yorumda sizi andı", + "Files app plugin to add comments to files" : "Dosyalara notlar eklenmesini sağlayan Dosyalar uygulaması eklentisi", + "Edit comment" : "Yorumu düzenle", + "Delete comment" : "Yorumu sil", + "Cancel edit" : "Düzenlemeyi iptal et", + "New comment" : "Yorum ekle", + "Write a comment …" : "Bir yorum yazın…", + "Post comment" : "Yorum gönder", + "@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /", + "Could not reload comments" : "Yorumlar yeniden yüklenemedi", + "Failed to mark comments as read" : "Yorumlar okunmuş olarak işaretlenemedi", + "Unable to load the comments list" : "Yorum listesi yüklenemedi", + "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir görüşme başlatın!", + "No more messages" : "Başka ileti yok", + "Retry" : "Yeniden dene", + "_1 new comment_::_{unread} new comments_" : ["1 yeni yorum","{unread} yeni yorum"], + "Comment" : "Yorum", + "An error occurred while trying to edit the comment" : "Yorum düzenlenmeye çalışılırken bir sorun çıktı", + "Comment deleted" : "Yorum silindi", + "An error occurred while trying to delete the comment" : "Yorum silinmeye çalışılırken bir sorun çıktı", + "An error occurred while trying to create the comment" : "Yorum eklenmeye çalışılırken bir sorun çıktı" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/tr.json b/apps/comments/l10n/tr.json index 0b653199a33..4664a265367 100644 --- a/apps/comments/l10n/tr.json +++ b/apps/comments/l10n/tr.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "Yorumlar", - "New comment …" : "Yorum ekle ...", - "Delete comment" : "Yorumu sil", - "Post" : "Gönder", - "Cancel" : "İptal", - "Edit comment" : "Yorumu düzenle", - "[Deleted user]" : "[Silinmiş kullanıcı]", - "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir sohbet başlatın!", - "More comments …" : "Diğer yorumlar ...", - "Save" : "Kaydet", - "Allowed characters {count} of {max}" : "Yazılabilecek karakter sayısı {count}/{max}", - "Error occurred while retrieving comment with id {id}" : "{id} kodlu yorum alınırken sorun çıktı", - "Error occurred while updating comment with id {id}" : "{id} kodlu yorum güncellenirken sorun çıktı", - "Error occurred while posting comment" : "Yorum gönderilirken sorun çıktı", - "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"], - "Comment" : "Yorum", "You commented" : "Yorum yaptınız", - "%1$s commented" : "%1$s yorumlanmış", "{author} commented" : "{author} yorum yaptı", "You commented on %1$s" : "%1$s hakkında yorum yaptınız", "You commented on {file}" : "{file} hakkında yorum yaptınız", "%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı", "{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı", - "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "\"%s\" hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "“{file}” hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti", - "{user} mentioned you in a comment on “{file}”" : "{user}, “{file}” hakkındaki bir yorumda sizden bahsetti", - "Unknown user" : "Bilinmeyen kullanıcı", - "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti" + "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorum</strong> yapıldığında", + "Files" : "Dosyalar", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\" hakkında bir yorumda silinmiş bir hesap tarafından anıldınız", + "{user} mentioned you in a comment on \"{file}\"" : "{user}, \"{file}\" hakkındaki bir yorumda sizi andı", + "Files app plugin to add comments to files" : "Dosyalara notlar eklenmesini sağlayan Dosyalar uygulaması eklentisi", + "Edit comment" : "Yorumu düzenle", + "Delete comment" : "Yorumu sil", + "Cancel edit" : "Düzenlemeyi iptal et", + "New comment" : "Yorum ekle", + "Write a comment …" : "Bir yorum yazın…", + "Post comment" : "Yorum gönder", + "@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /", + "Could not reload comments" : "Yorumlar yeniden yüklenemedi", + "Failed to mark comments as read" : "Yorumlar okunmuş olarak işaretlenemedi", + "Unable to load the comments list" : "Yorum listesi yüklenemedi", + "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir görüşme başlatın!", + "No more messages" : "Başka ileti yok", + "Retry" : "Yeniden dene", + "_1 new comment_::_{unread} new comments_" : ["1 yeni yorum","{unread} yeni yorum"], + "Comment" : "Yorum", + "An error occurred while trying to edit the comment" : "Yorum düzenlenmeye çalışılırken bir sorun çıktı", + "Comment deleted" : "Yorum silindi", + "An error occurred while trying to delete the comment" : "Yorum silinmeye çalışılırken bir sorun çıktı", + "An error occurred while trying to create the comment" : "Yorum eklenmeye çalışılırken bir sorun çıktı" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/ug.js b/apps/comments/l10n/ug.js index 589911eeb21..dc45071aa69 100644 --- a/apps/comments/l10n/ug.js +++ b/apps/comments/l10n/ug.js @@ -1,7 +1,35 @@ OC.L10N.register( "comments", { - "Cancel" : "ۋاز كەچ", - "Save" : "ساقلا" + "Comments" : "باھا", + "You commented" : "باھا بەردىڭىز", + "{author} commented" : "{author} باھا بەردى", + "You commented on %1$s" : "سىز%1 $ s غا باھا بەردىڭىز", + "You commented on {file}" : "سىز {file} گە باھا بەردىڭىز", + "%1$s commented on %2$s" : "%1 $ s%2 $ s غا باھا بەردى", + "{author} commented on {file}" : "{author} بولسا {file} گە باھا بەردى", + "<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>", + "Files" : "ھۆججەتلەر", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{file}» دە تىلغا ئېلىندى", + "{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{file}\" دىكى باھادا تىلغا ئالدى", + "Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى", + "Edit comment" : "باھا تەھرىرلەش", + "Delete comment" : "باھانى ئۆچۈرۈڭ", + "Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ", + "New comment" : "يېڭى باھا", + "Write a comment …" : "باھا يېزىڭ…", + "Post comment" : "ئىنكاس يېزىڭ", + "@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن", + "Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى", + "Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى", + "Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى", + "No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!", + "No more messages" : "باشقا ئۇچۇر يوق", + "Retry" : "قايتا سىناڭ", + "Comment" : "باھا", + "An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى", + "Comment deleted" : "باھا ئۆچۈرۈلدى", + "An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى", + "An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ug.json b/apps/comments/l10n/ug.json index 627eb112502..a7669c2131c 100644 --- a/apps/comments/l10n/ug.json +++ b/apps/comments/l10n/ug.json @@ -1,5 +1,33 @@ { "translations": { - "Cancel" : "ۋاز كەچ", - "Save" : "ساقلا" -},"pluralForm" :"nplurals=1; plural=0;" + "Comments" : "باھا", + "You commented" : "باھا بەردىڭىز", + "{author} commented" : "{author} باھا بەردى", + "You commented on %1$s" : "سىز%1 $ s غا باھا بەردىڭىز", + "You commented on {file}" : "سىز {file} گە باھا بەردىڭىز", + "%1$s commented on %2$s" : "%1 $ s%2 $ s غا باھا بەردى", + "{author} commented on {file}" : "{author} بولسا {file} گە باھا بەردى", + "<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>", + "Files" : "ھۆججەتلەر", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{file}» دە تىلغا ئېلىندى", + "{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{file}\" دىكى باھادا تىلغا ئالدى", + "Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى", + "Edit comment" : "باھا تەھرىرلەش", + "Delete comment" : "باھانى ئۆچۈرۈڭ", + "Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ", + "New comment" : "يېڭى باھا", + "Write a comment …" : "باھا يېزىڭ…", + "Post comment" : "ئىنكاس يېزىڭ", + "@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن", + "Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى", + "Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى", + "Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى", + "No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!", + "No more messages" : "باشقا ئۇچۇر يوق", + "Retry" : "قايتا سىناڭ", + "Comment" : "باھا", + "An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى", + "Comment deleted" : "باھا ئۆچۈرۈلدى", + "An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى", + "An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى" +},"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/uk.js b/apps/comments/l10n/uk.js index 547fa22b7a5..03b1fea5b85 100644 --- a/apps/comments/l10n/uk.js +++ b/apps/comments/l10n/uk.js @@ -1,20 +1,36 @@ OC.L10N.register( "comments", { - "Type in a new comment..." : "Введіть новий коментар...", - "Delete comment" : "Видалити коментар", - "Post" : "Відправити", - "Cancel" : "Скасувати", - "Edit comment" : "Редагувати коментар", - "[Deleted user]" : "[Видалений користувач]", "Comments" : "Коментарі", - "No other comments available" : "Інші коментарі не доступні", - "More comments..." : "Більше коментарів...", - "Save" : "Зберегти", - "Allowed characters {count} of {max}" : "Доступно символів {count} з {max}", - "{count} unread comments" : "{count} непрочитаних коментарів", + "You commented" : "Ви прокоментували", + "{author} commented" : "{author} прокоментував(-ла)", + "You commented on %1$s" : "Ви прокоментували на %1$s", + "You commented on {file}" : "Ви прокоментували {file}", + "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s", + "{author} commented on {file}" : "{author} прокоментував(-ла) {file}", + "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів", + "Files" : "Файли", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вас згадали у \"{file}\" в коментарі, який було додано користувачем, якого було вилучено", + "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"", + "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів", + "Edit comment" : "Редагувати коментар", + "Delete comment" : "Вилучити коментар", + "Cancel edit" : "Скасувати редагування", + "New comment" : "Новий коментар", + "Write a comment …" : "Додати коментар ...", + "Post comment" : "Опублікувати коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору", + "Could not reload comments" : "Не вдалося перезавантажити коментарі", + "Failed to mark comments as read" : "Не вдалося позначити коментарі прочитаними", + "Unable to load the comments list" : "Не вдалося завантажити список коментарів", + "No comments yet, start the conversation!" : "Тут можна додати коментарі", + "No more messages" : "Більше жодних повідомлень", + "Retry" : "Ще раз", + "_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"], "Comment" : "Коментар", - "%1$s commented" : "%1$s прокоментовано", - "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s" + "An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка", + "Comment deleted" : "Коментар вилучено", + "An error occurred while trying to delete the comment" : "Під час спроби вилучити коментар сталася помилка", + "An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"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/comments/l10n/uk.json b/apps/comments/l10n/uk.json index 5fbbe2a6217..7802b6d4f15 100644 --- a/apps/comments/l10n/uk.json +++ b/apps/comments/l10n/uk.json @@ -1,18 +1,34 @@ { "translations": { - "Type in a new comment..." : "Введіть новий коментар...", - "Delete comment" : "Видалити коментар", - "Post" : "Відправити", - "Cancel" : "Скасувати", - "Edit comment" : "Редагувати коментар", - "[Deleted user]" : "[Видалений користувач]", "Comments" : "Коментарі", - "No other comments available" : "Інші коментарі не доступні", - "More comments..." : "Більше коментарів...", - "Save" : "Зберегти", - "Allowed characters {count} of {max}" : "Доступно символів {count} з {max}", - "{count} unread comments" : "{count} непрочитаних коментарів", + "You commented" : "Ви прокоментували", + "{author} commented" : "{author} прокоментував(-ла)", + "You commented on %1$s" : "Ви прокоментували на %1$s", + "You commented on {file}" : "Ви прокоментували {file}", + "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s", + "{author} commented on {file}" : "{author} прокоментував(-ла) {file}", + "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів", + "Files" : "Файли", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вас згадали у \"{file}\" в коментарі, який було додано користувачем, якого було вилучено", + "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"", + "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів", + "Edit comment" : "Редагувати коментар", + "Delete comment" : "Вилучити коментар", + "Cancel edit" : "Скасувати редагування", + "New comment" : "Новий коментар", + "Write a comment …" : "Додати коментар ...", + "Post comment" : "Опублікувати коментар", + "@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору", + "Could not reload comments" : "Не вдалося перезавантажити коментарі", + "Failed to mark comments as read" : "Не вдалося позначити коментарі прочитаними", + "Unable to load the comments list" : "Не вдалося завантажити список коментарів", + "No comments yet, start the conversation!" : "Тут можна додати коментарі", + "No more messages" : "Більше жодних повідомлень", + "Retry" : "Ще раз", + "_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"], "Comment" : "Коментар", - "%1$s commented" : "%1$s прокоментовано", - "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s" -},"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);" + "An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка", + "Comment deleted" : "Коментар вилучено", + "An error occurred while trying to delete the comment" : "Під час спроби вилучити коментар сталася помилка", + "An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка" +},"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/comments/l10n/ur_PK.js b/apps/comments/l10n/ur_PK.js deleted file mode 100644 index 2808425d15a..00000000000 --- a/apps/comments/l10n/ur_PK.js +++ /dev/null @@ -1,7 +0,0 @@ -OC.L10N.register( - "comments", - { - "Cancel" : "منسوخ کریں", - "Save" : "حفظ" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ur_PK.json b/apps/comments/l10n/ur_PK.json deleted file mode 100644 index 83df86652d2..00000000000 --- a/apps/comments/l10n/ur_PK.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "translations": { - "Cancel" : "منسوخ کریں", - "Save" : "حفظ" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/vi.js b/apps/comments/l10n/vi.js index f91b311691e..7ee551e6efb 100644 --- a/apps/comments/l10n/vi.js +++ b/apps/comments/l10n/vi.js @@ -1,34 +1,31 @@ OC.L10N.register( "comments", { - "Comments" : "Các bình luận", - "New comment …" : "Tạo bình luận mới", - "Delete comment" : "Xóa bình luận", - "Post" : "Đăng", - "Cancel" : "Hủy", - "Edit comment" : "Sửa bình luận", - "[Deleted user]" : "[Người dùng bị xoá]", - "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", - "More comments …" : "Xem thêm các bình luận...", - "Save" : "Lưu", - "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}", - "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}", - "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}", - "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận", - "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], - "Comment" : "Bình luận", + "Comments" : "Bình luận", "You commented" : "Bạn đã bình luận", - "%1$s commented" : "%1$s được bình luận", "{author} commented" : "{author} đã bình luận", "You commented on %1$s" : "Bạn đã bình luận về %1$s", "You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}", "%1$s commented on %2$s" : "%1$s đã bình luận về%2$s", "{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}", "<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”", - "Unknown user" : "Người dùng không tồn tại", - "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”" + "Files" : "Tệp tin", + "{user} mentioned you in a comment on \"{file}\"" : "{user} đã nhắc tới bạn trong một bình luận trên \"{file}\"", + "Files app plugin to add comments to files" : "Plugin ứng dụng Tệp để thêm bình luận vào tệp", + "Edit comment" : "Sửa bình luận", + "Delete comment" : "Xóa bình luận", + "Cancel edit" : "Hủy chỉnh sửa", + "Post comment" : "Đăng bình luận", + "Failed to mark comments as read" : "Không thể đánh dấu bình luận là đã đọc", + "Unable to load the comments list" : "Không thể tải danh sách bình luận", + "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", + "No more messages" : "Không có thêm tin nhắn", + "Retry" : "Thử lại", + "_1 new comment_::_{unread} new comments_" : ["{unread} bình luận mới"], + "Comment" : "Bình luận", + "An error occurred while trying to edit the comment" : "Đã xảy ra lỗi khi cố gắng chỉnh sửa bình luận", + "Comment deleted" : "Đã xóa bình luận", + "An error occurred while trying to delete the comment" : "Đã xảy ra lỗi khi cố gắng xóa bình luận", + "An error occurred while trying to create the comment" : "Đã xảy ra lỗi khi cố gắng tạo bình luận" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/vi.json b/apps/comments/l10n/vi.json index c2a968a8d9c..a014378b887 100644 --- a/apps/comments/l10n/vi.json +++ b/apps/comments/l10n/vi.json @@ -1,32 +1,29 @@ { "translations": { - "Comments" : "Các bình luận", - "New comment …" : "Tạo bình luận mới", - "Delete comment" : "Xóa bình luận", - "Post" : "Đăng", - "Cancel" : "Hủy", - "Edit comment" : "Sửa bình luận", - "[Deleted user]" : "[Người dùng bị xoá]", - "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", - "More comments …" : "Xem thêm các bình luận...", - "Save" : "Lưu", - "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}", - "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}", - "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}", - "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận", - "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], - "Comment" : "Bình luận", + "Comments" : "Bình luận", "You commented" : "Bạn đã bình luận", - "%1$s commented" : "%1$s được bình luận", "{author} commented" : "{author} đã bình luận", "You commented on %1$s" : "Bạn đã bình luận về %1$s", "You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}", "%1$s commented on %2$s" : "%1$s đã bình luận về%2$s", "{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}", "<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”", - "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”", - "Unknown user" : "Người dùng không tồn tại", - "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”" + "Files" : "Tệp tin", + "{user} mentioned you in a comment on \"{file}\"" : "{user} đã nhắc tới bạn trong một bình luận trên \"{file}\"", + "Files app plugin to add comments to files" : "Plugin ứng dụng Tệp để thêm bình luận vào tệp", + "Edit comment" : "Sửa bình luận", + "Delete comment" : "Xóa bình luận", + "Cancel edit" : "Hủy chỉnh sửa", + "Post comment" : "Đăng bình luận", + "Failed to mark comments as read" : "Không thể đánh dấu bình luận là đã đọc", + "Unable to load the comments list" : "Không thể tải danh sách bình luận", + "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!", + "No more messages" : "Không có thêm tin nhắn", + "Retry" : "Thử lại", + "_1 new comment_::_{unread} new comments_" : ["{unread} bình luận mới"], + "Comment" : "Bình luận", + "An error occurred while trying to edit the comment" : "Đã xảy ra lỗi khi cố gắng chỉnh sửa bình luận", + "Comment deleted" : "Đã xóa bình luận", + "An error occurred while trying to delete the comment" : "Đã xảy ra lỗi khi cố gắng xóa bình luận", + "An error occurred while trying to create the comment" : "Đã xảy ra lỗi khi cố gắng tạo bình luận" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/zh_CN.js b/apps/comments/l10n/zh_CN.js index 6663f6b064f..1b29a108500 100644 --- a/apps/comments/l10n/zh_CN.js +++ b/apps/comments/l10n/zh_CN.js @@ -2,33 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "评论", - "New comment …" : "新评论 ...", - "Delete comment" : "删除评论", - "Post" : "发布", - "Cancel" : "取消", - "Edit comment" : "编辑评论", - "[Deleted user]" : "[已删除用户]", - "No comments yet, start the conversation!" : "还没有评论,开始对话吧!", - "More comments …" : "更多评论 ...", - "Save" : "保存", - "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}", - "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错", - "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错", - "Error occurred while posting comment" : "发布评论出错", - "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"], - "Comment" : "评论", - "You commented" : "您的评论", - "%1$s commented" : "%1$s 已评论", + "You commented" : "你的评论", "{author} commented" : "{author} 评论了", - "You commented on %1$s" : "您在 %1$s 的评论", - "You commented on {file}" : "您对 {file} 的评论", + "You commented on %1$s" : "你在 %1$s 的评论", + "You commented on {file}" : "你对 {file} 的评论", "%1$s commented on %2$s" : "%1$s 评论了 %2$s", "{author} commented on {file}" : "{author} 对 {file} 的评论", "<strong>Comments</strong> for files" : "文件的<strong>评论</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您", - "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您", - "Unknown user" : "未知用户", - "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您", - "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您" + "Files" : "文件", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "你在文件 “{file}” 内被一个已删除的账号评论提及", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的评论中提到了你", + "Files app plugin to add comments to files" : "文件应用插件可向文件添加评论", + "Edit comment" : "编辑评论", + "Delete comment" : "删除评论", + "Cancel edit" : "取消编辑", + "New comment" : "新评论", + "Write a comment …" : "发表评论 ...", + "Post comment" : "发表评论", + "@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择", + "Could not reload comments" : "无法重载评论", + "Failed to mark comments as read" : "无法将评论标记为已读", + "Unable to load the comments list" : "无法加载评论列表", + "No comments yet, start the conversation!" : "还没有评论,开始对话吧!", + "No more messages" : "没有更多消息", + "Retry" : "重试", + "_1 new comment_::_{unread} new comments_" : ["{unread} 条新评论"], + "Comment" : "评论", + "An error occurred while trying to edit the comment" : "编辑评论时出错", + "Comment deleted" : "评论已删除", + "An error occurred while trying to delete the comment" : "删除评论时出错", + "An error occurred while trying to create the comment" : "创建评论时出错" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/zh_CN.json b/apps/comments/l10n/zh_CN.json index 78c080587dd..a6d668e613c 100644 --- a/apps/comments/l10n/zh_CN.json +++ b/apps/comments/l10n/zh_CN.json @@ -1,32 +1,34 @@ { "translations": { "Comments" : "评论", - "New comment …" : "新评论 ...", - "Delete comment" : "删除评论", - "Post" : "发布", - "Cancel" : "取消", - "Edit comment" : "编辑评论", - "[Deleted user]" : "[已删除用户]", - "No comments yet, start the conversation!" : "还没有评论,开始对话吧!", - "More comments …" : "更多评论 ...", - "Save" : "保存", - "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}", - "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错", - "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错", - "Error occurred while posting comment" : "发布评论出错", - "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"], - "Comment" : "评论", - "You commented" : "您的评论", - "%1$s commented" : "%1$s 已评论", + "You commented" : "你的评论", "{author} commented" : "{author} 评论了", - "You commented on %1$s" : "您在 %1$s 的评论", - "You commented on {file}" : "您对 {file} 的评论", + "You commented on %1$s" : "你在 %1$s 的评论", + "You commented on {file}" : "你对 {file} 的评论", "%1$s commented on %2$s" : "%1$s 评论了 %2$s", "{author} commented on {file}" : "{author} 对 {file} 的评论", "<strong>Comments</strong> for files" : "文件的<strong>评论</strong>", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您", - "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您", - "Unknown user" : "未知用户", - "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您", - "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您" + "Files" : "文件", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "你在文件 “{file}” 内被一个已删除的账号评论提及", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的评论中提到了你", + "Files app plugin to add comments to files" : "文件应用插件可向文件添加评论", + "Edit comment" : "编辑评论", + "Delete comment" : "删除评论", + "Cancel edit" : "取消编辑", + "New comment" : "新评论", + "Write a comment …" : "发表评论 ...", + "Post comment" : "发表评论", + "@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择", + "Could not reload comments" : "无法重载评论", + "Failed to mark comments as read" : "无法将评论标记为已读", + "Unable to load the comments list" : "无法加载评论列表", + "No comments yet, start the conversation!" : "还没有评论,开始对话吧!", + "No more messages" : "没有更多消息", + "Retry" : "重试", + "_1 new comment_::_{unread} new comments_" : ["{unread} 条新评论"], + "Comment" : "评论", + "An error occurred while trying to edit the comment" : "编辑评论时出错", + "Comment deleted" : "评论已删除", + "An error occurred while trying to delete the comment" : "删除评论时出错", + "An error occurred while trying to create the comment" : "创建评论时出错" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/zh_HK.js b/apps/comments/l10n/zh_HK.js index 65cddd342ca..ed0661f0655 100644 --- a/apps/comments/l10n/zh_HK.js +++ b/apps/comments/l10n/zh_HK.js @@ -1,7 +1,36 @@ OC.L10N.register( "comments", { - "Cancel" : "取消", - "Save" : "儲存" + "Comments" : "留言", + "You commented" : "您已留言", + "{author} commented" : "{author} 已留言", + "You commented on %1$s" : "你對 %1$s 留了言", + "You commented on {file}" : "你對 {file} 留了言", + "%1$s commented on %2$s" : "%1$s 對 %2$s 留了言", + "{author} commented on {file}" : "{author} 對 {file} 留了言", + "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", + "Files" : "檔案", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已被刪除的帳戶在 “{file}” 的留言中提到你", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的留言中提到你", + "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋", + "Edit comment" : "編輯留言", + "Delete comment" : "刪除留言", + "Cancel edit" : "取消編輯", + "New comment" : "新評論", + "Write a comment …" : "發表評論 ...", + "Post comment" : "張貼留言", + "@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器", + "Could not reload comments" : "無法重新加載評論", + "Failed to mark comments as read" : "無法將評論標記為已讀", + "Unable to load the comments list" : "無法載入留言清單", + "No comments yet, start the conversation!" : "尚無留言,開始討論吧!", + "No more messages" : "沒有更多訊息", + "Retry" : "重試", + "_1 new comment_::_{unread} new comments_" : ["{unread} 個新留言"], + "Comment" : "留言", + "An error occurred while trying to edit the comment" : "嘗試編輯此留言時錯誤", + "Comment deleted" : "意見刪除", + "An error occurred while trying to delete the comment" : "嘗試刪除此留言時錯誤", + "An error occurred while trying to create the comment" : "嘗試建立此留言時錯誤" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/zh_HK.json b/apps/comments/l10n/zh_HK.json index 4da0032a014..ea90a3983ea 100644 --- a/apps/comments/l10n/zh_HK.json +++ b/apps/comments/l10n/zh_HK.json @@ -1,5 +1,34 @@ { "translations": { - "Cancel" : "取消", - "Save" : "儲存" + "Comments" : "留言", + "You commented" : "您已留言", + "{author} commented" : "{author} 已留言", + "You commented on %1$s" : "你對 %1$s 留了言", + "You commented on {file}" : "你對 {file} 留了言", + "%1$s commented on %2$s" : "%1$s 對 %2$s 留了言", + "{author} commented on {file}" : "{author} 對 {file} 留了言", + "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", + "Files" : "檔案", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已被刪除的帳戶在 “{file}” 的留言中提到你", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的留言中提到你", + "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋", + "Edit comment" : "編輯留言", + "Delete comment" : "刪除留言", + "Cancel edit" : "取消編輯", + "New comment" : "新評論", + "Write a comment …" : "發表評論 ...", + "Post comment" : "張貼留言", + "@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器", + "Could not reload comments" : "無法重新加載評論", + "Failed to mark comments as read" : "無法將評論標記為已讀", + "Unable to load the comments list" : "無法載入留言清單", + "No comments yet, start the conversation!" : "尚無留言,開始討論吧!", + "No more messages" : "沒有更多訊息", + "Retry" : "重試", + "_1 new comment_::_{unread} new comments_" : ["{unread} 個新留言"], + "Comment" : "留言", + "An error occurred while trying to edit the comment" : "嘗試編輯此留言時錯誤", + "Comment deleted" : "意見刪除", + "An error occurred while trying to delete the comment" : "嘗試刪除此留言時錯誤", + "An error occurred while trying to create the comment" : "嘗試建立此留言時錯誤" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js index e02feadc08c..42e06d4e4dd 100644 --- a/apps/comments/l10n/zh_TW.js +++ b/apps/comments/l10n/zh_TW.js @@ -2,35 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "留言", - "New comment …" : "新留言…", - "Delete comment" : "刪除留言", - "Post" : "送出", - "Cancel" : "取消", - "Edit comment" : "編輯留言", - "[Deleted user]" : "[已刪除的使用者]", - "No comments yet, start the conversation!" : "尚無留言,開始討論 !", - "More comments …" : "其他留言…", - "Save" : "儲存", - "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}", - "Error occurred while retrieving comment with id {id}" : "取得留言 {id} 發生錯誤", - "Error occurred while updating comment with id {id}" : "編輯留言 {id} 發生錯誤", - "Error occurred while posting comment" : "張貼留言出錯", - "_%n unread comment_::_%n unread comments_" : ["%n 未讀留言"], - "Comment" : "留言", - "You commented" : "你已留言", - "%1$s commented" : "%1$s 留言", + "You commented" : "您已留言", "{author} commented" : "{author} 已留言", - "You commented on %1$s" : "你對 %1$s 留言", - "You commented on {file}" : "你對 {file} 留言", - "%1$s commented on %2$s" : "%1$s 在 %2$s 留言", - "{author} commented on {file}" : "{author} 對 {file} 留言", + "You commented on %1$s" : "您已對 %1$s 留言", + "You commented on {file}" : "您已對 {file} 留言", + "%1$s commented on %2$s" : "%1$s 已對 %2$s 留言", + "{author} commented on {file}" : "{author} 已對 {file} 留言", "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “%s” 的留言中提到你", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", - "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你", - "Unknown user" : "未知的使用者", - "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你", - "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你" + "Files" : "檔案", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您", + "Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件", + "Edit comment" : "編輯留言", + "Delete comment" : "刪除留言", + "Cancel edit" : "取消編輯", + "New comment" : "新留言", + "Write a comment …" : "編寫留言……", + "Post comment" : "張貼留言", + "@ for mentions, : for emoji, / for smart picker" : "@ 表示提及,: 表示表情符號,/ 表示智慧型選取", + "Could not reload comments" : "無法重新載入留言", + "Failed to mark comments as read" : "無法將留言標記為已讀", + "Unable to load the comments list" : "無法載入留言列表", + "No comments yet, start the conversation!" : "尚無留言,開始討論!", + "No more messages" : "沒有其他訊息", + "Retry" : "重試", + "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"], + "Comment" : "留言", + "An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤", + "Comment deleted" : "留言已刪除", + "An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤", + "An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json index f076b52d491..309eaba81b0 100644 --- a/apps/comments/l10n/zh_TW.json +++ b/apps/comments/l10n/zh_TW.json @@ -1,34 +1,34 @@ { "translations": { "Comments" : "留言", - "New comment …" : "新留言…", - "Delete comment" : "刪除留言", - "Post" : "送出", - "Cancel" : "取消", - "Edit comment" : "編輯留言", - "[Deleted user]" : "[已刪除的使用者]", - "No comments yet, start the conversation!" : "尚無留言,開始討論 !", - "More comments …" : "其他留言…", - "Save" : "儲存", - "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}", - "Error occurred while retrieving comment with id {id}" : "取得留言 {id} 發生錯誤", - "Error occurred while updating comment with id {id}" : "編輯留言 {id} 發生錯誤", - "Error occurred while posting comment" : "張貼留言出錯", - "_%n unread comment_::_%n unread comments_" : ["%n 未讀留言"], - "Comment" : "留言", - "You commented" : "你已留言", - "%1$s commented" : "%1$s 留言", + "You commented" : "您已留言", "{author} commented" : "{author} 已留言", - "You commented on %1$s" : "你對 %1$s 留言", - "You commented on {file}" : "你對 {file} 留言", - "%1$s commented on %2$s" : "%1$s 在 %2$s 留言", - "{author} commented on {file}" : "{author} 對 {file} 留言", + "You commented on %1$s" : "您已對 %1$s 留言", + "You commented on {file}" : "您已對 {file} 留言", + "%1$s commented on %2$s" : "%1$s 已對 %2$s 留言", + "{author} commented on {file}" : "{author} 已對 {file} 留言", "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>", - "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “%s” 的留言中提到你", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你", - "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", - "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你", - "Unknown user" : "未知的使用者", - "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你", - "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你" + "Files" : "檔案", + "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。", + "{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您", + "Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件", + "Edit comment" : "編輯留言", + "Delete comment" : "刪除留言", + "Cancel edit" : "取消編輯", + "New comment" : "新留言", + "Write a comment …" : "編寫留言……", + "Post comment" : "張貼留言", + "@ for mentions, : for emoji, / for smart picker" : "@ 表示提及,: 表示表情符號,/ 表示智慧型選取", + "Could not reload comments" : "無法重新載入留言", + "Failed to mark comments as read" : "無法將留言標記為已讀", + "Unable to load the comments list" : "無法載入留言列表", + "No comments yet, start the conversation!" : "尚無留言,開始討論!", + "No more messages" : "沒有其他訊息", + "Retry" : "重試", + "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"], + "Comment" : "留言", + "An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤", + "Comment deleted" : "留言已刪除", + "An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤", + "An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/lib/Activity/Filter.php b/apps/comments/lib/Activity/Filter.php index 606d4652154..8dcafd872d7 100644 --- a/apps/comments/lib/Activity/Filter.php +++ b/apps/comments/lib/Activity/Filter.php @@ -1,92 +1,50 @@ <?php + /** - * @copyright Copyright (c) 2016 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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Activity; - use OCP\Activity\IFilter; use OCP\IL10N; use OCP\IURLGenerator; class Filter implements IFilter { - - /** @var IL10N */ - protected $l; - - /** @var IURLGenerator */ - protected $url; - - public function __construct(IL10N $l, IURLGenerator $url) { - $this->l = $l; - $this->url = $url; + public function __construct( + protected IL10N $l, + protected IURLGenerator $url, + ) { } - /** - * @return string Lowercase a-z only identifier - * @since 11.0.0 - */ - public function getIdentifier() { + public function getIdentifier(): string { return 'comments'; } - /** - * @return string A translated string - * @since 11.0.0 - */ - public function getName() { + public function getName(): string { return $this->l->t('Comments'); } - /** - * @return int - * @since 11.0.0 - */ - public function getPriority() { + public function getPriority(): int { return 40; } - /** - * @return string Full URL to an icon, empty string when none is given - * @since 11.0.0 - */ - public function getIcon() { + public function getIcon(): string { return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg')); } /** * @param string[] $types * @return string[] An array of allowed apps from which activities should be displayed - * @since 11.0.0 */ - public function filterTypes(array $types) { + public function filterTypes(array $types): array { return $types; } /** * @return string[] An array of allowed apps from which activities should be displayed - * @since 11.0.0 */ - public function allowedApps() { + public function allowedApps(): array { return ['comments']; } } diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php index 76af565cf15..45064f4a6be 100644 --- a/apps/comments/lib/Activity/Listener.php +++ b/apps/comments/lib/Activity/Listener.php @@ -1,26 +1,10 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * @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\Comments\Activity; use OCP\Activity\IManager; @@ -31,54 +15,23 @@ use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\IUser; use OCP\IUserSession; -use OCP\Share; use OCP\Share\IShareHelper; class Listener { - /** @var IManager */ - protected $activityManager; - /** @var IUserSession */ - protected $session; - /** @var \OCP\App\IAppManager */ - protected $appManager; - /** @var \OCP\Files\Config\IMountProviderCollection */ - protected $mountCollection; - /** @var \OCP\Files\IRootFolder */ - protected $rootFolder; - /** @var IShareHelper */ - protected $shareHelper; - - /** - * Listener constructor. - * - * @param IManager $activityManager - * @param IUserSession $session - * @param IAppManager $appManager - * @param IMountProviderCollection $mountCollection - * @param IRootFolder $rootFolder - * @param IShareHelper $shareHelper - */ - public function __construct(IManager $activityManager, - IUserSession $session, - IAppManager $appManager, - IMountProviderCollection $mountCollection, - IRootFolder $rootFolder, - IShareHelper $shareHelper) { - $this->activityManager = $activityManager; - $this->session = $session; - $this->appManager = $appManager; - $this->mountCollection = $mountCollection; - $this->rootFolder = $rootFolder; - $this->shareHelper = $shareHelper; + public function __construct( + protected IManager $activityManager, + protected IUserSession $session, + protected IAppManager $appManager, + protected IMountProviderCollection $mountCollection, + protected IRootFolder $rootFolder, + protected IShareHelper $shareHelper, + ) { } - /** - * @param CommentsEvent $event - */ - public function commentEvent(CommentsEvent $event) { + public function commentEvent(CommentsEvent $event): void { if ($event->getComment()->getObjectType() !== 'files' - || !in_array($event->getEvent(), [CommentsEvent::EVENT_ADD]) - || !$this->appManager->isInstalled('activity')) { + || $event->getEvent() !== CommentsEvent::EVENT_ADD + || !$this->appManager->isEnabledForAnyone('activity')) { // Comment not for file, not adding a comment or no activity-app enabled (save the energy) return; } @@ -99,7 +52,7 @@ class Listener { /** @var Node $node */ $node = array_shift($nodes); $al = $this->shareHelper->getPathsForAccessList($node); - $users = array_merge($users, $al['users']); + $users += $al['users']; } } @@ -114,17 +67,19 @@ class Listener { $activity->setApp('comments') ->setType('comments') ->setAuthor($actor) - ->setObject($event->getComment()->getObjectType(), (int) $event->getComment()->getObjectId()) + ->setObject($event->getComment()->getObjectType(), (int)$event->getComment()->getObjectId()) ->setMessage('add_comment_message', [ 'commentId' => $event->getComment()->getId(), ]); foreach ($users as $user => $path) { - $activity->setAffectedUser($user); + // numerical user ids end up as integers from array keys, but string + // is required + $activity->setAffectedUser((string)$user); $activity->setSubject('add_comment_subject', [ 'actor' => $actor, - 'fileId' => (int) $event->getComment()->getObjectId(), + 'fileId' => (int)$event->getComment()->getObjectId(), 'filePath' => trim($path, '/'), ]); $this->activityManager->publish($activity); diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php index c21b7a9c4fd..ee53357efdb 100644 --- a/apps/comments/lib/Activity/Provider.php +++ b/apps/comments/lib/Activity/Provider.php @@ -1,28 +1,12 @@ <?php + /** - * @copyright Copyright (c) 2016 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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Activity; +use OCP\Activity\Exceptions\UnknownActivityException; use OCP\Activity\IEvent; use OCP\Activity\IManager; use OCP\Activity\IProvider; @@ -30,46 +14,19 @@ use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; use OCP\IL10N; use OCP\IURLGenerator; -use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; class Provider implements IProvider { - - /** @var IFactory */ - protected $languageFactory; - - /** @var IL10N */ - protected $l; - - /** @var IURLGenerator */ - protected $url; - - /** @var ICommentsManager */ - protected $commentsManager; - - /** @var IUserManager */ - protected $userManager; - - /** @var IManager */ - protected $activityManager; - - /** @var string[] */ - protected $displayNames = []; - - /** - * @param IFactory $languageFactory - * @param IURLGenerator $url - * @param ICommentsManager $commentsManager - * @param IUserManager $userManager - * @param IManager $activityManager - */ - public function __construct(IFactory $languageFactory, IURLGenerator $url, ICommentsManager $commentsManager, IUserManager $userManager, IManager $activityManager) { - $this->languageFactory = $languageFactory; - $this->url = $url; - $this->commentsManager = $commentsManager; - $this->userManager = $userManager; - $this->activityManager = $activityManager; + protected ?IL10N $l = null; + + public function __construct( + protected IFactory $languageFactory, + protected IURLGenerator $url, + protected ICommentsManager $commentsManager, + protected IUserManager $userManager, + protected IManager $activityManager, + ) { } /** @@ -77,12 +34,12 @@ class Provider implements IProvider { * @param IEvent $event * @param IEvent|null $previousEvent * @return IEvent - * @throws \InvalidArgumentException + * @throws UnknownActivityException * @since 11.0.0 */ - public function parse($language, IEvent $event, IEvent $previousEvent = null) { + public function parse($language, IEvent $event, ?IEvent $previousEvent = null): IEvent { if ($event->getApp() !== 'comments') { - throw new \InvalidArgumentException(); + throw new UnknownActivityException(); } $this->l = $this->languageFactory->get('comments', $language); @@ -98,78 +55,72 @@ class Provider implements IProvider { if ($this->activityManager->isFormattingFilteredObject()) { try { return $this->parseShortVersion($event); - } catch (\InvalidArgumentException $e) { + } catch (UnknownActivityException) { // Ignore and simply use the long version... } } return $this->parseLongVersion($event); - } else { - throw new \InvalidArgumentException(); } + throw new UnknownActivityException(); + } /** - * @param IEvent $event - * @return IEvent - * @throws \InvalidArgumentException + * @throws UnknownActivityException */ - protected function parseShortVersion(IEvent $event) { + protected function parseShortVersion(IEvent $event): IEvent { $subjectParameters = $this->getSubjectParameters($event); if ($event->getSubject() === 'add_comment_subject') { if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) { - $event->setParsedSubject($this->l->t('You commented')) - ->setRichSubject($this->l->t('You commented'), []); + $event->setRichSubject($this->l->t('You commented'), []); } else { $author = $this->generateUserParameter($subjectParameters['actor']); - $event->setParsedSubject($this->l->t('%1$s commented', [$author['name']])) - ->setRichSubject($this->l->t('{author} commented'), [ - 'author' => $author, - ]); + $event->setRichSubject($this->l->t('{author} commented'), [ + 'author' => $author, + ]); } } else { - throw new \InvalidArgumentException(); + throw new UnknownActivityException(); } return $event; } /** - * @param IEvent $event - * @return IEvent - * @throws \InvalidArgumentException + * @throws UnknownActivityException */ - protected function parseLongVersion(IEvent $event) { + protected function parseLongVersion(IEvent $event): IEvent { $subjectParameters = $this->getSubjectParameters($event); if ($event->getSubject() === 'add_comment_subject') { if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) { $event->setParsedSubject($this->l->t('You commented on %1$s', [ - $subjectParameters['filePath'], - ])) + $subjectParameters['filePath'], + ])) ->setRichSubject($this->l->t('You commented on {file}'), [ 'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']), ]); } else { $author = $this->generateUserParameter($subjectParameters['actor']); $event->setParsedSubject($this->l->t('%1$s commented on %2$s', [ - $author['name'], - $subjectParameters['filePath'], - ])) + $author['name'], + $subjectParameters['filePath'], + ])) ->setRichSubject($this->l->t('{author} commented on {file}'), [ 'author' => $author, 'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']), ]); } } else { - throw new \InvalidArgumentException(); + throw new UnknownActivityException(); } return $event; } - protected function getSubjectParameters(IEvent $event) { + protected function getSubjectParameters(IEvent $event): array { $subjectParameters = $event->getSubjectParameters(); if (isset($subjectParameters['fileId'])) { return $subjectParameters; @@ -184,27 +135,23 @@ class Provider implements IProvider { // they will get the dead entries in their stream. return [ 'actor' => $subjectParameters[0], - 'fileId' => (int) $event->getObjectId(), + 'fileId' => $event->getObjectId(), 'filePath' => trim($subjectParameters[1], '/'), ]; } - /** - * @param IEvent $event - */ - protected function parseMessage(IEvent $event) { + protected function parseMessage(IEvent $event): void { $messageParameters = $event->getMessageParameters(); if (empty($messageParameters)) { // Email return; } - $commentId = isset($messageParameters['commentId']) ? $messageParameters['commentId'] : $messageParameters[0]; + $commentId = $messageParameters['commentId'] ?? $messageParameters[0]; try { - $comment = $this->commentsManager->get((string) $commentId); + $comment = $this->commentsManager->get((string)$commentId); $message = $comment->getMessage(); - $message = str_replace("\n", '<br />', str_replace(['<', '>'], ['<', '>'], $message)); $mentionCount = 1; $mentions = []; @@ -213,12 +160,11 @@ class Provider implements IProvider { continue; } - $message = preg_replace( - '/(^|\s)(' . '@' . $mention['id'] . ')(\b)/', - //'${1}' . $this->regexSafeUser($mention['id'], $displayName) . '${3}', - '${1}' . '{mention' . $mentionCount . '}' . '${3}', - $message - ); + $message = str_replace('@"' . $mention['id'] . '"', '{mention' . $mentionCount . '}', $message); + if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) { + $message = str_replace('@' . $mention['id'], '{mention' . $mentionCount . '}', $message); + } + $mentions['mention' . $mentionCount] = $this->generateUserParameter($mention['id']); $mentionCount++; } @@ -230,46 +176,23 @@ class Provider implements IProvider { } /** - * @param int $id - * @param string $path - * @return array + * @return array<string, string> */ - protected function generateFileParameter($id, $path) { + protected function generateFileParameter(int $id, string $path): array { return [ 'type' => 'file', - 'id' => $id, + 'id' => (string)$id, 'name' => basename($path), 'path' => $path, 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), ]; } - /** - * @param string $uid - * @return array - */ - protected function generateUserParameter($uid) { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - + protected function generateUserParameter(string $uid): array { return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->displayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } - - /** - * @param string $uid - * @return string - */ - protected function getDisplayName($uid) { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } else { - return $uid; - } - } } diff --git a/apps/comments/lib/Activity/Setting.php b/apps/comments/lib/Activity/Setting.php index 8a6bd982173..7fbf4001b20 100644 --- a/apps/comments/lib/Activity/Setting.php +++ b/apps/comments/lib/Activity/Setting.php @@ -1,100 +1,53 @@ <?php + /** - * @copyright Copyright (c) 2016 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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Activity; - -use OCP\Activity\ISetting; +use OCP\Activity\ActivitySettings; use OCP\IL10N; -class Setting implements ISetting { - - /** @var IL10N */ - protected $l; - - /** - * @param IL10N $l - */ - public function __construct(IL10N $l) { - $this->l = $l; +class Setting extends ActivitySettings { + public function __construct( + protected IL10N $l, + ) { } - /** - * @return string Lowercase a-z and underscore only identifier - * @since 11.0.0 - */ - public function getIdentifier() { + public function getIdentifier(): string { return 'comments'; } - /** - * @return string A translated string - * @since 11.0.0 - */ - public function getName() { + public function getName(): string { return $this->l->t('<strong>Comments</strong> for files'); } - /** - * @return int whether the filter should be rather on the top or bottom of - * the admin section. The filters are arranged in ascending order of the - * priority values. It is required to return a value between 0 and 100. - * @since 11.0.0 - */ - public function getPriority() { + public function getGroupIdentifier() { + return 'files'; + } + + public function getGroupName() { + return $this->l->t('Files'); + } + + public function getPriority(): int { return 50; } - /** - * @return bool True when the option can be changed for the stream - * @since 11.0.0 - */ - public function canChangeStream() { + public function canChangeStream(): bool { return true; } - /** - * @return bool True when the option can be changed for the stream - * @since 11.0.0 - */ - public function isDefaultEnabledStream() { + public function isDefaultEnabledStream(): bool { return true; } - /** - * @return bool True when the option can be changed for the mail - * @since 11.0.0 - */ - public function canChangeMail() { + public function canChangeMail(): bool { return true; } - /** - * @return bool True when the option can be changed for the stream - * @since 11.0.0 - */ - public function isDefaultEnabledMail() { + public function isDefaultEnabledMail(): bool { return false; } } - diff --git a/apps/comments/lib/AppInfo/Application.php b/apps/comments/lib/AppInfo/Application.php index e60f0cbf36b..db4a2ce614c 100644 --- a/apps/comments/lib/AppInfo/Application.php +++ b/apps/comments/lib/AppInfo/Application.php @@ -1,42 +1,62 @@ <?php + /** - * - * - * @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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\AppInfo; -use OCA\Comments\Controller\Notifications; -use OCA\Comments\JSSettingsHelper; +use OCA\Comments\Capabilities; +use OCA\Comments\Listener\CommentsEntityEventListener; +use OCA\Comments\Listener\CommentsEventListener; +use OCA\Comments\Listener\LoadAdditionalScripts; +use OCA\Comments\Listener\LoadSidebarScripts; +use OCA\Comments\MaxAutoCompleteResultsInitialState; +use OCA\Comments\Notification\Notifier; +use OCA\Comments\Search\CommentsSearchProvider; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCA\Files\Event\LoadSidebar; use OCP\AppFramework\App; -use OCP\Util; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\Comments\CommentsEntityEvent; +use OCP\Comments\CommentsEvent; + +class Application extends App implements IBootstrap { + public const APP_ID = 'comments'; + + public function __construct(array $urlParams = []) { + parent::__construct(self::APP_ID, $urlParams); + } + + public function register(IRegistrationContext $context): void { + $context->registerCapability(Capabilities::class); -class Application extends App { + $context->registerEventListener( + LoadAdditionalScriptsEvent::class, + LoadAdditionalScripts::class + ); + $context->registerEventListener( + LoadSidebar::class, + LoadSidebarScripts::class + ); + $context->registerEventListener( + CommentsEntityEvent::class, + CommentsEntityEventListener::class + ); + $context->registerEventListener( + CommentsEvent::class, + CommentsEventListener::class, + ); - public function __construct (array $urlParams = array()) { - parent::__construct('comments', $urlParams); - $container = $this->getContainer(); + $context->registerSearchProvider(CommentsSearchProvider::class); - $container->registerAlias('NotificationsController', Notifications::class); + $context->registerInitialStateProvider(MaxAutoCompleteResultsInitialState::class); + + $context->registerNotifierService(Notifier::class); + } - $jsSettingsHelper = new JSSettingsHelper($container->getServer()); - Util::connectHook('\OCP\Config', 'js', $jsSettingsHelper, 'extend'); + public function boot(IBootContext $context): void { } } diff --git a/apps/comments/lib/Capabilities.php b/apps/comments/lib/Capabilities.php new file mode 100644 index 00000000000..2057803d867 --- /dev/null +++ b/apps/comments/lib/Capabilities.php @@ -0,0 +1,24 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments; + +use OCP\Capabilities\ICapability; + +class Capabilities implements ICapability { + /** + * @return array{files: array{comments: bool}} + */ + public function getCapabilities(): array { + return [ + 'files' => [ + 'comments' => true, + ] + ]; + } +} diff --git a/apps/comments/lib/Collaboration/CommentersSorter.php b/apps/comments/lib/Collaboration/CommentersSorter.php index b8bb745b3b8..baa27155573 100644 --- a/apps/comments/lib/Collaboration/CommentersSorter.php +++ b/apps/comments/lib/Collaboration/CommentersSorter.php @@ -1,42 +1,21 @@ <?php + /** - * @copyright Copyright (c) 2017 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: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Collaboration; - use OCP\Collaboration\AutoComplete\ISorter; use OCP\Comments\ICommentsManager; class CommentersSorter implements ISorter { - - /** @var ICommentsManager */ - private $commentsManager; - - public function __construct(ICommentsManager $commentsManager) { - $this->commentsManager = $commentsManager; + public function __construct( + private ICommentsManager $commentsManager, + ) { } - public function getId() { + public function getId(): string { return 'commenters'; } @@ -44,30 +23,30 @@ class CommentersSorter implements ISorter { * Sorts people who commented on the given item atop (descelating) of the * others * - * @param array $sortArray + * @param array &$sortArray * @param array $context */ - public function sort(array &$sortArray, array $context) { + public function sort(array &$sortArray, array $context): void { $commenters = $this->retrieveCommentsInformation($context['itemType'], $context['itemId']); - if(count($commenters) === 0) { + if (count($commenters) === 0) { return; } foreach ($sortArray as $type => &$byType) { - if(!isset($commenters[$type])) { + if (!isset($commenters[$type])) { continue; } // at least on PHP 5.6 usort turned out to be not stable. So we add // the current index to the value and compare it on a draw $i = 0; - $workArray = array_map(function($element) use (&$i) { + $workArray = array_map(function ($element) use (&$i) { return [$i++, $element]; }, $byType); usort($workArray, function ($a, $b) use ($commenters, $type) { $r = $this->compare($a[1], $b[1], $commenters[$type]); - if($r === 0) { + if ($r === 0) { $r = $a[0] - $b[0]; } return $r; @@ -79,22 +58,20 @@ class CommentersSorter implements ISorter { } /** - * @param $type - * @param $id - * @return array + * @return array<string, array<string, int>> */ - protected function retrieveCommentsInformation($type, $id) { + protected function retrieveCommentsInformation(string $type, string $id): array { $comments = $this->commentsManager->getForObject($type, $id); - if(count($comments) === 0) { + if (count($comments) === 0) { return []; } $actors = []; foreach ($comments as $comment) { - if(!isset($actors[$comment->getActorType()])) { + if (!isset($actors[$comment->getActorType()])) { $actors[$comment->getActorType()] = []; } - if(!isset($actors[$comment->getActorType()][$comment->getActorId()])) { + if (!isset($actors[$comment->getActorType()][$comment->getActorId()])) { $actors[$comment->getActorType()][$comment->getActorId()] = 1; } else { $actors[$comment->getActorType()][$comment->getActorId()]++; @@ -103,12 +80,12 @@ class CommentersSorter implements ISorter { return $actors; } - protected function compare(array $a, array $b, array $commenters) { + protected function compare(array $a, array $b, array $commenters): int { $a = $a['value']['shareWith']; $b = $b['value']['shareWith']; - $valueA = isset($commenters[$a]) ? $commenters[$a] : 0; - $valueB = isset($commenters[$b]) ? $commenters[$b] : 0; + $valueA = $commenters[$a] ?? 0; + $valueB = $commenters[$b] ?? 0; return $valueB - $valueA; } diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/Notifications.php deleted file mode 100644 index 911f19d46e1..00000000000 --- a/apps/comments/lib/Controller/Notifications.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.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/>. - * - */ - -namespace OCA\Comments\Controller; - -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http\NotFoundResponse; -use OCP\AppFramework\Http\RedirectResponse; -use OCP\AppFramework\Http\Response; -use OCP\Comments\IComment; -use OCP\Comments\ICommentsManager; -use OCP\Files\Folder; -use OCP\IRequest; -use OCP\IURLGenerator; -use OCP\IUserSession; -use OCP\Notification\IManager; - -/** - * Class Notifications - * - * @package OCA\Comments\Controller - */ -class Notifications extends Controller { - /** @var Folder */ - protected $folder; - - /** @var ICommentsManager */ - protected $commentsManager; - - /** @var IURLGenerator */ - protected $urlGenerator; - - /** @var IManager */ - protected $notificationManager; - - /** @var IUserSession */ - protected $userSession; - - /** - * Notifications constructor. - * - * @param string $appName - * @param IRequest $request - * @param ICommentsManager $commentsManager - * @param Folder $folder - * @param IURLGenerator $urlGenerator - * @param IManager $notificationManager - * @param IUserSession $userSession - */ - public function __construct( - $appName, - IRequest $request, - ICommentsManager $commentsManager, - Folder $folder, - IURLGenerator $urlGenerator, - IManager $notificationManager, - IUserSession $userSession - ) { - parent::__construct($appName, $request); - $this->commentsManager = $commentsManager; - $this->folder = $folder; - $this->urlGenerator = $urlGenerator; - $this->notificationManager = $notificationManager; - $this->userSession = $userSession; - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * @param string $id the comment ID - * @return Response - */ - public function view($id) { - try { - $comment = $this->commentsManager->get($id); - if($comment->getObjectType() !== 'files') { - return new NotFoundResponse(); - } - $files = $this->folder->getById((int)$comment->getObjectId()); - if(count($files) === 0) { - $this->markProcessed($comment); - return new NotFoundResponse(); - } - - $url = $this->urlGenerator->linkToRouteAbsolute( - 'files.viewcontroller.showFile', - [ 'fileid' => $comment->getObjectId() ] - ); - - $this->markProcessed($comment); - - return new RedirectResponse($url); - } catch (\Exception $e) { - return new NotFoundResponse(); - } - } - - /** - * Marks the notification about a comment as processed - * @param IComment $comment - */ - protected function markProcessed(IComment $comment) { - $user = $this->userSession->getUser(); - if(is_null($user)) { - return; - } - $notification = $this->notificationManager->createNotification(); - $notification->setApp('comments') - ->setObject('comment', $comment->getId()) - ->setSubject('mention') - ->setUser($user->getUID()); - $this->notificationManager->markProcessed($notification); - } -} diff --git a/apps/comments/lib/Controller/NotificationsController.php b/apps/comments/lib/Controller/NotificationsController.php new file mode 100644 index 00000000000..0937b6929b8 --- /dev/null +++ b/apps/comments/lib/Controller/NotificationsController.php @@ -0,0 +1,103 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\OpenAPI; +use OCP\AppFramework\Http\Attribute\PublicPage; +use OCP\AppFramework\Http\NotFoundResponse; +use OCP\AppFramework\Http\RedirectResponse; +use OCP\Comments\IComment; +use OCP\Comments\ICommentsManager; +use OCP\Files\IRootFolder; +use OCP\IRequest; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Notification\IManager; + +/** + * @package OCA\Comments\Controller + */ +#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] +class NotificationsController extends Controller { + public function __construct( + string $appName, + IRequest $request, + protected ICommentsManager $commentsManager, + protected IRootFolder $rootFolder, + protected IURLGenerator $urlGenerator, + protected IManager $notificationManager, + protected IUserSession $userSession, + ) { + parent::__construct($appName, $request); + } + + /** + * View a notification + * + * @param string $id ID of the notification + * + * @return RedirectResponse<Http::STATUS_SEE_OTHER, array{}>|NotFoundResponse<Http::STATUS_NOT_FOUND, array{}> + * + * 303: Redirected to notification + * 404: Notification not found + */ + #[PublicPage] + #[NoCSRFRequired] + public function view(string $id): RedirectResponse|NotFoundResponse { + $currentUser = $this->userSession->getUser(); + if (!$currentUser instanceof IUser) { + return new RedirectResponse( + $this->urlGenerator->linkToRoute('core.login.showLoginForm', [ + 'redirect_url' => $this->urlGenerator->linkToRoute( + 'comments.Notifications.view', + ['id' => $id] + ), + ]) + ); + } + + try { + $comment = $this->commentsManager->get($id); + if ($comment->getObjectType() !== 'files') { + return new NotFoundResponse(); + } + $userFolder = $this->rootFolder->getUserFolder($currentUser->getUID()); + $files = $userFolder->getById((int)$comment->getObjectId()); + + $this->markProcessed($comment, $currentUser); + + if (empty($files)) { + return new NotFoundResponse(); + } + + $url = $this->urlGenerator->linkToRouteAbsolute( + 'files.viewcontroller.showFile', + [ 'fileid' => $comment->getObjectId() ] + ); + + return new RedirectResponse($url); + } catch (\Exception $e) { + return new NotFoundResponse(); + } + } + + /** + * Marks the notification about a comment as processed + */ + protected function markProcessed(IComment $comment, IUser $currentUser): void { + $notification = $this->notificationManager->createNotification(); + $notification->setApp('comments') + ->setObject('comment', $comment->getId()) + ->setSubject('mention') + ->setUser($currentUser->getUID()); + $this->notificationManager->markProcessed($notification); + } +} diff --git a/apps/comments/lib/EventHandler.php b/apps/comments/lib/EventHandler.php deleted file mode 100644 index 0fc6de7bf49..00000000000 --- a/apps/comments/lib/EventHandler.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 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/>. - * - */ - -namespace OCA\Comments; - -use OCA\Comments\Activity\Listener as ActivityListener; -use OCA\Comments\AppInfo\Application; -use OCA\Comments\Notification\Listener as NotificationListener; -use OCP\Comments\CommentsEvent; -use OCP\Comments\ICommentsEventHandler; - -/** - * Class EventHandler - * - * @package OCA\Comments - */ -class EventHandler implements ICommentsEventHandler { - /** @var ActivityListener */ - private $activityListener; - - /** @var NotificationListener */ - private $notificationListener; - - public function __construct(ActivityListener $activityListener, NotificationListener $notificationListener) { - $this->activityListener = $activityListener; - $this->notificationListener = $notificationListener; - } - - /** - * @param CommentsEvent $event - */ - public function handle(CommentsEvent $event) { - if($event->getComment()->getObjectType() !== 'files') { - // this is a 'files'-specific Handler - return; - } - - $eventType = $event->getEvent(); - if( $eventType === CommentsEvent::EVENT_ADD - ) { - $this->notificationHandler($event); - $this->activityHandler($event); - return; - } - - $applicableEvents = [ - CommentsEvent::EVENT_PRE_UPDATE, - CommentsEvent::EVENT_UPDATE, - CommentsEvent::EVENT_DELETE, - ]; - if(in_array($eventType, $applicableEvents)) { - $this->notificationHandler($event); - return; - } - } - - /** - * @param CommentsEvent $event - */ - private function activityHandler(CommentsEvent $event) { - $this->activityListener->commentEvent($event); - } - - /** - * @param CommentsEvent $event - */ - private function notificationHandler(CommentsEvent $event) { - $this->notificationListener->evaluate($event); - } -} diff --git a/apps/comments/lib/JSSettingsHelper.php b/apps/comments/lib/JSSettingsHelper.php deleted file mode 100644 index dab68a48925..00000000000 --- a/apps/comments/lib/JSSettingsHelper.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2017 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/>. - * - */ - -namespace OCA\Comments; - - -use OCP\IServerContainer; - -class JSSettingsHelper { - /** @var IServerContainer */ - private $c; - - public function __construct(IServerContainer $c) { - $this->c = $c; - } - - public function extend(array $settings) { - $appConfig = json_decode($settings['array']['oc_appconfig'], true); - - $value = (int)$this->c->getConfig()->getAppValue('comments', 'maxAutoCompleteResults', 10); - $appConfig['comments']['maxAutoCompleteResults'] = $value; - - $settings['array']['oc_appconfig'] = json_encode($appConfig); - } -} diff --git a/apps/comments/lib/Listener/CommentsEntityEventListener.php b/apps/comments/lib/Listener/CommentsEntityEventListener.php new file mode 100644 index 00000000000..5aeeb3c63ea --- /dev/null +++ b/apps/comments/lib/Listener/CommentsEntityEventListener.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Listener; + +use OCP\Comments\CommentsEntityEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Files\IRootFolder; + +/** @template-implements IEventListener<CommentsEntityEvent> */ +class CommentsEntityEventListener implements IEventListener { + public function __construct( + private IRootFolder $rootFolder, + private ?string $userId = null, + ) { + } + + public function handle(Event $event): void { + if (!($event instanceof CommentsEntityEvent)) { + // Unrelated + return; + } + + $event->addEntityCollection('files', function ($name): bool { + $nodes = $this->rootFolder->getUserFolder($this->userId)->getById((int)$name); + return !empty($nodes); + }); + } +} diff --git a/apps/comments/lib/Listener/CommentsEventListener.php b/apps/comments/lib/Listener/CommentsEventListener.php new file mode 100644 index 00000000000..a1e44995162 --- /dev/null +++ b/apps/comments/lib/Listener/CommentsEventListener.php @@ -0,0 +1,63 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + + +namespace OCA\Comments\Listener; + +use OCA\Comments\Activity\Listener as ActivityListener; +use OCA\Comments\Notification\Listener as NotificationListener; +use OCP\Comments\CommentsEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; + +/** @template-implements IEventListener<CommentsEvent|Event> */ +class CommentsEventListener implements IEventListener { + public function __construct( + private ActivityListener $activityListener, + private NotificationListener $notificationListener, + ) { + } + + public function handle(Event $event): void { + if (!$event instanceof CommentsEvent) { + return; + } + + if ($event->getComment()->getObjectType() !== 'files') { + // this is a 'files'-specific Handler + return; + } + + $eventType = $event->getEvent(); + if ($eventType === CommentsEvent::EVENT_ADD + ) { + $this->notificationHandler($event); + $this->activityHandler($event); + return; + } + + $applicableEvents = [ + CommentsEvent::EVENT_PRE_UPDATE, + CommentsEvent::EVENT_UPDATE, + CommentsEvent::EVENT_DELETE, + ]; + if (in_array($eventType, $applicableEvents)) { + $this->notificationHandler($event); + return; + } + } + + private function activityHandler(CommentsEvent $event): void { + $this->activityListener->commentEvent($event); + } + + private function notificationHandler(CommentsEvent $event): void { + $this->notificationListener->evaluate($event); + } +} diff --git a/apps/comments/lib/Listener/LoadAdditionalScripts.php b/apps/comments/lib/Listener/LoadAdditionalScripts.php new file mode 100644 index 00000000000..81e1bfe5310 --- /dev/null +++ b/apps/comments/lib/Listener/LoadAdditionalScripts.php @@ -0,0 +1,27 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Listener; + +use OCA\Comments\AppInfo\Application; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Util; + +/** @template-implements IEventListener<LoadAdditionalScriptsEvent> */ +class LoadAdditionalScripts implements IEventListener { + public function handle(Event $event): void { + if (!($event instanceof LoadAdditionalScriptsEvent)) { + return; + } + + // Adding init script for file list inline actions + Util::addInitScript(Application::APP_ID, 'init'); + } +} diff --git a/apps/comments/lib/Listener/LoadSidebarScripts.php b/apps/comments/lib/Listener/LoadSidebarScripts.php new file mode 100644 index 00000000000..906fe40fed2 --- /dev/null +++ b/apps/comments/lib/Listener/LoadSidebarScripts.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Listener; + +use OCA\Comments\AppInfo\Application; +use OCA\Files\Event\LoadSidebar; +use OCP\App\IAppManager; +use OCP\AppFramework\Services\IInitialState; +use OCP\Comments\ICommentsManager; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Util; + +/** @template-implements IEventListener<LoadSidebar> */ +class LoadSidebarScripts implements IEventListener { + public function __construct( + private ICommentsManager $commentsManager, + private IInitialState $initialState, + private IAppManager $appManager, + ) { + } + + public function handle(Event $event): void { + if (!($event instanceof LoadSidebar)) { + return; + } + + $this->commentsManager->load(); + + $this->initialState->provideInitialState('activityEnabled', $this->appManager->isEnabledForUser('activity')); + // Add comments sidebar tab script + Util::addScript(Application::APP_ID, 'comments-tab', 'files'); + } +} diff --git a/apps/comments/lib/MaxAutoCompleteResultsInitialState.php b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php new file mode 100644 index 00000000000..b4c8f8719db --- /dev/null +++ b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php @@ -0,0 +1,27 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments; + +use OCP\AppFramework\Services\InitialStateProvider; +use OCP\IConfig; + +class MaxAutoCompleteResultsInitialState extends InitialStateProvider { + public function __construct( + private IConfig $config, + ) { + } + + public function getKey(): string { + return 'maxAutoCompleteResults'; + } + + public function getData(): int { + return (int)$this->config->getAppValue('comments', 'maxAutoCompleteResults', '10'); + } +} diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php index 896b383f873..43922f85e59 100644 --- a/apps/comments/lib/Notification/Listener.php +++ b/apps/comments/lib/Notification/Listener.php @@ -1,71 +1,38 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.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\Comments\Notification; use OCP\Comments\CommentsEvent; use OCP\Comments\IComment; use OCP\IUserManager; use OCP\Notification\IManager; +use OCP\Notification\INotification; class Listener { - /** @var IManager */ - protected $notificationManager; - - /** @var IUserManager */ - protected $userManager; - - /** - * Listener constructor. - * - * @param IManager $notificationManager - * @param IUserManager $userManager - */ public function __construct( - IManager $notificationManager, - IUserManager $userManager + protected IManager $notificationManager, + protected IUserManager $userManager, ) { - - $this->notificationManager = $notificationManager; - $this->userManager = $userManager; } - /** - * @param CommentsEvent $event - */ - public function evaluate(CommentsEvent $event) { + public function evaluate(CommentsEvent $event): void { $comment = $event->getComment(); $mentions = $this->extractMentions($comment->getMentions()); - if(empty($mentions)) { + if (empty($mentions)) { // no one to notify return; } $notification = $this->instantiateNotification($comment); - foreach($mentions as $uid) { - if( ($comment->getActorType() === 'users' && $uid === $comment->getActorId()) + foreach ($mentions as $uid) { + if (($comment->getActorType() === 'users' && $uid === $comment->getActorId()) || !$this->userManager->userExists($uid) ) { // do not notify unknown users or yourself @@ -73,9 +40,8 @@ class Listener { } $notification->setUser($uid); - if( $event->getEvent() === CommentsEvent::EVENT_DELETE - || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) - { + if ($event->getEvent() === CommentsEvent::EVENT_DELETE + || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) { $this->notificationManager->markProcessed($notification); } else { $this->notificationManager->notify($notification); @@ -84,12 +50,9 @@ class Listener { } /** - * creates a notification instance and fills it with comment data - * - * @param IComment $comment - * @return \OCP\Notification\INotification + * Creates a notification instance and fills it with comment data */ - public function instantiateNotification(IComment $comment) { + public function instantiateNotification(IComment $comment): INotification { $notification = $this->notificationManager->createNotification(); $notification ->setApp('comments') @@ -101,18 +64,18 @@ class Listener { } /** - * flattens the mention array returned from comments to a list of user ids. + * Flattens the mention array returned from comments to a list of user ids. * * @param array $mentions - * @return string[] containing the mentions, e.g. ['alice', 'bob'] + * @return list<string> containing the mentions, e.g. ['alice', 'bob'] */ - public function extractMentions(array $mentions) { - if(empty($mentions)) { + public function extractMentions(array $mentions): array { + if (empty($mentions)) { return []; } $uids = []; - foreach($mentions as $mention) { - if($mention['type'] === 'user') { + foreach ($mentions as $mention) { + if ($mention['type'] === 'user') { $uids[] = $mention['id']; } } diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index ead68840a4f..62562bf42aa 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -1,149 +1,125 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @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\Comments\Notification; +use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; use OCP\Files\IRootFolder; use OCP\IURLGenerator; use OCP\IUserManager; use OCP\L10N\IFactory; +use OCP\Notification\AlreadyProcessedException; use OCP\Notification\INotification; use OCP\Notification\INotifier; +use OCP\Notification\UnknownNotificationException; class Notifier implements INotifier { - - /** @var IFactory */ - protected $l10nFactory; - - /** @var IRootFolder */ - protected $rootFolder; - - /** @var ICommentsManager */ - protected $commentsManager; - - /** @var IURLGenerator */ - protected $url; - - /** @var IUserManager */ - protected $userManager; - public function __construct( - IFactory $l10nFactory, - IRootFolder $rootFolder, - ICommentsManager $commentsManager, - IURLGenerator $url, - IUserManager $userManager + protected IFactory $l10nFactory, + protected IRootFolder $rootFolder, + protected ICommentsManager $commentsManager, + protected IURLGenerator $url, + protected IUserManager $userManager, ) { - $this->l10nFactory = $l10nFactory; - $this->rootFolder = $rootFolder; - $this->commentsManager = $commentsManager; - $this->url = $url; - $this->userManager = $userManager; + } + + /** + * Identifier of the notifier, only use [a-z0-9_] + * + * @return string + * @since 17.0.0 + */ + public function getID(): string { + return 'comments'; + } + + /** + * Human readable name describing the notifier + * + * @return string + * @since 17.0.0 + */ + public function getName(): string { + return $this->l10nFactory->get('comments')->t('Comments'); } /** * @param INotification $notification * @param string $languageCode The code of the language that should be used to prepare the notification * @return INotification - * @throws \InvalidArgumentException When the notification was not prepared by a notifier + * @throws UnknownNotificationException When the notification was not prepared by a notifier + * @throws AlreadyProcessedException When the notification is not needed anymore and should be deleted + * @since 9.0.0 */ - public function prepare(INotification $notification, $languageCode) { - if($notification->getApp() !== 'comments') { - throw new \InvalidArgumentException(); + public function prepare(INotification $notification, string $languageCode): INotification { + if ($notification->getApp() !== 'comments') { + throw new UnknownNotificationException(); } try { $comment = $this->commentsManager->get($notification->getObjectId()); - } catch(NotFoundException $e) { + } catch (NotFoundException $e) { // needs to be converted to InvalidArgumentException, otherwise none Notifications will be shown at all - throw new \InvalidArgumentException('Comment not found', 0, $e); + throw new UnknownNotificationException('Comment not found', 0, $e); } $l = $this->l10nFactory->get('comments', $languageCode); $displayName = $comment->getActorId(); $isDeletedActor = $comment->getActorType() === ICommentsManager::DELETED_USER; - if($comment->getActorType() === 'users') { - $commenter = $this->userManager->get($comment->getActorId()); - if(!is_null($commenter)) { - $displayName = $commenter->getDisplayName(); + if ($comment->getActorType() === 'users') { + $commenter = $this->userManager->getDisplayName($comment->getActorId()); + if ($commenter !== null) { + $displayName = $commenter; } } - switch($notification->getSubject()) { + switch ($notification->getSubject()) { case 'mention': $parameters = $notification->getSubjectParameters(); - if($parameters[0] !== 'files') { - throw new \InvalidArgumentException('Unsupported comment object'); + if ($parameters[0] !== 'files') { + throw new UnknownNotificationException('Unsupported comment object'); } $userFolder = $this->rootFolder->getUserFolder($notification->getUser()); $nodes = $userFolder->getById((int)$parameters[1]); - if(empty($nodes)) { - throw new \InvalidArgumentException('Cannot resolve file ID to node instance'); + if (empty($nodes)) { + throw new AlreadyProcessedException(); } $node = $nodes[0]; + $path = rtrim($node->getPath(), '/'); + if (str_starts_with($path, '/' . $notification->getUser() . '/files/')) { + // Remove /user/files/... + $fullPath = $path; + [,,, $path] = explode('/', $fullPath, 4); + } + $subjectParameters = [ + 'file' => [ + 'type' => 'file', + 'id' => $comment->getObjectId(), + 'name' => $node->getName(), + 'path' => $path, + 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]), + ], + ]; + if ($isDeletedActor) { - $notification->setParsedSubject($l->t( - 'You were mentioned on “%s”, in a comment by a user that has since been deleted', - [$node->getName()] - )) - ->setRichSubject( - $l->t('You were mentioned on “{file}”, in a comment by a user that has since been deleted'), - [ - 'file' => [ - 'type' => 'file', - 'id' => $comment->getObjectId(), - 'name' => $node->getName(), - 'path' => $node->getPath(), - 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]), - ], - ] - ); + $subject = $l->t('You were mentioned on "{file}", in a comment by an account that has since been deleted'); } else { - $notification->setParsedSubject($l->t( - '%1$s mentioned you in a comment on “%2$s”', - [$displayName, $node->getName()] - )) - ->setRichSubject( - $l->t('{user} mentioned you in a comment on “{file}”'), - [ - 'user' => [ - 'type' => 'user', - 'id' => $comment->getActorId(), - 'name' => $displayName, - ], - 'file' => [ - 'type' => 'file', - 'id' => $comment->getObjectId(), - 'name' => $node->getName(), - 'path' => $node->getPath(), - 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]), - ], - ] - ); + $subject = $l->t('{user} mentioned you in a comment on "{file}"'); + $subjectParameters['user'] = [ + 'type' => 'user', + 'id' => $comment->getActorId(), + 'name' => $displayName, + ]; } - $notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg'))) + [$message, $messageParameters] = $this->commentToRichMessage($comment); + $notification->setRichSubject($subject, $subjectParameters) + ->setRichMessage($message, $messageParameters) + ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg'))) ->setLink($this->url->linkToRouteAbsolute( 'comments.Notifications.view', ['id' => $comment->getId()]) @@ -153,8 +129,49 @@ class Notifier implements INotifier { break; default: - throw new \InvalidArgumentException('Invalid subject'); + throw new UnknownNotificationException('Invalid subject'); } + } + public function commentToRichMessage(IComment $comment): array { + $message = $comment->getMessage(); + $messageParameters = []; + $mentionTypeCount = []; + $mentions = $comment->getMentions(); + foreach ($mentions as $mention) { + if ($mention['type'] === 'user') { + $userDisplayName = $this->userManager->getDisplayName($mention['id']); + if ($userDisplayName === null) { + continue; + } + } + if (!array_key_exists($mention['type'], $mentionTypeCount)) { + $mentionTypeCount[$mention['type']] = 0; + } + $mentionTypeCount[$mention['type']]++; + // To keep a limited character set in parameter IDs ([a-zA-Z0-9-]) + // the mention parameter ID does not include the mention ID (which + // could contain characters like '@' for user IDs) but a one-based + // index of the mentions of that type. + $mentionParameterId = 'mention-' . $mention['type'] . $mentionTypeCount[$mention['type']]; + $message = str_replace('@"' . $mention['id'] . '"', '{' . $mentionParameterId . '}', $message); + if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) { + $message = str_replace('@' . $mention['id'], '{' . $mentionParameterId . '}', $message); + } + + try { + $displayName = $this->commentsManager->resolveDisplayName($mention['type'], $mention['id']); + } catch (\OutOfBoundsException $e) { + // There is no registered display name resolver for the mention + // type, so the client decides what to display. + $displayName = ''; + } + $messageParameters[$mentionParameterId] = [ + 'type' => $mention['type'], + 'id' => $mention['id'], + 'name' => $displayName + ]; + } + return [$message, $messageParameters]; } } diff --git a/apps/comments/lib/Search/CommentsSearchProvider.php b/apps/comments/lib/Search/CommentsSearchProvider.php new file mode 100644 index 00000000000..87a658cab1c --- /dev/null +++ b/apps/comments/lib/Search/CommentsSearchProvider.php @@ -0,0 +1,71 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Search; + +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Search\IProvider; +use OCP\Search\ISearchQuery; +use OCP\Search\SearchResult; +use OCP\Search\SearchResultEntry; +use function array_map; +use function pathinfo; + +class CommentsSearchProvider implements IProvider { + public function __construct( + private IUserManager $userManager, + private IL10N $l10n, + private IURLGenerator $urlGenerator, + private LegacyProvider $legacyProvider, + ) { + } + + public function getId(): string { + return 'comments'; + } + + public function getName(): string { + return $this->l10n->t('Comments'); + } + + public function getOrder(string $route, array $routeParameters): int { + if ($route === 'files.View.index') { + // Files first + return 0; + } + return 10; + } + + public function search(IUser $user, ISearchQuery $query): SearchResult { + return SearchResult::complete( + $this->l10n->t('Comments'), + array_map(function (Result $result) { + $path = $result->path; + $pathInfo = pathinfo($path); + $isUser = $this->userManager->userExists($result->authorId); + $avatarUrl = $isUser + ? $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $result->authorId, 'size' => 42]) + : $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $result->authorId, 'size' => 42]); + return new SearchResultEntry( + $avatarUrl, + $result->name, + $path, + $this->urlGenerator->linkToRouteAbsolute('files.view.index', [ + 'dir' => $pathInfo['dirname'], + 'scrollto' => $pathInfo['basename'], + ]), + '', + true + ); + }, $this->legacyProvider->search($query->getTerm())) + ); + } +} diff --git a/apps/comments/lib/Search/LegacyProvider.php b/apps/comments/lib/Search/LegacyProvider.php new file mode 100644 index 00000000000..a269c418d06 --- /dev/null +++ b/apps/comments/lib/Search/LegacyProvider.php @@ -0,0 +1,97 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Search; + +use OCP\Comments\IComment; +use OCP\Comments\ICommentsManager; +use OCP\Files\Folder; +use OCP\Files\Node; +use OCP\Files\NotFoundException; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Search\Provider; +use OCP\Server; +use function count; + +class LegacyProvider extends Provider { + /** + * Search for $query + * + * @param string $query + * @return array An array of OCP\Search\Result's + * @since 7.0.0 + */ + public function search($query): array { + $cm = Server::get(ICommentsManager::class); + $us = Server::get(IUserSession::class); + + $user = $us->getUser(); + if (!$user instanceof IUser) { + return []; + } + $uf = \OC::$server->getUserFolder($user->getUID()); + + if ($uf === null) { + return []; + } + + $result = []; + $numComments = 50; + $offset = 0; + + while (count($result) < $numComments) { + /** @var IComment[] $comments */ + $comments = $cm->search($query, 'files', '', 'comment', $offset, $numComments); + + foreach ($comments as $comment) { + if ($comment->getActorType() !== 'users') { + continue; + } + + $displayName = $cm->resolveDisplayName('user', $comment->getActorId()); + + try { + $file = $this->getFileForComment($uf, $comment); + $result[] = new Result($query, + $comment, + $displayName, + $file->getPath() + ); + } catch (NotFoundException $e) { + continue; + } + } + + if (count($comments) < $numComments) { + // Didn't find more comments when we tried to get, so there are no more comments. + return $result; + } + + $offset += $numComments; + $numComments = 50 - count($result); + } + + return $result; + } + + /** + * @param Folder $userFolder + * @param IComment $comment + * @return Node + * @throws NotFoundException + */ + protected function getFileForComment(Folder $userFolder, IComment $comment): Node { + $nodes = $userFolder->getById((int)$comment->getObjectId()); + if (empty($nodes)) { + throw new NotFoundException('File not found'); + } + + return array_shift($nodes); + } +} diff --git a/apps/comments/lib/Search/Result.php b/apps/comments/lib/Search/Result.php new file mode 100644 index 00000000000..7478c110d63 --- /dev/null +++ b/apps/comments/lib/Search/Result.php @@ -0,0 +1,105 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Search; + +use OCP\Comments\IComment; +use OCP\Files\NotFoundException; +use OCP\Search\Result as BaseResult; + +/** + * @deprecated 20.0.0 + */ +class Result extends BaseResult { + /** + * @deprecated 20.0.0 + */ + public $type = 'comment'; + /** + * @deprecated 20.0.0 + */ + public $comment; + /** + * @deprecated 20.0.0 + */ + public $authorId; + /** + * @deprecated 20.0.0 + */ + public $path; + /** + * @deprecated 20.0.0 + */ + public $fileName; + + /** + * @throws NotFoundException + * @deprecated 20.0.0 + */ + public function __construct( + string $search, + IComment $comment, + /** + * @deprecated 20.0.0 + */ + public string $authorName, + string $path, + ) { + parent::__construct( + $comment->getId(), + $comment->getMessage() + /* @todo , [link to file] */ + ); + + $this->comment = $this->getRelevantMessagePart($comment->getMessage(), $search); + $this->authorId = $comment->getActorId(); + $this->fileName = basename($path); + $this->path = $this->getVisiblePath($path); + } + + /** + * @throws NotFoundException + */ + protected function getVisiblePath(string $path): string { + $segments = explode('/', trim($path, '/'), 3); + + if (!isset($segments[2])) { + throw new NotFoundException('Path not inside visible section'); + } + + return $segments[2]; + } + + /** + * @throws NotFoundException + */ + protected function getRelevantMessagePart(string $message, string $search): string { + $start = mb_stripos($message, $search); + if ($start === false) { + throw new NotFoundException('Comment section not found'); + } + + $end = $start + mb_strlen($search); + + if ($start <= 25) { + $start = 0; + $prefix = ''; + } else { + $start -= 25; + $prefix = '…'; + } + + if ((mb_strlen($message) - $end) <= 25) { + $end = mb_strlen($message); + $suffix = ''; + } else { + $end += 25; + $suffix = '…'; + } + + return $prefix . mb_substr($message, $start, $end - $start) . $suffix; + } +} diff --git a/apps/comments/openapi.json b/apps/comments/openapi.json new file mode 100644 index 00000000000..cadc64da052 --- /dev/null +++ b/apps/comments/openapi.json @@ -0,0 +1,46 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "comments", + "version": "0.0.1", + "description": "Files app plugin to add comments to files", + "license": { + "name": "agpl" + } + }, + "components": { + "securitySchemes": { + "basic_auth": { + "type": "http", + "scheme": "basic" + }, + "bearer_auth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Capabilities": { + "type": "object", + "required": [ + "files" + ], + "properties": { + "files": { + "type": "object", + "required": [ + "comments" + ], + "properties": { + "comments": { + "type": "boolean" + } + } + } + } + } + } + }, + "paths": {}, + "tags": [] +} diff --git a/apps/comments/openapi.json.license b/apps/comments/openapi.json.license new file mode 100644 index 00000000000..83559daa9dc --- /dev/null +++ b/apps/comments/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/comments/src/actions/inlineUnreadCommentsAction.spec.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts new file mode 100644 index 00000000000..e8020f1f029 --- /dev/null +++ b/apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts @@ -0,0 +1,179 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { File, Permission, View, FileAction } from '@nextcloud/files' +import { describe, expect, test, vi } from 'vitest' + +import { action } from './inlineUnreadCommentsAction' +import logger from '../logger' + +const view = { + id: 'files', + name: 'Files', +} as View + +describe('Inline unread comments action display name tests', () => { + test('Default values', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 1, + }, + }) + + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('comments-unread') + expect(action.displayName([file], view)).toBe('') + expect(action.title!([file], view)).toBe('1 new comment') + expect(action.iconSvgInline([], view)).toMatch(/<svg.+<\/svg>/) + expect(action.enabled!([file], view)).toBe(true) + expect(action.inline!(file, view)).toBe(true) + expect(action.default).toBeUndefined() + expect(action.order).toBe(-140) + }) + + test('Display name when file has two new comments', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 2, + }, + }) + + expect(action.displayName([file], view)).toBe('') + expect(action.title!([file], view)).toBe('2 new comments') + }) +}) + +describe('Inline unread comments action enabled tests', () => { + test('Action is disabled when comments-unread attribute is missing', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { }, + }) + + expect(action.enabled!([file], view)).toBe(false) + }) + + test('Action is disabled when file does not have unread comments', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 0, + }, + }) + + expect(action.enabled!([file], view)).toBe(false) + }) + + test('Action is enabled when file has a single unread comment', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 1, + }, + }) + + expect(action.enabled!([file], view)).toBe(true) + }) + + test('Action is enabled when file has a two unread comments', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 2, + }, + }) + + expect(action.enabled!([file], view)).toBe(true) + }) +}) + +describe('Inline unread comments action execute tests', () => { + test('Action opens sidebar', async () => { + const openMock = vi.fn() + const setActiveTabMock = vi.fn() + window.OCA = { + Files: { + Sidebar: { + open: openMock, + setActiveTab: setActiveTabMock, + }, + }, + } + + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 1, + }, + }) + + const result = await action.exec!(file, view, '/') + + expect(result).toBe(null) + expect(setActiveTabMock).toBeCalledWith('comments') + expect(openMock).toBeCalledWith('/foobar.txt') + }) + + test('Action handles sidebar open failure', async () => { + const openMock = vi.fn(() => { throw new Error('Mock error') }) + const setActiveTabMock = vi.fn() + window.OCA = { + Files: { + Sidebar: { + open: openMock, + setActiveTab: setActiveTabMock, + }, + }, + } + vi.spyOn(logger, 'error').mockImplementation(() => vi.fn()) + + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + 'comments-unread': 1, + }, + }) + + const result = await action.exec!(file, view, '/') + + expect(result).toBe(false) + expect(setActiveTabMock).toBeCalledWith('comments') + expect(openMock).toBeCalledWith('/foobar.txt') + expect(logger.error).toBeCalledTimes(1) + }) +}) diff --git a/apps/comments/src/actions/inlineUnreadCommentsAction.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.ts new file mode 100644 index 00000000000..0afd93d7606 --- /dev/null +++ b/apps/comments/src/actions/inlineUnreadCommentsAction.ts @@ -0,0 +1,46 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { FileAction, Node } from '@nextcloud/files' +import { translate as t, translatePlural as n } from '@nextcloud/l10n' +import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw' + +import logger from '../logger' + +export const action = new FileAction({ + id: 'comments-unread', + + title(nodes: Node[]) { + const unread = nodes[0].attributes['comments-unread'] as number + if (unread >= 0) { + return n('comments', '1 new comment', '{unread} new comments', unread, { unread }) + } + return t('comments', 'Comment') + }, + + // Empty string when rendered inline + displayName: () => '', + + iconSvgInline: () => CommentProcessingSvg, + + enabled(nodes: Node[]) { + const unread = nodes[0].attributes['comments-unread'] as number|undefined + return typeof unread === 'number' && unread > 0 + }, + + async exec(node: Node) { + try { + window.OCA.Files.Sidebar.setActiveTab('comments') + await window.OCA.Files.Sidebar.open(node.path) + return null + } catch (error) { + logger.error('Error while opening sidebar', { error }) + return false + } + }, + + inline: () => true, + + order: -140, +}) diff --git a/apps/comments/src/comments-activity-tab.ts b/apps/comments/src/comments-activity-tab.ts new file mode 100644 index 00000000000..77f6c9bca04 --- /dev/null +++ b/apps/comments/src/comments-activity-tab.ts @@ -0,0 +1,78 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import moment from '@nextcloud/moment' +import Vue, { type ComponentPublicInstance } from 'vue' +import logger from './logger.js' +import { getComments } from './services/GetComments.js' + +import { PiniaVuePlugin, createPinia } from 'pinia' + +Vue.use(PiniaVuePlugin) + +let ActivityTabPluginView +let ActivityTabPluginInstance + +/** + * Register the comments plugins for the Activity sidebar + */ +export function registerCommentsPlugins() { + window.OCA.Activity.registerSidebarAction({ + mount: async (el, { fileInfo, reload }) => { + const pinia = createPinia() + + if (!ActivityTabPluginView) { + const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue') + // @ts-expect-error Types are broken for Vue2 + ActivityTabPluginView = Vue.extend(ActivityCommentAction) + } + ActivityTabPluginInstance = new ActivityTabPluginView({ + el, + pinia, + propsData: { + reloadCallback: reload, + resourceId: fileInfo.id, + }, + }) + logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo }) + }, + unmount: () => { + // destroy previous instance if available + if (ActivityTabPluginInstance) { + ActivityTabPluginInstance.$destroy() + } + }, + }) + + window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => { + const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset }) + logger.debug('Loaded comments', { fileInfo, comments }) + const { default: CommentView } = await import('./views/ActivityCommentEntry.vue') + // @ts-expect-error Types are broken for Vue2 + const CommentsViewObject = Vue.extend(CommentView) + + return comments.map((comment) => ({ + _CommentsViewInstance: undefined as ComponentPublicInstance | undefined, + + timestamp: moment(comment.props?.creationDateTime).toDate().getTime(), + + mount(element: HTMLElement, { reload }) { + this._CommentsViewInstance = new CommentsViewObject({ + el: element, + propsData: { + comment, + resourceId: fileInfo.id, + reloadCallback: reload, + }, + }) + }, + unmount() { + this._CommentsViewInstance?.$destroy() + }, + })) + }) + + window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments') + logger.info('Comments plugin registered for Activity sidebar action') +} diff --git a/apps/comments/src/comments-app.js b/apps/comments/src/comments-app.js new file mode 100644 index 00000000000..a91a4bb37bb --- /dev/null +++ b/apps/comments/src/comments-app.js @@ -0,0 +1,15 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import CommentsInstance from './services/CommentsInstance.js' + +// Init Comments +if (window.OCA && !window.OCA.Comments) { + Object.assign(window.OCA, { Comments: {} }) +} + +// Init Comments App view +Object.assign(window.OCA.Comments, { View: CommentsInstance }) +console.debug('OCA.Comments.View initialized') diff --git a/apps/comments/src/comments-tab.js b/apps/comments/src/comments-tab.js new file mode 100644 index 00000000000..d3ebe3e9596 --- /dev/null +++ b/apps/comments/src/comments-tab.js @@ -0,0 +1,60 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +// eslint-disable-next-line n/no-missing-import, import/no-unresolved +import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw' +import { getCSPNonce } from '@nextcloud/auth' +import { loadState } from '@nextcloud/initial-state' +import { registerCommentsPlugins } from './comments-activity-tab.ts' + +// @ts-expect-error __webpack_nonce__ is injected by webpack +__webpack_nonce__ = getCSPNonce() + +if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) { + // Do not mount own tab but mount into activity + window.addEventListener('DOMContentLoaded', function() { + registerCommentsPlugins() + }) +} else { + // Init Comments tab component + let TabInstance = null + const commentTab = new OCA.Files.Sidebar.Tab({ + id: 'comments', + name: t('comments', 'Comments'), + iconSvg: MessageReplyText, + + async mount(el, fileInfo, context) { + if (TabInstance) { + TabInstance.$destroy() + } + TabInstance = new OCA.Comments.View('files', { + // Better integration with vue parent component + parent: context, + propsData: { + resourceId: fileInfo.id, + }, + }) + // Only mount after we have all the info we need + await TabInstance.update(fileInfo.id) + TabInstance.$mount(el) + }, + update(fileInfo) { + TabInstance.update(fileInfo.id) + }, + destroy() { + TabInstance.$destroy() + TabInstance = null + }, + scrollBottomReached() { + TabInstance.onScrollBottomReached() + }, + }) + + window.addEventListener('DOMContentLoaded', function() { + if (OCA.Files && OCA.Files.Sidebar) { + OCA.Files.Sidebar.registerTab(commentTab) + } + }) +} diff --git a/apps/comments/src/components/Comment.vue b/apps/comments/src/components/Comment.vue new file mode 100644 index 00000000000..80f035530fb --- /dev/null +++ b/apps/comments/src/components/Comment.vue @@ -0,0 +1,384 @@ +<!-- + - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> +<template> + <component :is="tag" + v-show="!deleted && !isLimbo" + :class="{'comment--loading': loading}" + class="comment"> + <!-- Comment header toolbar --> + <div class="comment__side"> + <!-- Author --> + <NcAvatar class="comment__avatar" + :display-name="actorDisplayName" + :user="actorId" + :size="32" /> + </div> + <div class="comment__body"> + <div class="comment__header"> + <span class="comment__author">{{ actorDisplayName }}</span> + + <!-- Comment actions, + show if we have a message id and current user is author --> + <NcActions v-if="isOwnComment && id && !loading" class="comment__actions"> + <template v-if="!editing"> + <NcActionButton close-after-click + @click="onEdit"> + <template #icon> + <IconPencilOutline :size="20" /> + </template> + {{ t('comments', 'Edit comment') }} + </NcActionButton> + <NcActionSeparator /> + <NcActionButton close-after-click + @click="onDeleteWithUndo"> + <template #icon> + <IconTrashCanOutline :size="20" /> + </template> + {{ t('comments', 'Delete comment') }} + </NcActionButton> + </template> + + <NcActionButton v-else @click="onEditCancel"> + <template #icon> + <IconClose :size="20" /> + </template> + {{ t('comments', 'Cancel edit') }} + </NcActionButton> + </NcActions> + + <!-- Show loading if we're editing or deleting, not on new ones --> + <div v-if="id && loading" class="comment_loading icon-loading-small" /> + + <!-- Relative time to the comment creation --> + <NcDateTime v-else-if="creationDateTime" + class="comment__timestamp" + :timestamp="timestamp" + :ignore-seconds="true" /> + </div> + + <!-- Message editor --> + <form v-if="editor || editing" class="comment__editor" @submit.prevent> + <div class="comment__editor-group"> + <NcRichContenteditable ref="editor" + :auto-complete="autoComplete" + :contenteditable="!loading" + :label="editor ? t('comments', 'New comment') : t('comments', 'Edit comment')" + :placeholder="t('comments', 'Write a comment …')" + :value="localMessage" + :user-data="userData" + aria-describedby="tab-comments__editor-description" + @update:value="updateLocalMessage" + @submit="onSubmit" /> + <div class="comment__submit"> + <NcButton type="tertiary-no-background" + native-type="submit" + :aria-label="t('comments', 'Post comment')" + :disabled="isEmptyMessage" + @click="onSubmit"> + <template #icon> + <NcLoadingIcon v-if="loading" /> + <IconArrowRight v-else :size="20" /> + </template> + </NcButton> + </div> + </div> + <div id="tab-comments__editor-description" class="comment__editor-description"> + {{ t('comments', '@ for mentions, : for emoji, / for smart picker') }} + </div> + </form> + + <!-- Message content --> + <NcRichText v-else + class="comment__message" + :class="{'comment__message--expanded': expanded}" + :text="richContent.message" + :arguments="richContent.mentions" + @click="onExpand" /> + </div> + </component> +</template> + +<script> +import { getCurrentUser } from '@nextcloud/auth' +import { translate as t } from '@nextcloud/l10n' + +import NcActionButton from '@nextcloud/vue/components/NcActionButton' +import NcActions from '@nextcloud/vue/components/NcActions' +import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator' +import NcAvatar from '@nextcloud/vue/components/NcAvatar' +import NcButton from '@nextcloud/vue/components/NcButton' +import NcDateTime from '@nextcloud/vue/components/NcDateTime' +import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' +import NcUserBubble from '@nextcloud/vue/components/NcUserBubble' + +import IconArrowRight from 'vue-material-design-icons/ArrowRight.vue' +import IconClose from 'vue-material-design-icons/Close.vue' +import IconTrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue' +import IconPencilOutline from 'vue-material-design-icons/PencilOutline.vue' + +import CommentMixin from '../mixins/CommentMixin.js' +import { mapStores } from 'pinia' +import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js' + +// Dynamic loading +const NcRichContenteditable = () => import('@nextcloud/vue/components/NcRichContenteditable') +const NcRichText = () => import('@nextcloud/vue/components/NcRichText') + +export default { + name: 'Comment', + + components: { + IconArrowRight, + IconClose, + IconTrashCanOutline, + IconPencilOutline, + NcActionButton, + NcActions, + NcActionSeparator, + NcAvatar, + NcButton, + NcDateTime, + NcLoadingIcon, + NcRichContenteditable, + NcRichText, + }, + mixins: [CommentMixin], + + inheritAttrs: false, + + props: { + actorDisplayName: { + type: String, + required: true, + }, + actorId: { + type: String, + required: true, + }, + creationDateTime: { + type: String, + default: null, + }, + + /** + * Force the editor display + */ + editor: { + type: Boolean, + default: false, + }, + + /** + * Provide the autocompletion data + */ + autoComplete: { + type: Function, + required: true, + }, + userData: { + type: Object, + default: () => ({}), + }, + + tag: { + type: String, + default: 'div', + }, + }, + + data() { + return { + expanded: false, + // Only change data locally and update the original + // parent data when the request is sent and resolved + localMessage: '', + submitted: false, + } + }, + + computed: { + ...mapStores(useDeletedCommentLimbo), + + /** + * Is the current user the author of this comment + * + * @return {boolean} + */ + isOwnComment() { + return getCurrentUser().uid === this.actorId + }, + + richContent() { + const mentions = {} + let message = this.localMessage + + Object.keys(this.userData).forEach((user, index) => { + const key = `mention-${index}` + const regex = new RegExp(`@${user}|@"${user}"`, 'g') + message = message.replace(regex, `{${key}}`) + mentions[key] = { + component: NcUserBubble, + props: { + user, + displayName: this.userData[user].label, + primary: this.userData[user].primary, + }, + } + }) + + return { mentions, message } + }, + + isEmptyMessage() { + return !this.localMessage || this.localMessage.trim() === '' + }, + + /** + * Timestamp of the creation time (in ms UNIX time) + */ + timestamp() { + return Date.parse(this.creationDateTime) + }, + + isLimbo() { + return this.deletedCommentLimboStore.checkForId(this.id) + }, + }, + + watch: { + // If the data change, update the local value + message(message) { + this.updateLocalMessage(message) + }, + }, + + beforeMount() { + // Init localMessage + this.updateLocalMessage(this.message) + }, + + methods: { + t, + + /** + * Update local Message on outer change + * + * @param {string} message the message to set + */ + updateLocalMessage(message) { + this.localMessage = message.toString() + this.submitted = false + }, + + /** + * Dispatch message between edit and create + */ + onSubmit() { + // Do not submit if message is empty + if (this.localMessage.trim() === '') { + return + } + + if (this.editor) { + this.onNewComment(this.localMessage.trim()) + this.$nextTick(() => { + // Focus the editor again + this.$refs.editor.$el.focus() + }) + return + } + this.onEditComment(this.localMessage.trim()) + }, + + onExpand() { + this.expanded = true + }, + }, + +} +</script> + +<style lang="scss" scoped> +@use "sass:math"; + +$comment-padding: 10px; + +.comment { + display: flex; + gap: 8px; + padding: 5px $comment-padding; + + &__side { + display: flex; + align-items: flex-start; + padding-top: 6px; + } + + &__body { + display: flex; + flex-grow: 1; + flex-direction: column; + } + + &__header { + display: flex; + align-items: center; + min-height: 44px; + } + + &__actions { + margin-inline-start: $comment-padding !important; + } + + &__author { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: var(--color-text-maxcontrast); + } + + &_loading, + &__timestamp { + margin-inline-start: auto; + text-align: end; + white-space: nowrap; + color: var(--color-text-maxcontrast); + } + + &__editor-group { + position: relative; + } + + &__editor-description { + color: var(--color-text-maxcontrast); + padding-block: var(--default-grid-baseline); + } + + &__submit { + position: absolute !important; + bottom: 5px; + inset-inline-end: 0; + } + + &__message { + white-space: pre-wrap; + word-break: normal; + max-height: 70px; + overflow: hidden; + margin-top: -6px; + &--expanded { + max-height: none; + overflow: visible; + } + } +} + +.rich-contenteditable__input { + min-height: 44px; + margin: 0; + padding: $comment-padding; +} + +</style> diff --git a/apps/comments/src/init.ts b/apps/comments/src/init.ts new file mode 100644 index 00000000000..675274b1b40 --- /dev/null +++ b/apps/comments/src/init.ts @@ -0,0 +1,8 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { registerFileAction } from '@nextcloud/files' +import { action } from './actions/inlineUnreadCommentsAction' + +registerFileAction(action) diff --git a/apps/comments/src/logger.js b/apps/comments/src/logger.js new file mode 100644 index 00000000000..a51bc6d750b --- /dev/null +++ b/apps/comments/src/logger.js @@ -0,0 +1,11 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getLoggerBuilder } from '@nextcloud/logger' + +export default getLoggerBuilder() + .setApp('comments') + .detectUser() + .build() diff --git a/apps/comments/src/mixins/CommentMixin.js b/apps/comments/src/mixins/CommentMixin.js new file mode 100644 index 00000000000..722ad3444ce --- /dev/null +++ b/apps/comments/src/mixins/CommentMixin.js @@ -0,0 +1,115 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs' +import NewComment from '../services/NewComment.js' +import DeleteComment from '../services/DeleteComment.js' +import EditComment from '../services/EditComment.js' +import { mapStores } from 'pinia' +import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js' +import logger from '../logger.js' + +export default { + props: { + id: { + type: Number, + default: null, + }, + message: { + type: String, + default: '', + }, + resourceId: { + type: [String, Number], + required: true, + }, + resourceType: { + type: String, + default: 'files', + }, + }, + + data() { + return { + deleted: false, + editing: false, + loading: false, + } + }, + + computed: { + ...mapStores(useDeletedCommentLimbo), + }, + + methods: { + // EDITION + onEdit() { + this.editing = true + }, + onEditCancel() { + this.editing = false + // Restore original value + this.updateLocalMessage(this.message) + }, + async onEditComment(message) { + this.loading = true + try { + await EditComment(this.resourceType, this.resourceId, this.id, message) + logger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message }) + this.$emit('update:message', message) + this.editing = false + } catch (error) { + showError(t('comments', 'An error occurred while trying to edit the comment')) + console.error(error) + } finally { + this.loading = false + } + }, + + // DELETION + onDeleteWithUndo() { + this.$emit('delete') + this.deleted = true + this.deletedCommentLimboStore.addId(this.id) + const timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT) + showUndo(t('comments', 'Comment deleted'), () => { + clearTimeout(timeOutDelete) + this.deleted = false + this.deletedCommentLimboStore.removeId(this.id) + }) + }, + async onDelete() { + try { + await DeleteComment(this.resourceType, this.resourceId, this.id) + logger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id }) + this.$emit('delete', this.id) + } catch (error) { + showError(t('comments', 'An error occurred while trying to delete the comment')) + console.error(error) + this.deleted = false + this.deletedCommentLimboStore.removeId(this.id) + } + }, + + // CREATION + async onNewComment(message) { + this.loading = true + try { + const newComment = await NewComment(this.resourceType, this.resourceId, message) + logger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment }) + this.$emit('new', newComment) + + // Clear old content + this.$emit('update:message', '') + this.localMessage = '' + } catch (error) { + showError(t('comments', 'An error occurred while trying to create the comment')) + console.error(error) + } finally { + this.loading = false + } + }, + }, +} diff --git a/apps/comments/src/mixins/CommentView.ts b/apps/comments/src/mixins/CommentView.ts new file mode 100644 index 00000000000..c6cb3aa9ee0 --- /dev/null +++ b/apps/comments/src/mixins/CommentView.ts @@ -0,0 +1,76 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import axios from '@nextcloud/axios' +import { getCurrentUser } from '@nextcloud/auth' +import { loadState } from '@nextcloud/initial-state' +import { generateOcsUrl } from '@nextcloud/router' +import { defineComponent } from 'vue' + +export default defineComponent({ + props: { + resourceId: { + type: Number, + required: true, + }, + resourceType: { + type: String, + default: 'files', + }, + }, + data() { + return { + editorData: { + actorDisplayName: getCurrentUser()!.displayName as string, + actorId: getCurrentUser()!.uid as string, + key: 'editor', + }, + userData: {}, + } + }, + methods: { + /** + * Autocomplete @mentions + * + * @param {string} search the query + * @param {Function} callback the callback to process the results with + */ + async autoComplete(search, callback) { + const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), { + params: { + search, + itemType: 'files', + itemId: this.resourceId, + sorter: 'commenters|share-recipients', + limit: loadState('comments', 'maxAutoCompleteResults'), + }, + }) + // Save user data so it can be used by the editor to replace mentions + data.ocs.data.forEach(user => { this.userData[user.id] = user }) + return callback(Object.values(this.userData)) + }, + + /** + * Make sure we have all mentions as Array of objects + * + * @param mentions the mentions list + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + genMentionsData(mentions: any[]): Record<string, object> { + Object.values(mentions) + .flat() + .forEach(mention => { + this.userData[mention.mentionId] = { + // TODO: support groups + icon: 'icon-user', + id: mention.mentionId, + label: mention.mentionDisplayName, + source: 'users', + primary: getCurrentUser()?.uid === mention.mentionId, + } + }) + return this.userData + }, + }, +}) diff --git a/apps/comments/src/services/CommentsInstance.js b/apps/comments/src/services/CommentsInstance.js new file mode 100644 index 00000000000..cc45d0cbea7 --- /dev/null +++ b/apps/comments/src/services/CommentsInstance.js @@ -0,0 +1,55 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getCSPNonce } from '@nextcloud/auth' +import { t, n } from '@nextcloud/l10n' +import { PiniaVuePlugin, createPinia } from 'pinia' +import Vue from 'vue' +import CommentsApp from '../views/Comments.vue' +import logger from '../logger.js' + +Vue.use(PiniaVuePlugin) +// eslint-disable-next-line camelcase +__webpack_nonce__ = getCSPNonce() + +// Add translates functions +Vue.mixin({ + data() { + return { + logger, + } + }, + methods: { + t, + n, + }, +}) + +export default class CommentInstance { + + /** + * Initialize a new Comments instance for the desired type + * + * @param {string} resourceType the comments endpoint type + * @param {object} options the vue options (propsData, parent, el...) + */ + constructor(resourceType = 'files', options = {}) { + const pinia = createPinia() + + // Merge options and set `resourceType` property + options = { + ...options, + propsData: { + ...(options.propsData ?? {}), + resourceType, + }, + pinia, + } + // Init Comments component + const View = Vue.extend(CommentsApp) + return new View(options) + } + +} diff --git a/apps/comments/src/services/DavClient.js b/apps/comments/src/services/DavClient.js new file mode 100644 index 00000000000..3e9a529283f --- /dev/null +++ b/apps/comments/src/services/DavClient.js @@ -0,0 +1,27 @@ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { createClient } from 'webdav' +import { getRootPath } from '../utils/davUtils.js' +import { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth' + +// init webdav client +const client = createClient(getRootPath()) + +// set CSRF token header +const setHeaders = (token) => { + client.setHeaders({ + // Add this so the server knows it is an request from the browser + 'X-Requested-With': 'XMLHttpRequest', + // Inject user auth + requesttoken: token ?? '', + }) +} + +// refresh headers when request token changes +onRequestTokenUpdate(setHeaders) +setHeaders(getRequestToken()) + +export default client diff --git a/apps/comments/src/services/DeleteComment.js b/apps/comments/src/services/DeleteComment.js new file mode 100644 index 00000000000..1ed63d7836a --- /dev/null +++ b/apps/comments/src/services/DeleteComment.js @@ -0,0 +1,20 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import client from './DavClient.js' + +/** + * Delete a comment + * + * @param {string} resourceType the resource type + * @param {number} resourceId the resource ID + * @param {number} commentId the comment iD + */ +export default async function(resourceType, resourceId, commentId) { + const commentPath = ['', resourceType, resourceId, commentId].join('/') + + // Fetch newly created comment data + await client.deleteFile(commentPath) +} diff --git a/apps/comments/src/services/EditComment.js b/apps/comments/src/services/EditComment.js new file mode 100644 index 00000000000..4ec33415a72 --- /dev/null +++ b/apps/comments/src/services/EditComment.js @@ -0,0 +1,32 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import client from './DavClient.js' + +/** + * Edit an existing comment + * + * @param {string} resourceType the resource type + * @param {number} resourceId the resource ID + * @param {number} commentId the comment iD + * @param {string} message the message content + */ +export default async function(resourceType, resourceId, commentId, message) { + const commentPath = ['', resourceType, resourceId, commentId].join('/') + + return await client.customRequest(commentPath, Object.assign({ + method: 'PROPPATCH', + data: `<?xml version="1.0"?> + <d:propertyupdate + xmlns:d="DAV:" + xmlns:oc="http://owncloud.org/ns"> + <d:set> + <d:prop> + <oc:message>${message}</oc:message> + </d:prop> + </d:set> + </d:propertyupdate>`, + })) +} diff --git a/apps/comments/src/services/GetComments.ts b/apps/comments/src/services/GetComments.ts new file mode 100644 index 00000000000..c42aa21d6cb --- /dev/null +++ b/apps/comments/src/services/GetComments.ts @@ -0,0 +1,67 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { parseXML, type DAVResult, type FileStat, type ResponseDataDetailed } from 'webdav' + +// https://github.com/perry-mitchell/webdav-client/issues/339 +import { processResponsePayload } from 'webdav/dist/node/response.js' +import { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js' +import client from './DavClient.js' + +export const DEFAULT_LIMIT = 20 + +/** + * Retrieve the comments list + * + * @param {object} data destructuring object + * @param {string} data.resourceType the resource type + * @param {number} data.resourceId the resource ID + * @param {object} [options] optional options for axios + * @param {number} [options.offset] the pagination offset + * @param {number} [options.limit] the pagination limit, defaults to 20 + * @param {Date} [options.datetime] optional date to query + * @return {{data: object[]}} the comments list + */ +export const getComments = async function({ resourceType, resourceId }, options: { offset: number, limit?: number, datetime?: Date }) { + const resourcePath = ['', resourceType, resourceId].join('/') + const datetime = options.datetime ? `<oc:datetime>${options.datetime.toISOString()}</oc:datetime>` : '' + const response = await client.customRequest(resourcePath, Object.assign({ + method: 'REPORT', + data: `<?xml version="1.0"?> + <oc:filter-comments + xmlns:d="DAV:" + xmlns:oc="http://owncloud.org/ns" + xmlns:nc="http://nextcloud.org/ns" + xmlns:ocs="http://open-collaboration-services.org/ns"> + <oc:limit>${options.limit ?? DEFAULT_LIMIT}</oc:limit> + <oc:offset>${options.offset || 0}</oc:offset> + ${datetime} + </oc:filter-comments>`, + }, options)) + + const responseData = await response.text() + const result = await parseXML(responseData) + const stat = getDirectoryFiles(result, true) + return processResponsePayload(response, stat, true) as ResponseDataDetailed<FileStat[]> +} + +// https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts +const getDirectoryFiles = function( + result: DAVResult, + isDetailed = false, +): Array<FileStat> { + // Extract the response items (directory contents) + const { + multistatus: { response: responseItems }, + } = result + + // Map all items to a consistent output structure (results) + return responseItems.map(item => { + // Each item should contain a stat object + const props = item.propstat!.prop! + + return prepareFileFromProps(props, props.id!.toString(), isDetailed) + }) +} diff --git a/apps/comments/src/services/NewComment.js b/apps/comments/src/services/NewComment.js new file mode 100644 index 00000000000..663b4d72e02 --- /dev/null +++ b/apps/comments/src/services/NewComment.js @@ -0,0 +1,50 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getCurrentUser } from '@nextcloud/auth' +import { getRootPath } from '../utils/davUtils.js' +import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js' +import axios from '@nextcloud/axios' +import client from './DavClient.js' + +/** + * Retrieve the comments list + * + * @param {string} resourceType the resource type + * @param {number} resourceId the resource ID + * @param {string} message the message + * @return {object} the new comment + */ +export default async function(resourceType, resourceId, message) { + const resourcePath = ['', resourceType, resourceId].join('/') + + const response = await axios.post(getRootPath() + resourcePath, { + actorDisplayName: getCurrentUser().displayName, + actorId: getCurrentUser().uid, + actorType: 'users', + creationDateTime: (new Date()).toUTCString(), + message, + objectType: resourceType, + verb: 'comment', + }) + + // Retrieve comment id from resource location + const commentId = parseInt(response.headers['content-location'].split('/').pop()) + const commentPath = resourcePath + '/' + commentId + + // Fetch newly created comment data + const comment = await client.stat(commentPath, { + details: true, + }) + + const props = comment.data.props + // Decode twice to handle potentially double-encoded entities + // FIXME Remove this once https://github.com/nextcloud/server/issues/29306 + // is resolved + props.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2) + props.message = decodeHtmlEntities(props.message, 2) + + return comment.data +} diff --git a/apps/comments/src/services/ReadComments.ts b/apps/comments/src/services/ReadComments.ts new file mode 100644 index 00000000000..73682e21d95 --- /dev/null +++ b/apps/comments/src/services/ReadComments.ts @@ -0,0 +1,38 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import client from './DavClient.js' + +import type { Response } from 'webdav' + +/** + * Mark comments older than the date timestamp as read + * + * @param resourceType the resource type + * @param resourceId the resource ID + * @param date the date object + */ +export const markCommentsAsRead = ( + resourceType: string, + resourceId: number, + date: Date, +): Promise<Response> => { + const resourcePath = ['', resourceType, resourceId].join('/') + const readMarker = date.toUTCString() + + return client.customRequest(resourcePath, { + method: 'PROPPATCH', + data: `<?xml version="1.0"?> + <d:propertyupdate + xmlns:d="DAV:" + xmlns:oc="http://owncloud.org/ns"> + <d:set> + <d:prop> + <oc:readMarker>${readMarker}</oc:readMarker> + </d:prop> + </d:set> + </d:propertyupdate>`, + }) +} diff --git a/apps/comments/src/store/deletedCommentLimbo.js b/apps/comments/src/store/deletedCommentLimbo.js new file mode 100644 index 00000000000..3e511addebb --- /dev/null +++ b/apps/comments/src/store/deletedCommentLimbo.js @@ -0,0 +1,28 @@ +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { defineStore } from 'pinia' + +export const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', { + state: () => ({ + idsInLimbo: [], + }), + actions: { + addId(id) { + this.idsInLimbo.push(id) + }, + + removeId(id) { + const index = this.idsInLimbo.indexOf(id) + if (index > -1) { + this.idsInLimbo.splice(index, 1) + } + }, + + checkForId(id) { + this.idsInLimbo.includes(id) + }, + }, +}) diff --git a/apps/comments/src/utils/cancelableRequest.js b/apps/comments/src/utils/cancelableRequest.js new file mode 100644 index 00000000000..c2d380c80f9 --- /dev/null +++ b/apps/comments/src/utils/cancelableRequest.js @@ -0,0 +1,36 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/** + * Creates a cancelable axios 'request object'. + * + * @param {Function} request the axios promise request + * @return {object} + */ +const cancelableRequest = function(request) { + const controller = new AbortController() + const signal = controller.signal + + /** + * Execute the request + * + * @param {string} url the url to send the request to + * @param {object} [options] optional config for the request + */ + const fetch = async function(url, options) { + const response = await request( + url, + Object.assign({ signal }, options), + ) + return response + } + + return { + request: fetch, + abort: () => controller.abort(), + } +} + +export default cancelableRequest diff --git a/apps/comments/src/utils/davUtils.js b/apps/comments/src/utils/davUtils.js new file mode 100644 index 00000000000..33efc8e7d10 --- /dev/null +++ b/apps/comments/src/utils/davUtils.js @@ -0,0 +1,12 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { generateRemoteUrl } from '@nextcloud/router' + +const getRootPath = function() { + return generateRemoteUrl('dav/comments') +} + +export { getRootPath } diff --git a/apps/comments/src/utils/decodeHtmlEntities.js b/apps/comments/src/utils/decodeHtmlEntities.js new file mode 100644 index 00000000000..4c492954256 --- /dev/null +++ b/apps/comments/src/utils/decodeHtmlEntities.js @@ -0,0 +1,17 @@ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/** + * @param {any} value - + * @param {any} passes - + */ +export function decodeHtmlEntities(value, passes = 1) { + const parser = new DOMParser() + let decoded = value + for (let i = 0; i < passes; i++) { + decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent + } + return decoded +} diff --git a/apps/comments/src/views/ActivityCommentAction.vue b/apps/comments/src/views/ActivityCommentAction.vue new file mode 100644 index 00000000000..f9a9a97796f --- /dev/null +++ b/apps/comments/src/views/ActivityCommentAction.vue @@ -0,0 +1,54 @@ +<!-- + - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <Comment v-bind="editorData" + :auto-complete="autoComplete" + :resource-type="resourceType" + :editor="true" + :user-data="userData" + :resource-id="resourceId" + class="comments-action" + @new="onNewComment" /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue' +import Comment from '../components/Comment.vue' +import CommentView from '../mixins/CommentView.js' +import logger from '../logger' +import { showError } from '@nextcloud/dialogs' +import { translate as t } from '@nextcloud/l10n' + +export default defineComponent({ + components: { + Comment, + }, + mixins: [CommentView], + props: { + reloadCallback: { + type: Function, + required: true, + }, + }, + methods: { + onNewComment() { + try { + // just force reload + this.reloadCallback() + } catch (e) { + showError(t('comments', 'Could not reload comments')) + logger.debug(e) + } + }, + }, +}) +</script> + +<style scoped> +.comments-action { + padding: 0; +} +</style> diff --git a/apps/comments/src/views/ActivityCommentEntry.vue b/apps/comments/src/views/ActivityCommentEntry.vue new file mode 100644 index 00000000000..bbfe530b2e3 --- /dev/null +++ b/apps/comments/src/views/ActivityCommentEntry.vue @@ -0,0 +1,71 @@ +<!-- + - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <Comment ref="comment" + tag="li" + v-bind="comment.props" + :auto-complete="autoComplete" + :resource-type="resourceType" + :message="commentMessage" + :resource-id="resourceId" + :user-data="genMentionsData(comment.props.mentions)" + class="comments-activity" + @delete="reloadCallback()" /> +</template> + +<script lang="ts"> +import type { PropType } from 'vue' +import { translate as t } from '@nextcloud/l10n' + +import Comment from '../components/Comment.vue' +import CommentView from '../mixins/CommentView' + +export default { + name: 'ActivityCommentEntry', + + components: { + Comment, + }, + + mixins: [CommentView], + props: { + comment: { + type: Object, + required: true, + }, + reloadCallback: { + type: Function as PropType<() => void>, + required: true, + }, + }, + + data() { + return { + commentMessage: '', + } + }, + + watch: { + comment() { + this.commentMessage = this.comment.props.message + }, + }, + + mounted() { + this.commentMessage = this.comment.props.message + }, + + methods: { + t, + }, +} +</script> + +<style scoped> +.comments-activity { + padding: 0; +} +</style> diff --git a/apps/comments/src/views/Comments.vue b/apps/comments/src/views/Comments.vue new file mode 100644 index 00000000000..657af888a12 --- /dev/null +++ b/apps/comments/src/views/Comments.vue @@ -0,0 +1,279 @@ +<!-- + - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <div v-element-visibility="onVisibilityChange" + class="comments" + :class="{ 'icon-loading': isFirstLoading }"> + <!-- Editor --> + <Comment v-bind="editorData" + :auto-complete="autoComplete" + :resource-type="resourceType" + :editor="true" + :user-data="userData" + :resource-id="currentResourceId" + class="comments__writer" + @new="onNewComment" /> + + <template v-if="!isFirstLoading"> + <NcEmptyContent v-if="!hasComments && done" + class="comments__empty" + :name="t('comments', 'No comments yet, start the conversation!')"> + <template #icon> + <IconMessageReplyTextOutline /> + </template> + </NcEmptyContent> + <ul v-else> + <!-- Comments --> + <Comment v-for="comment in comments" + :key="comment.props.id" + tag="li" + v-bind="comment.props" + :auto-complete="autoComplete" + :resource-type="resourceType" + :message.sync="comment.props.message" + :resource-id="currentResourceId" + :user-data="genMentionsData(comment.props.mentions)" + class="comments__list" + @delete="onDelete" /> + </ul> + + <!-- Loading more message --> + <div v-if="loading && !isFirstLoading" class="comments__info icon-loading" /> + + <div v-else-if="hasComments && done" class="comments__info"> + {{ t('comments', 'No more messages') }} + </div> + + <!-- Error message --> + <template v-else-if="error"> + <NcEmptyContent class="comments__error" :name="error"> + <template #icon> + <IconAlertCircleOutline /> + </template> + </NcEmptyContent> + <NcButton class="comments__retry" @click="getComments"> + <template #icon> + <IconRefresh /> + </template> + {{ t('comments', 'Retry') }} + </NcButton> + </template> + </template> + </div> +</template> + +<script> +import { showError } from '@nextcloud/dialogs' +import { translate as t } from '@nextcloud/l10n' +import { vElementVisibility as elementVisibility } from '@vueuse/components' + +import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' +import NcButton from '@nextcloud/vue/components/NcButton' +import IconRefresh from 'vue-material-design-icons/Refresh.vue' +import IconMessageReplyTextOutline from 'vue-material-design-icons/MessageReplyTextOutline.vue' +import IconAlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue' + +import Comment from '../components/Comment.vue' +import CommentView from '../mixins/CommentView' +import cancelableRequest from '../utils/cancelableRequest.js' +import { getComments, DEFAULT_LIMIT } from '../services/GetComments.ts' +import { markCommentsAsRead } from '../services/ReadComments.ts' + +export default { + name: 'Comments', + + components: { + Comment, + NcEmptyContent, + NcButton, + IconRefresh, + IconMessageReplyTextOutline, + IconAlertCircleOutline, + }, + + directives: { + elementVisibility, + }, + + mixins: [CommentView], + + data() { + return { + error: '', + loading: false, + done: false, + + currentResourceId: this.resourceId, + offset: 0, + comments: [], + + cancelRequest: () => {}, + + Comment, + userData: {}, + } + }, + + computed: { + hasComments() { + return this.comments.length > 0 + }, + isFirstLoading() { + return this.loading && this.offset === 0 + }, + }, + + watch: { + resourceId() { + this.currentResourceId = this.resourceId + }, + }, + + methods: { + t, + + async onVisibilityChange(isVisible) { + if (isVisible) { + try { + await markCommentsAsRead(this.resourceType, this.currentResourceId, new Date()) + } catch (e) { + showError(e.message || t('comments', 'Failed to mark comments as read')) + } + } + }, + + /** + * Update current resourceId and fetch new data + * + * @param {number} resourceId the current resourceId (fileId...) + */ + async update(resourceId) { + this.currentResourceId = resourceId + this.resetState() + this.getComments() + }, + + /** + * Ran when the bottom of the tab is reached + */ + onScrollBottomReached() { + /** + * Do not fetch more if we: + * - are showing an error + * - already fetched everything + * - are currently loading + */ + if (this.error || this.done || this.loading) { + return + } + this.getComments() + }, + + /** + * Get the existing shares infos + */ + async getComments() { + // Cancel any ongoing request + this.cancelRequest('cancel') + + try { + this.loading = true + this.error = '' + + // Init cancellable request + const { request, abort } = cancelableRequest(getComments) + this.cancelRequest = abort + + // Fetch comments + const { data: comments } = await request({ + resourceType: this.resourceType, + resourceId: this.currentResourceId, + }, { offset: this.offset }) || { data: [] } + + this.logger.debug(`Processed ${comments.length} comments`, { comments }) + + // We received less than the requested amount, + // we're done fetching comments + if (comments.length < DEFAULT_LIMIT) { + this.done = true + } + + // Insert results + this.comments.push(...comments) + + // Increase offset for next fetch + this.offset += DEFAULT_LIMIT + } catch (error) { + if (error.message === 'cancel') { + return + } + this.error = t('comments', 'Unable to load the comments list') + console.error('Error loading the comments list', error) + } finally { + this.loading = false + } + }, + + /** + * Add newly created comment to the list + * + * @param {object} comment the new comment + */ + onNewComment(comment) { + this.comments.unshift(comment) + }, + + /** + * Remove deleted comment from the list + * + * @param {number} id the deleted comment + */ + onDelete(id) { + const index = this.comments.findIndex(comment => comment.props.id === id) + if (index > -1) { + this.comments.splice(index, 1) + } else { + console.error('Could not find the deleted comment in the list', id) + } + }, + + /** + * Reset the current view to its default state + */ + resetState() { + this.error = '' + this.loading = false + this.done = false + this.offset = 0 + this.comments = [] + }, + }, +} +</script> + +<style lang="scss" scoped> +.comments { + min-height: 100%; + display: flex; + flex-direction: column; + + &__empty, + &__error { + flex: 1 0; + } + + &__retry { + margin: 0 auto; + } + + &__info { + height: 60px; + color: var(--color-text-maxcontrast); + text-align: center; + line-height: 60px; + } +} +</style> diff --git a/apps/comments/tests/Unit/Activity/ListenerTest.php b/apps/comments/tests/Unit/Activity/ListenerTest.php new file mode 100644 index 00000000000..675a28a16b1 --- /dev/null +++ b/apps/comments/tests/Unit/Activity/ListenerTest.php @@ -0,0 +1,159 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Comments\Tests\Unit\Activity; + +use OCA\Comments\Activity\Listener; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\App\IAppManager; +use OCP\Comments\CommentsEvent; +use OCP\Comments\IComment; +use OCP\Files\Config\ICachedMountFileInfo; +use OCP\Files\Config\IMountProviderCollection; +use OCP\Files\Config\IUserMountCache; +use OCP\Files\Folder; +use OCP\Files\IRootFolder; +use OCP\Files\Node; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Share\IShareHelper; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class ListenerTest extends TestCase { + protected IManager&MockObject $activityManager; + protected IUserSession&MockObject $session; + protected IAppManager&MockObject $appManager; + protected IMountProviderCollection&MockObject $mountProviderCollection; + protected IRootFolder&MockObject $rootFolder; + protected IShareHelper&MockObject $shareHelper; + protected Listener $listener; + + protected function setUp(): void { + parent::setUp(); + + $this->activityManager = $this->createMock(IManager::class); + $this->session = $this->createMock(IUserSession::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->mountProviderCollection = $this->createMock(IMountProviderCollection::class); + $this->rootFolder = $this->createMock(IRootFolder::class); + $this->shareHelper = $this->createMock(IShareHelper::class); + + $this->listener = new Listener( + $this->activityManager, + $this->session, + $this->appManager, + $this->mountProviderCollection, + $this->rootFolder, + $this->shareHelper + ); + } + + public function testCommentEvent(): void { + $this->appManager->expects($this->any()) + ->method('isEnabledForAnyone') + ->with('activity') + ->willReturn(true); + + $comment = $this->createMock(IComment::class); + $comment->expects($this->any()) + ->method('getObjectType') + ->willReturn('files'); + + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); + $event->expects($this->any()) + ->method('getComment') + ->willReturn($comment); + $event->expects($this->any()) + ->method('getEvent') + ->willReturn(CommentsEvent::EVENT_ADD); + + /** @var IUser|MockObject $ownerUser */ + $ownerUser = $this->createMock(IUser::class); + $ownerUser->expects($this->any()) + ->method('getUID') + ->willReturn('937393'); + + /** @var MockObject $mount */ + $mount = $this->createMock(ICachedMountFileInfo::class); + $mount->expects($this->any()) + ->method('getUser') + ->willReturn($ownerUser); // perhaps not the right user, but does not matter in this scenario + + $mounts = [ $mount, $mount ]; // to make sure duplicates are dealt with + + $userMountCache = $this->createMock(IUserMountCache::class); + $userMountCache->expects($this->any()) + ->method('getMountsForFileId') + ->willReturn($mounts); + + $this->mountProviderCollection->expects($this->any()) + ->method('getMountCache') + ->willReturn($userMountCache); + + $node = $this->createMock(Node::class); + $nodes = [ $node ]; + + $ownerFolder = $this->createMock(Folder::class); + $ownerFolder->expects($this->any()) + ->method('getById') + ->willReturn($nodes); + + $this->rootFolder->expects($this->any()) + ->method('getUserFolder') + ->willReturn($ownerFolder); + + $al = [ 'users' => [ + '873304' => 'i/got/it/here', + '254342' => 'there/i/have/it', + 'sandra' => 'and/here/i/placed/it' + ]]; + $this->shareHelper->expects($this->any()) + ->method('getPathsForAccessList') + ->willReturn($al); + + $this->session->expects($this->any()) + ->method('getUser') + ->willReturn($ownerUser); + + /** @var MockObject $activity */ + $activity = $this->createMock(IEvent::class); + $activity->expects($this->exactly(count($al['users']))) + ->method('setAffectedUser'); + $activity->expects($this->once()) + ->method('setApp') + ->with('comments') + ->willReturnSelf(); + $activity->expects($this->once()) + ->method('setType') + ->with('comments') + ->willReturnSelf(); + $activity->expects($this->once()) + ->method('setAuthor') + ->with($ownerUser->getUID()) + ->willReturnSelf(); + $activity->expects($this->once()) + ->method('setObject') + ->with('files', $this->anything()) + ->willReturnSelf(); + $activity->expects($this->once()) + ->method('setMessage') + ->with('add_comment_message', $this->anything()) + ->willReturnSelf(); + + $this->activityManager->expects($this->once()) + ->method('generateEvent') + ->willReturn($activity); + $this->activityManager->expects($this->exactly(count($al['users']))) + ->method('publish'); + + $this->listener->commentEvent($event); + } +} diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php index 6ff3bc54b0d..119db5333b5 100644 --- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php +++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php @@ -1,30 +1,24 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.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\Comments\Tests\Unit\AppInfo; +use OCA\Comments\Activity\Filter; +use OCA\Comments\Activity\Listener; +use OCA\Comments\Activity\Provider; +use OCA\Comments\Activity\Setting; use OCA\Comments\AppInfo\Application; +use OCA\Comments\Controller\NotificationsController; use OCA\Comments\Notification\Notifier; +use OCP\IUserManager; +use OCP\IUserSession; +use OCP\Server; use Test\TestCase; /** @@ -35,36 +29,33 @@ use Test\TestCase; * @package OCA\Comments\Tests\Unit\AppInfo */ class ApplicationTest extends TestCase { - protected function setUp() { + protected function setUp(): void { parent::setUp(); - \OC::$server->getUserManager()->createUser('dummy', '456'); - \OC::$server->getUserSession()->setUser(\OC::$server->getUserManager()->get('dummy')); + Server::get(IUserManager::class)->createUser('dummy', '456'); + Server::get(IUserSession::class)->setUser(Server::get(IUserManager::class)->get('dummy')); } - protected function tearDown() { - \OC::$server->getUserManager()->get('dummy')->delete(); + protected function tearDown(): void { + Server::get(IUserManager::class)->get('dummy')->delete(); parent::tearDown(); } - public function test() { + public function test(): void { $app = new Application(); $c = $app->getContainer(); - // assert service instances in the container are properly setup - $s = $c->query('NotificationsController'); - $this->assertInstanceOf('OCA\Comments\Controller\Notifications', $s); - $services = [ - 'OCA\Comments\Activity\Filter', - 'OCA\Comments\Activity\Listener', - 'OCA\Comments\Activity\Provider', - 'OCA\Comments\Activity\Setting', - 'OCA\Comments\Notification\Listener', + NotificationsController::class, + Filter::class, + Listener::class, + Provider::class, + Setting::class, + \OCA\Comments\Notification\Listener::class, Notifier::class, ]; - foreach($services as $service) { - $s = $c->query($service); + foreach ($services as $service) { + $s = $c->get($service); $this->assertInstanceOf($service, $s); } } diff --git a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php index 0cc3e3d4b61..4d3392a562d 100644 --- a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php +++ b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php @@ -1,42 +1,22 @@ <?php + /** - * @copyright Copyright (c) 2017 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: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Tests\Unit\Collaboration; - use OCA\Comments\Collaboration\CommentersSorter; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; -use OCP\IConfig; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class CommentersSorterTest extends TestCase { - /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $commentsManager; - /** @var CommentersSorter */ - protected $sorter; + protected ICommentsManager&MockObject $commentsManager; + protected CommentersSorter $sorter; - public function setUp() { + protected function setUp(): void { parent::setUp(); $this->commentsManager = $this->createMock(ICommentsManager::class); @@ -45,14 +25,14 @@ class CommentersSorterTest extends TestCase { } /** - * @dataProvider sortDataProvider * @param $data */ - public function testSort($data) { + #[\PHPUnit\Framework\Attributes\DataProvider('sortDataProvider')] + public function testSort($data): void { $commentMocks = []; - foreach($data['actors'] as $actorType => $actors) { + foreach ($data['actors'] as $actorType => $actors) { foreach ($actors as $actorId => $noOfComments) { - for($i=0;$i<$noOfComments;$i++) { + for ($i = 0;$i < $noOfComments;$i++) { $mock = $this->createMock(IComment::class); $mock->expects($this->atLeastOnce()) ->method('getActorType') @@ -75,38 +55,36 @@ class CommentersSorterTest extends TestCase { $this->assertEquals($data['expected'], $workArray); } - public function sortDataProvider() { + public static function sortDataProvider(): array { return [[ [ #1 – sort properly and otherwise keep existing order 'actors' => ['users' => ['celia' => 3, 'darius' => 7, 'faruk' => 5, 'gail' => 5], 'bots' => ['r2-d2' => 8]], 'input' => [ - 'users' => - [ - ['value' => ['shareWith' => 'alice']], - ['value' => ['shareWith' => 'bob']], - ['value' => ['shareWith' => 'celia']], - ['value' => ['shareWith' => 'darius']], - ['value' => ['shareWith' => 'elena']], - ['value' => ['shareWith' => 'faruk']], - ['value' => ['shareWith' => 'gail']], - ], + 'users' => [ + ['value' => ['shareWith' => 'alice']], + ['value' => ['shareWith' => 'bob']], + ['value' => ['shareWith' => 'celia']], + ['value' => ['shareWith' => 'darius']], + ['value' => ['shareWith' => 'elena']], + ['value' => ['shareWith' => 'faruk']], + ['value' => ['shareWith' => 'gail']], + ], 'bots' => [ ['value' => ['shareWith' => 'c-3po']], ['value' => ['shareWith' => 'r2-d2']], ] ], 'expected' => [ - 'users' => - [ - ['value' => ['shareWith' => 'darius']], - ['value' => ['shareWith' => 'faruk']], - ['value' => ['shareWith' => 'gail']], - ['value' => ['shareWith' => 'celia']], - ['value' => ['shareWith' => 'alice']], - ['value' => ['shareWith' => 'bob']], - ['value' => ['shareWith' => 'elena']], - ], + 'users' => [ + ['value' => ['shareWith' => 'darius']], + ['value' => ['shareWith' => 'faruk']], + ['value' => ['shareWith' => 'gail']], + ['value' => ['shareWith' => 'celia']], + ['value' => ['shareWith' => 'alice']], + ['value' => ['shareWith' => 'bob']], + ['value' => ['shareWith' => 'elena']], + ], 'bots' => [ ['value' => ['shareWith' => 'r2-d2']], ['value' => ['shareWith' => 'c-3po']], @@ -117,32 +95,30 @@ class CommentersSorterTest extends TestCase { #2 – no commentors, input equals output 'actors' => [], 'input' => [ - 'users' => - [ - ['value' => ['shareWith' => 'alice']], - ['value' => ['shareWith' => 'bob']], - ['value' => ['shareWith' => 'celia']], - ['value' => ['shareWith' => 'darius']], - ['value' => ['shareWith' => 'elena']], - ['value' => ['shareWith' => 'faruk']], - ['value' => ['shareWith' => 'gail']], - ], + 'users' => [ + ['value' => ['shareWith' => 'alice']], + ['value' => ['shareWith' => 'bob']], + ['value' => ['shareWith' => 'celia']], + ['value' => ['shareWith' => 'darius']], + ['value' => ['shareWith' => 'elena']], + ['value' => ['shareWith' => 'faruk']], + ['value' => ['shareWith' => 'gail']], + ], 'bots' => [ ['value' => ['shareWith' => 'c-3po']], ['value' => ['shareWith' => 'r2-d2']], ] ], 'expected' => [ - 'users' => - [ - ['value' => ['shareWith' => 'alice']], - ['value' => ['shareWith' => 'bob']], - ['value' => ['shareWith' => 'celia']], - ['value' => ['shareWith' => 'darius']], - ['value' => ['shareWith' => 'elena']], - ['value' => ['shareWith' => 'faruk']], - ['value' => ['shareWith' => 'gail']], - ], + 'users' => [ + ['value' => ['shareWith' => 'alice']], + ['value' => ['shareWith' => 'bob']], + ['value' => ['shareWith' => 'celia']], + ['value' => ['shareWith' => 'darius']], + ['value' => ['shareWith' => 'elena']], + ['value' => ['shareWith' => 'faruk']], + ['value' => ['shareWith' => 'gail']], + ], 'bots' => [ ['value' => ['shareWith' => 'c-3po']], ['value' => ['shareWith' => 'r2-d2']], diff --git a/apps/comments/tests/Unit/Controller/NotificationsTest.php b/apps/comments/tests/Unit/Controller/NotificationsTest.php index eb29947342b..04490ca63e8 100644 --- a/apps/comments/tests/Unit/Controller/NotificationsTest.php +++ b/apps/comments/tests/Unit/Controller/NotificationsTest.php @@ -1,33 +1,22 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Morris Jobke <hey@morrisjobke.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: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ - namespace OCA\Comments\Tests\Unit\Controller; -use OCA\Comments\Controller\Notifications; +use OCA\Comments\Controller\NotificationsController; +use OCP\AppFramework\Http\NotFoundResponse; +use OCP\AppFramework\Http\RedirectResponse; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; use OCP\Files\Folder; +use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\IRequest; use OCP\IURLGenerator; @@ -35,91 +24,134 @@ use OCP\IUser; use OCP\IUserSession; use OCP\Notification\IManager; use OCP\Notification\INotification; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class NotificationsTest extends TestCase { - /** @var \OCA\Comments\Controller\Notifications */ - protected $notificationsController; - - /** @var \OCP\Comments\ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $commentsManager; - - /** @var \OCP\Files\Folder|\PHPUnit_Framework_MockObject_MockObject */ - protected $folder; - - /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject */ - protected $session; - - /** @var \OCP\Notification\IManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $notificationManager; - - protected function setUp() { + protected ICommentsManager&MockObject $commentsManager; + protected IRootFolder&MockObject $rootFolder; + protected IUserSession&MockObject $session; + protected IManager&MockObject $notificationManager; + protected IURLGenerator&MockObject $urlGenerator; + protected NotificationsController $notificationsController; + + protected function setUp(): void { parent::setUp(); - $this->commentsManager = $this->getMockBuilder(ICommentsManager::class)->getMock(); - $this->folder = $this->getMockBuilder(Folder::class)->getMock(); - $this->session = $this->getMockBuilder(IUserSession::class)->getMock(); - $this->notificationManager = $this->getMockBuilder(IManager::class)->getMock(); + $this->commentsManager = $this->createMock(ICommentsManager::class); + $this->rootFolder = $this->createMock(IRootFolder::class); + $this->session = $this->createMock(IUserSession::class); + $this->notificationManager = $this->createMock(IManager::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->notificationsController = new Notifications( + $this->notificationsController = new NotificationsController( 'comments', - $this->getMockBuilder(IRequest::class)->getMock(), + $this->createMock(IRequest::class), $this->commentsManager, - $this->folder, - $this->getMockBuilder(IURLGenerator::class)->getMock(), + $this->rootFolder, + $this->urlGenerator, $this->notificationManager, $this->session ); } - - public function testViewSuccess() { - $comment = $this->getMockBuilder(IComment::class)->getMock(); + + public function testViewGuestRedirect(): void { + $this->commentsManager->expects($this->never()) + ->method('get'); + + $this->rootFolder->expects($this->never()) + ->method('getUserFolder'); + + $this->session->expects($this->once()) + ->method('getUser') + ->willReturn(null); + + $this->notificationManager->expects($this->never()) + ->method('createNotification'); + $this->notificationManager->expects($this->never()) + ->method('markProcessed'); + + $this->urlGenerator->expects($this->exactly(2)) + ->method('linkToRoute') + ->willReturnMap([ + ['comments.Notifications.view', ['id' => '42'], 'link-to-comment'], + ['core.login.showLoginForm', ['redirect_url' => 'link-to-comment'], 'link-to-login'], + ]); + + /** @var RedirectResponse $response */ + $response = $this->notificationsController->view('42'); + $this->assertInstanceOf(RedirectResponse::class, $response); + $this->assertSame('link-to-login', $response->getRedirectURL()); + } + + public function testViewSuccess(): void { + $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') - ->will($this->returnValue('files')); + ->willReturn('files'); + $comment->expects($this->any()) + ->method('getId') + ->willReturn('1234'); $this->commentsManager->expects($this->any()) ->method('get') ->with('42') - ->will($this->returnValue($comment)); + ->willReturn($comment); + + $file = $this->createMock(Node::class); + $folder = $this->createMock(Folder::class); + $user = $this->createMock(IUser::class); - $file = $this->getMockBuilder(Node::class)->getMock(); + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->willReturn($folder); - $this->folder->expects($this->once()) + $folder->expects($this->once()) ->method('getById') - ->will($this->returnValue([$file])); + ->willReturn([$file]); $this->session->expects($this->once()) ->method('getUser') - ->will($this->returnValue($this->getMockBuilder(IUser::class)->getMock())); + ->willReturn($user); - $notification = $this->getMockBuilder(INotification::class)->getMock(); + $user->expects($this->any()) + ->method('getUID') + ->willReturn('user'); + + $notification = $this->createMock(INotification::class); $notification->expects($this->any()) ->method($this->anything()) - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->once()) ->method('createNotification') - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->once()) ->method('markProcessed') ->with($notification); $response = $this->notificationsController->view('42'); - $this->assertInstanceOf('\OCP\AppFramework\Http\RedirectResponse', $response); + $this->assertInstanceOf(RedirectResponse::class, $response); } - public function testViewInvalidComment() { + public function testViewInvalidComment(): void { $this->commentsManager->expects($this->any()) ->method('get') ->with('42') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); - $this->folder->expects($this->never()) - ->method('getById'); + $this->rootFolder->expects($this->never()) + ->method('getUserFolder'); - $this->session->expects($this->never()) - ->method('getUser'); + $user = $this->createMock(IUser::class); + + $this->session->expects($this->once()) + ->method('getUser') + ->willReturn($user); + + $user->expects($this->any()) + ->method('getUID') + ->willReturn('user'); $this->notificationManager->expects($this->never()) ->method('createNotification'); @@ -127,41 +159,56 @@ class NotificationsTest extends TestCase { ->method('markProcessed'); $response = $this->notificationsController->view('42'); - $this->assertInstanceOf('\OCP\AppFramework\Http\NotFoundResponse', $response); + $this->assertInstanceOf(NotFoundResponse::class, $response); } - public function testViewNoFile() { - $comment = $this->getMockBuilder(IComment::class)->getMock(); + public function testViewNoFile(): void { + $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') - ->will($this->returnValue('files')); + ->willReturn('files'); + $comment->expects($this->any()) + ->method('getId') + ->willReturn('1234'); $this->commentsManager->expects($this->any()) ->method('get') ->with('42') - ->will($this->returnValue($comment)); + ->willReturn($comment); - $this->folder->expects($this->once()) + $folder = $this->createMock(Folder::class); + + $this->rootFolder->expects($this->once()) + ->method('getUserFolder') + ->willReturn($folder); + + $folder->expects($this->once()) ->method('getById') - ->will($this->returnValue([])); + ->willReturn([]); + + $user = $this->createMock(IUser::class); $this->session->expects($this->once()) ->method('getUser') - ->will($this->returnValue($this->getMockBuilder(IUser::class)->getMock())); + ->willReturn($user); + + $user->expects($this->any()) + ->method('getUID') + ->willReturn('user'); - $notification = $this->getMockBuilder(INotification::class)->getMock(); + $notification = $this->createMock(INotification::class); $notification->expects($this->any()) ->method($this->anything()) - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->once()) ->method('createNotification') - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->once()) ->method('markProcessed') ->with($notification); $response = $this->notificationsController->view('42'); - $this->assertInstanceOf('\OCP\AppFramework\Http\NotFoundResponse', $response); + $this->assertInstanceOf(NotFoundResponse::class, $response); } } diff --git a/apps/comments/tests/Unit/EventHandlerTest.php b/apps/comments/tests/Unit/EventHandlerTest.php index bb714993f7a..9d26f828d70 100644 --- a/apps/comments/tests/Unit/EventHandlerTest.php +++ b/apps/comments/tests/Unit/EventHandlerTest.php @@ -1,70 +1,44 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016 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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Tests\Unit\Notification; -use OCA\Comments\EventHandler; -use OCP\Comments\CommentsEvent; -use OCP\Comments\IComment; use OCA\Comments\Activity\Listener as ActivityListener; +use OCA\Comments\Listener\CommentsEventListener; use OCA\Comments\Notification\Listener as NotificationListener; +use OCP\Comments\CommentsEvent; +use OCP\Comments\IComment; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class EventHandlerTest extends TestCase { - /** @var EventHandler */ - protected $eventHandler; - - /** @var ActivityListener|\PHPUnit_Framework_MockObject_MockObject */ - protected $activityListener; - - /** @var NotificationListener|\PHPUnit_Framework_MockObject_MockObject */ - protected $notificationListener; + protected ActivityListener&MockObject $activityListener; + protected NotificationListener&MockObject $notificationListener; + protected CommentsEventListener $eventHandler; - protected function setUp() { + protected function setUp(): void { parent::setUp(); - $this->activityListener = $this->getMockBuilder(ActivityListener::class) - ->disableOriginalConstructor() - ->getMock(); + $this->activityListener = $this->createMock(ActivityListener::class); + $this->notificationListener = $this->createMock(NotificationListener::class); - $this->notificationListener = $this->getMockBuilder(NotificationListener::class) - ->disableOriginalConstructor() - ->getMock(); - - $this->eventHandler = new EventHandler($this->activityListener, $this->notificationListener); + $this->eventHandler = new CommentsEventListener($this->activityListener, $this->notificationListener); } - public function testNotFiles() { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); + public function testNotFiles(): void { + /** @var IComment|MockObject $comment */ + $comment = $this->createMock(IComment::class); $comment->expects($this->once()) ->method('getObjectType') ->willReturn('smiles'); - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); $event->expects($this->once()) ->method('getComment') ->willReturn($comment); @@ -74,7 +48,7 @@ class EventHandlerTest extends TestCase { $this->eventHandler->handle($event); } - public function handledProvider() { + public static function handledProvider(): array { return [ [CommentsEvent::EVENT_DELETE], [CommentsEvent::EVENT_UPDATE], @@ -83,21 +57,16 @@ class EventHandlerTest extends TestCase { ]; } - /** - * @dataProvider handledProvider - * @param string $eventType - */ - public function testHandled($eventType) { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); + #[\PHPUnit\Framework\Attributes\DataProvider('handledProvider')] + public function testHandled(string $eventType): void { + /** @var IComment|MockObject $comment */ + $comment = $this->createMock(IComment::class); $comment->expects($this->once()) ->method('getObjectType') ->willReturn('files'); - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); $event->expects($this->atLeastOnce()) ->method('getComment') ->willReturn($comment); @@ -115,5 +84,4 @@ class EventHandlerTest extends TestCase { $this->eventHandler->handle($event); } - } diff --git a/apps/comments/tests/Unit/JSSettingsHelperTest.php b/apps/comments/tests/Unit/JSSettingsHelperTest.php deleted file mode 100644 index ad2f34c7aab..00000000000 --- a/apps/comments/tests/Unit/JSSettingsHelperTest.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2017 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/>. - * - */ - -namespace OCA\Comments\Tests\Unit; - -use OCA\Comments\JSSettingsHelper; -use OCP\IConfig; -use OCP\IServerContainer; -use Test\TestCase; - -class JSSettingsHelperTest extends TestCase { - /** @var IServerContainer|\PHPUnit_Framework_MockObject_MockObject */ - protected $c; - /** @var JSSettingsHelper */ - protected $helper; - - public function setUp() { - parent::setUp(); - - $this->c = $this->createMock(IServerContainer::class); - - $this->helper = new JSSettingsHelper($this->c); - } - - public function testExtend() { - $config = $this->createMock(IConfig::class); - $config->expects($this->once()) - ->method('getAppValue') - ->with('comments', 'maxAutoCompleteResults') - ->willReturn(13); - - $this->c->expects($this->once()) - ->method('getConfig') - ->willReturn($config); - - $config = [ - 'oc_appconfig' => json_encode([ - 'anotherapp' => [ - 'foo' => 'bar', - 'foobar' => true - ] - ]) - ]; - - $this->helper->extend(['array' => &$config]); - - $appConfig = json_decode($config['oc_appconfig'], true); - $this->assertTrue(isset($appConfig['comments'])); - $this->assertTrue(isset($appConfig['anotherapp'])); - $this->assertSame(2, count($appConfig['anotherapp'])); - $this->assertSame(13, $appConfig['comments']['maxAutoCompleteResults']); - } -} diff --git a/apps/comments/tests/Unit/Notification/ListenerTest.php b/apps/comments/tests/Unit/Notification/ListenerTest.php index d6f83262f30..356a26f23cd 100644 --- a/apps/comments/tests/Unit/Notification/ListenerTest.php +++ b/apps/comments/tests/Unit/Notification/ListenerTest.php @@ -1,27 +1,10 @@ <?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> - * - * @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\Comments\Tests\Unit\Notification; use OCA\Comments\Notification\Listener; @@ -31,26 +14,20 @@ use OCP\IURLGenerator; use OCP\IUserManager; use OCP\Notification\IManager; use OCP\Notification\INotification; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class ListenerTest extends TestCase { - /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $notificationManager; - - /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $userManager; - - /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ - protected $urlGenerator; - - /** @var Listener */ - protected $listener; + protected IManager&MockObject $notificationManager; + protected IUserManager&MockObject $userManager; + protected IURLGenerator&MockObject $urlGenerator; + protected Listener $listener; - protected function setUp() { + protected function setUp(): void { parent::setUp(); - $this->notificationManager = $this->createMock(\OCP\Notification\IManager::class); - $this->userManager = $this->createMock(\OCP\IUserManager::class); + $this->notificationManager = $this->createMock(IManager::class); + $this->userManager = $this->createMock(IUserManager::class); $this->listener = new Listener( $this->notificationManager, @@ -58,7 +35,7 @@ class ListenerTest extends TestCase { ); } - public function eventProvider() { + public static function eventProvider(): array { return [ [CommentsEvent::EVENT_ADD, 'notify'], [CommentsEvent::EVENT_UPDATE, 'notify'], @@ -68,19 +45,19 @@ class ListenerTest extends TestCase { } /** - * @dataProvider eventProvider * @param string $eventType * @param string $notificationMethod */ - public function testEvaluate($eventType, $notificationMethod) { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); + #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] + public function testEvaluate($eventType, $notificationMethod): void { + /** @var IComment|MockObject $comment */ + $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') - ->will($this->returnValue('files')); + ->willReturn('files'); $comment->expects($this->any()) ->method('getCreationDateTime') - ->will($this->returnValue(new \DateTime())); + ->willReturn(new \DateTime()); $comment->expects($this->once()) ->method('getMentions') ->willReturn([ @@ -91,75 +68,70 @@ class ListenerTest extends TestCase { [ 'type' => 'user', 'id' => '23452-4333-54353-2342'], [ 'type' => 'user', 'id' => 'yolo'], ]); + $comment->expects($this->atLeastOnce()) + ->method('getId') + ->willReturn('1234'); - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); $event->expects($this->once()) ->method('getComment') - ->will($this->returnValue($comment)); + ->willReturn($comment); $event->expects(($this->any())) ->method(('getEvent')) - ->will($this->returnValue($eventType)); + ->willReturn($eventType); - /** @var INotification|\PHPUnit_Framework_MockObject_MockObject $notification */ - $notification = $this->getMockBuilder(INotification::class)->getMock(); + /** @var INotification|MockObject $notification */ + $notification = $this->createMock(INotification::class); $notification->expects($this->any()) ->method($this->anything()) - ->will($this->returnValue($notification)); + ->willReturn($notification); $notification->expects($this->exactly(6)) ->method('setUser'); $this->notificationManager->expects($this->once()) ->method('createNotification') - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->exactly(6)) ->method($notificationMethod) ->with($this->isInstanceOf('\OCP\Notification\INotification')); $this->userManager->expects($this->exactly(6)) ->method('userExists') - ->withConsecutive( - ['foobar'], - ['barfoo'], - ['foo@bar.com'], - ['bar@foo.org@foobar.io'], - ['23452-4333-54353-2342'], - ['yolo'] - ) - ->will($this->returnValue(true)); + ->willReturnMap([ + ['foobar', true], + ['barfoo', true], + ['foo@bar.com', true], + ['bar@foo.org@foobar.io', true], + ['23452-4333-54353-2342', true], + ['yolo', true] + ]); $this->listener->evaluate($event); } - /** - * @dataProvider eventProvider - * @param string $eventType - */ - public function testEvaluateNoMentions($eventType) { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); + #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')] + public function testEvaluateNoMentions(string $eventType): void { + /** @var IComment|MockObject $comment */ + $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') - ->will($this->returnValue('files')); + ->willReturn('files'); $comment->expects($this->any()) ->method('getCreationDateTime') - ->will($this->returnValue(new \DateTime())); + ->willReturn(new \DateTime()); $comment->expects($this->once()) ->method('getMentions') ->willReturn([]); - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); $event->expects($this->once()) ->method('getComment') - ->will($this->returnValue($comment)); + ->willReturn($comment); $event->expects(($this->any())) ->method(('getEvent')) - ->will($this->returnValue($eventType)); + ->willReturn($eventType); $this->notificationManager->expects($this->never()) ->method('createNotification'); @@ -174,50 +146,49 @@ class ListenerTest extends TestCase { $this->listener->evaluate($event); } - public function testEvaluateUserDoesNotExist() { - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */ - $comment = $this->getMockBuilder(IComment::class)->getMock(); + public function testEvaluateUserDoesNotExist(): void { + /** @var IComment|MockObject $comment */ + $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') - ->will($this->returnValue('files')); + ->willReturn('files'); $comment->expects($this->any()) ->method('getCreationDateTime') - ->will($this->returnValue(new \DateTime())); + ->willReturn(new \DateTime()); $comment->expects($this->once()) ->method('getMentions') ->willReturn([[ 'type' => 'user', 'id' => 'foobar']]); + $comment->expects($this->atLeastOnce()) + ->method('getId') + ->willReturn('1234'); - /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */ - $event = $this->getMockBuilder(CommentsEvent::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var CommentsEvent|MockObject $event */ + $event = $this->createMock(CommentsEvent::class); $event->expects($this->once()) ->method('getComment') - ->will($this->returnValue($comment)); + ->willReturn($comment); $event->expects(($this->any())) ->method(('getEvent')) - ->will($this->returnValue(CommentsEvent::EVENT_ADD)); + ->willReturn(CommentsEvent::EVENT_ADD); - /** @var INotification|\PHPUnit_Framework_MockObject_MockObject $notification */ - $notification = $this->getMockBuilder(INotification::class)->getMock(); + /** @var INotification|MockObject $notification */ + $notification = $this->createMock(INotification::class); $notification->expects($this->any()) ->method($this->anything()) - ->will($this->returnValue($notification)); + ->willReturn($notification); $notification->expects($this->never()) ->method('setUser'); $this->notificationManager->expects($this->once()) ->method('createNotification') - ->will($this->returnValue($notification)); + ->willReturn($notification); $this->notificationManager->expects($this->never()) ->method('notify'); $this->userManager->expects($this->once()) ->method('userExists') - ->withConsecutive( - ['foobar'] - ) - ->will($this->returnValue(false)); + ->with('foobar') + ->willReturn(false); $this->listener->evaluate($event); } diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php index 07dcbfdd849..37cad0b43df 100644 --- a/apps/comments/tests/Unit/Notification/NotifierTest.php +++ b/apps/comments/tests/Unit/Notification/NotifierTest.php @@ -1,27 +1,11 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @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: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ - namespace OCA\Comments\Tests\Unit\Notification; use OCA\Comments\Notification\Notifier; @@ -33,36 +17,27 @@ use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\IL10N; use OCP\IURLGenerator; -use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; +use OCP\Notification\AlreadyProcessedException; use OCP\Notification\INotification; +use OCP\Notification\UnknownNotificationException; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class NotifierTest extends TestCase { - - /** @var Notifier */ - protected $notifier; - /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ - protected $l10nFactory; - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - protected $l; - /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ - protected $folder; - /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $commentsManager; - /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ - protected $url; - /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ - protected $userManager; - /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */ - protected $notification; - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */ - protected $comment; - /** @var string */ - protected $lc = 'tlh_KX'; - - protected function setUp() { + protected IFactory&MockObject $l10nFactory; + protected IL10N&MockObject $l; + protected IRootFolder&MockObject $folder; + protected ICommentsManager&MockObject $commentsManager; + protected IURLGenerator&MockObject $url; + protected IUserManager&MockObject $userManager; + protected INotification&MockObject $notification; + protected IComment&MockObject $comment; + protected Notifier $notifier; + protected string $lc = 'tlh_KX'; + + protected function setUp(): void { parent::setUp(); $this->l10nFactory = $this->createMock(IFactory::class); @@ -82,31 +57,28 @@ class NotifierTest extends TestCase { $this->l = $this->createMock(IL10N::class); $this->l->expects($this->any()) ->method('t') - ->will($this->returnCallback(function ($text, $parameters = []) { + ->willReturnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); - })); + }); $this->notification = $this->createMock(INotification::class); $this->comment = $this->createMock(IComment::class); } - public function testPrepareSuccess() { + public function testPrepareSuccess(): void { $fileName = 'Gre\'thor.odp'; $displayName = 'Huraga'; - $message = 'Huraga mentioned you in a comment on “Gre\'thor.odp”'; - - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); - /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + /** @var Node&MockObject $node */ $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); + $node + ->expects($this->atLeastOnce()) + ->method('getPath') + ->willReturn('/you/files/' . $fileName); $userFolder = $this->createMock(Folder::class); $this->folder->expects($this->once()) @@ -118,7 +90,7 @@ class NotifierTest extends TestCase { ->with('678') ->willReturn([$node]); - $this->notification->expects($this->once()) + $this->notification->expects($this->exactly(2)) ->method('getUser') ->willReturn('you'); $this->notification @@ -134,16 +106,22 @@ class NotifierTest extends TestCase { ->method('getSubjectParameters') ->willReturn(['files', '678']); $this->notification + ->expects($this->never()) + ->method('setParsedSubject'); + $this->notification ->expects($this->once()) - ->method('setParsedSubject') - ->with($message) + ->method('setRichSubject') + ->with('{user} mentioned you in a comment on "{file}"', $this->anything()) ->willReturnSelf(); $this->notification ->expects($this->once()) - ->method('setRichSubject') - ->with('{user} mentioned you in a comment on “{file}”', $this->anything()) + ->method('setRichMessage') + ->with('Hi {mention-user1}!', ['mention-user1' => ['type' => 'user', 'id' => 'you', 'name' => 'Your name']]) ->willReturnSelf(); $this->notification + ->expects($this->never()) + ->method('setParsedMessage'); + $this->notification ->expects($this->once()) ->method('setIcon') ->with('absolute-image-path') @@ -171,31 +149,52 @@ class NotifierTest extends TestCase { ->expects($this->any()) ->method('getActorType') ->willReturn('users'); + $this->comment + ->expects($this->any()) + ->method('getMessage') + ->willReturn('Hi @you!'); + $this->comment + ->expects($this->any()) + ->method('getMentions') + ->willReturn([['type' => 'user', 'id' => 'you']]); + $this->comment->expects($this->atLeastOnce()) + ->method('getId') + ->willReturn('1234'); $this->commentsManager ->expects($this->once()) ->method('get') ->willReturn($this->comment); + $this->commentsManager + ->expects($this->once()) + ->method('resolveDisplayName') + ->with('user', 'you') + ->willReturn('Your name'); $this->userManager - ->expects($this->once()) - ->method('get') - ->with('huraga') - ->willReturn($user); + ->expects($this->exactly(2)) + ->method('getDisplayName') + ->willReturnMap([ + ['huraga', $displayName], + ['you', 'You'], + ]); $this->notifier->prepare($this->notification, $this->lc); } - public function testPrepareSuccessDeletedUser() { + public function testPrepareSuccessDeletedUser(): void { $fileName = 'Gre\'thor.odp'; - $message = 'You were mentioned on “Gre\'thor.odp”, in a comment by a user that has since been deleted'; - /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + /** @var Node|MockObject $node */ $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); + $node + ->expects($this->atLeastOnce()) + ->method('getPath') + ->willReturn('/you/files/' . $fileName); $userFolder = $this->createMock(Folder::class); $this->folder->expects($this->once()) @@ -207,7 +206,7 @@ class NotifierTest extends TestCase { ->with('678') ->willReturn([$node]); - $this->notification->expects($this->once()) + $this->notification->expects($this->exactly(2)) ->method('getUser') ->willReturn('you'); $this->notification @@ -223,16 +222,22 @@ class NotifierTest extends TestCase { ->method('getSubjectParameters') ->willReturn(['files', '678']); $this->notification + ->expects($this->never()) + ->method('setParsedSubject'); + $this->notification ->expects($this->once()) - ->method('setParsedSubject') - ->with($message) + ->method('setRichSubject') + ->with('You were mentioned on "{file}", in a comment by an account that has since been deleted', $this->anything()) ->willReturnSelf(); $this->notification ->expects($this->once()) - ->method('setRichSubject') - ->with('You were mentioned on “{file}”, in a comment by a user that has since been deleted', $this->anything()) + ->method('setRichMessage') + ->with('Hi {mention-user1}!', ['mention-user1' => ['type' => 'user', 'id' => 'you', 'name' => 'Your name']]) ->willReturnSelf(); $this->notification + ->expects($this->never()) + ->method('setParsedMessage'); + $this->notification ->expects($this->once()) ->method('setIcon') ->with('absolute-image-path') @@ -260,23 +265,40 @@ class NotifierTest extends TestCase { ->expects($this->any()) ->method('getActorType') ->willReturn(ICommentsManager::DELETED_USER); + $this->comment + ->expects($this->any()) + ->method('getMessage') + ->willReturn('Hi @you!'); + $this->comment + ->expects($this->any()) + ->method('getMentions') + ->willReturn([['type' => 'user', 'id' => 'you']]); $this->commentsManager ->expects($this->once()) ->method('get') ->willReturn($this->comment); + $this->commentsManager + ->expects($this->once()) + ->method('resolveDisplayName') + ->with('user', 'you') + ->willReturn('Your name'); $this->userManager - ->expects($this->never()) - ->method('get'); + ->expects($this->once()) + ->method('getDisplayName') + ->willReturnMap([ + ['huraga', null], + ['you', 'You'], + ]); $this->notifier->prepare($this->notification, $this->lc); } - /** - * @expectedException \InvalidArgumentException - */ - public function testPrepareDifferentApp() { + + public function testPrepareDifferentApp(): void { + $this->expectException(UnknownNotificationException::class); + $this->folder ->expects($this->never()) ->method('getById'); @@ -305,15 +327,15 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->never()) - ->method('get'); + ->method('getDisplayName'); $this->notifier->prepare($this->notification, $this->lc); } - /** - * @expectedException \InvalidArgumentException - */ - public function testPrepareNotFound() { + + public function testPrepareNotFound(): void { + $this->expectException(UnknownNotificationException::class); + $this->folder ->expects($this->never()) ->method('getById'); @@ -343,22 +365,16 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->never()) - ->method('get'); + ->method('getDisplayName'); $this->notifier->prepare($this->notification, $this->lc); } - /** - * @expectedException \InvalidArgumentException - */ - public function testPrepareDifferentSubject() { - $displayName = 'Huraga'; - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); + public function testPrepareDifferentSubject(): void { + $this->expectException(UnknownNotificationException::class); + + $displayName = 'Huraga'; $this->folder ->expects($this->never()) @@ -404,24 +420,18 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } - /** - * @expectedException \InvalidArgumentException - */ - public function testPrepareNotFiles() { - $displayName = 'Huraga'; - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); + public function testPrepareNotFiles(): void { + $this->expectException(UnknownNotificationException::class); + + $displayName = 'Huraga'; $this->folder ->expects($this->never()) @@ -468,24 +478,18 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } - /** - * @expectedException \InvalidArgumentException - */ - public function testPrepareUnresolvableFileID() { - $displayName = 'Huraga'; - /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); + public function testPrepareUnresolvableFileID(): void { + $this->expectException(AlreadyProcessedException::class); + + $displayName = 'Huraga'; $userFolder = $this->createMock(Folder::class); $this->folder->expects($this->once()) @@ -541,11 +545,10 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } - } diff --git a/apps/comments/tests/js/commentscollectionSpec.js b/apps/comments/tests/js/commentscollectionSpec.js deleted file mode 100644 index 2f41a272f67..00000000000 --- a/apps/comments/tests/js/commentscollectionSpec.js +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2016 - * - * This file is licensed under the Affero General Public License comment 3 - * or later. - * - * See the COPYING-README file. - * - */ -describe('OCA.Comments.CommentCollection', function() { - var CommentCollection = OCA.Comments.CommentCollection; - var collection, syncStub; - var comment1, comment2, comment3; - - beforeEach(function() { - syncStub = sinon.stub(CommentCollection.prototype, 'sync'); - collection = new CommentCollection(); - collection.setObjectId(5); - - comment1 = { - id: 1, - actorType: 'users', - actorId: 'user1', - actorDisplayName: 'User One', - objectType: 'files', - objectId: 5, - message: 'First', - creationDateTime: Date.UTC(2016, 1, 3, 10, 5, 0) - }; - comment2 = { - id: 2, - actorType: 'users', - actorId: 'user2', - actorDisplayName: 'User Two', - objectType: 'files', - objectId: 5, - message: 'Second\nNewline', - creationDateTime: Date.UTC(2016, 1, 3, 10, 0, 0) - }; - comment3 = { - id: 3, - actorType: 'users', - actorId: 'user3', - actorDisplayName: 'User Three', - objectType: 'files', - objectId: 5, - message: 'Third', - creationDateTime: Date.UTC(2016, 1, 3, 5, 0, 0) - }; - }); - afterEach(function() { - syncStub.restore(); - }); - - it('fetches the next page', function() { - collection._limit = 2; - collection.fetchNext(); - - expect(syncStub.calledOnce).toEqual(true); - expect(syncStub.lastCall.args[0]).toEqual('REPORT'); - var options = syncStub.lastCall.args[2]; - expect(options.remove).toEqual(false); - - var parser = new DOMParser(); - var doc = parser.parseFromString(options.data, "application/xml"); - expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'limit')[0].textContent).toEqual('3'); - expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'offset')[0].textContent).toEqual('0'); - - syncStub.yieldTo('success', [comment1, comment2, comment3]); - - expect(collection.length).toEqual(2); - expect(collection.hasMoreResults()).toEqual(true); - - collection.fetchNext(); - - expect(syncStub.calledTwice).toEqual(true); - options = syncStub.lastCall.args[2]; - doc = parser.parseFromString(options.data, "application/xml"); - expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'limit')[0].textContent).toEqual('3'); - expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'offset')[0].textContent).toEqual('2'); - - syncStub.yieldTo('success', [comment3]); - - expect(collection.length).toEqual(3); - expect(collection.hasMoreResults()).toEqual(false); - - collection.fetchNext(); - - // no further requests - expect(syncStub.calledTwice).toEqual(true); - }); - it('resets page counted when calling reset', function() { - collection.fetchNext(); - - syncStub.yieldTo('success', [comment1]); - - expect(collection.hasMoreResults()).toEqual(false); - - collection.reset(); - - expect(collection.hasMoreResults()).toEqual(true); - }); - describe('resetting read marker', function() { - var updateStub; - var clock; - - beforeEach(function() { - updateStub = sinon.stub(OCA.Comments.CommentSummaryModel.prototype, 'save'); - clock = sinon.useFakeTimers(Date.UTC(2016, 1, 3, 10, 5, 9)); - }); - afterEach(function() { - updateStub.restore(); - clock.restore(); - }); - - it('resets read marker to the default date', function() { - var successStub = sinon.stub(); - collection.updateReadMarker(null, { - success: successStub - }); - - expect(updateStub.calledOnce).toEqual(true); - expect(updateStub.lastCall.args[0]).toEqual({ - readMarker: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() - }); - - updateStub.yieldTo('success'); - - expect(successStub.calledOnce).toEqual(true); - }); - it('resets read marker to the given date', function() { - var successStub = sinon.stub(); - collection.updateReadMarker(new Date(Date.UTC(2016, 1, 2, 3, 4, 5)), { - success: successStub - }); - - expect(updateStub.calledOnce).toEqual(true); - expect(updateStub.lastCall.args[0]).toEqual({ - readMarker: new Date(Date.UTC(2016, 1, 2, 3, 4, 5)).toUTCString() - }); - - updateStub.yieldTo('success'); - - expect(successStub.calledOnce).toEqual(true); - }); - }); -}); - diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js deleted file mode 100644 index 0131bc7bce3..00000000000 --- a/apps/comments/tests/js/commentstabviewSpec.js +++ /dev/null @@ -1,690 +0,0 @@ -/** -* ownCloud -* -* @author Vincent Petry -* @copyright 2016 Vincent Petry <pvince81@owncloud.com> -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* comment 3 of the License, or any later comment. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -describe('OCA.Comments.CommentsTabView tests', function() { - var view, fileInfoModel; - var fetchStub; - var avatarStub; - var testComments; - var clock; - - /** - * Creates a dummy message with the given length - * - * @param {int} len length - * @return {string} message - */ - function createMessageWithLength(len) { - var bigMessage = ''; - for (var i = 0; i < len; i++) { - bigMessage += 'a'; - } - return bigMessage; - } - - beforeEach(function() { - clock = sinon.useFakeTimers(Date.UTC(2016, 1, 3, 10, 5, 9)); - fetchStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'fetchNext'); - avatarStub = sinon.stub($.fn, 'avatar'); - view = new OCA.Comments.CommentsTabView(); - fileInfoModel = new OCA.Files.FileInfoModel({ - id: 5, - name: 'One.txt', - mimetype: 'text/plain', - permissions: 31, - path: '/subdir', - size: 123456789, - etag: 'abcdefg', - mtime: Date.UTC(2016, 1, 0, 0, 0, 0) - }); - view.render(); - var comment1 = new OCA.Comments.CommentModel({ - id: 1, - actorType: 'users', - actorId: 'user1', - actorDisplayName: 'User One', - objectType: 'files', - objectId: 5, - message: 'First', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 0)).toUTCString() - }); - var comment2 = new OCA.Comments.CommentModel({ - id: 2, - actorType: 'users', - actorId: 'user2', - actorDisplayName: 'User Two', - objectType: 'files', - objectId: 5, - message: 'Second\nNewline', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 0, 0)).toUTCString() - }); - var comment3 = new OCA.Comments.CommentModel({ - id: 3, - actorId: 'anotheruser', - actorDisplayName: 'Another User', - actorType: 'users', - verb: 'comment', - message: 'Hail to thee, @macbeth. Yours faithfully, @banquo', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(), - mentions: { - 0: { - mentionDisplayName: "Thane of Cawdor", - mentionId: "macbeth", - mentionTye: "user" - }, - 1: { - mentionDisplayName: "Lord Banquo", - mentionId: "banquo", - mentionTye: "user" - } - } - }); - - testComments = [comment1, comment2, comment3]; - }); - afterEach(function() { - view.remove(); - view = undefined; - fetchStub.restore(); - avatarStub.restore(); - clock.restore(); - }); - describe('rendering', function() { - it('reloads matching comments when setting file info model', function() { - view.setFileInfo(fileInfoModel); - expect(fetchStub.calledOnce).toEqual(true); - }); - - it('renders loading icon while fetching comments', function() { - view.setFileInfo(fileInfoModel); - view.collection.trigger('request'); - - expect(view.$el.find('.loading').length).toEqual(1); - expect(view.$el.find('.comments li').length).toEqual(0); - }); - - it('renders comments', function() { - view.setFileInfo(fileInfoModel); - view.collection.set(testComments); - - var $comments = view.$el.find('.comments>li'); - expect($comments.length).toEqual(3); - var $item = $comments.eq(0); - expect($item.find('.author').text()).toEqual('User One'); - expect($item.find('.date').text()).toEqual('seconds ago'); - expect($item.find('.message').text()).toEqual('First'); - - $item = $comments.eq(1); - expect($item.find('.author').text()).toEqual('User Two'); - expect($item.find('.date').text()).toEqual('5 minutes ago'); - expect($item.find('.message').html()).toEqual('Second<br>Newline'); - }); - - it('renders comments from deleted user differently', function() { - testComments[0].set('actorType', 'deleted_users', {silent: true}); - view.collection.set(testComments); - - var $item = view.$el.find('.comment[data-id=1]'); - expect($item.find('.author').text()).toEqual('[Deleted user]'); - expect($item.find('.avatar').attr('data-username')).not.toBeDefined(); - }); - - it('renders mentioned user id to avatar and displayname', function() { - view.collection.set(testComments); - - var $comment = view.$el.find('.comment[data-id=3] .message'); - expect($comment.length).toEqual(1); - expect($comment.find('.avatar[data-user=macbeth]').length).toEqual(1); - expect($comment.find('strong:first').text()).toEqual('Thane of Cawdor'); - expect($comment.find('.avatar[data-user=macbeth] ~ .contactsmenu-popover').length).toEqual(1); - - expect($comment.find('.avatar[data-user=banquo]').length).toEqual(1); - expect($comment.find('.avatar[data-user=banquo] ~ strong').text()).toEqual('Lord Banquo'); - expect($comment.find('.avatar[data-user=banquo] ~ .contactsmenu-popover').length).toEqual(1); - }); - - }); - describe('more comments', function() { - var hasMoreResultsStub; - - beforeEach(function() { - view.collection.set(testComments); - hasMoreResultsStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'hasMoreResults'); - }); - afterEach(function() { - hasMoreResultsStub.restore(); - }); - - it('shows "More comments" button when more comments are available', function() { - hasMoreResultsStub.returns(true); - view.collection.trigger('sync'); - - expect(view.$el.find('.showMore').hasClass('hidden')).toEqual(false); - }); - it('does not show "More comments" button when more comments are available', function() { - hasMoreResultsStub.returns(false); - view.collection.trigger('sync'); - - expect(view.$el.find('.showMore').hasClass('hidden')).toEqual(true); - }); - it('fetches and appends the next page when clicking the "More" button', function() { - hasMoreResultsStub.returns(true); - - expect(fetchStub.notCalled).toEqual(true); - - view.$el.find('.showMore').click(); - - expect(fetchStub.calledOnce).toEqual(true); - }); - it('appends comment to the list when added to collection', function() { - var comment4 = new OCA.Comments.CommentModel({ - id: 4, - actorType: 'users', - actorId: 'user3', - actorDisplayName: 'User Three', - objectType: 'files', - objectId: 5, - message: 'Third', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 5, 0, 0)).toUTCString() - }); - - view.collection.add(comment4); - - expect(view.$el.find('.comments>li').length).toEqual(4); - - var $item = view.$el.find('.comments>li').eq(3); - expect($item.find('.author').text()).toEqual('User Three'); - expect($item.find('.date').text()).toEqual('5 hours ago'); - expect($item.find('.message').html()).toEqual('Third'); - }); - }); - describe('posting comments', function() { - var createStub; - var currentUserStub; - var $newCommentForm; - - beforeEach(function() { - view.collection.set(testComments); - createStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'create'); - currentUserStub = sinon.stub(OC, 'getCurrentUser'); - currentUserStub.returns({ - uid: 'testuser', - displayName: 'Test User' - }); - - $newCommentForm = view.$el.find('.newCommentForm'); - - // Required for the absolute selector used to find the new comment - // after a successful creation in _onSubmitSuccess. - $('#testArea').append(view.$el); - }); - afterEach(function() { - createStub.restore(); - currentUserStub.restore(); - }); - - it('creates a new comment when clicking post button', function() { - $newCommentForm.find('.message').text('New message'); - $newCommentForm.submit(); - - expect(createStub.calledOnce).toEqual(true); - expect(createStub.lastCall.args[0]).toEqual({ - actorId: 'testuser', - actorDisplayName: 'Test User', - actorType: 'users', - verb: 'comment', - message: 'New message', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() - }); - }); - it('creates a new comment when typing enter', function() { - $newCommentForm.find('.message').text('New message'); - var keydownEvent = new $.Event('keydown', {keyCode: 13}); - $newCommentForm.find('.message').trigger(keydownEvent); - - expect(createStub.calledOnce).toEqual(true); - expect(createStub.lastCall.args[0]).toEqual({ - actorId: 'testuser', - actorDisplayName: 'Test User', - actorType: 'users', - verb: 'comment', - message: 'New message', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() - }); - expect(keydownEvent.isDefaultPrevented()).toEqual(true); - }); - it('creates a new mention when typing enter in the autocomplete popover', function() { - var autoCompleteStub = sinon.stub(view, '_onAutoComplete'); - autoCompleteStub.callsArgWith(1, [{"id":"userId", "label":"User Name", "source":"users"}]); - - // Force the autocomplete to be initialized - view._initAutoComplete($newCommentForm.find('.message')); - - // PhantomJS does not seem to handle typing in a contenteditable, so - // some tricks are needed to show the autocomplete popover. - // - // Instead of sending key events to type "@u" the characters are - // programatically set in the input field. - $newCommentForm.find('.message').text('Mention to @u'); - - // When focusing on the input field the caret is not guaranteed to - // be at the end; instead of calling "focus()" on the input field - // the caret is explicitly set at the end of the input field, that - // is, after "@u". - var range = document.createRange(); - range.selectNodeContents($newCommentForm.find('.message')[0]); - range.collapse(false); - var selection = window.getSelection(); - selection.removeAllRanges(); - selection.addRange(range); - - // As PhantomJS does not handle typing in a contenteditable the key - // typed here is in practice ignored by At.js, but despite that it - // will cause the popover to be shown. - $newCommentForm.find('.message').trigger(new $.Event('keydown', {keyCode: 's'})); - $newCommentForm.find('.message').trigger(new $.Event('keyup', {keyCode: 's'})); - - expect(autoCompleteStub.calledOnce).toEqual(true); - - var keydownEvent = new $.Event('keydown', {keyCode: 13}); - $newCommentForm.find('.message').trigger(keydownEvent); - - expect(createStub.calledOnce).toEqual(false); - expect($newCommentForm.find('.message').html()).toContain('Mention to <span'); - expect($newCommentForm.find('.message').html()).toContain('<div class="avatar"'); - expect($newCommentForm.find('.message').html()).toContain('<strong>User Name</strong>'); - expect($newCommentForm.find('.message').text()).not.toContain('@'); - // In this case the default behaviour is prevented by the - // "onKeydown" event handler of At.js. - expect(keydownEvent.isDefaultPrevented()).toEqual(true); - }); - it('creates a new line when typing shift+enter', function() { - $newCommentForm.find('.message').text('New message'); - var keydownEvent = new $.Event('keydown', {keyCode: 13, shiftKey: true}); - $newCommentForm.find('.message').trigger(keydownEvent); - - expect(createStub.calledOnce).toEqual(false); - // PhantomJS does not seem to handle typing in a contenteditable, so - // instead of looking for a new line the best that can be done is - // checking that the default behaviour would have been executed. - expect($newCommentForm.find('.message').text()).toContain('New message'); - expect(keydownEvent.isDefaultPrevented()).toEqual(false); - }); - it('creates a new comment with mentions when clicking post button', function() { - $newCommentForm.find('.message').text('New message @anotheruser'); - $newCommentForm.submit(); - - var createStubExpectedData = { - actorId: 'testuser', - actorDisplayName: 'Test User', - actorType: 'users', - verb: 'comment', - message: 'New message @anotheruser', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() - }; - - expect(createStub.calledOnce).toEqual(true); - expect(createStub.lastCall.args[0]).toEqual(createStubExpectedData); - - var model = new OCA.Comments.CommentModel(_.extend({id: 4}, createStubExpectedData)); - var fetchStub = sinon.stub(model, 'fetch'); - // simulate the fact that create adds the model to the collection - view.collection.add(model, {at: 0}); - createStub.yieldTo('success', model); - - expect(fetchStub.calledOnce).toEqual(true); - - // simulate the fact that fetch sets the attribute - model.set('mentions', { - 0: { - mentionDisplayName: "Another User", - mentionId: "anotheruser", - mentionTye: "user" - } - }); - fetchStub.yieldTo('success', model); - - // comment was added to the list - var $comment = view.$el.find('.comment[data-id=4]'); - expect($comment.length).toEqual(1); - var $message = $comment.find('.message'); - expect($message.html()).toContain('New message'); - expect($message.find('.avatar').length).toEqual(1); - expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1); - expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User'); - expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1); - }); - it('does not create a comment if the field is empty', function() { - $newCommentForm.find('.message').val(' '); - $newCommentForm.submit(); - - expect(createStub.notCalled).toEqual(true); - }); - it('does not create a comment if the field length is too large', function() { - var bigMessage = ''; - for (var i = 0; i < view._commentMaxLength * 2; i++) { - bigMessage += 'a'; - } - $newCommentForm.find('.message').val(bigMessage); - $newCommentForm.submit(); - - expect(createStub.notCalled).toEqual(true); - }); - describe('limit indicator', function() { - var tooltipStub; - var $message; - var $submitButton; - - beforeEach(function() { - tooltipStub = sinon.stub($.fn, 'tooltip'); - $message = $newCommentForm.find('.message'); - $submitButton = $newCommentForm.find('.submit'); - }); - afterEach(function() { - tooltipStub.restore(); - }); - - it('does not displays tooltip when limit is far away', function() { - $message.val(createMessageWithLength(3)); - $message.trigger('change'); - - expect(tooltipStub.calledWith('show')).toEqual(false); - expect($submitButton.prop('disabled')).toEqual(false); - expect($message.hasClass('error')).toEqual(false); - }); - it('displays tooltip when limit is almost reached', function() { - $message.text(createMessageWithLength(view._commentMaxLength - 2)); - $message.trigger('change'); - - expect(tooltipStub.calledWith('show')).toEqual(true); - expect($submitButton.prop('disabled')).toEqual(false); - expect($message.hasClass('error')).toEqual(false); - }); - it('displays tooltip and disabled button when limit is exceeded', function() { - $message.text(createMessageWithLength(view._commentMaxLength + 2)); - $message.trigger('change'); - - expect(tooltipStub.calledWith('show')).toEqual(true); - expect($submitButton.prop('disabled')).toEqual(true); - expect($message.hasClass('error')).toEqual(true); - }); - }); - }); - describe('editing comments', function() { - var saveStub; - var fetchStub; - var currentUserStub; - - beforeEach(function() { - saveStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'save'); - fetchStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'fetch'); - currentUserStub = sinon.stub(OC, 'getCurrentUser'); - currentUserStub.returns({ - uid: 'testuser', - displayName: 'Test User' - }); - view.collection.add({ - id: 1, - actorId: 'testuser', - actorDisplayName: 'Test User', - actorType: 'users', - verb: 'comment', - message: 'New message', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() - }); - view.collection.add({ - id: 2, - actorId: 'anotheruser', - actorDisplayName: 'Another User', - actorType: 'users', - verb: 'comment', - message: 'New message from another user', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(), - }); - view.collection.add({ - id: 3, - actorId: 'testuser', - actorDisplayName: 'Test User', - actorType: 'users', - verb: 'comment', - message: 'Hail to thee, @macbeth. Yours faithfully, @banquo', - creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(), - mentions: { - 0: { - mentionDisplayName: "Thane of Cawdor", - mentionId: "macbeth", - mentionTye: "user" - }, - 1: { - mentionDisplayName: "Lord Banquo", - mentionId: "banquo", - mentionTye: "user" - } - } - }); - }); - afterEach(function() { - saveStub.restore(); - fetchStub.restore(); - currentUserStub.restore(); - }); - - it('shows edit link for owner comments', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - expect($comment.length).toEqual(1); - expect($comment.find('.action.edit').length).toEqual(1); - }); - - it('does not show edit link for other user\'s comments', function() { - var $comment = view.$el.find('.comment[data-id=2]'); - expect($comment.length).toEqual(1); - expect($comment.find('.action.edit').length).toEqual(0); - }); - - it('shows edit form when clicking edit', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - - expect($comment.hasClass('hidden')).toEqual(true); - var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(1); - }); - - it('saves message and updates comment item when clicking save', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - - var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(1); - - $formRow.find('div.message').text('modified message'); - $formRow.find('form').submit(); - - expect(saveStub.calledOnce).toEqual(true); - expect(saveStub.lastCall.args[0]).toEqual({ - message: 'modified message' - }); - - var model = view.collection.get(1); - // simulate the fact that save sets the attribute - model.set('message', 'modified\nmessage'); - saveStub.yieldTo('success', model); - view.collection.get(model); - - expect(fetchStub.called).toEqual(true); - fetchStub.yieldTo('success', model); - - // original comment element is visible again - expect($comment.hasClass('hidden')).toEqual(false); - // and its message was updated - expect($comment.find('.message').html()).toEqual('modified<br>message'); - - // form row is gone - $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(0); - }); - - it('saves message and updates comment item with mentions when clicking save', function() { - var $comment = view.$el.find('.comment[data-id=3]'); - $comment.find('.action.edit').click(); - - var $formRow = view.$el.find('.newCommentRow.comment[data-id=3]'); - expect($formRow.length).toEqual(1); - - $formRow.find('div.message').text('modified\nmessage @anotheruser'); - $formRow.find('form').submit(); - - expect(saveStub.calledOnce).toEqual(true); - expect(saveStub.lastCall.args[0]).toEqual({ - message: 'modified\nmessage @anotheruser' - }); - - var model = view.collection.get(3); - // simulate the fact that save sets the attribute - model.set('message', 'modified\nmessage @anotheruser'); - saveStub.yieldTo('success', model); - - expect(fetchStub.called).toEqual(true); - - // simulate the fact that fetch sets the attribute - model.set('mentions', { - 0: { - mentionDisplayName: "Another User", - mentionId: "anotheruser", - mentionTye: "user" - } - }); - fetchStub.yieldTo('success', model); - - // original comment element is visible again - expect($comment.hasClass('hidden')).toEqual(false); - // and its message was updated - var $message = $comment.find('.message'); - expect($message.html()).toContain('modified<br>message'); - expect($message.find('.avatar').length).toEqual(1); - expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1); - expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User'); - expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1); - - // form row is gone - $formRow = view.$el.find('.newCommentRow.comment[data-id=3]'); - expect($formRow.length).toEqual(0); - }); - - it('restores original comment when cancelling', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - - var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(1); - - $formRow.find('textarea').val('modified\nmessage'); - $formRow.find('.cancel').click(); - - expect(saveStub.notCalled).toEqual(true); - - // original comment element is visible again - expect($comment.hasClass('hidden')).toEqual(false); - // and its message was not updated - expect($comment.find('.message').html()).toEqual('New message'); - - // form row is gone - $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(0); - }); - - it('destroys model when clicking delete', function() { - var destroyStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'destroy'); - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - - var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(1); - - $formRow.find('.delete').click(); - - expect(destroyStub.calledOnce).toEqual(true); - expect(destroyStub.thisValues[0].id).toEqual(1); - - destroyStub.yieldTo('success'); - - // original comment element is gone - $comment = view.$el.find('.comment[data-id=1]'); - expect($comment.length).toEqual(0); - - // form row is gone - $formRow = view.$el.find('.newCommentRow.comment[data-id=1]'); - expect($formRow.length).toEqual(0); - - destroyStub.restore(); - }); - it('does not submit comment if the field is empty', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - $comment.find('.message').val(' '); - $comment.find('form').submit(); - - expect(saveStub.notCalled).toEqual(true); - }); - it('does not submit comment if the field length is too large', function() { - var $comment = view.$el.find('.comment[data-id=1]'); - $comment.find('.action.edit').click(); - $comment.find('.message').val(createMessageWithLength(view._commentMaxLength * 2)); - $comment.find('form').submit(); - - expect(saveStub.notCalled).toEqual(true); - }); - }); - describe('read marker', function() { - var updateMarkerStub; - - beforeEach(function() { - updateMarkerStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'updateReadMarker'); - }); - afterEach(function() { - updateMarkerStub.restore(); - }); - - it('resets the read marker after REPORT', function() { - testComments[0].set('isUnread', true, {silent: true}); - testComments[1].set('isUnread', true, {silent: true}); - view.collection.set(testComments); - view.collection.trigger('sync', 'REPORT'); - - expect(updateMarkerStub.calledOnce).toEqual(true); - expect(updateMarkerStub.lastCall.args[0]).toBeFalsy(); - }); - it('does not reset the read marker if there was no unread comments', function() { - view.collection.set(testComments); - view.collection.trigger('sync', 'REPORT'); - - expect(updateMarkerStub.notCalled).toEqual(true); - }); - it('does not reset the read marker when posting comments', function() { - testComments[0].set('isUnread', true, {silent: true}); - testComments[1].set('isUnread', true, {silent: true}); - view.collection.set(testComments); - view.collection.trigger('sync', 'POST'); - - expect(updateMarkerStub.notCalled).toEqual(true); - }); - }); -}); diff --git a/apps/comments/tests/js/filespluginSpec.js b/apps/comments/tests/js/filespluginSpec.js deleted file mode 100644 index 78becc5af09..00000000000 --- a/apps/comments/tests/js/filespluginSpec.js +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -describe('OCA.Comments.FilesPlugin tests', function() { - var fileList; - var testFiles; - - beforeEach(function() { - var $content = $('<div id="content"></div>'); - $('#testArea').append($content); - // dummy file list - var $div = $( - '<div>' + - '<table id="filestable">' + - '<thead></thead>' + - '<tbody id="fileList"></tbody>' + - '</table>' + - '</div>'); - $('#content').append($div); - - fileList = new OCA.Files.FileList($div); - OCA.Comments.FilesPlugin.attach(fileList); - - testFiles = [{ - id: 1, - type: 'file', - name: 'One.txt', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareOwner: 'User One', - isShareMountPoint: false, - commentsUnread: 3 - }]; - }); - afterEach(function() { - fileList.destroy(); - fileList = null; - }); - - describe('Comment icon', function() { - it('does not render icon when no unread comments available', function() { - testFiles[0].commentsUnread = 0; - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - expect($tr.find('.action-comment').length).toEqual(0); - }); - it('renders comment icon and extra data', function() { - var $action, $tr; - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('One.txt'); - $action = $tr.find('.action-comment'); - expect($action.length).toEqual(1); - expect($action.hasClass('permanent')).toEqual(true); - - expect($tr.attr('data-comments-unread')).toEqual('3'); - }); - it('clicking icon opens sidebar', function() { - var sidebarStub = sinon.stub(fileList, 'showDetailsView'); - var $action, $tr; - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('One.txt'); - $action = $tr.find('.action-comment'); - $action.click(); - - expect(sidebarStub.calledOnce).toEqual(true); - expect(sidebarStub.lastCall.args[0]).toEqual('One.txt'); - expect(sidebarStub.lastCall.args[1]).toEqual('commentsTabView'); - }); - }); - describe('elementToFile', function() { - it('returns comment count', function() { - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var data = fileList.elementToFile($tr); - expect(data.commentsUnread).toEqual(3); - }); - it('does not set comment count when not set', function() { - delete testFiles[0].commentsUnread; - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var data = fileList.elementToFile($tr); - expect(data.commentsUnread).not.toBeDefined(); - }); - it('does not set comment count when zero', function() { - testFiles[0].commentsUnread = 0; - fileList.setFiles(testFiles); - var $tr = fileList.findFileEl('One.txt'); - var data = fileList.elementToFile($tr); - expect(data.commentsUnread).not.toBeDefined(); - }); - }); -}); |