diff options
Diffstat (limited to 'apps/comments')
251 files changed, 2983 insertions, 4023 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/.l10nignore b/apps/comments/.l10nignore deleted file mode 100644 index 54f2ea9009a..00000000000 --- a/apps/comments/.l10nignore +++ /dev/null @@ -1,3 +0,0 @@ -# compiled vue templates -src/templates.js -js/ diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml index 5802d44403c..dc5af1a70a0 100644 --- a/apps/comments/appinfo/info.xml +++ b/apps/comments/appinfo/info.xml @@ -1,11 +1,16 @@ <?xml version="1.0"?> +<!-- + - 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> - <version>1.16.0</version> + <version>1.22.0</version> <licence>agpl</licence> <author>Arthur Schiwon</author> <author>Vincent Petry</author> @@ -16,7 +21,7 @@ <category>social</category> <bugs>https://github.com/nextcloud/server/issues</bugs> <dependencies> - <nextcloud min-version="26" max-version="26"/> + <nextcloud min-version="32" max-version="32"/> </dependencies> <activity> diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php index 8a7a60c4dcd..903f1b2168c 100644 --- a/apps/comments/appinfo/routes.php +++ b/apps/comments/appinfo/routes.php @@ -1,24 +1,9 @@ <?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' => [ diff --git a/apps/comments/composer/composer/ClassLoader.php b/apps/comments/composer/composer/ClassLoader.php index fd56bd7d840..7824d8f7eaf 100644 --- a/apps/comments/composer/composer/ClassLoader.php +++ b/apps/comments/composer/composer/ClassLoader.php @@ -45,35 +45,34 @@ class ClassLoader /** @var \Closure(string):void */ private static $includeFile; - /** @var ?string */ + /** @var string|null */ private $vendorDir; // PSR-4 /** - * @var array[] - * @psalm-var array<string, array<string, int>> + * @var array<string, array<string, int>> */ private $prefixLengthsPsr4 = array(); /** - * @var array[] - * @psalm-var array<string, array<int, string>> + * @var array<string, list<string>> */ private $prefixDirsPsr4 = array(); /** - * @var array[] - * @psalm-var array<string, string> + * @var list<string> */ private $fallbackDirsPsr4 = array(); // PSR-0 /** - * @var array[] - * @psalm-var array<string, array<string, string[]>> + * 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 array[] - * @psalm-var array<string, string> + * @var list<string> */ private $fallbackDirsPsr0 = array(); @@ -81,8 +80,7 @@ class ClassLoader private $useIncludePath = false; /** - * @var string[] - * @psalm-var array<string, string> + * @var array<string, string> */ private $classMap = array(); @@ -90,21 +88,20 @@ class ClassLoader private $classMapAuthoritative = false; /** - * @var bool[] - * @psalm-var array<string, bool> + * @var array<string, bool> */ private $missingClasses = array(); - /** @var ?string */ + /** @var string|null */ private $apcuPrefix; /** - * @var self[] + * @var array<string, self> */ private static $registeredLoaders = array(); /** - * @param ?string $vendorDir + * @param string|null $vendorDir */ public function __construct($vendorDir = null) { @@ -113,7 +110,7 @@ class ClassLoader } /** - * @return string[] + * @return array<string, list<string>> */ public function getPrefixes() { @@ -125,8 +122,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, array<int, string>> + * @return array<string, list<string>> */ public function getPrefixesPsr4() { @@ -134,8 +130,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, string> + * @return list<string> */ public function getFallbackDirs() { @@ -143,8 +138,7 @@ class ClassLoader } /** - * @return array[] - * @psalm-return array<string, string> + * @return list<string> */ public function getFallbackDirsPsr4() { @@ -152,8 +146,7 @@ class ClassLoader } /** - * @return string[] Array of classname => path - * @psalm-return array<string, string> + * @return array<string, string> Array of classname => path */ public function getClassMap() { @@ -161,8 +154,7 @@ class ClassLoader } /** - * @param string[] $classMap Class to filename map - * @psalm-param array<string, string> $classMap + * @param array<string, string> $classMap Class to filename map * * @return void */ @@ -179,24 +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 string[]|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 ); } @@ -205,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 ); } } @@ -226,9 +219,9 @@ 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 string[]|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 * @@ -236,17 +229,18 @@ class ClassLoader */ 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])) { @@ -256,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 ); } } @@ -276,8 +270,8 @@ 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 string[]|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param list<string>|string $paths The PSR-0 base directories * * @return void */ @@ -294,8 +288,8 @@ 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 string[]|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 * @@ -429,7 +423,8 @@ class ClassLoader public function loadClass($class) { if ($file = $this->findFile($class)) { - (self::$includeFile)($file); + $includeFile = self::$includeFile; + $includeFile($file); return true; } @@ -480,9 +475,9 @@ class ClassLoader } /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. + * Returns the currently registered loaders keyed by their corresponding vendor directories. * - * @return self[] + * @return array<string, self> */ public static function getRegisteredLoaders() { @@ -560,7 +555,10 @@ class ClassLoader return false; } - private static function initializeIncludeClosure(): void + /** + * @return void + */ + private static function initializeIncludeClosure() { if (self::$includeFile !== null) { return; @@ -574,8 +572,8 @@ class ClassLoader * @param string $file * @return void */ - self::$includeFile = static function($file) { + 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 index c6b54af7ba2..51e734a774b 100644 --- a/apps/comments/composer/composer/InstalledVersions.php +++ b/apps/comments/composer/composer/InstalledVersions.php @@ -98,7 +98,7 @@ class InstalledVersions { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; } } @@ -119,7 +119,7 @@ class InstalledVersions */ public static function satisfies(VersionParser $parser, $packageName, $constraint) { - $constraint = $parser->parseConstraints($constraint); + $constraint = $parser->parseConstraints((string) $constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); @@ -328,7 +328,9 @@ class InstalledVersions if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = require $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]; } @@ -340,12 +342,17 @@ class InstalledVersions // 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 = require __DIR__ . '/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 __DIR__ . '/installed.php'; + self::$installed = $required; } else { self::$installed = array(); } } - $installed[] = self::$installed; + + 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 6afc14d07a1..22f95a934d7 100644 --- a/apps/comments/composer/composer/autoload_classmap.php +++ b/apps/comments/composer/composer/autoload_classmap.php @@ -14,9 +14,9 @@ return array( '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\\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', diff --git a/apps/comments/composer/composer/autoload_static.php b/apps/comments/composer/composer/autoload_static.php index 0f832e1849b..7e553f8e2e2 100644 --- a/apps/comments/composer/composer/autoload_static.php +++ b/apps/comments/composer/composer/autoload_static.php @@ -29,9 +29,9 @@ class ComposerStaticInitComments '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\\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', diff --git a/apps/comments/composer/composer/installed.php b/apps/comments/composer/composer/installed.php index a1f6a8636b4..1a66c7f2416 100644 --- a/apps/comments/composer/composer/installed.php +++ b/apps/comments/composer/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'd51429a47232bbf46a2be832ecfa711f102da802', + 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'd51429a47232bbf46a2be832ecfa711f102da802', + 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), diff --git a/apps/comments/img/comments-dark.svg b/apps/comments/img/comments-dark.svg index 315be76beec..b0732c747fe 100644 --- a/apps/comments/img/comments-dark.svg +++ b/apps/comments/img/comments-dark.svg @@ -1 +1 @@ -<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6.667 4c-2.578 0-4.667 2.105-4.667 4.7v11.282c0 2.597 2.09 4.701 4.667 4.701 1.716 0.01 12.083 3e-3 17.057 0 1.115 0.842 1.807 1.748 3.057 3.206a0.93 0.93 0 0 0 0.561 0.103 0.969 0.969 0 0 0 0.445-0.187c0.302-0.223 0.466-0.603 0.427-0.988l-0.314-2.912a4.699 4.699 0 0 0 2.1-3.923v-11.281c0-2.596-2.09-4.701-4.667-4.701zm3.733 8.461c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21zm5.6 0c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21zm5.6 0c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21z" stroke-width=".5"/></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 81c7155ac4f..d4e4573bf91 100644 --- a/apps/comments/img/comments.svg +++ b/apps/comments/img/comments.svg @@ -1 +1 @@ -<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="m6.667 4c-2.578 0-4.667 2.105-4.667 4.7v11.282c0 2.597 2.09 4.701 4.667 4.701 1.716 0.01 12.083 3e-3 17.057 0 1.115 0.842 1.807 1.748 3.057 3.206a0.93 0.93 0 0 0 0.561 0.103 0.969 0.969 0 0 0 0.445-0.187c0.302-0.223 0.466-0.603 0.427-0.988l-0.314-2.912a4.699 4.699 0 0 0 2.1-3.923v-11.281c0-2.596-2.09-4.701-4.667-4.701zm3.733 8.461c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21zm5.6 0c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21zm5.6 0c1.03 0 1.867 0.842 1.867 1.88 0 1.676-2.01 2.514-3.187 1.33-1.176-1.184-0.343-3.21 1.32-3.21z" stroke-width=".5" fill="#fff"/></svg> +<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/l10n/af.js b/apps/comments/l10n/af.js deleted file mode 100644 index 733e459b8f6..00000000000 --- a/apps/comments/l10n/af.js +++ /dev/null @@ -1,21 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Kommentare", - "You commented" : "U 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", - "Files app plugin to add comments to files" : "Lêertoepinprop om kommentaar op lêers te lewer", - "Edit comment" : "Wysig kommentaar", - "Delete comment" : "Skrap kommentaar", - "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!", - "Retry" : "Herprobeer", - "_%n unread comment_::_%n unread comments_" : ["%n ongelese kommentaar","%n ongelese kommentare"], - "Comment" : "Kommentaar", - "%1$s commented" : "%1$s het kommentaar gelewer" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/af.json b/apps/comments/l10n/af.json deleted file mode 100644 index 7ecfba7bed9..00000000000 --- a/apps/comments/l10n/af.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "translations": { - "Comments" : "Kommentare", - "You commented" : "U 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", - "Files app plugin to add comments to files" : "Lêertoepinprop om kommentaar op lêers te lewer", - "Edit comment" : "Wysig kommentaar", - "Delete comment" : "Skrap kommentaar", - "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!", - "Retry" : "Herprobeer", - "_%n unread comment_::_%n unread comments_" : ["%n ongelese kommentaar","%n ongelese kommentare"], - "Comment" : "Kommentaar", - "%1$s commented" : "%1$s het kommentaar gelewer" -},"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 5700b56a220..725c42c1cb4 100644 --- a/apps/comments/l10n/ar.js +++ b/apps/comments/l10n/ar.js @@ -9,22 +9,28 @@ OC.L10N.register( "%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" : "أضف تعليق", - "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!", + "@ 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" : "أعد المحاولة", - "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات", - "_%n unread comment_::_%n unread comments_" : ["%n تعليق غير مقروء","%n تعليق غير مقروء","تعليقان غير مقروءة","%n تعليقات غير مقروء","%n تعليق غير مقروء","%n تعليق غير مقروء"], "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"], "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 create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق", - "%1$s commented" : "%1$s كتب تعليق" + "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 149d865b1fa..4438e60ebf3 100644 --- a/apps/comments/l10n/ar.json +++ b/apps/comments/l10n/ar.json @@ -7,22 +7,28 @@ "%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" : "أضف تعليق", - "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!", + "@ 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" : "أعد المحاولة", - "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات", - "_%n unread comment_::_%n unread comments_" : ["%n تعليق غير مقروء","%n تعليق غير مقروء","تعليقان غير مقروءة","%n تعليقات غير مقروء","%n تعليق غير مقروء","%n تعليق غير مقروء"], "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"], "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 create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق", - "%1$s commented" : "%1$s كتب تعليق" + "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 0b4f0efba55..0ee30bdbb53 100644 --- a/apps/comments/l10n/ast.js +++ b/apps/comments/l10n/ast.js @@ -4,17 +4,33 @@ OC.L10N.register( "Comments" : "Comentarios", "You commented" : "Comentesti", "{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", - "Edit comment" : "Editar comentariu", - "Delete comment" : "Desaniciar comentariu", - "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"], "Comment" : "Comentariu", - "%1$s commented" : "%1$s comentó" + "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 942535d019c..43193924d64 100644 --- a/apps/comments/l10n/ast.json +++ b/apps/comments/l10n/ast.json @@ -2,17 +2,33 @@ "Comments" : "Comentarios", "You commented" : "Comentesti", "{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", - "Edit comment" : "Editar comentariu", - "Delete comment" : "Desaniciar comentariu", - "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"], "Comment" : "Comentariu", - "%1$s commented" : "%1$s comentó" + "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 8a9e4d427f1..a645c5a543f 100644 --- a/apps/comments/l10n/bg.js +++ b/apps/comments/l10n/bg.js @@ -9,24 +9,22 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{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" : "Опитай отново", - "Unable to load the comments list" : "Списъкът с коментари не може да се зареди", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], "_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" : "Възникна грешка при опит за създаване на коментар", - "%1$s commented" : "%1$s коментира" + "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 62967513eb4..5bb763dbc5d 100644 --- a/apps/comments/l10n/bg.json +++ b/apps/comments/l10n/bg.json @@ -7,24 +7,22 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Бяхте споменат/а към “{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" : "Опитай отново", - "Unable to load the comments list" : "Списъкът с коментари не може да се зареди", - "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"], "_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" : "Възникна грешка при опит за създаване на коментар", - "%1$s commented" : "%1$s коментира" + "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/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/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 676b6cb99c0..a8f3ce6d136 100644 --- a/apps/comments/l10n/ca.js +++ b/apps/comments/l10n/ca.js @@ -2,31 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentaris", - "You commented" : "Heu 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 fitxers", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors", - "{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"", - "Files app plugin to add comments to files" : "Connexió de l’aplicació de fitxers per afegir comentaris als fitxers", - "Edit comment" : "Edició comentari", - "Delete comment" : "Suprimeix comentari", + "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ó", - "Post comment" : "Enviar comentari", - "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!", + "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" : "Reintent", - "Unable to load the comments list" : "No es pot carregar la llista de comentaris", - "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"], + "Retry" : "Torna-ho a provar", "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"], "Comment" : "Comentari", "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari", - "Comment deleted" : "Comentari suprimit", + "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", - "%1$s commented" : "%1$s ha comentat" + "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 04f6397f734..d1f4ce2c7fe 100644 --- a/apps/comments/l10n/ca.json +++ b/apps/comments/l10n/ca.json @@ -1,30 +1,34 @@ { "translations": { "Comments" : "Comentaris", - "You commented" : "Heu 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 fitxers", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors", - "{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"", - "Files app plugin to add comments to files" : "Connexió de l’aplicació de fitxers per afegir comentaris als fitxers", - "Edit comment" : "Edició comentari", - "Delete comment" : "Suprimeix comentari", + "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ó", - "Post comment" : "Enviar comentari", - "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!", + "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" : "Reintent", - "Unable to load the comments list" : "No es pot carregar la llista de comentaris", - "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"], + "Retry" : "Torna-ho a provar", "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"], "Comment" : "Comentari", "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari", - "Comment deleted" : "Comentari suprimit", + "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", - "%1$s commented" : "%1$s ha comentat" + "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 c642d8b4ad6..1c8d69c14e5 100644 --- a/apps/comments/l10n/cs.js +++ b/apps/comments/l10n/cs.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "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ář", "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!", "No more messages" : "Žádné další zprávy", "Retry" : "Zkusit znovu", - "Unable to load the comments list" : "Nedaří se načíst seznam komentářů", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtené komentáře"], "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"], "Comment" : "Komentář", "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", - "%1$s commented" : "%1$s okomentováno" + "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře" }, "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 00fb4f44b04..c933b71a7c6 100644 --- a/apps/comments/l10n/cs.json +++ b/apps/comments/l10n/cs.json @@ -7,24 +7,28 @@ "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "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ář", "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!", "No more messages" : "Žádné další zprávy", "Retry" : "Zkusit znovu", - "Unable to load the comments list" : "Nedaří se načíst seznam komentářů", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtené komentáře"], "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"], "Comment" : "Komentář", "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", - "%1$s commented" : "%1$s okomentováno" + "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/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 c13246a3057..23c4b9873e7 100644 --- a/apps/comments/l10n/da.js +++ b/apps/comments/l10n/da.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet", + "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", - "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten", - "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"], "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"], - "Comment" : "Kommentér", + "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", - "%1$s commented" : "%1$s kommenterede" + "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 62c7c0b0d29..4abcd817f3b 100644 --- a/apps/comments/l10n/da.json +++ b/apps/comments/l10n/da.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en bruger, som siden er blevet slettet", + "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", - "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten", - "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"], "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"], - "Comment" : "Kommentér", + "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", - "%1$s commented" : "%1$s kommenterede" + "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 718d8fc7b49..dc964592b19 100644 --- a/apps/comments/l10n/de.js +++ b/apps/comments/l10n/de.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer 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", - "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], "_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", - "%1$s commented" : "%1$s kommentierte" + "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 8736118d0ec..d0679199b23 100644 --- a/apps/comments/l10n/de.json +++ b/apps/comments/l10n/de.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer 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", - "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], "_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", - "%1$s commented" : "%1$s kommentierte" + "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_DE.js b/apps/comments/l10n/de_DE.js index c27c8e13267..8a492c10bd3 100644 --- a/apps/comments/l10n/de_DE.js +++ b/apps/comments/l10n/de_DE.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer 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", - "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], "_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", - "%1$s commented" : "%1$s kommentierte" + "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 04c411f806d..44f2bbd961d 100644 --- a/apps/comments/l10n/de_DE.json +++ b/apps/comments/l10n/de_DE.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer 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", - "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden", - "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"], "_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", - "%1$s commented" : "%1$s kommentierte" + "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 446e1eb48bf..80b8c2b00fe 100644 --- a/apps/comments/l10n/el.js +++ b/apps/comments/l10n/el.js @@ -9,24 +9,23 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Το όνομά σας αναφέρθηκε στο “{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" : "Δοκιμή ξανά", - "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.", - "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"], "_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" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου", - "%1$s commented" : "%1$s σχολίασε" + "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 f588989db43..3c0c4a730e9 100644 --- a/apps/comments/l10n/el.json +++ b/apps/comments/l10n/el.json @@ -7,24 +7,23 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Το όνομά σας αναφέρθηκε στο “{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" : "Δοκιμή ξανά", - "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.", - "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"], "_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" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου", - "%1$s commented" : "%1$s σχολίασε" + "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 052af7287dd..20843d54147 100644 --- a/apps/comments/l10n/en_GB.js +++ b/apps/comments/l10n/en_GB.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{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", + "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", - "Unable to load the comments list" : "Unable to load the comments list", - "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"], "_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", - "%1$s commented" : "%1$s commented" + "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 5be8ea11d77..1d61dbdf9a6 100644 --- a/apps/comments/l10n/en_GB.json +++ b/apps/comments/l10n/en_GB.json @@ -7,24 +7,28 @@ "%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 \"{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", + "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", - "Unable to load the comments list" : "Unable to load the comments list", - "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"], "_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", - "%1$s commented" : "%1$s commented" + "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 6cf5b99a3b2..00000000000 --- a/apps/comments/l10n/eo.js +++ /dev/null @@ -1,22 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komentoj", - "You commented" : "Vi komentis", - "{author} commented" : "{author} komentis", - "You commented on %1$s" : "Vi komentis %1$s", - "You commented on {file}" : "Vi komentis pri {file}", - "%1$s commented on %2$s" : "%1$s komentis %2$s", - "{author} commented on {file}" : "{author} komentis pri {file}", - "<strong>Comments</strong> for files" : "<strong>Komentoj</strong> por dosieroj", - "Files app plugin to add comments to files" : "Kromprogramo por la aplikaĵo „Dosieroj“ por aldoni komentojn al dosieroj", - "Edit comment" : "Redakti komenton", - "Delete comment" : "Forigi komenton", - "No comments yet, start the conversation!" : "Neniu komento, ekkonversaciu!", - "Retry" : "Reprovi", - "_%n unread comment_::_%n unread comments_" : ["%n nelegataj komentoj","%n nelegataj komentoj"], - "_1 new comment_::_{unread} new comments_" : ["1 nova komento","{unread} novaj komentoj"], - "Comment" : "Komento", - "%1$s commented" : "%1$s komentis" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/eo.json b/apps/comments/l10n/eo.json deleted file mode 100644 index 9d2bf0318f4..00000000000 --- a/apps/comments/l10n/eo.json +++ /dev/null @@ -1,20 +0,0 @@ -{ "translations": { - "Comments" : "Komentoj", - "You commented" : "Vi komentis", - "{author} commented" : "{author} komentis", - "You commented on %1$s" : "Vi komentis %1$s", - "You commented on {file}" : "Vi komentis pri {file}", - "%1$s commented on %2$s" : "%1$s komentis %2$s", - "{author} commented on {file}" : "{author} komentis pri {file}", - "<strong>Comments</strong> for files" : "<strong>Komentoj</strong> por dosieroj", - "Files app plugin to add comments to files" : "Kromprogramo por la aplikaĵo „Dosieroj“ por aldoni komentojn al dosieroj", - "Edit comment" : "Redakti komenton", - "Delete comment" : "Forigi komenton", - "No comments yet, start the conversation!" : "Neniu komento, ekkonversaciu!", - "Retry" : "Reprovi", - "_%n unread comment_::_%n unread comments_" : ["%n nelegataj komentoj","%n nelegataj komentoj"], - "_1 new comment_::_{unread} new comments_" : ["1 nova komento","{unread} novaj komentoj"], - "Comment" : "Komento", - "%1$s commented" : "%1$s komentis" -},"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 3b64791814a..38edb32d713 100644 --- a/apps/comments/l10n/es.js +++ b/apps/comments/l10n/es.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{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", - "{user} mentioned you in a comment on \"{file}\"" : "{user} 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", - "Unable to load the comments list" : "No se pudo cargar la lista de comentarios", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios no leídos","%n comentarios no leídos"], "_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", - "%1$s commented" : "%1$s comentados" + "An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario" }, "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 183f0a4e129..51ae29fc0fa 100644 --- a/apps/comments/l10n/es.json +++ b/apps/comments/l10n/es.json @@ -7,24 +7,28 @@ "%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 \"{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", - "{user} mentioned you in a comment on \"{file}\"" : "{user} 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", - "Unable to load the comments list" : "No se pudo cargar la lista de comentarios", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios no leídos","%n comentarios no leídos"], "_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", - "%1$s commented" : "%1$s comentados" + "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 e69281fddcb..00000000000 --- a/apps/comments/l10n/es_419.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_419.json b/apps/comments/l10n/es_419.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_419.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_AR.js b/apps/comments/l10n/es_AR.js deleted file mode 100644 index 35f07d085b1..00000000000 --- a/apps/comments/l10n/es_AR.js +++ /dev/null @@ -1,21 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Ud. ha comentado", - "{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", - "Files app plugin to add comments to files" : "Complemento de aplicación de archivos para agregar comentarios a los archivos.", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentar", - "%1$s commented" : "%1$s comentados" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_AR.json b/apps/comments/l10n/es_AR.json deleted file mode 100644 index e911f8e268b..00000000000 --- a/apps/comments/l10n/es_AR.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Ud. ha comentado", - "{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", - "Files app plugin to add comments to files" : "Complemento de aplicación de archivos para agregar comentarios a los archivos.", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentar", - "%1$s commented" : "%1$s comentados" -},"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_CL.js b/apps/comments/l10n/es_CL.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_CL.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_CL.json b/apps/comments/l10n/es_CL.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_CL.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_CO.js b/apps/comments/l10n/es_CO.js index cf75b29f317..b8516c1449b 100644 --- a/apps/comments/l10n/es_CO.js +++ b/apps/comments/l10n/es_CO.js @@ -9,13 +9,27 @@ OC.L10N.register( "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", "Comment deleted" : "Comentario borrado", - "%1$s commented" : "%1$s comentó" + "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=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 55bac9d912b..c212111b999 100644 --- a/apps/comments/l10n/es_CO.json +++ b/apps/comments/l10n/es_CO.json @@ -7,13 +7,27 @@ "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], "Comment" : "Comentario", + "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario", "Comment deleted" : "Comentario borrado", - "%1$s commented" : "%1$s comentó" + "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 e69281fddcb..00000000000 --- a/apps/comments/l10n/es_CR.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_CR.json b/apps/comments/l10n/es_CR.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_CR.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_DO.js b/apps/comments/l10n/es_DO.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_DO.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_DO.json b/apps/comments/l10n/es_DO.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_DO.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_EC.js b/apps/comments/l10n/es_EC.js index e69281fddcb..1a90e73546f 100644 --- a/apps/comments/l10n/es_EC.js +++ b/apps/comments/l10n/es_EC.js @@ -9,12 +9,23 @@ OC.L10N.register( "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" + "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=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 069fc398041..23c9432df1a 100644 --- a/apps/comments/l10n/es_EC.json +++ b/apps/comments/l10n/es_EC.json @@ -7,12 +7,23 @@ "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"], "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" + "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 e69281fddcb..00000000000 --- a/apps/comments/l10n/es_GT.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_GT.json b/apps/comments/l10n/es_GT.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_GT.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_HN.js b/apps/comments/l10n/es_HN.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_HN.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_HN.json b/apps/comments/l10n/es_HN.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_HN.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_MX.js b/apps/comments/l10n/es_MX.js index e8b990fa0f8..30959ef751f 100644 --- a/apps/comments/l10n/es_MX.js +++ b/apps/comments/l10n/es_MX.js @@ -9,13 +9,28 @@ OC.L10N.register( "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"], "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" + "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=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 91768979169..db42c396705 100644 --- a/apps/comments/l10n/es_MX.json +++ b/apps/comments/l10n/es_MX.json @@ -7,13 +7,28 @@ "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], + "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"], "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" + "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 e69281fddcb..00000000000 --- a/apps/comments/l10n/es_NI.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_NI.json b/apps/comments/l10n/es_NI.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_NI.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_PA.js b/apps/comments/l10n/es_PA.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_PA.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_PA.json b/apps/comments/l10n/es_PA.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_PA.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_PE.js b/apps/comments/l10n/es_PE.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_PE.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_PE.json b/apps/comments/l10n/es_PE.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_PE.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_PR.js b/apps/comments/l10n/es_PR.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_PR.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_PR.json b/apps/comments/l10n/es_PR.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_PR.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_PY.js b/apps/comments/l10n/es_PY.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_PY.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_PY.json b/apps/comments/l10n/es_PY.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_PY.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_SV.js b/apps/comments/l10n/es_SV.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_SV.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_SV.json b/apps/comments/l10n/es_SV.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_SV.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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_UY.js b/apps/comments/l10n/es_UY.js deleted file mode 100644 index e69281fddcb..00000000000 --- a/apps/comments/l10n/es_UY.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -}, -"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_UY.json b/apps/comments/l10n/es_UY.json deleted file mode 100644 index 069fc398041..00000000000 --- a/apps/comments/l10n/es_UY.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Comentarios", - "You commented" : "Comentaste", - "{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", - "Edit comment" : "Editar comentario", - "Delete comment" : "Borrar comentario", - "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!", - "Retry" : "Reintentar", - "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"], - "Comment" : "Comentario", - "%1$s commented" : "%1$s comentó" -},"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/et_EE.js b/apps/comments/l10n/et_EE.js index fed1952f83b..f8e80d0e690 100644 --- a/apps/comments/l10n/et_EE.js +++ b/apps/comments/l10n/et_EE.js @@ -9,12 +9,28 @@ OC.L10N.register( "%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", + "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", - "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"], + "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"], "Comment" : "Kommentaar", - "%1$s commented" : "%1$s kommenteeris" + "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 88d0906771e..3c56525cb0c 100644 --- a/apps/comments/l10n/et_EE.json +++ b/apps/comments/l10n/et_EE.json @@ -7,12 +7,28 @@ "%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", + "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", - "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"], + "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"], "Comment" : "Kommentaar", - "%1$s commented" : "%1$s kommenteeris" + "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 bcfb99ad8d3..efa029c41ad 100644 --- a/apps/comments/l10n/eu.js +++ b/apps/comments/l10n/eu.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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>", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den erabiltzaile baten iruzkin batean", + "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", "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!", "No more messages" : "Ez da mezu gehiagorik", "Retry" : "Saiatu berriro", - "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu", - "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"], "_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", - "%1$s commented" : "%1$s-(e)k iruzkindu du" + "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 f09da9e788c..9df5961d387 100644 --- a/apps/comments/l10n/eu.json +++ b/apps/comments/l10n/eu.json @@ -7,24 +7,28 @@ "%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>", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den erabiltzaile baten iruzkin batean", + "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", "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!", "No more messages" : "Ez da mezu gehiagorik", "Retry" : "Saiatu berriro", - "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu", - "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"], "_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", - "%1$s commented" : "%1$s-(e)k iruzkindu du" + "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 c0ab10529c7..3317f902043 100644 --- a/apps/comments/l10n/fa.js +++ b/apps/comments/l10n/fa.js @@ -2,19 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "نظرات", - "Edit comment" : "ویرایش توضیح", - "Delete comment" : "حذف توضیح", - "New comment …" : "توضیح جدید ...", - "Post" : "ارسال", - "Cancel" : "منصرف شدن", - "[Deleted user]" : "[کاربر حذف شده]", + "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!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!", - "More comments …" : "نظرات بیشتر...", - "Save" : "ذخیره", - "Allowed characters {count} of {max}" : "شخصیت های مجاز {count} از {max", - "Error occurred while retrieving comment with ID {id}" : "هنگام بازیابی نظر با ID {id Er خطایی رخ داد", - "Error occurred while updating comment with id {id}" : "هنگام به روزرسانی نظر با شناسه شناسه Er خطایی روی داد", - "Error occurred while posting comment" : "هنگام ارسال نظر خطایی روی داد", - "Comment" : "نظر" + "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=2; plural=(n > 1);"); diff --git a/apps/comments/l10n/fa.json b/apps/comments/l10n/fa.json index 52ce32a5cd9..59df258f222 100644 --- a/apps/comments/l10n/fa.json +++ b/apps/comments/l10n/fa.json @@ -1,18 +1,34 @@ { "translations": { "Comments" : "نظرات", - "Edit comment" : "ویرایش توضیح", - "Delete comment" : "حذف توضیح", - "New comment …" : "توضیح جدید ...", - "Post" : "ارسال", - "Cancel" : "منصرف شدن", - "[Deleted user]" : "[کاربر حذف شده]", + "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!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!", - "More comments …" : "نظرات بیشتر...", - "Save" : "ذخیره", - "Allowed characters {count} of {max}" : "شخصیت های مجاز {count} از {max", - "Error occurred while retrieving comment with ID {id}" : "هنگام بازیابی نظر با ID {id Er خطایی رخ داد", - "Error occurred while updating comment with id {id}" : "هنگام به روزرسانی نظر با شناسه شناسه Er خطایی روی داد", - "Error occurred while posting comment" : "هنگام ارسال نظر خطایی روی داد", - "Comment" : "نظر" + "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 13431bec3c5..28a05c1659d 100644 --- a/apps/comments/l10n/fi.js +++ b/apps/comments/l10n/fi.js @@ -9,22 +9,26 @@ OC.L10N.register( "%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>", + "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", - "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], "_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", - "%1$s commented" : "%1$s kommentoi" + "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 09e2cc28b34..a8943301573 100644 --- a/apps/comments/l10n/fi.json +++ b/apps/comments/l10n/fi.json @@ -7,22 +7,26 @@ "%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>", + "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", - "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata", - "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"], "_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", - "%1$s commented" : "%1$s kommentoi" + "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/fr.js b/apps/comments/l10n/fr.js index f67e6b53dad..a1f24df6b80 100644 --- a/apps/comments/l10n/fr.js +++ b/apps/comments/l10n/fr.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{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 depuis a été supprimé", - "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné 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", - "Unable to load the comments list" : "Impossible de charger la liste des commentaires", - "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus","%n commentaires non lus"], "_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", - "%1$s commented" : "%1$s a commenté" + "An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire" }, "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 37497d18d06..861754c9719 100644 --- a/apps/comments/l10n/fr.json +++ b/apps/comments/l10n/fr.json @@ -7,24 +7,28 @@ "%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 \"{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 depuis a été supprimé", - "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné 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", - "Unable to load the comments list" : "Impossible de charger la liste des commentaires", - "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus","%n commentaires non lus"], "_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", - "%1$s commented" : "%1$s a commenté" + "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 ec84d0d3473..364e95abc69 100644 --- a/apps/comments/l10n/gl.js +++ b/apps/comments/l10n/gl.js @@ -2,29 +2,35 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", - "You commented" : "Vostede comentou", + "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", - "Files app plugin to add comments to files" : "Engadido da aplicación de ficheiros para engadir comentarios aos ficheiros", + "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", - "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"], "_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 mentres tentaba editar o 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 mentres tentaba eliminar o comentario", - "An error occurred while trying to create the comment" : "Produciuse un erro mentres tentaba crear o comentario", - "%1$s commented" : "%1$s comentados" + "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 a398d2bcbc7..128f8e5251f 100644 --- a/apps/comments/l10n/gl.json +++ b/apps/comments/l10n/gl.json @@ -1,28 +1,34 @@ { "translations": { "Comments" : "Comentarios", - "You commented" : "Vostede comentou", + "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", - "Files app plugin to add comments to files" : "Engadido da aplicación de ficheiros para engadir comentarios aos ficheiros", + "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", - "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios", - "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"], "_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 mentres tentaba editar o 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 mentres tentaba eliminar o comentario", - "An error occurred while trying to create the comment" : "Produciuse un erro mentres tentaba crear o comentario", - "%1$s commented" : "%1$s comentados" + "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 fda86bd27b0..e1d0256599a 100644 --- a/apps/comments/l10n/he.js +++ b/apps/comments/l10n/he.js @@ -9,24 +9,22 @@ OC.L10N.register( "%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ", "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}", "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{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" : "ניסיון חוזר", - "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות", - "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"], - "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות","{unread} הערות חדשות"], + "_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" : "אירעה שגיאה בניסיון ליצור את התגובה", - "%1$s commented" : "התקבלו תגובות %1$s" + "An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה" }, -"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); +"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"); diff --git a/apps/comments/l10n/he.json b/apps/comments/l10n/he.json index 143e72b8faa..c59bb70dfd1 100644 --- a/apps/comments/l10n/he.json +++ b/apps/comments/l10n/he.json @@ -7,24 +7,22 @@ "%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ", "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}", "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{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" : "ניסיון חוזר", - "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות", - "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"], - "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות","{unread} הערות חדשות"], + "_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" : "אירעה שגיאה בניסיון ליצור את התגובה", - "%1$s commented" : "התקבלו תגובות %1$s" -},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" + "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/hr.js b/apps/comments/l10n/hr.js index ff36da02cc8..00cd18cb7fb 100644 --- a/apps/comments/l10n/hr.js +++ b/apps/comments/l10n/hr.js @@ -3,28 +3,27 @@ OC.L10N.register( { "Comments" : "Komentari", "You commented" : "Vi ste komentirali", - "{author} commented" : "{autor} je komentirao", + "{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", - "Unable to load the comments list" : "Nije moguće učitati popis komentara", - "_%n unread comment_::_%n unread comments_" : ["%n nepročitani komentar","%n nepročitanih komentara","%n nepročitanih komentara"], "_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", - "%1$s commented" : "Komentirao je %1$s" + "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 5a544d3baf8..e6447eef1af 100644 --- a/apps/comments/l10n/hr.json +++ b/apps/comments/l10n/hr.json @@ -1,28 +1,27 @@ { "translations": { "Comments" : "Komentari", "You commented" : "Vi ste komentirali", - "{author} commented" : "{autor} je komentirao", + "{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", - "Unable to load the comments list" : "Nije moguće učitati popis komentara", - "_%n unread comment_::_%n unread comments_" : ["%n nepročitani komentar","%n nepročitanih komentara","%n nepročitanih komentara"], "_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", - "%1$s commented" : "Komentirao je %1$s" + "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 94607b24250..05b0f519e0b 100644 --- a/apps/comments/l10n/hu.js +++ b/apps/comments/l10n/hu.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt felhasználó hozzászólásában", + "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", - "Unable to load the comments list" : "A hozzászólások betöltése sikertelen", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], "_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", - "%1$s commented" : "%1$s hozzászólt" + "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 be60ab8bea6..962f1c72c06 100644 --- a/apps/comments/l10n/hu.json +++ b/apps/comments/l10n/hu.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt felhasználó hozzászólásában", + "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", - "Unable to load the comments list" : "A hozzászólások betöltése sikertelen", - "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"], "_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", - "%1$s commented" : "%1$s hozzászólt" + "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/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 448ee61dfc1..00000000000 --- a/apps/comments/l10n/ia.js +++ /dev/null @@ -1,19 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Commentarios", - "You commented" : "Tu 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", - "Edit comment" : "Modificar commentario", - "Delete comment" : "Deler commentario", - "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!", - "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"], - "Comment" : "Commentario", - "%1$s commented" : "%1$s commentava" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ia.json b/apps/comments/l10n/ia.json deleted file mode 100644 index af83165528b..00000000000 --- a/apps/comments/l10n/ia.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "translations": { - "Comments" : "Commentarios", - "You commented" : "Tu 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", - "Edit comment" : "Modificar commentario", - "Delete comment" : "Deler commentario", - "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!", - "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"], - "Comment" : "Commentario", - "%1$s commented" : "%1$s commentava" -},"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 3508b26d50d..10e0fa73ee3 100644 --- a/apps/comments/l10n/id.js +++ b/apps/comments/l10n/id.js @@ -3,30 +3,26 @@ OC.L10N.register( { "Comments" : "Komentar", "You commented" : "Anda berkomentar", - "{author} commented" : "{Pengarang} berkomentar", + "{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", - "{author} commented on {file}" : "{pengarang} berkomentar pada {file}", + "{author} commented on {file}" : "{author} berkomentar pada {file}", "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Anda disebut pada \"{file}\", dalam sebuah komentar oleh pengguna yang sejak itu telah dihapus", - "{user} mentioned you in a comment on \"{file}\"" : "{pengguna} menyebut Anda dalam sebuah komentar 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", - "Unable to load the comments list" : "Tidak dapat memuat daftar komentar", - "_%n unread comment_::_%n unread comments_" : ["%nkomentar belum dibaca"], - "_1 new comment_::_{unread} new comments_" : ["komentar baru {belum terbaca}"], "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", - "%1$s commented" : "%1$s dikomentari" + "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 85a28f7850c..56ecdc58c2c 100644 --- a/apps/comments/l10n/id.json +++ b/apps/comments/l10n/id.json @@ -1,30 +1,26 @@ { "translations": { "Comments" : "Komentar", "You commented" : "Anda berkomentar", - "{author} commented" : "{Pengarang} berkomentar", + "{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", - "{author} commented on {file}" : "{pengarang} berkomentar pada {file}", + "{author} commented on {file}" : "{author} berkomentar pada {file}", "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Anda disebut pada \"{file}\", dalam sebuah komentar oleh pengguna yang sejak itu telah dihapus", - "{user} mentioned you in a comment on \"{file}\"" : "{pengguna} menyebut Anda dalam sebuah komentar 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", - "Unable to load the comments list" : "Tidak dapat memuat daftar komentar", - "_%n unread comment_::_%n unread comments_" : ["%nkomentar belum dibaca"], - "_1 new comment_::_{unread} new comments_" : ["komentar baru {belum terbaca}"], "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", - "%1$s commented" : "%1$s dikomentari" + "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 d1d32a40232..d4b6327070b 100644 --- a/apps/comments/l10n/is.js +++ b/apps/comments/l10n/is.js @@ -9,22 +9,28 @@ OC.L10N.register( "%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", + "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", - "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir", - "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"], "_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", - "%1$s commented" : "%1$s setti inn athugasemd" + "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 86022ab7569..458a1704c3b 100644 --- a/apps/comments/l10n/is.json +++ b/apps/comments/l10n/is.json @@ -7,22 +7,28 @@ "%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", + "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", - "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir", - "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"], "_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", - "%1$s commented" : "%1$s setti inn athugasemd" + "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 e9f41e0c638..e2aac0c0b86 100644 --- a/apps/comments/l10n/it.js +++ b/apps/comments/l10n/it.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{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", + "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", - "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti", - "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti","%n commenti non letti"], "_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", - "%1$s commented" : "%1$s ha commentato" + "An error occurred while trying to create the comment" : "Si è verificato un errore durante il tentativo di creare il commento" }, "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 322bb23c1ec..09ba85ad60e 100644 --- a/apps/comments/l10n/it.json +++ b/apps/comments/l10n/it.json @@ -7,24 +7,28 @@ "%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 \"{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", + "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", - "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti", - "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti","%n commenti non letti"], "_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", - "%1$s commented" : "%1$s ha commentato" + "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 1a64a68b92e..60800bfb5f9 100644 --- a/apps/comments/l10n/ja.js +++ b/apps/comments/l10n/ja.js @@ -9,24 +9,28 @@ OC.L10N.register( "%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました", "{author} commented on {file}" : "{author} が{file} にコメントしました", "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted", + "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" : "再試行", - "Unable to load the comments list" : "コメントリストを読み込めませんでした", - "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"], "_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" : "コメント中にエラーが発生しました", - "%1$s commented" : "%1$s がコメントを追加" + "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 901bd686d2c..08014639e97 100644 --- a/apps/comments/l10n/ja.json +++ b/apps/comments/l10n/ja.json @@ -7,24 +7,28 @@ "%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました", "{author} commented on {file}" : "{author} が{file} にコメントしました", "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted", + "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" : "再試行", - "Unable to load the comments list" : "コメントリストを読み込めませんでした", - "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"], "_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" : "コメント中にエラーが発生しました", - "%1$s commented" : "%1$s がコメントを追加" + "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 4663b4e5420..00000000000 --- a/apps/comments/l10n/ka_GE.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "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> ფაილებზე", - "Edit comment" : "კომენტარის ცვლილება", - "Delete comment" : "კომენტარის გაუქმება", - "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ", - "Retry" : "ვცადოთ ახლიდან", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი","%n წაუკუთხავი კომენტარი"], - "Comment" : "კომენტარის დამატება", - "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი" -}, -"nplurals=2; plural=(n!=1);"); diff --git a/apps/comments/l10n/ka_GE.json b/apps/comments/l10n/ka_GE.json deleted file mode 100644 index 86318927cab..00000000000 --- a/apps/comments/l10n/ka_GE.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "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> ფაილებზე", - "Edit comment" : "კომენტარის ცვლილება", - "Delete comment" : "კომენტარის გაუქმება", - "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ", - "Retry" : "ვცადოთ ახლიდან", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი","%n წაუკუთხავი კომენტარი"], - "Comment" : "კომენტარის დამატება", - "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი" -},"pluralForm" :"nplurals=2; plural=(n!=1);" -}
\ 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 c3cfb3f5019..5b75a6eea40 100644 --- a/apps/comments/l10n/ko.js +++ b/apps/comments/l10n/ko.js @@ -9,14 +9,28 @@ OC.L10N.register( "%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김", "{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김", "<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>", + "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" : "다시 시도", - "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"], "_1 new comment_::_{unread} new comments_" : ["새 댓글 {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=1; plural=0;"); diff --git a/apps/comments/l10n/ko.json b/apps/comments/l10n/ko.json index 82b2a18c1a2..a8aed7edea4 100644 --- a/apps/comments/l10n/ko.json +++ b/apps/comments/l10n/ko.json @@ -7,14 +7,28 @@ "%1$s commented on %2$s" : "%2$s에 %1$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" : "다시 시도", - "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"], "_1 new comment_::_{unread} new comments_" : ["새 댓글 {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=1; plural=0;" }
\ 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 c3476bdb40a..c61f36f8af8 100644 --- a/apps/comments/l10n/lt_LT.js +++ b/apps/comments/l10n/lt_LT.js @@ -9,21 +9,21 @@ OC.L10N.register( "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", "{author} commented on {file}" : "{author} pakomentavo {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ą", - "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų","%n neskaitytas komentaras"], "_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", - "%1$s commented" : "%1$s pakomentavo" + "An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida" }, "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 427ee15292d..eed1892b83d 100644 --- a/apps/comments/l10n/lt_LT.json +++ b/apps/comments/l10n/lt_LT.json @@ -7,21 +7,21 @@ "%1$s commented on %2$s" : "%1$s pakomentavo %2$s", "{author} commented on {file}" : "{author} pakomentavo {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ą", - "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų","%n neskaitytas komentaras"], "_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", - "%1$s commented" : "%1$s pakomentavo" + "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 8230566f319..00000000000 --- a/apps/comments/l10n/lv.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komentāri", - "You commented" : "Tu komentēji", - "{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", - "Edit comment" : "Rediģēt komentāru", - "Delete comment" : "Dzēst komentāru", - "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!", - "Retry" : "Mēģināt vēlreiz", - "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"], - "Comment" : "Komentārs", - "%1$s commented" : "%1$s komentēja" -}, -"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 c782c7a810c..00000000000 --- a/apps/comments/l10n/lv.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Komentāri", - "You commented" : "Tu komentēji", - "{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", - "Edit comment" : "Rediģēt komentāru", - "Delete comment" : "Dzēst komentāru", - "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!", - "Retry" : "Mēģināt vēlreiz", - "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"], - "Comment" : "Komentārs", - "%1$s commented" : "%1$s komentēja" -},"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 9b872216301..9c73793ce49 100644 --- a/apps/comments/l10n/mk.js +++ b/apps/comments/l10n/mk.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Бевте спомнати на коментар на “{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" : "Обидете се повторно", - "Unable to load the comments list" : "Неможе да се вчита листата на коментари", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитан коментар","%n непрочитани коментари"], "_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" : "Настана грешка при обидот за креирање на коментар", - "%1$s commented" : "%1$s коментиран" + "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 f5ee0d3b638..5cd8c7b1076 100644 --- a/apps/comments/l10n/mk.json +++ b/apps/comments/l10n/mk.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Бевте спомнати на коментар на “{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" : "Обидете се повторно", - "Unable to load the comments list" : "Неможе да се вчита листата на коментари", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитан коментар","%n непрочитани коментари"], "_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" : "Настана грешка при обидот за креирање на коментар", - "%1$s commented" : "%1$s коментиран" + "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 6bc594d0e27..00000000000 --- a/apps/comments/l10n/mn.js +++ /dev/null @@ -1,19 +0,0 @@ -OC.L10N.register( - "comments", - { - "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>", - "Edit comment" : "Сэтгэгдэл засах", - "Delete comment" : "Сэтгэгдэл устгах", - "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна", - "Retry" : "Дахин оролдох", - "Comment" : "Сэтгэгдэл", - "%1$s commented" : "%1$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 b54ba223ed3..00000000000 --- a/apps/comments/l10n/mn.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "translations": { - "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>", - "Edit comment" : "Сэтгэгдэл засах", - "Delete comment" : "Сэтгэгдэл устгах", - "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна", - "Retry" : "Дахин оролдох", - "Comment" : "Сэтгэгдэл", - "%1$s commented" : "%1$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/nb.js b/apps/comments/l10n/nb.js index 4c4485cef26..dcc1127639a 100644 --- a/apps/comments/l10n/nb.js +++ b/apps/comments/l10n/nb.js @@ -9,18 +9,28 @@ OC.L10N.register( "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"], + "_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", - "%1$s commented" : "%1$s kommentert" + "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 cb5673fd23b..84c7337798d 100644 --- a/apps/comments/l10n/nb.json +++ b/apps/comments/l10n/nb.json @@ -7,18 +7,28 @@ "%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", + "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", - "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], - "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"], + "_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", - "%1$s commented" : "%1$s kommentert" + "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/nl.js b/apps/comments/l10n/nl.js index 15ffb4a1789..cb42f547b7c 100644 --- a/apps/comments/l10n/nl.js +++ b/apps/comments/l10n/nl.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{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", + "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" : "Bewerk reactie", - "Delete comment" : "Verwijder reactie", - "Cancel edit" : "Annuleer bewerking", - "Post comment" : "Plaats reactie", + "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", - "Unable to load the comments list" : "Kan reactielijst niet laden", - "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"], "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"], "Comment" : "Reactie", - "An error occurred while trying to edit the comment" : "Er trad een fout op bij het bewerken van de 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 trad een fout op bij het verwijderen van de reactie", - "An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie", - "%1$s commented" : "%1$s heeft gereageerd" + "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 3d816f1b870..6d660138be1 100644 --- a/apps/comments/l10n/nl.json +++ b/apps/comments/l10n/nl.json @@ -7,24 +7,28 @@ "%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 \"{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", + "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" : "Bewerk reactie", - "Delete comment" : "Verwijder reactie", - "Cancel edit" : "Annuleer bewerking", - "Post comment" : "Plaats reactie", + "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", - "Unable to load the comments list" : "Kan reactielijst niet laden", - "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"], "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"], "Comment" : "Reactie", - "An error occurred while trying to edit the comment" : "Er trad een fout op bij het bewerken van de 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 trad een fout op bij het verwijderen van de reactie", - "An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie", - "%1$s commented" : "%1$s heeft gereageerd" + "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 0e7b091d45c..00000000000 --- a/apps/comments/l10n/nn_NO.js +++ /dev/null @@ -1,24 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Kommentarar", - "You commented" : "Du kommenterte", - "%1$s commented" : "%1$skommenterte", - "{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 på %2$s", - "Edit comment" : "Rediger kommentar", - "Delete comment" : "Slett kommentar", - "No comments yet, start the conversation!" : "Ingen kommetarar enno, start samtala!", - "Retry" : "Forsøk att", - "Comment" : "Kommentér", - "New comment …" : "Ny kommentar...", - "Post" : "Publiser", - "Cancel" : "Avbryt", - "[Deleted user]" : "[Sletta brukar]", - "More comments …" : "Fleire kommentarar...", - "Save" : "Lagra", - "Allowed characters {count} of {max}" : "Tillate tegnmengde {count} av {max}" -}, -"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 ceaac51378d..00000000000 --- a/apps/comments/l10n/nn_NO.json +++ /dev/null @@ -1,22 +0,0 @@ -{ "translations": { - "Comments" : "Kommentarar", - "You commented" : "Du kommenterte", - "%1$s commented" : "%1$skommenterte", - "{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 på %2$s", - "Edit comment" : "Rediger kommentar", - "Delete comment" : "Slett kommentar", - "No comments yet, start the conversation!" : "Ingen kommetarar enno, start samtala!", - "Retry" : "Forsøk att", - "Comment" : "Kommentér", - "New comment …" : "Ny kommentar...", - "Post" : "Publiser", - "Cancel" : "Avbryt", - "[Deleted user]" : "[Sletta brukar]", - "More comments …" : "Fleire kommentarar...", - "Save" : "Lagra", - "Allowed characters {count} of {max}" : "Tillate tegnmengde {count} av {max}" -},"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 c37cb1e5d37..cee38c3d2ec 100644 --- a/apps/comments/l10n/oc.js +++ b/apps/comments/l10n/oc.js @@ -14,17 +14,15 @@ OC.L10N.register( "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", - "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris", - "_%n unread comment_::_%n unread comments_" : ["%n comentari pas legit","%n comentaris pas legits"], "_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", - "%1$s commented" : "%1$s a comentat" + "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 f8a72724ffc..5d4636fb27e 100644 --- a/apps/comments/l10n/oc.json +++ b/apps/comments/l10n/oc.json @@ -12,17 +12,15 @@ "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", - "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris", - "_%n unread comment_::_%n unread comments_" : ["%n comentari pas legit","%n comentaris pas legits"], "_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", - "%1$s commented" : "%1$s a comentat" + "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/pl.js b/apps/comments/l10n/pl.js index 8854cfc4105..918cfffa852 100644 --- a/apps/comments/l10n/pl.js +++ b/apps/comments/l10n/pl.js @@ -7,26 +7,30 @@ OC.L10N.register( "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}", + "{author} commented on {file}" : "{author} skomentował w {file}", "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Wspomniano o Tobie w komentarzu w \"{file}\" przez użytkownika, który został usunięty", + "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", "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", - "Unable to load the comments list" : "Nie można załadować listy komentarzy", - "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"], "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"], "Comment" : "Komentarz", "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", - "%1$s commented" : "%1$s skomentował" + "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 756565b0c49..a541f40224a 100644 --- a/apps/comments/l10n/pl.json +++ b/apps/comments/l10n/pl.json @@ -5,26 +5,30 @@ "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}", + "{author} commented on {file}" : "{author} skomentował w {file}", "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Wspomniano o Tobie w komentarzu w \"{file}\" przez użytkownika, który został usunięty", + "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", "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", - "Unable to load the comments list" : "Nie można załadować listy komentarzy", - "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"], "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"], "Comment" : "Komentarz", "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", - "%1$s commented" : "%1$s skomentował" + "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/ps.js b/apps/comments/l10n/ps.js deleted file mode 100644 index a8b067cc6d8..00000000000 --- a/apps/comments/l10n/ps.js +++ /dev/null @@ -1,19 +0,0 @@ -OC.L10N.register( - "comments", - { - "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>", - "Edit comment" : "تبصره سمول", - "Delete comment" : "تبسره ړنګول", - "No comments yet, start the conversation!" : "تر اوسه تبصره نشته!", - "_%n unread comment_::_%n unread comments_" : ["%n نالوستلې تبصره","%n نالوستلې تبصرې"], - "Comment" : "تبصره", - "%1$s commented" : "%1$s تبصره کړې" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ps.json b/apps/comments/l10n/ps.json deleted file mode 100644 index 66976e4e691..00000000000 --- a/apps/comments/l10n/ps.json +++ /dev/null @@ -1,17 +0,0 @@ -{ "translations": { - "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>", - "Edit comment" : "تبصره سمول", - "Delete comment" : "تبسره ړنګول", - "No comments yet, start the conversation!" : "تر اوسه تبصره نشته!", - "_%n unread comment_::_%n unread comments_" : ["%n نالوستلې تبصره","%n نالوستلې تبصرې"], - "Comment" : "تبصره", - "%1$s commented" : "%1$s تبصره کړې" -},"pluralForm" :"nplurals=2; plural=(n != 1);" -}
\ No newline at end of file diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js index 4bb5197c85a..035edefd0bc 100644 --- a/apps/comments/l10n/pt_BR.js +++ b/apps/comments/l10n/pt_BR.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de um usuário que já foi excluído", - "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{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", - "Unable to load the comments list" : "Não foi possível carregar a lista de comentários", - "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos","%n comentários não lidos"], "_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", - "%1$s commented" : "%1$s comentou" + "An error occurred while trying to create the comment" : "Ocorreu um erro ao tentar criar o comentário" }, "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 79d300802da..c1cb3d4c814 100644 --- a/apps/comments/l10n/pt_BR.json +++ b/apps/comments/l10n/pt_BR.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de um usuário que já foi excluído", - "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{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", - "Unable to load the comments list" : "Não foi possível carregar a lista de comentários", - "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos","%n comentários não lidos"], "_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", - "%1$s commented" : "%1$s comentou" + "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 ee0dcb70d90..e3b5e0f070a 100644 --- a/apps/comments/l10n/pt_PT.js +++ b/apps/comments/l10n/pt_PT.js @@ -4,19 +4,24 @@ OC.L10N.register( "Comments" : "Comentários", "You commented" : "Comentou", "{author} commented" : "{author} comentou", - "You commented on %1$s" : "Comentaste em %1$s", - "You commented on {file}" : "Comentaste em {file}", - "%1$s commented on %2$s" : "%1$s comentou %2$s", + "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 app plugin to add comments to files" : "Plugin de aplicação de ficheiros para adicionar comentários 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", - "_%n unread comment_::_%n unread comments_" : ["%n comentários por ler","%n comentários por ler","%n comentários por ler"], "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], "Comment" : "Comentário", - "%1$s commented" : "%1$s comentou" + "Comment deleted" : "Comentário eliminado" }, "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 2275c2b26e3..5f681b1ae42 100644 --- a/apps/comments/l10n/pt_PT.json +++ b/apps/comments/l10n/pt_PT.json @@ -2,19 +2,24 @@ "Comments" : "Comentários", "You commented" : "Comentou", "{author} commented" : "{author} comentou", - "You commented on %1$s" : "Comentaste em %1$s", - "You commented on {file}" : "Comentaste em {file}", - "%1$s commented on %2$s" : "%1$s comentou %2$s", + "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 app plugin to add comments to files" : "Plugin de aplicação de ficheiros para adicionar comentários 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", - "_%n unread comment_::_%n unread comments_" : ["%n comentários por ler","%n comentários por ler","%n comentários por ler"], "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"], "Comment" : "Comentário", - "%1$s commented" : "%1$s comentou" + "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 70d0e187975..d9ee2da0dcc 100644 --- a/apps/comments/l10n/ro.js +++ b/apps/comments/l10n/ro.js @@ -9,24 +9,24 @@ OC.L10N.register( "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Ai fost menționat în fișierul \"{file}\", într-un comentariu facut de un utilizator ce întretimp a fost șters", "{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ă", - "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], "_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", - "%1$s commented" : "%1$s a comentat" + "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 4db85ce1ace..f8db4ddc882 100644 --- a/apps/comments/l10n/ro.json +++ b/apps/comments/l10n/ro.json @@ -7,24 +7,24 @@ "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Ai fost menționat în fișierul \"{file}\", într-un comentariu facut de un utilizator ce întretimp a fost șters", "{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ă", - "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată", - "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], "_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", - "%1$s commented" : "%1$s a comentat" + "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 6aed3c76e48..c6dc089a1d4 100644 --- a/apps/comments/l10n/ru.js +++ b/apps/comments/l10n/ru.js @@ -5,28 +5,32 @@ OC.L10N.register( "You commented" : "Вы прокомментировали", "{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 \"{file}\", in a comment by a user that has since been deleted" : "Вы были упомянуты на \"{file}\", в комментарии пользователя, который с тех пор был удалён", - "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул вас в комментарии к \"{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" : "Повторить", - "Unable to load the comments list" : "Невозможно загрузить список комментариев", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"], "_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" : "Попытка создания комментария завершилась ошибкой", - "%1$s commented" : "%1$s прокомментировано" + "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 3ad13a8c7b6..30a7ba82f37 100644 --- a/apps/comments/l10n/ru.json +++ b/apps/comments/l10n/ru.json @@ -3,28 +3,32 @@ "You commented" : "Вы прокомментировали", "{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 \"{file}\", in a comment by a user that has since been deleted" : "Вы были упомянуты на \"{file}\", в комментарии пользователя, который с тех пор был удалён", - "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул вас в комментарии к \"{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" : "Повторить", - "Unable to load the comments list" : "Невозможно загрузить список комментариев", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"], "_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" : "Попытка создания комментария завершилась ошибкой", - "%1$s commented" : "%1$s прокомментировано" + "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 index ee6e39d5ae6..1980bde60d4 100644 --- a/apps/comments/l10n/sc.js +++ b/apps/comments/l10n/sc.js @@ -9,22 +9,23 @@ OC.L10N.register( "%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", - "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos", - "_%n unread comment_::_%n unread comments_" : ["%n cummentu non lèghidu","%n cummentos non lèghidos"], "_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", - "%1$s commented" : "%1$s at cummentadu" + "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 index 465dc598537..1c7987c118d 100644 --- a/apps/comments/l10n/sc.json +++ b/apps/comments/l10n/sc.json @@ -7,22 +7,23 @@ "%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", - "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos", - "_%n unread comment_::_%n unread comments_" : ["%n cummentu non lèghidu","%n cummentos non lèghidos"], "_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", - "%1$s commented" : "%1$s at cummentadu" + "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.js b/apps/comments/l10n/si.js deleted file mode 100644 index 70c6018c48a..00000000000 --- a/apps/comments/l10n/si.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "අදහස්", - "You commented" : "ඔබ අදහස් දැක්වා ඇත ", - "{author} commented" : "{author} අදහස් දැක්වා ඇත", - "You commented on {file}" : "ඔබ {file} හි අදහස් දැක්වා ඇත", - "<strong>Comments</strong> for files" : "ගොනු සඳහා <strong>අදහස්</strong>", - "Edit comment" : "අදහස සංස්කරණය", - "Post comment" : "අදහසක් පළ කරන්න", - "No comments yet, start the conversation!" : "තවම අදහස් නැත, සංවාදය ආරම්භ කරන්න!", - "No more messages" : "තවත් පණිවිඩ නැත", - "Retry" : "නැවත උත්සාහ කරන්න", - "Unable to load the comments list" : "අදහස් ලැයිස්තුව පූරණය කළ නොහැකිය", - "Comment" : "අදහස", - "An error occurred while trying to edit the comment" : "අදහස සංස්කරණය කිරීමට උත්සාහ කිරීමේදී දෝෂයක් ඇතිවිය", - "An error occurred while trying to create the comment" : "අදහස සෑදීමට උත්සාහ කිරීමේදී දෝෂයක් ඇතිවිය", - "%1$s commented" : "%1$s අදහස් දැක්වා ඇත" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/si.json b/apps/comments/l10n/si.json deleted file mode 100644 index 25c7d43f169..00000000000 --- a/apps/comments/l10n/si.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "අදහස්", - "You commented" : "ඔබ අදහස් දැක්වා ඇත ", - "{author} commented" : "{author} අදහස් දැක්වා ඇත", - "You commented on {file}" : "ඔබ {file} හි අදහස් දැක්වා ඇත", - "<strong>Comments</strong> for files" : "ගොනු සඳහා <strong>අදහස්</strong>", - "Edit comment" : "අදහස සංස්කරණය", - "Post comment" : "අදහසක් පළ කරන්න", - "No comments yet, start the conversation!" : "තවම අදහස් නැත, සංවාදය ආරම්භ කරන්න!", - "No more messages" : "තවත් පණිවිඩ නැත", - "Retry" : "නැවත උත්සාහ කරන්න", - "Unable to load the comments list" : "අදහස් ලැයිස්තුව පූරණය කළ නොහැකිය", - "Comment" : "අදහස", - "An error occurred while trying to edit the comment" : "අදහස සංස්කරණය කිරීමට උත්සාහ කිරීමේදී දෝෂයක් ඇතිවිය", - "An error occurred while trying to create the comment" : "අදහස සෑදීමට උත්සාහ කිරීමේදී දෝෂයක් ඇතිවිය", - "%1$s commented" : "%1$s අදහස් දැක්වා ඇත" -},"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 4dfc95166af..380b8c88fb5 100644 --- a/apps/comments/l10n/sk.js +++ b/apps/comments/l10n/sk.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári používateľom ktorý bol už vymazaný", + "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", - "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov","%n neprečítaných komentárov"], "_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", - "%1$s commented" : "%1$s komentoval" + "An error occurred while trying to create the comment" : "Vyskytla sa chyba pri vytváraní komentára" }, "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 f861288c8a4..e617085d50a 100644 --- a/apps/comments/l10n/sk.json +++ b/apps/comments/l10n/sk.json @@ -7,24 +7,28 @@ "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári používateľom ktorý bol už vymazaný", + "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", - "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov","%n neprečítaných komentárov"], "_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", - "%1$s commented" : "%1$s komentoval" + "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/sl.js b/apps/comments/l10n/sl.js index d0db1de4598..5731163c19f 100644 --- a/apps/comments/l10n/sl.js +++ b/apps/comments/l10n/sl.js @@ -9,22 +9,28 @@ OC.L10N.register( "%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", - "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb", - "_%n unread comment_::_%n unread comments_" : ["%n neprebrana opomba","%n neprebrani opombi","%n neprebrane opombe","%n neprebranih opomb"], "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"], "Comment" : "Opomba", "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", - "%1$s commented" : "%1$s napiše opombo" + "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 904d92ec761..0ee0fcad23f 100644 --- a/apps/comments/l10n/sl.json +++ b/apps/comments/l10n/sl.json @@ -7,22 +7,28 @@ "%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", - "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb", - "_%n unread comment_::_%n unread comments_" : ["%n neprebrana opomba","%n neprebrani opombi","%n neprebrane opombe","%n neprebranih opomb"], "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"], "Comment" : "Opomba", "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", - "%1$s commented" : "%1$s napiše opombo" + "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 3cc6679b8ed..00000000000 --- a/apps/comments/l10n/sq.js +++ /dev/null @@ -1,20 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "Komente", - "You commented" : "Komentuat", - "{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", - "Edit comment" : "Përpunoni komentin", - "Delete comment" : "Fshije komentin", - "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!", - "Retry" : "Riprovoni", - "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "], - "Comment" : "Koment", - "%1$s commented" : "%1$s komentoi" -}, -"nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/sq.json b/apps/comments/l10n/sq.json deleted file mode 100644 index ca10b104b82..00000000000 --- a/apps/comments/l10n/sq.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "translations": { - "Comments" : "Komente", - "You commented" : "Komentuat", - "{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", - "Edit comment" : "Përpunoni komentin", - "Delete comment" : "Fshije komentin", - "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!", - "Retry" : "Riprovoni", - "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "], - "Comment" : "Koment", - "%1$s commented" : "%1$s komentoi" -},"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 15883ebb3e2..95c34a5368f 100644 --- a/apps/comments/l10n/sr.js +++ b/apps/comments/l10n/sr.js @@ -9,22 +9,28 @@ OC.L10N.register( "%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" : "Покушај поново", - "Unable to load the comments list" : "Не могуи да учитам списак коментара", - "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], "_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" : "Грешка приликом покушаја креирања коментара", - "%1$s commented" : "%1$s коментарисао" + "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 25d53fd513a..80120b1efd6 100644 --- a/apps/comments/l10n/sr.json +++ b/apps/comments/l10n/sr.json @@ -7,22 +7,28 @@ "%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" : "Покушај поново", - "Unable to load the comments list" : "Не могуи да учитам списак коментара", - "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"], "_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" : "Грешка приликом покушаја креирања коментара", - "%1$s commented" : "%1$s коментарисао" + "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 4633c4abf31..c96b8c94ee8 100644 --- a/apps/comments/l10n/sv.js +++ b/apps/comments/l10n/sv.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen", + "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", - "Unable to load the comments list" : "Det gick inte att ladda kommentarlistan", - "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"], "_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 när du försökte redigera kommentaren", + "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 när du försökte ta bort kommentaren", - "An error occurred while trying to create the comment" : "Ett fel uppstod när du försökte skapa kommentaren", - "%1$s commented" : "%1$s kommenterade" + "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 f6717acd8d4..90d10190185 100644 --- a/apps/comments/l10n/sv.json +++ b/apps/comments/l10n/sv.json @@ -7,24 +7,28 @@ "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen", + "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", - "Unable to load the comments list" : "Det gick inte att ladda kommentarlistan", - "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"], "_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 när du försökte redigera kommentaren", + "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 när du försökte ta bort kommentaren", - "An error occurred while trying to create the comment" : "Ett fel uppstod när du försökte skapa kommentaren", - "%1$s commented" : "%1$s kommenterade" + "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/th.js b/apps/comments/l10n/th.js deleted file mode 100644 index 3cf2be63462..00000000000 --- a/apps/comments/l10n/th.js +++ /dev/null @@ -1,25 +0,0 @@ -OC.L10N.register( - "comments", - { - "Comments" : "ความคิดเห็น", - "You commented" : "คุณได้แสดงความคิดเห็น", - "%1$s commented" : "%1$s ได้แสดงความคิดเห็น", - "You commented on %1$s" : "คุณได้แสดงความคิดเห็นบน %1$s", - "%1$s commented on %2$s" : "%1$s ได้แสดงความคิดเห็นบน %2$s", - "Edit comment" : "แก้ไขความคิดเห็น", - "Delete comment" : "ลบความคิดเห็น", - "No comments yet, start the conversation!" : "ยังไม่มีความคิดเห็น เพิ่มความคิดเห็นเลย!", - "_%n unread comment_::_%n unread comments_" : ["%nความคิดเห็นที่ยังไม่ได้อ่าน"], - "_1 new comment_::_{unread} new comments_" : ["{unread} ความคิดเห็นใหม่"], - "Comment" : "แสดงความคิดเห็น", - "New comment …" : "ความคิดเห็นใหม่ ...", - "Post" : "โพสต์", - "Cancel" : "ยกเลิก", - "[Deleted user]" : "[ผู้ใช้ที่ถูกลบ]", - "More comments …" : "ความคิดเห็นอื่นๆ ...", - "Save" : "บันทึก", - "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร", - "Error occurred while updating comment with id {id}" : "เกิดข้อผิดพลาดขณะอัปเดตความคิดเห็นด้วย id {id}", - "Error occurred while posting comment" : "เกิดข้อผิดพลาดขณะโพสต์ความคิดเห็น" -}, -"nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/th.json b/apps/comments/l10n/th.json deleted file mode 100644 index 06fc6552b38..00000000000 --- a/apps/comments/l10n/th.json +++ /dev/null @@ -1,23 +0,0 @@ -{ "translations": { - "Comments" : "ความคิดเห็น", - "You commented" : "คุณได้แสดงความคิดเห็น", - "%1$s commented" : "%1$s ได้แสดงความคิดเห็น", - "You commented on %1$s" : "คุณได้แสดงความคิดเห็นบน %1$s", - "%1$s commented on %2$s" : "%1$s ได้แสดงความคิดเห็นบน %2$s", - "Edit comment" : "แก้ไขความคิดเห็น", - "Delete comment" : "ลบความคิดเห็น", - "No comments yet, start the conversation!" : "ยังไม่มีความคิดเห็น เพิ่มความคิดเห็นเลย!", - "_%n unread comment_::_%n unread comments_" : ["%nความคิดเห็นที่ยังไม่ได้อ่าน"], - "_1 new comment_::_{unread} new comments_" : ["{unread} ความคิดเห็นใหม่"], - "Comment" : "แสดงความคิดเห็น", - "New comment …" : "ความคิดเห็นใหม่ ...", - "Post" : "โพสต์", - "Cancel" : "ยกเลิก", - "[Deleted user]" : "[ผู้ใช้ที่ถูกลบ]", - "More comments …" : "ความคิดเห็นอื่นๆ ...", - "Save" : "บันทึก", - "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร", - "Error occurred while updating comment with id {id}" : "เกิดข้อผิดพลาดขณะอัปเดตความคิดเห็นด้วย id {id}", - "Error occurred while posting comment" : "เกิดข้อผิดพลาดขณะโพสต์ความคิดเห็น" -},"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 da884c6b2ec..c8294d0ec30 100644 --- a/apps/comments/l10n/tr.js +++ b/apps/comments/l10n/tr.js @@ -8,25 +8,29 @@ OC.L10N.register( "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 \"{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", + "<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ı eki", + "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", - "Unable to load the comments list" : "Yorum listesi yüklenemedi", - "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"], "_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ı", - "%1$s commented" : "%1$s yorumlanmış" + "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 f4b11fd5e0f..4664a265367 100644 --- a/apps/comments/l10n/tr.json +++ b/apps/comments/l10n/tr.json @@ -6,25 +6,29 @@ "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 \"{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", + "<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ı eki", + "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", - "Unable to load the comments list" : "Yorum listesi yüklenemedi", - "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"], "_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ı", - "%1$s commented" : "%1$s yorumlanmış" + "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 f4d4fc01323..03b1fea5b85 100644 --- a/apps/comments/l10n/uk.js +++ b/apps/comments/l10n/uk.js @@ -3,30 +3,34 @@ OC.L10N.register( { "Comments" : "Коментарі", "You commented" : "Ви прокоментували", - "{author} commented" : "{author} прокоментував", + "{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}", + "{author} commented on {file}" : "{author} прокоментував(-ла) {file}", "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{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" : "Ще раз", - "Unable to load the comments list" : "Не вдалося завантажити список коментарів", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"], "_1 new comment_::_{unread} new comments_" : ["{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" : "Під час створення коментаря сталася помилка", - "%1$s commented" : "%1$s прокоментовано" + "An error occurred while trying to delete the comment" : "Під час спроби вилучити коментар сталася помилка", + "An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка" }, "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 67559be1ec6..7802b6d4f15 100644 --- a/apps/comments/l10n/uk.json +++ b/apps/comments/l10n/uk.json @@ -1,30 +1,34 @@ { "translations": { "Comments" : "Коментарі", "You commented" : "Ви прокоментували", - "{author} commented" : "{author} прокоментував", + "{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}", + "{author} commented on {file}" : "{author} прокоментував(-ла) {file}", "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{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" : "Ще раз", - "Unable to load the comments list" : "Не вдалося завантажити список коментарів", - "_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"], "_1 new comment_::_{unread} new comments_" : ["{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" : "Під час створення коментаря сталася помилка", - "%1$s commented" : "%1$s прокоментовано" + "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 c61a385e17e..7ee551e6efb 100644 --- a/apps/comments/l10n/vi.js +++ b/apps/comments/l10n/vi.js @@ -1,7 +1,7 @@ OC.L10N.register( "comments", { - "Comments" : "Các bình luận", + "Comments" : "Bình luận", "You commented" : "Bạn đã 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", @@ -9,24 +9,23 @@ OC.L10N.register( "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Bạn đã được nhắc tới trên \"{file}\", trong một bình luận bởi một người dùng đã bị xoá", + "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", - "Unable to load the comments list" : "Không thể tải danh sách bình luận", - "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], "_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", - "%1$s commented" : "%1$s được 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 21a242bd925..a014378b887 100644 --- a/apps/comments/l10n/vi.json +++ b/apps/comments/l10n/vi.json @@ -1,5 +1,5 @@ { "translations": { - "Comments" : "Các bình luận", + "Comments" : "Bình luận", "You commented" : "Bạn đã 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", @@ -7,24 +7,23 @@ "%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", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Bạn đã được nhắc tới trên \"{file}\", trong một bình luận bởi một người dùng đã bị xoá", + "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", - "Unable to load the comments list" : "Không thể tải danh sách bình luận", - "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"], "_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", - "%1$s commented" : "%1$s được 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 e7b79b55a5d..1b29a108500 100644 --- a/apps/comments/l10n/zh_CN.js +++ b/apps/comments/l10n/zh_CN.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "用户在“ {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" : "重试", - "Unable to load the comments list" : "无法加载评论列表", - "_%n unread comment_::_%n unread comments_" : ["%n 条未读评论"], "_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" : "创建评论时出错", - "%1$s commented" : "%1$s 已评论" + "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 a972153a78a..a6d668e613c 100644 --- a/apps/comments/l10n/zh_CN.json +++ b/apps/comments/l10n/zh_CN.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "用户在“ {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" : "重试", - "Unable to load the comments list" : "无法加载评论列表", - "_%n unread comment_::_%n unread comments_" : ["%n 条未读评论"], "_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" : "创建评论时出错", - "%1$s commented" : "%1$s 已评论" + "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 c8aa5f08837..ed0661f0655 100644 --- a/apps/comments/l10n/zh_HK.js +++ b/apps/comments/l10n/zh_HK.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{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" : "重試", - "Unable to load the comments list" : "無法載入留言清單", - "_%n unread comment_::_%n unread comments_" : ["%n 個未讀留言"], "_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" : "嘗試建立此留言時錯誤", - "%1$s commented" : "%1$s 個留言" + "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 c1c4de8345f..ea90a3983ea 100644 --- a/apps/comments/l10n/zh_HK.json +++ b/apps/comments/l10n/zh_HK.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{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" : "重試", - "Unable to load the comments list" : "無法載入留言清單", - "_%n unread comment_::_%n unread comments_" : ["%n 個未讀留言"], "_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" : "嘗試建立此留言時錯誤", - "%1$s commented" : "%1$s 個留言" + "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 35ad3a2ca4e..42e06d4e4dd 100644 --- a/apps/comments/l10n/zh_TW.js +++ b/apps/comments/l10n/zh_TW.js @@ -9,24 +9,28 @@ OC.L10N.register( "%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 \"{file}\", in a comment by a user that has since been deleted" : "一個已被刪除的使用者在「{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" : "用於對檔案加入留言的檔案應用程式擴充元件", + "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" : "沒有更多訊息", + "No more messages" : "沒有其他訊息", "Retry" : "重試", - "Unable to load the comments list" : "無法載入留言列表", - "_%n unread comment_::_%n unread comments_" : ["%n 則未讀留言"], "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"], "Comment" : "留言", - "An error occurred while trying to edit the 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" : "嘗試建立留言時發生錯誤", - "%1$s commented" : "%1$s 已留言" + "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 0d0f47c2c17..309eaba81b0 100644 --- a/apps/comments/l10n/zh_TW.json +++ b/apps/comments/l10n/zh_TW.json @@ -7,24 +7,28 @@ "%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 \"{file}\", in a comment by a user that has since been deleted" : "一個已被刪除的使用者在「{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" : "用於對檔案加入留言的檔案應用程式擴充元件", + "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" : "沒有更多訊息", + "No more messages" : "沒有其他訊息", "Retry" : "重試", - "Unable to load the comments list" : "無法載入留言列表", - "_%n unread comment_::_%n unread comments_" : ["%n 則未讀留言"], "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"], "Comment" : "留言", - "An error occurred while trying to edit the 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" : "嘗試建立留言時發生錯誤", - "%1$s commented" : "%1$s 已留言" + "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 efd8d5140ae..8dcafd872d7 100644 --- a/apps/comments/lib/Activity/Filter.php +++ b/apps/comments/lib/Activity/Filter.php @@ -1,24 +1,8 @@ <?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; @@ -27,64 +11,40 @@ 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 69315b6ac00..45064f4a6be 100644 --- a/apps/comments/lib/Activity/Listener.php +++ b/apps/comments/lib/Activity/Listener.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author 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; @@ -35,37 +18,20 @@ use OCP\IUserSession; use OCP\Share\IShareHelper; class Listener { - protected IManager $activityManager; - protected IUserSession $session; - protected IAppManager $appManager; - protected IMountProviderCollection $mountCollection; - protected IRootFolder $rootFolder; - protected IShareHelper $shareHelper; - - /** - * Listener constructor. - */ - 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' || $event->getEvent() !== CommentsEvent::EVENT_ADD - || !$this->appManager->isInstalled('activity')) { + || !$this->appManager->isEnabledForAnyone('activity')) { // Comment not for file, not adding a comment or no activity-app enabled (save the energy) return; } @@ -101,7 +67,7 @@ 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(), ]); @@ -113,7 +79,7 @@ class Listener { $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 f9a5971c7f3..ee53357efdb 100644 --- a/apps/comments/lib/Activity/Provider.php +++ b/apps/comments/lib/Activity/Provider.php @@ -1,29 +1,12 @@ <?php + /** - * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 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; @@ -35,19 +18,15 @@ use OCP\IUserManager; use OCP\L10N\IFactory; class Provider implements IProvider { - protected IFactory $languageFactory; protected ?IL10N $l = null; - protected IUrlGenerator $url; - protected ICommentsManager $commentsManager; - protected IUserManager $userManager; - protected 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; + + public function __construct( + protected IFactory $languageFactory, + protected IURLGenerator $url, + protected ICommentsManager $commentsManager, + protected IUserManager $userManager, + protected IManager $activityManager, + ) { } /** @@ -55,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); @@ -76,19 +55,19 @@ 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(); + } /** - * @throws \InvalidArgumentException + * @throws UnknownActivityException */ protected function parseShortVersion(IEvent $event): IEvent { $subjectParameters = $this->getSubjectParameters($event); @@ -103,14 +82,14 @@ class Provider implements IProvider { ]); } } else { - throw new \InvalidArgumentException(); + throw new UnknownActivityException(); } return $event; } /** - * @throws \InvalidArgumentException + * @throws UnknownActivityException */ protected function parseLongVersion(IEvent $event): IEvent { $subjectParameters = $this->getSubjectParameters($event); @@ -135,7 +114,7 @@ class Provider implements IProvider { ]); } } else { - throw new \InvalidArgumentException(); + throw new UnknownActivityException(); } return $event; @@ -168,10 +147,10 @@ class Provider implements IProvider { 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(); $mentionCount = 1; @@ -182,7 +161,7 @@ class Provider implements IProvider { } $message = str_replace('@"' . $mention['id'] . '"', '{mention' . $mentionCount . '}', $message); - if (strpos($mention['id'], ' ') === false && strpos($mention['id'], 'guest/') !== 0) { + if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) { $message = str_replace('@' . $mention['id'], '{mention' . $mentionCount . '}', $message); } @@ -196,10 +175,13 @@ class Provider implements IProvider { } } + /** + * @return array<string, string> + */ 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]), diff --git a/apps/comments/lib/Activity/Setting.php b/apps/comments/lib/Activity/Setting.php index c0d91c244a6..7fbf4001b20 100644 --- a/apps/comments/lib/Activity/Setting.php +++ b/apps/comments/lib/Activity/Setting.php @@ -1,97 +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 527c5d99fc3..db4a2ce614c 100644 --- a/apps/comments/lib/AppInfo/Application.php +++ b/apps/comments/lib/AppInfo/Application.php @@ -1,41 +1,18 @@ <?php + /** - * @copyright Copyright (c) 2016, Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\AppInfo; -use Closure; use OCA\Comments\Capabilities; -use OCA\Comments\Controller\Notifications; -use OCA\Comments\EventHandler; 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\LegacyProvider; use OCA\Comments\Search\CommentsSearchProvider; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCA\Files\Event\LoadSidebar; @@ -44,9 +21,7 @@ use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\Comments\CommentsEntityEvent; -use OCP\ISearch; -use OCP\IServerContainer; -use OCP\Comments\ICommentsManager; +use OCP\Comments\CommentsEvent; class Application extends App implements IBootstrap { public const APP_ID = 'comments'; @@ -58,8 +33,6 @@ class Application extends App implements IBootstrap { public function register(IRegistrationContext $context): void { $context->registerCapability(Capabilities::class); - $context->registerServiceAlias('NotificationsController', Notifications::class); - $context->registerEventListener( LoadAdditionalScriptsEvent::class, LoadAdditionalScripts::class @@ -69,9 +42,14 @@ class Application extends App implements IBootstrap { LoadSidebarScripts::class ); $context->registerEventListener( - CommentsEntityEvent::EVENT_ENTITY, + CommentsEntityEvent::class, CommentsEntityEventListener::class ); + $context->registerEventListener( + CommentsEvent::class, + CommentsEventListener::class, + ); + $context->registerSearchProvider(CommentsSearchProvider::class); $context->registerInitialStateProvider(MaxAutoCompleteResultsInitialState::class); @@ -80,14 +58,5 @@ class Application extends App implements IBootstrap { } public function boot(IBootContext $context): void { - $context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler'])); - - $context->getServerContainer()->get(ISearch::class)->registerProvider(LegacyProvider::class, ['apps' => ['files']]); - } - - protected function registerCommentsEventHandler(IServerContainer $container): void { - $container->get(ICommentsManager::class)->registerEventHandler(function (): EventHandler { - return $this->getContainer()->get(EventHandler::class); - }); } } diff --git a/apps/comments/lib/Capabilities.php b/apps/comments/lib/Capabilities.php index ba5d2a2086b..2057803d867 100644 --- a/apps/comments/lib/Capabilities.php +++ b/apps/comments/lib/Capabilities.php @@ -3,31 +3,17 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2020 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: 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' => [ diff --git a/apps/comments/lib/Collaboration/CommentersSorter.php b/apps/comments/lib/Collaboration/CommentersSorter.php index 8723b132e03..baa27155573 100644 --- a/apps/comments/lib/Collaboration/CommentersSorter.php +++ b/apps/comments/lib/Collaboration/CommentersSorter.php @@ -1,25 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Collaboration; @@ -27,14 +10,12 @@ use OCP\Collaboration\AutoComplete\ISorter; use OCP\Comments\ICommentsManager; class CommentersSorter implements ISorter { - - private ICommentsManager $commentsManager; - - public function __construct(ICommentsManager $commentsManager) { - $this->commentsManager = $commentsManager; + public function __construct( + private ICommentsManager $commentsManager, + ) { } - public function getId() { + public function getId(): string { return 'commenters'; } @@ -42,10 +23,10 @@ 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) { return; @@ -76,6 +57,9 @@ class CommentersSorter implements ISorter { } } + /** + * @return array<string, array<string, int>> + */ protected function retrieveCommentsInformation(string $type, string $id): array { $comments = $this->commentsManager->getForObject($type, $id); if (count($comments) === 0) { diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/NotificationsController.php index ba61a0d33cd..0937b6929b8 100644 --- a/apps/comments/lib/Controller/Notifications.php +++ b/apps/comments/lib/Controller/NotificationsController.php @@ -1,33 +1,18 @@ <?php + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @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\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\AppFramework\Http\Response; use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Files\IRootFolder; @@ -38,43 +23,35 @@ use OCP\IUserSession; use OCP\Notification\IManager; /** - * Class Notifications - * * @package OCA\Comments\Controller */ -class Notifications extends Controller { - - protected IRootFolder $rootFolder; - protected ICommentsManager $commentsManager; - protected IURLGenerator $urlGenerator; - protected IManager $notificationManager; - protected IUserSession $userSession; - - /** - * Notifications constructor. - */ +#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] +class NotificationsController extends Controller { public function __construct( string $appName, IRequest $request, - ICommentsManager $commentsManager, - IRootFolder $rootFolder, - IURLGenerator $urlGenerator, - IManager $notificationManager, - IUserSession $userSession + protected ICommentsManager $commentsManager, + protected IRootFolder $rootFolder, + protected IURLGenerator $urlGenerator, + protected IManager $notificationManager, + protected IUserSession $userSession, ) { parent::__construct($appName, $request); - $this->commentsManager = $commentsManager; - $this->rootFolder = $rootFolder; - $this->urlGenerator = $urlGenerator; - $this->notificationManager = $notificationManager; - $this->userSession = $userSession; } /** - * @PublicPage - * @NoCSRFRequired + * 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 */ - public function view(string $id): Response { + #[PublicPage] + #[NoCSRFRequired] + public function view(string $id): RedirectResponse|NotFoundResponse { $currentUser = $this->userSession->getUser(); if (!$currentUser instanceof IUser) { return new RedirectResponse( diff --git a/apps/comments/lib/EventHandler.php b/apps/comments/lib/EventHandler.php deleted file mode 100644 index 6027a24b026..00000000000 --- a/apps/comments/lib/EventHandler.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -namespace OCA\Comments; - -use OCA\Comments\Activity\Listener as ActivityListener; -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/Listener/CommentsEntityEventListener.php b/apps/comments/lib/Listener/CommentsEntityEventListener.php index 5675e1904cc..5aeeb3c63ea 100644 --- a/apps/comments/lib/Listener/CommentsEntityEventListener.php +++ b/apps/comments/lib/Listener/CommentsEntityEventListener.php @@ -3,41 +3,32 @@ declare(strict_types=1); /** - * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 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) { - $nodes = \OC::$server->getUserFolder()->getById((int)$name); + $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 index e43ca5f2bbe..81e1bfe5310 100644 --- a/apps/comments/lib/Listener/LoadAdditionalScripts.php +++ b/apps/comments/lib/Listener/LoadAdditionalScripts.php @@ -3,27 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Listener; @@ -33,14 +14,14 @@ 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; } - // TODO: make sure to only include the sidebar script when - // we properly split it between files list and sidebar - Util::addScript(Application::APP_ID, 'comments'); + // 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 index 2c4dca97188..906fe40fed2 100644 --- a/apps/comments/lib/Listener/LoadSidebarScripts.php +++ b/apps/comments/lib/Listener/LoadSidebarScripts.php @@ -3,42 +3,27 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\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 { - - private ICommentsManager $commentsManager; - - public function __construct(ICommentsManager $commentsManager) { - $this->commentsManager = $commentsManager; + public function __construct( + private ICommentsManager $commentsManager, + private IInitialState $initialState, + private IAppManager $appManager, + ) { } public function handle(Event $event): void { @@ -48,9 +33,8 @@ class LoadSidebarScripts implements IEventListener { $this->commentsManager->load(); - // TODO: make sure to only include the sidebar script when - // we properly split it between files list and sidebar - Util::addScript(Application::APP_ID, 'comments'); + $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 index 015eaf19d84..b4c8f8719db 100644 --- a/apps/comments/lib/MaxAutoCompleteResultsInitialState.php +++ b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php @@ -3,27 +3,8 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2021 Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments; @@ -31,12 +12,9 @@ use OCP\AppFramework\Services\InitialStateProvider; use OCP\IConfig; class MaxAutoCompleteResultsInitialState extends InitialStateProvider { - - /** @var IConfig */ - private $config; - - public function __construct(IConfig $config) { - $this->config = $config; + public function __construct( + private IConfig $config, + ) { } public function getKey(): string { diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php index d1662f84266..43922f85e59 100644 --- a/apps/comments/lib/Notification/Listener.php +++ b/apps/comments/lib/Notification/Listener.php @@ -1,25 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * - * @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; @@ -27,27 +11,16 @@ use OCP\Comments\CommentsEvent; use OCP\Comments\IComment; use OCP\IUserManager; use OCP\Notification\IManager; +use OCP\Notification\INotification; class Listener { - - protected IManager $notificationManager; - protected IUserManager $userManager; - - /** - * Listener constructor. - */ 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()); @@ -77,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') @@ -94,12 +64,12 @@ 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) { + public function extractMentions(array $mentions): array { if (empty($mentions)) { return []; } diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index 59f1ad5da5f..62562bf42aa 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -1,26 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author 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; @@ -34,26 +17,16 @@ use OCP\L10N\IFactory; use OCP\Notification\AlreadyProcessedException; use OCP\Notification\INotification; use OCP\Notification\INotifier; +use OCP\Notification\UnknownNotificationException; class Notifier implements INotifier { - protected IFactory $l10nFactory; - protected IRootFolder $rootFolder; - protected ICommentsManager $commentsManager; - protected IURLGenerator $url; - protected IUserManager $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; } /** @@ -80,19 +53,19 @@ class Notifier implements INotifier { * @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, string $languageCode): INotification { if ($notification->getApp() !== 'comments') { - throw new \InvalidArgumentException(); + throw new UnknownNotificationException(); } try { $comment = $this->commentsManager->get($notification->getObjectId()); } 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(); @@ -108,7 +81,7 @@ class Notifier implements INotifier { case 'mention': $parameters = $notification->getSubjectParameters(); if ($parameters[0] !== 'files') { - throw new \InvalidArgumentException('Unsupported comment object'); + throw new UnknownNotificationException('Unsupported comment object'); } $userFolder = $this->rootFolder->getUserFolder($notification->getUser()); $nodes = $userFolder->getById((int)$parameters[1]); @@ -118,7 +91,7 @@ class Notifier implements INotifier { $node = $nodes[0]; $path = rtrim($node->getPath(), '/'); - if (strpos($path, '/' . $notification->getUser() . '/files/') === 0) { + if (str_starts_with($path, '/' . $notification->getUser() . '/files/')) { // Remove /user/files/... $fullPath = $path; [,,, $path] = explode('/', $fullPath, 4); @@ -134,7 +107,7 @@ class Notifier implements INotifier { ]; if ($isDeletedActor) { - $subject = $l->t('You were mentioned on "{file}", in a comment by a user that has since been deleted'); + $subject = $l->t('You were mentioned on "{file}", in a comment by an account that has since been deleted'); } else { $subject = $l->t('{user} mentioned you in a comment on "{file}"'); $subjectParameters['user'] = [ @@ -156,7 +129,7 @@ class Notifier implements INotifier { break; default: - throw new \InvalidArgumentException('Invalid subject'); + throw new UnknownNotificationException('Invalid subject'); } } @@ -182,7 +155,7 @@ class Notifier implements INotifier { // index of the mentions of that type. $mentionParameterId = 'mention-' . $mention['type'] . $mentionTypeCount[$mention['type']]; $message = str_replace('@"' . $mention['id'] . '"', '{' . $mentionParameterId . '}', $message); - if (strpos($mention['id'], ' ') === false && strpos($mention['id'], 'guest/') !== 0) { + if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) { $message = str_replace('@' . $mention['id'], '{' . $mentionParameterId . '}', $message); } diff --git a/apps/comments/lib/Search/CommentsSearchProvider.php b/apps/comments/lib/Search/CommentsSearchProvider.php index b36f82f8401..87a658cab1c 100644 --- a/apps/comments/lib/Search/CommentsSearchProvider.php +++ b/apps/comments/lib/Search/CommentsSearchProvider.php @@ -3,27 +3,8 @@ declare(strict_types=1); /** - * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Search; @@ -39,39 +20,22 @@ use function array_map; use function pathinfo; class CommentsSearchProvider implements IProvider { - - private IUserManager $userManager; - private IL10N $l10n; - private IURLGenerator $urlGenerator; - private LegacyProvider $legacyProvider; - - public function __construct(IUserManager $userManager, - IL10N $l10n, - IURLGenerator $urlGenerator, - LegacyProvider $legacyProvider) { - $this->userManager = $userManager; - $this->l10n = $l10n; - $this->urlGenerator = $urlGenerator; - $this->legacyProvider = $legacyProvider; + public function __construct( + private IUserManager $userManager, + private IL10N $l10n, + private IURLGenerator $urlGenerator, + private LegacyProvider $legacyProvider, + ) { } - /** - * @inheritDoc - */ public function getId(): string { return 'comments'; } - /** - * @inheritDoc - */ public function getName(): string { return $this->l10n->t('Comments'); } - /** - * @inheritDoc - */ public function getOrder(string $route, array $routeParameters): int { if ($route === 'files.View.index') { // Files first @@ -80,9 +44,6 @@ class CommentsSearchProvider implements IProvider { return 10; } - /** - * @inheritDoc - */ public function search(IUser $user, ISearchQuery $query): SearchResult { return SearchResult::complete( $this->l10n->t('Comments'), @@ -97,7 +58,7 @@ class CommentsSearchProvider implements IProvider { $avatarUrl, $result->name, $path, - $this->urlGenerator->linkToRouteAbsolute('files.view.index',[ + $this->urlGenerator->linkToRouteAbsolute('files.view.index', [ 'dir' => $pathInfo['dirname'], 'scrollto' => $pathInfo['basename'], ]), diff --git a/apps/comments/lib/Search/LegacyProvider.php b/apps/comments/lib/Search/LegacyProvider.php index d22caad7e3d..a269c418d06 100644 --- a/apps/comments/lib/Search/LegacyProvider.php +++ b/apps/comments/lib/Search/LegacyProvider.php @@ -3,39 +3,23 @@ declare(strict_types=1); /** - * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 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\Comments\ICommentsManager; +use OCP\Server; use function count; class LegacyProvider extends Provider { - /** * Search for $query * @@ -44,8 +28,8 @@ class LegacyProvider extends Provider { * @since 7.0.0 */ public function search($query): array { - $cm = \OC::$server->get(ICommentsManager::class); - $us = \OC::$server->getUserSession(); + $cm = Server::get(ICommentsManager::class); + $us = Server::get(IUserSession::class); $user = $us->getUser(); if (!$user instanceof IUser) { @@ -103,7 +87,7 @@ class LegacyProvider extends Provider { * @throws NotFoundException */ protected function getFileForComment(Folder $userFolder, IComment $comment): Node { - $nodes = $userFolder->getById((int) $comment->getObjectId()); + $nodes = $userFolder->getById((int)$comment->getObjectId()); if (empty($nodes)) { throw new NotFoundException('File not found'); } diff --git a/apps/comments/lib/Search/Result.php b/apps/comments/lib/Search/Result.php index ec799b7e30a..7478c110d63 100644 --- a/apps/comments/lib/Search/Result.php +++ b/apps/comments/lib/Search/Result.php @@ -1,26 +1,8 @@ <?php + /** - * @copyright Copyright (c) 2018 Joas Schilling <coding@schilljs.com> - * - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Michał Węgrzynek <michal.wegrzynek@malloc.com.pl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Search; @@ -47,10 +29,6 @@ class Result extends BaseResult { /** * @deprecated 20.0.0 */ - public $authorName; - /** - * @deprecated 20.0.0 - */ public $path; /** * @deprecated 20.0.0 @@ -58,33 +36,31 @@ class Result extends BaseResult { public $fileName; /** - * @param string $search - * @param IComment $comment - * @param string $authorName - * @param string $path * @throws NotFoundException * @deprecated 20.0.0 */ - public function __construct(string $search, - IComment $comment, - string $authorName, - string $path) { + public function __construct( + string $search, + IComment $comment, + /** + * @deprecated 20.0.0 + */ + public string $authorName, + string $path, + ) { parent::__construct( - (int) $comment->getId(), + $comment->getId(), $comment->getMessage() - /* @todo , [link to file] */ + /* @todo , [link to file] */ ); $this->comment = $this->getRelevantMessagePart($comment->getMessage(), $search); $this->authorId = $comment->getActorId(); - $this->authorName = $authorName; $this->fileName = basename($path); $this->path = $this->getVisiblePath($path); } /** - * @param string $path - * @return string * @throws NotFoundException */ protected function getVisiblePath(string $path): string { @@ -98,9 +74,6 @@ class Result extends BaseResult { } /** - * @param string $message - * @param string $search - * @return string * @throws NotFoundException */ protected function getRelevantMessagePart(string $message, string $search): string { 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/activitytabviewplugin.js b/apps/comments/src/activitytabviewplugin.js deleted file mode 100644 index 6b6e7ccda90..00000000000 --- a/apps/comments/src/activitytabviewplugin.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) 2016 - * - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -/** @typedef {import('jquery')} jQuery */ - -(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 displays this activity - */ - prepareModelForDisplay(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') - const $overlay = $('<div>').addClass('message-overlay') - $el.find('.activitymessage').after($overlay) - $el.on('click', this._onClickCollapsedComment) - } - } - }, - - /* - * Copy of CommentsTabView._onClickComment() - */ - _onClickCollapsedComment(ev) { - let $row = $(ev.target) - if (!$row.is('.comment')) { - $row = $row.closest('.comment') - } - $row.removeClass('collapsed') - }, - - /* - * Copy of CommentsTabView._isLong() - */ - _isLong(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/src/app.js b/apps/comments/src/app.js deleted file mode 100644 index 7b5229cbd44..00000000000 --- a/apps/comments/src/app.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -(function() { - if (!OCA.Comments) { - /** - * @namespace - */ - OCA.Comments = {} - } - -})() 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 index c42481029ce..a91a4bb37bb 100644 --- a/apps/comments/src/comments-app.js +++ b/apps/comments/src/comments-app.js @@ -1,26 +1,9 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import CommentsInstance from './services/CommentsInstance' +import CommentsInstance from './services/CommentsInstance.js' // Init Comments if (window.OCA && !window.OCA.Comments) { diff --git a/apps/comments/src/comments-tab.js b/apps/comments/src/comments-tab.js index 78bfb610af7..d3ebe3e9596 100644 --- a/apps/comments/src/comments-tab.js +++ b/apps/comments/src/comments-tab.js @@ -1,61 +1,60 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -// eslint-disable-next-line node/no-missing-import, import/no-unresolved +// 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' -// Init Comments tab component -let TabInstance = null -const commentTab = new OCA.Files.Sidebar.Tab({ - id: 'comments', - name: t('comments', 'Comments'), - iconSvg: MessageReplyText, +// @ts-expect-error __webpack_nonce__ is injected by webpack +__webpack_nonce__ = getCSPNonce() - async mount(el, fileInfo, context) { - if (TabInstance) { +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 = new OCA.Comments.View('files', { - // Better integration with vue parent component - parent: context, - }) - // 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() - }, -}) + TabInstance = null + }, + scrollBottomReached() { + TabInstance.onScrollBottomReached() + }, + }) -window.addEventListener('DOMContentLoaded', function() { - if (OCA.Files && OCA.Files.Sidebar) { - OCA.Files.Sidebar.registerTab(commentTab) - } -}) + window.addEventListener('DOMContentLoaded', function() { + if (OCA.Files && OCA.Files.Sidebar) { + OCA.Files.Sidebar.registerTab(commentTab) + } + }) +} diff --git a/apps/comments/src/comments.js b/apps/comments/src/comments.js deleted file mode 100644 index 95e6d3d5dc7..00000000000 --- a/apps/comments/src/comments.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -import './app' -import './templates' -import './filesplugin' -import './activitytabviewplugin' - -window.OCA.Comments = OCA.Comments diff --git a/apps/comments/src/components/Comment.vue b/apps/comments/src/components/Comment.vue index df9a22a1709..80f035530fb 100644 --- a/apps/comments/src/components/Comment.vue +++ b/apps/comments/src/components/Comment.vue @@ -1,26 +1,10 @@ <!-- - - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - - - - @author John Molakvoæ <skjnldsv@protonmail.com> - - - - @license GNU AGPL version 3 or any later version - - - - This program is free software: you can redistribute it and/or modify - - it under the terms of the GNU Affero General Public License as - - published by the Free Software Foundation, either version 3 of the - - License, or (at your option) any later version. - - - - This program is distributed in the hope that it will be useful, - - but WITHOUT ANY WARRANTY; without even the implied warranty of - - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - GNU Affero General Public License for more details. - - - - You should have received a copy of the GNU Affero General Public License - - along with this program. If not, see <http://www.gnu.org/licenses/>. - - - --> + - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> <template> - <div v-show="!deleted" + <component :is="tag" + v-show="!deleted && !isLimbo" :class="{'comment--loading': loading}" class="comment"> <!-- Comment header toolbar --> @@ -39,22 +23,27 @@ 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="true" - icon="icon-rename" + <NcActionButton close-after-click @click="onEdit"> + <template #icon> + <IconPencilOutline :size="20" /> + </template> {{ t('comments', 'Edit comment') }} </NcActionButton> <NcActionSeparator /> - <NcActionButton :close-after-click="true" - icon="icon-delete" + <NcActionButton close-after-click @click="onDeleteWithUndo"> + <template #icon> + <IconTrashCanOutline :size="20" /> + </template> {{ t('comments', 'Delete comment') }} </NcActionButton> </template> - <NcActionButton v-else - icon="icon-close" - @click="onEditCancel"> + <NcActionButton v-else @click="onEditCancel"> + <template #icon> + <IconClose :size="20" /> + </template> {{ t('comments', 'Cancel edit') }} </NcActionButton> </NcActions> @@ -63,73 +52,99 @@ <div v-if="id && loading" class="comment_loading icon-loading-small" /> <!-- Relative time to the comment creation --> - <Moment v-else-if="creationDateTime" class="comment__timestamp" :timestamp="timestamp" /> + <NcDateTime v-else-if="creationDateTime" + class="comment__timestamp" + :timestamp="timestamp" + :ignore-seconds="true" /> </div> <!-- Message editor --> - <div v-if="editor || editing" class="comment__editor "> - <NcRichContenteditable ref="editor" - :auto-complete="autoComplete" - :contenteditable="!loading" - :value="localMessage" - :user-data="userData" - @update:value="updateLocalMessage" - @submit="onSubmit" /> - <NcButton class="comment__submit" - type="tertiary-no-background" - native-type="submit" - :aria-label="t('comments', 'Post comment')" - :disabled="isEmptyMessage" - @click="onSubmit"> - <template #icon> - <span v-if="loading" class="icon-loading-small" /> - <ArrowRight v-else :size="20" /> - </template> - </NcButton> - </div> + <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 --> - <!-- The html is escaped and sanitized before rendering --> - <!-- eslint-disable-next-line vue/no-v-html--> - <div v-else - :class="{'comment__message--expanded': expanded}" + <NcRichText v-else class="comment__message" - @click="onExpand" - v-html="renderedContent" /> + :class="{'comment__message--expanded': expanded}" + :text="richContent.message" + :arguments="richContent.mentions" + @click="onExpand" /> </div> - </div> + </component> </template> <script> import { getCurrentUser } from '@nextcloud/auth' -import moment from '@nextcloud/moment' - -import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import NcActions from '@nextcloud/vue/dist/Components/NcActions' -import NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator' -import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' -import NcButton from '@nextcloud/vue/dist/Components/NcButton' -import NcRichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable' -import RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor' -import ArrowRight from 'vue-material-design-icons/ArrowRight' - -import Moment from './Moment' -import CommentMixin from '../mixins/CommentMixin' +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, - ArrowRight, NcAvatar, NcButton, - Moment, + NcDateTime, + NcLoadingIcon, NcRichContenteditable, + NcRichText, }, - mixins: [RichEditorMixin, CommentMixin], + mixins: [CommentMixin], inheritAttrs: false, @@ -162,6 +177,15 @@ export default { type: Function, required: true, }, + userData: { + type: Object, + default: () => ({}), + }, + + tag: { + type: String, + default: 'div', + }, }, data() { @@ -170,10 +194,12 @@ export default { // 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 @@ -184,25 +210,40 @@ export default { return getCurrentUser().uid === this.actorId }, - /** - * Rendered content as html string - * - * @return {string} - */ - renderedContent() { - if (this.isEmptyMessage) { - return '' - } - return this.renderContent(this.localMessage) + 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() { - // seconds, not milliseconds - return parseInt(moment(this.creationDateTime).format('x'), 10) / 1000 + return Date.parse(this.creationDateTime) + }, + + isLimbo() { + return this.deletedCommentLimboStore.checkForId(this.id) }, }, @@ -219,6 +260,8 @@ export default { }, methods: { + t, + /** * Update local Message on outer change * @@ -226,6 +269,7 @@ export default { */ updateLocalMessage(message) { this.localMessage = message.toString() + this.submitted = false }, /** @@ -263,14 +307,13 @@ $comment-padding: 10px; .comment { display: flex; - gap: 16px; - position: relative; + gap: 8px; padding: 5px $comment-padding; &__side { display: flex; align-items: flex-start; - padding-top: 16px; + padding-top: 6px; } &__body { @@ -286,7 +329,7 @@ $comment-padding: 10px; } &__actions { - margin-left: $comment-padding !important; + margin-inline-start: $comment-padding !important; } &__author { @@ -298,23 +341,30 @@ $comment-padding: 10px; &_loading, &__timestamp { - margin-left: auto; - text-align: right; + 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; - right: 0; - bottom: 0; - // Align with input border - margin: 1px; + bottom: 5px; + inset-inline-end: 0; } &__message { white-space: pre-wrap; - word-break: break-word; + word-break: normal; max-height: 70px; overflow: hidden; margin-top: -6px; diff --git a/apps/comments/src/components/Moment.vue b/apps/comments/src/components/Moment.vue deleted file mode 100644 index a91ed8b9ce6..00000000000 --- a/apps/comments/src/components/Moment.vue +++ /dev/null @@ -1,31 +0,0 @@ -<!-- TODO: Move to vue components --> - -<template> - <span class="live-relative-timestamp" :data-timestamp="timestamp * 1000" :title="title">{{ formatted }}</span> -</template> - -<script> -import moment from '@nextcloud/moment' - -export default { - name: 'Moment', - props: { - timestamp: { - type: Number, - required: true, - }, - format: { - type: String, - default: 'LLL', - }, - }, - computed: { - title() { - return moment.unix(this.timestamp).format(this.format) - }, - formatted() { - return moment.unix(this.timestamp).fromNow() - }, - }, -} -</script> diff --git a/apps/comments/src/filesplugin.js b/apps/comments/src/filesplugin.js deleted file mode 100644 index 45d7372dfc7..00000000000 --- a/apps/comments/src/filesplugin.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Michael Jobst <mjobst+github@tecratech.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -(function() { - - _.extend(OC.Files.Client, { - PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread', - }) - - OCA.Comments = _.extend({}, OCA.Comments) - if (!OCA.Comments) { - /** - * @namespace - */ - OCA.Comments = {} - } - - /** - * @namespace - */ - OCA.Comments.FilesPlugin = { - ignoreLists: [ - 'trashbin', - 'files.public', - ], - - _formatCommentCount(count) { - return OCA.Comments.Templates.filesplugin({ - count, - countMessage: n('comments', '%n unread comment', '%n unread comments', count), - iconUrl: OC.imagePath('core', 'actions/comment'), - }) - }, - - attach(fileList) { - const self = this - if (this.ignoreLists.indexOf(fileList.id) >= 0) { - return - } - - const oldGetWebdavProperties = fileList._getWebdavProperties - fileList._getWebdavProperties = function() { - const props = oldGetWebdavProperties.apply(this, arguments) - props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD) - return props - } - - fileList.filesClient.addFileInfoParser(function(response) { - const data = {} - const props = response.propStat[0].properties - const commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD] - if (!_.isUndefined(commentsUnread) && commentsUnread !== '') { - data.commentsUnread = parseInt(commentsUnread, 10) - } - return data - }) - - fileList.$el.addClass('has-comments') - const oldCreateRow = fileList._createRow - fileList._createRow = function(fileData) { - const $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(context) { - if (context && context.$file) { - const unread = parseInt(context.$file.data('comments-unread'), 10) - if (unread >= 0) { - return n('comments', '1 new comment', '{unread} new comments', unread, { unread }) - } - } - return t('comments', 'Comment') - }, - mime: 'all', - order: -140, - iconClass: 'icon-comment', - permissions: OC.PERMISSION_READ, - type: OCA.Files.FileActions.TYPE_INLINE, - render(actionSpec, isDefault, context) { - const $file = context.$file - const unreadComments = $file.data('comments-unread') - if (unreadComments) { - const $actionLink = $(self._formatCommentCount(unreadComments)) - context.$file.find('a.name>span.fileactions').append($actionLink) - return $actionLink - } - return '' - }, - actionHandler(fileName, context) { - context.$file.find('.action-comment').tooltip('hide') - // open sidebar in comments section - OCA.Files.Sidebar.setActiveTab('comments') - OCA.Files.Sidebar.open(context.dir + '/' + fileName) - }, - }) - - // add attribute to "elementToFile" - const oldElementToFile = fileList.elementToFile - fileList.elementToFile = function($el) { - const fileInfo = oldElementToFile.apply(this, arguments) - const 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/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 index e029a4b589a..722ad3444ce 100644 --- a/apps/comments/src/mixins/CommentMixin.js +++ b/apps/comments/src/mixins/CommentMixin.js @@ -1,29 +1,15 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import NewComment from '../services/NewComment' -import DeleteComment from '../services/DeleteComment' -import EditComment from '../services/EditComment' 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: { @@ -35,10 +21,14 @@ export default { type: String, default: '', }, - ressourceId: { + resourceId: { type: [String, Number], required: true, }, + resourceType: { + type: String, + default: 'files', + }, }, data() { @@ -49,6 +39,10 @@ export default { } }, + computed: { + ...mapStores(useDeletedCommentLimbo), + }, + methods: { // EDITION onEdit() { @@ -62,8 +56,8 @@ export default { async onEditComment(message) { this.loading = true try { - await EditComment(this.commentsType, this.ressourceId, this.id, message) - this.logger.debug('Comment edited', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id, message }) + 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) { @@ -76,22 +70,26 @@ export default { // 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.commentsType, this.ressourceId, this.id) - this.logger.debug('Comment deleted', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id }) + 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) } }, @@ -99,8 +97,8 @@ export default { async onNewComment(message) { this.loading = true try { - const newComment = await NewComment(this.commentsType, this.ressourceId, message) - this.logger.debug('New comment posted', { commentsType: this.commentsType, ressourceId: this.ressourceId, newComment }) + 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 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 index f5263f35c3d..cc45d0cbea7 100644 --- a/apps/comments/src/services/CommentsInstance.js +++ b/apps/comments/src/services/CommentsInstance.js @@ -1,34 +1,18 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { getLoggerBuilder } from '@nextcloud/logger' -import { translate as t, translatePlural as n } from '@nextcloud/l10n' -import CommentsApp from '../views/Comments' +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' -const logger = getLoggerBuilder() - .setApp('comments') - .detectUser() - .build() +Vue.use(PiniaVuePlugin) +// eslint-disable-next-line camelcase +__webpack_nonce__ = getCSPNonce() // Add translates functions Vue.mixin({ @@ -48,19 +32,21 @@ export default class CommentInstance { /** * Initialize a new Comments instance for the desired type * - * @param {string} commentsType the comments endpoint type + * @param {string} resourceType the comments endpoint type * @param {object} options the vue options (propsData, parent, el...) */ - constructor(commentsType = 'files', options) { - // Add comments type as a global mixin - Vue.mixin({ - data() { - return { - commentsType, - } - }, - }) + 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 index ee5aec129c1..3e9a529283f 100644 --- a/apps/comments/src/services/DavClient.js +++ b/apps/comments/src/services/DavClient.js @@ -1,38 +1,27 @@ /** - * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import { createClient, getPatcher } from 'webdav' -import axios from '@nextcloud/axios' - -import { getRootPath } from '../utils/davUtils' - -// Add this so the server knows it is an request from the browser -axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest' - -// force our axios -const patcher = getPatcher() -patcher.patch('request', axios) +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 index 871f6b6c5b8..1ed63d7836a 100644 --- a/apps/comments/src/services/DeleteComment.js +++ b/apps/comments/src/services/DeleteComment.js @@ -1,36 +1,19 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import client from './DavClient' +import client from './DavClient.js' /** * Delete a comment * - * @param {string} commentsType the ressource type - * @param {number} ressourceId the ressource ID + * @param {string} resourceType the resource type + * @param {number} resourceId the resource ID * @param {number} commentId the comment iD */ -export default async function(commentsType, ressourceId, commentId) { - const commentPath = ['', commentsType, ressourceId, commentId].join('/') +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 index f3a2d857356..4ec33415a72 100644 --- a/apps/comments/src/services/EditComment.js +++ b/apps/comments/src/services/EditComment.js @@ -1,37 +1,20 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import client from './DavClient' +import client from './DavClient.js' /** * Edit an existing comment * - * @param {string} commentsType the ressource type - * @param {number} ressourceId the ressource ID + * @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(commentsType, ressourceId, commentId, message) { - const commentPath = ['', commentsType, ressourceId, commentId].join('/') +export default async function(resourceType, resourceId, commentId, message) { + const commentPath = ['', resourceType, resourceId, commentId].join('/') return await client.customRequest(commentPath, Object.assign({ method: 'PROPPATCH', diff --git a/apps/comments/src/services/GetComments.js b/apps/comments/src/services/GetComments.js deleted file mode 100644 index bf3dd31b5f1..00000000000 --- a/apps/comments/src/services/GetComments.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -import { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav' -import { processResponsePayload } from 'webdav/dist/node/response' -import { decodeHtmlEntities } from '../utils/decodeHtmlEntities' -import client from './DavClient' - -export const DEFAULT_LIMIT = 20 -/** - * Retrieve the comments list - * - * @param {object} data destructuring object - * @param {string} data.commentsType the ressource type - * @param {number} data.ressourceId the ressource ID - * @param {object} [options] optional options for axios - * @return {object[]} the comments list - */ -export default async function({ commentsType, ressourceId }, options = {}) { - let response = null - const ressourcePath = ['', commentsType, ressourceId].join('/') - - return await client.customRequest(ressourcePath, 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>${DEFAULT_LIMIT}</oc:limit> - <oc:offset>${options.offset || 0}</oc:offset> - </oc:filter-comments>`, - }, options)) - // See example on how it's done normally - // https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/stat.js#L19 - // Waiting for proper REPORT integration https://github.com/perry-mitchell/webdav-client/issues/207 - .then(res => { - response = res - return res.data - }) - .then(parseXML) - .then(xml => processMultistatus(xml, true)) - .then(comments => processResponsePayload(response, comments, true)) - .then(response => response.data) -} - -// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/directoryContents.js#L32 -/** - * @param {any} result - - * @param {any} isDetailed - - */ -function processMultistatus(result, isDetailed = false) { - // Extract the response items (directory contents) - const { - multistatus: { response: responseItems }, - } = result - return responseItems.map(item => { - // Each item should contain a stat object - const { - propstat: { prop: props }, - } = item - // Decode HTML entities - const decodedProps = { - ...props, - // Decode twice to handle potentially double-encoded entities - // FIXME Remove this once https://github.com/nextcloud/server/issues/29306 is resolved - actorDisplayName: decodeHtmlEntities(props.actorDisplayName, 2), - message: decodeHtmlEntities(props.message, 2), - } - return prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed) - }) -} 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 index 27d227ed656..663b4d72e02 100644 --- a/apps/comments/src/services/NewComment.js +++ b/apps/comments/src/services/NewComment.js @@ -1,55 +1,38 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import { getCurrentUser } from '@nextcloud/auth' -import { getRootPath } from '../utils/davUtils' -import { decodeHtmlEntities } from '../utils/decodeHtmlEntities' +import { getRootPath } from '../utils/davUtils.js' +import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js' import axios from '@nextcloud/axios' -import client from './DavClient' +import client from './DavClient.js' /** * Retrieve the comments list * - * @param {string} commentsType the ressource type - * @param {number} ressourceId the ressource ID + * @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(commentsType, ressourceId, message) { - const ressourcePath = ['', commentsType, ressourceId].join('/') +export default async function(resourceType, resourceId, message) { + const resourcePath = ['', resourceType, resourceId].join('/') - const response = await axios.post(getRootPath() + ressourcePath, { + const response = await axios.post(getRootPath() + resourcePath, { actorDisplayName: getCurrentUser().displayName, actorId: getCurrentUser().uid, actorType: 'users', creationDateTime: (new Date()).toUTCString(), message, - objectType: 'files', + objectType: resourceType, verb: 'comment', }) - // Retrieve comment id from ressource location + // Retrieve comment id from resource location const commentId = parseInt(response.headers['content-location'].split('/').pop()) - const commentPath = ressourcePath + '/' + commentId + const commentPath = resourcePath + '/' + commentId // Fetch newly created comment data const comment = await client.stat(commentPath, { 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/templates.js b/apps/comments/src/templates.js deleted file mode 100644 index 6064854f084..00000000000 --- a/apps/comments/src/templates.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() { - var template = Handlebars.template, templates = OCA.Comments.Templates = OCA.Comments.Templates || {}; -templates['filesplugin'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "<a class=\"action action-comment permanent\" title=\"" - + alias4(((helper = (helper = lookupProperty(helpers,"countMessage") || (depth0 != null ? lookupProperty(depth0,"countMessage") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"countMessage","hash":{},"data":data,"loc":{"start":{"line":1,"column":50},"end":{"line":1,"column":66}}}) : helper))) - + "\" href=\"#\">\n <img class=\"svg\" src=\"" - + alias4(((helper = (helper = lookupProperty(helpers,"iconUrl") || (depth0 != null ? lookupProperty(depth0,"iconUrl") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconUrl","hash":{},"data":data,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":34}}}) : helper))) - + "\"/>\n</a>\n"; -},"useData":true}); -})();
\ No newline at end of file diff --git a/apps/comments/src/templates/filesplugin.handlebars b/apps/comments/src/templates/filesplugin.handlebars deleted file mode 100644 index 8f3699380be..00000000000 --- a/apps/comments/src/templates/filesplugin.handlebars +++ /dev/null @@ -1,3 +0,0 @@ -<a class="action action-comment permanent" title="{{countMessage}}" href="#"> - <img class="svg" src="{{iconUrl}}"/> -</a> diff --git a/apps/comments/src/utils/cancelableRequest.js b/apps/comments/src/utils/cancelableRequest.js index cdb31441926..c2d380c80f9 100644 --- a/apps/comments/src/utils/cancelableRequest.js +++ b/apps/comments/src/utils/cancelableRequest.js @@ -1,34 +1,8 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ -import axios from '@nextcloud/axios' - -/** - * Create a cancel token - * - * @return {import('axios').CancelTokenSource} - */ -const createCancelToken = () => axios.CancelToken.source() - /** * Creates a cancelable axios 'request object'. * @@ -36,10 +10,8 @@ const createCancelToken = () => axios.CancelToken.source() * @return {object} */ const cancelableRequest = function(request) { - /** - * Generate an axios cancel token - */ - const cancelToken = createCancelToken() + const controller = new AbortController() + const signal = controller.signal /** * Execute the request @@ -48,15 +20,16 @@ const cancelableRequest = function(request) { * @param {object} [options] optional config for the request */ const fetch = async function(url, options) { - return request( + const response = await request( url, - Object.assign({ cancelToken: cancelToken.token }, options) + Object.assign({ signal }, options), ) + return response } return { request: fetch, - cancel: cancelToken.cancel, + abort: () => controller.abort(), } } diff --git a/apps/comments/src/utils/davUtils.js b/apps/comments/src/utils/davUtils.js index 1a2686bbdab..33efc8e7d10 100644 --- a/apps/comments/src/utils/davUtils.js +++ b/apps/comments/src/utils/davUtils.js @@ -1,23 +1,6 @@ /** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ import { generateRemoteUrl } from '@nextcloud/router' diff --git a/apps/comments/src/utils/decodeHtmlEntities.js b/apps/comments/src/utils/decodeHtmlEntities.js index 60c08163faa..4c492954256 100644 --- a/apps/comments/src/utils/decodeHtmlEntities.js +++ b/apps/comments/src/utils/decodeHtmlEntities.js @@ -1,23 +1,6 @@ /** - * @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com> - * - * @author Christopher Ng <chrng8@gmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ /** diff --git a/apps/comments/src/utils/numberUtil.js b/apps/comments/src/utils/numberUtil.js deleted file mode 100644 index cbbd6964019..00000000000 --- a/apps/comments/src/utils/numberUtil.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -const isNumber = function(num) { - if (!num) { - return false - } - return Number(num).toString() === num.toString() -} - -export { isNumber } 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 index 288fe44e96b..657af888a12 100644 --- a/apps/comments/src/views/Comments.vue +++ b/apps/comments/src/views/Comments.vue @@ -1,57 +1,44 @@ <!-- - - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> - - - - @author John Molakvoæ <skjnldsv@protonmail.com> - - @author Richard Steinmetz <richard@steinmetz.cloud> - - - - @license GNU AGPL version 3 or any later version - - - - This program is free software: you can redistribute it and/or modify - - it under the terms of the GNU Affero General Public License as - - published by the Free Software Foundation, either version 3 of the - - License, or (at your option) any later version. - - - - This program is distributed in the hope that it will be useful, - - but WITHOUT ANY WARRANTY; without even the implied warranty of - - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - GNU Affero General Public License for more details. - - - - You should have received a copy of the GNU Affero General Public License - - along with this program. If not, see <http://www.gnu.org/licenses/>. - - - --> + - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> <template> - <div class="comments" :class="{ 'icon-loading': isFirstLoading }"> + <div v-element-visibility="onVisibilityChange" + class="comments" + :class="{ 'icon-loading': isFirstLoading }"> <!-- Editor --> <Comment v-bind="editorData" :auto-complete="autoComplete" - :user-data="userData" + :resource-type="resourceType" :editor="true" - :ressource-id="ressourceId" + :user-data="userData" + :resource-id="currentResourceId" class="comments__writer" @new="onNewComment" /> <template v-if="!isFirstLoading"> <NcEmptyContent v-if="!hasComments && done" class="comments__empty" - :title="t('comments', 'No comments yet, start the conversation!')"> + :name="t('comments', 'No comments yet, start the conversation!')"> <template #icon> - <MessageReplyTextIcon /> + <IconMessageReplyTextOutline /> </template> </NcEmptyContent> - - <!-- Comments --> - <Comment v-for="comment in comments" - v-else - :key="comment.props.id" - v-bind="comment.props" - :auto-complete="autoComplete" - :message.sync="comment.props.message" - :ressource-id="ressourceId" - :user-data="genMentionsData(comment.props.mentions)" - class="comments__list" - @delete="onDelete" /> + <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" /> @@ -62,14 +49,14 @@ <!-- Error message --> <template v-else-if="error"> - <NcEmptyContent class="comments__error" :title="error"> + <NcEmptyContent class="comments__error" :name="error"> <template #icon> - <AlertCircleOutlineIcon /> + <IconAlertCircleOutline /> </template> </NcEmptyContent> <NcButton class="comments__retry" @click="getComments"> <template #icon> - <RefreshIcon /> + <IconRefresh /> </template> {{ t('comments', 'Retry') }} </NcButton> @@ -79,56 +66,52 @@ </template> <script> -import { generateOcsUrl } from '@nextcloud/router' -import { getCurrentUser } from '@nextcloud/auth' -import { loadState } from '@nextcloud/initial-state' -import axios from '@nextcloud/axios' -import VTooltip from 'v-tooltip' -import Vue from 'vue' - -import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import NcButton from '@nextcloud/vue/dist/Components/NcButton' -import RefreshIcon from 'vue-material-design-icons/Refresh' -import MessageReplyTextIcon from 'vue-material-design-icons/MessageReplyText' -import AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline' +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 getComments, { DEFAULT_LIMIT } from '../services/GetComments.js' +import CommentView from '../mixins/CommentView' import cancelableRequest from '../utils/cancelableRequest.js' - -Vue.use(VTooltip) +import { getComments, DEFAULT_LIMIT } from '../services/GetComments.ts' +import { markCommentsAsRead } from '../services/ReadComments.ts' export default { name: 'Comments', components: { - // Avatar, Comment, NcEmptyContent, NcButton, - RefreshIcon, - MessageReplyTextIcon, - AlertCircleOutlineIcon, + IconRefresh, + IconMessageReplyTextOutline, + IconAlertCircleOutline, + }, + + directives: { + elementVisibility, }, + mixins: [CommentView], + data() { return { error: '', loading: false, done: false, - ressourceId: null, + currentResourceId: this.resourceId, offset: 0, comments: [], cancelRequest: () => {}, - editorData: { - actorDisplayName: getCurrentUser().displayName, - actorId: getCurrentUser().uid, - key: 'editor', - }, - Comment, userData: {}, } @@ -143,14 +126,32 @@ export default { }, }, + 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 ressourceId and fetch new data + * Update current resourceId and fetch new data * - * @param {number} ressourceId the current ressourceId (fileId...) + * @param {number} resourceId the current resourceId (fileId...) */ - async update(ressourceId) { - this.ressourceId = ressourceId + async update(resourceId) { + this.currentResourceId = resourceId this.resetState() this.getComments() }, @@ -172,28 +173,6 @@ export default { }, /** - * Make sure we have all mentions as Array of objects - * - * @param {Array} mentions the mentions list - * @return {Object<string, object>} - */ - genMentionsData(mentions) { - 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 - }, - - /** * Get the existing shares infos */ async getComments() { @@ -205,14 +184,14 @@ export default { this.error = '' // Init cancellable request - const { request, cancel } = cancelableRequest(getComments) - this.cancelRequest = cancel + const { request, abort } = cancelableRequest(getComments) + this.cancelRequest = abort // Fetch comments - const comments = await request({ - commentsType: this.commentsType, - ressourceId: this.ressourceId, - }, { offset: this.offset }) + const { data: comments } = await request({ + resourceType: this.resourceType, + resourceId: this.currentResourceId, + }, { offset: this.offset }) || { data: [] } this.logger.debug(`Processed ${comments.length} comments`, { comments }) @@ -239,27 +218,6 @@ export default { }, /** - * Autocomplete @mentions - * - * @param {string} search the query - * @param {Function} callback the callback to process the results with - */ - async autoComplete(search, callback) { - const results = await axios.get(generateOcsUrl('core/autocomplete/get'), { - params: { - search, - itemType: 'files', - itemId: this.ressourceId, - sorter: 'commenters|share-recipients', - limit: loadState('comments', 'maxAutoCompleteResults'), - }, - }) - // Save user data so it can be used by the editor to replace mentions - results.data.ocs.data.forEach(user => { this.userData[user.id] = user }) - return callback(Object.values(this.userData)) - }, - - /** * Add newly created comment to the list * * @param {object} comment the new comment @@ -298,10 +256,13 @@ export default { <style lang="scss" scoped> .comments { - // Do not add emptycontent top margin + min-height: 100%; + display: flex; + flex-direction: column; + &__empty, &__error { - margin-top: 0 !important; + flex: 1 0; } &__retry { diff --git a/apps/comments/tests/Unit/Activity/ListenerTest.php b/apps/comments/tests/Unit/Activity/ListenerTest.php index 9bd0bcfb60c..675a28a16b1 100644 --- a/apps/comments/tests/Unit/Activity/ListenerTest.php +++ b/apps/comments/tests/Unit/Activity/ListenerTest.php @@ -1,26 +1,10 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Tests\Unit\Activity; @@ -39,30 +23,17 @@ 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 { - - /** @var Listener */ - protected $listener; - - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $activityManager; - - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - protected $session; - - /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $appManager; - - /** @var IMountProviderCollection|\PHPUnit\Framework\MockObject\MockObject */ - protected $mountProviderCollection; - - /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */ - protected $rootFolder; - - /** @var IShareHelper|\PHPUnit\Framework\MockObject\MockObject */ - protected $shareHelper; + 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(); @@ -84,9 +55,9 @@ class ListenerTest extends TestCase { ); } - public function testCommentEvent() { + public function testCommentEvent(): void { $this->appManager->expects($this->any()) - ->method('isInstalled') + ->method('isEnabledForAnyone') ->with('activity') ->willReturn(true); @@ -95,7 +66,7 @@ class ListenerTest extends TestCase { ->method('getObjectType') ->willReturn('files'); - /** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */ + /** @var CommentsEvent|MockObject $event */ $event = $this->createMock(CommentsEvent::class); $event->expects($this->any()) ->method('getComment') @@ -104,13 +75,13 @@ class ListenerTest extends TestCase { ->method('getEvent') ->willReturn(CommentsEvent::EVENT_ADD); - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $ownerUser */ + /** @var IUser|MockObject $ownerUser */ $ownerUser = $this->createMock(IUser::class); $ownerUser->expects($this->any()) ->method('getUID') ->willReturn('937393'); - /** @var \PHPUnit\Framework\MockObject\MockObject $mount */ + /** @var MockObject $mount */ $mount = $this->createMock(ICachedMountFileInfo::class); $mount->expects($this->any()) ->method('getUser') @@ -152,7 +123,7 @@ class ListenerTest extends TestCase { ->method('getUser') ->willReturn($ownerUser); - /** @var \PHPUnit\Framework\MockObject\MockObject $activity */ + /** @var MockObject $activity */ $activity = $this->createMock(IEvent::class); $activity->expects($this->exactly(count($al['users']))) ->method('setAffectedUser'); diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php index 6e3658c0e5b..119db5333b5 100644 --- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php +++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php @@ -1,31 +1,24 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author 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\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; /** @@ -38,29 +31,26 @@ use Test\TestCase; class ApplicationTest extends TestCase { 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(): void { - \OC::$server->getUserManager()->get('dummy')->delete(); + 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->get('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, ]; diff --git a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php index fe833e14a3b..4d3392a562d 100644 --- a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php +++ b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php @@ -1,40 +1,20 @@ <?php + /** - * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 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 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; protected function setUp(): void { parent::setUp(); @@ -45,10 +25,10 @@ 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 ($actors as $actorId => $noOfComments) { @@ -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 c21101030e8..04490ca63e8 100644 --- a/apps/comments/tests/Unit/Controller/NotificationsTest.php +++ b/apps/comments/tests/Unit/Controller/NotificationsTest.php @@ -1,31 +1,15 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Joas Schilling <coding@schilljs.com> - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 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; @@ -40,26 +24,16 @@ 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 Notifications */ - protected $notificationsController; - - /** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $commentsManager; - - /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */ - protected $rootFolder; - - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - protected $session; - - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - protected $notificationManager; - - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ - protected $urlGenerator; + 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(); @@ -70,7 +44,7 @@ class NotificationsTest extends TestCase { $this->notificationManager = $this->createMock(IManager::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); - $this->notificationsController = new Notifications( + $this->notificationsController = new NotificationsController( 'comments', $this->createMock(IRequest::class), $this->commentsManager, @@ -81,7 +55,7 @@ class NotificationsTest extends TestCase { ); } - public function testViewGuestRedirect() { + public function testViewGuestRedirect(): void { $this->commentsManager->expects($this->never()) ->method('get'); @@ -99,10 +73,6 @@ class NotificationsTest extends TestCase { $this->urlGenerator->expects($this->exactly(2)) ->method('linkToRoute') - ->withConsecutive( - ['comments.Notifications.view', ['id' => '42']], - ['core.login.showLoginForm', ['redirect_url' => 'link-to-comment']] - ) ->willReturnMap([ ['comments.Notifications.view', ['id' => '42'], 'link-to-comment'], ['core.login.showLoginForm', ['redirect_url' => 'link-to-comment'], 'link-to-login'], @@ -114,7 +84,7 @@ class NotificationsTest extends TestCase { $this->assertSame('link-to-login', $response->getRedirectURL()); } - public function testViewSuccess() { + public function testViewSuccess(): void { $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') @@ -164,11 +134,11 @@ class NotificationsTest extends TestCase { $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->rootFolder->expects($this->never()) ->method('getUserFolder'); @@ -192,7 +162,7 @@ class NotificationsTest extends TestCase { $this->assertInstanceOf(NotFoundResponse::class, $response); } - public function testViewNoFile() { + public function testViewNoFile(): void { $comment = $this->createMock(IComment::class); $comment->expects($this->any()) ->method('getObjectType') diff --git a/apps/comments/tests/Unit/EventHandlerTest.php b/apps/comments/tests/Unit/EventHandlerTest.php index 619cb31a714..9d26f828d70 100644 --- a/apps/comments/tests/Unit/EventHandlerTest.php +++ b/apps/comments/tests/Unit/EventHandlerTest.php @@ -1,71 +1,44 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Tests\Unit\Notification; use OCA\Comments\Activity\Listener as ActivityListener; -use OCA\Comments\EventHandler; +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(): void { parent::setUp(); - $this->activityListener = $this->getMockBuilder(ActivityListener::class) - ->disableOriginalConstructor() - ->getMock(); - - $this->notificationListener = $this->getMockBuilder(NotificationListener::class) - ->disableOriginalConstructor() - ->getMock(); + $this->activityListener = $this->createMock(ActivityListener::class); + $this->notificationListener = $this->createMock(NotificationListener::class); - $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); @@ -75,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], @@ -84,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); diff --git a/apps/comments/tests/Unit/Notification/ListenerTest.php b/apps/comments/tests/Unit/Notification/ListenerTest.php index b70c00a22cd..356a26f23cd 100644 --- a/apps/comments/tests/Unit/Notification/ListenerTest.php +++ b/apps/comments/tests/Unit/Notification/ListenerTest.php @@ -1,27 +1,9 @@ <?php + /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 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; @@ -32,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(): 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, @@ -59,7 +35,7 @@ class ListenerTest extends TestCase { ); } - public function eventProvider() { + public static function eventProvider(): array { return [ [CommentsEvent::EVENT_ADD, 'notify'], [CommentsEvent::EVENT_UPDATE, 'notify'], @@ -69,13 +45,13 @@ 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') ->willReturn('files'); @@ -96,10 +72,8 @@ class ListenerTest extends TestCase { ->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') ->willReturn($comment); @@ -107,8 +81,8 @@ class ListenerTest extends TestCase { ->method(('getEvent')) ->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()) ->willReturn($notification); @@ -124,26 +98,22 @@ class ListenerTest extends TestCase { $this->userManager->expects($this->exactly(6)) ->method('userExists') - ->withConsecutive( - ['foobar'], - ['barfoo'], - ['foo@bar.com'], - ['bar@foo.org@foobar.io'], - ['23452-4333-54353-2342'], - ['yolo'] - ) - ->willReturn(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') ->willReturn('files'); @@ -154,10 +124,8 @@ class ListenerTest extends TestCase { ->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') ->willReturn($comment); @@ -178,9 +146,9 @@ 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') ->willReturn('files'); @@ -194,10 +162,8 @@ class ListenerTest extends TestCase { ->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') ->willReturn($comment); @@ -205,8 +171,8 @@ class ListenerTest extends TestCase { ->method(('getEvent')) ->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()) ->willReturn($notification); @@ -221,9 +187,7 @@ class ListenerTest extends TestCase { $this->userManager->expects($this->once()) ->method('userExists') - ->withConsecutive( - ['foobar'] - ) + ->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 9281bb99fe8..37cad0b43df 100644 --- a/apps/comments/tests/Unit/Notification/NotifierTest.php +++ b/apps/comments/tests/Unit/Notification/NotifierTest.php @@ -1,28 +1,10 @@ <?php + +declare(strict_types=1); + /** - * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Christoph Wurst <christoph@winzerhof-wurst.at> - * @author Joas Schilling <coding@schilljs.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Comments\Tests\Unit\Notification; @@ -37,31 +19,23 @@ use OCP\IL10N; use OCP\IURLGenerator; 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|MockObject */ - protected $l10nFactory; - /** @var IL10N|MockObject */ - protected $l; - /** @var IRootFolder|MockObject */ - protected $folder; - /** @var ICommentsManager|MockObject */ - protected $commentsManager; - /** @var IURLGenerator|MockObject */ - protected $url; - /** @var IUserManager|MockObject */ - protected $userManager; - /** @var INotification|MockObject */ - protected $notification; - /** @var IComment|MockObject */ - protected $comment; - /** @var string */ - protected $lc = 'tlh_KX'; + 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(); @@ -91,12 +65,11 @@ class NotifierTest extends TestCase { $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 Node|MockObject $node */ + /** @var Node&MockObject $node */ $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) @@ -209,9 +182,8 @@ class NotifierTest extends TestCase { $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|MockObject $node */ $node = $this->createMock(Node::class); @@ -255,7 +227,7 @@ class NotifierTest extends TestCase { $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()) + ->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()) @@ -324,8 +296,8 @@ class NotifierTest extends TestCase { } - public function testPrepareDifferentApp() { - $this->expectException(\InvalidArgumentException::class); + public function testPrepareDifferentApp(): void { + $this->expectException(UnknownNotificationException::class); $this->folder ->expects($this->never()) @@ -361,8 +333,8 @@ class NotifierTest extends TestCase { } - public function testPrepareNotFound() { - $this->expectException(\InvalidArgumentException::class); + public function testPrepareNotFound(): void { + $this->expectException(UnknownNotificationException::class); $this->folder ->expects($this->never()) @@ -399,8 +371,8 @@ class NotifierTest extends TestCase { } - public function testPrepareDifferentSubject() { - $this->expectException(\InvalidArgumentException::class); + public function testPrepareDifferentSubject(): void { + $this->expectException(UnknownNotificationException::class); $displayName = 'Huraga'; @@ -456,8 +428,8 @@ class NotifierTest extends TestCase { } - public function testPrepareNotFiles() { - $this->expectException(\InvalidArgumentException::class); + public function testPrepareNotFiles(): void { + $this->expectException(UnknownNotificationException::class); $displayName = 'Huraga'; @@ -514,8 +486,8 @@ class NotifierTest extends TestCase { } - public function testPrepareUnresolvableFileID() { - $this->expectException(\OCP\Notification\AlreadyProcessedException::class); + public function testPrepareUnresolvableFileID(): void { + $this->expectException(AlreadyProcessedException::class); $displayName = 'Huraga'; diff --git a/apps/comments/tests/js/filespluginSpec.js b/apps/comments/tests/js/filespluginSpec.js deleted file mode 100644 index 4230a77874d..00000000000 --- a/apps/comments/tests/js/filespluginSpec.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com> - * - * @author John Molakvoæ <skjnldsv@protonmail.com> - * @author Vincent Petry <vincent@nextcloud.com> - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -describe('OCA.Comments.FilesPlugin tests', function() { - var fileList; - var testFiles; - - beforeEach(function() { - var $content = $('<div id="app-content"></div>'); - $('#testArea').append($content); - // dummy file list - var $div = $( - '<div>' + - '<table class="files-filestable">' + - '<thead></thead>' + - '<tbody class="files-fileList"></tbody>' + - '</table>' + - '</div>'); - $('#app-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 sidebarTabStub = sinon.stub(OCA.Files.Sidebar, 'setActiveTab'); - var sidebarStub = sinon.stub(OCA.Files.Sidebar, 'open'); - var $action, $tr; - fileList.setFiles(testFiles); - $tr = fileList.findFileEl('One.txt'); - $action = $tr.find('.action-comment'); - $action.click(); - - expect(sidebarTabStub.calledOnce).toEqual(true); - expect(sidebarTabStub.lastCall.args[0]).toEqual('comments'); - expect(sidebarStub.calledOnce).toEqual(true); - expect(sidebarStub.lastCall.args[0]).toEqual('/subdir/One.txt'); - }); - }); - 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(); - }); - }); -}); |