aboutsummaryrefslogtreecommitdiffstats
path: root/apps/comments
diff options
context:
space:
mode:
Diffstat (limited to 'apps/comments')
-rw-r--r--apps/comments/.bowerrc3
-rw-r--r--apps/comments/.l10nignore3
-rw-r--r--apps/comments/appinfo/info.xml9
-rw-r--r--apps/comments/appinfo/routes.php23
-rw-r--r--apps/comments/composer/composer/ClassLoader.php108
-rw-r--r--apps/comments/composer/composer/InstalledVersions.php17
-rw-r--r--apps/comments/composer/composer/autoload_classmap.php4
-rw-r--r--apps/comments/composer/composer/autoload_static.php4
-rw-r--r--apps/comments/composer/composer/installed.php4
-rw-r--r--apps/comments/img/comments-dark.svg2
-rw-r--r--apps/comments/img/comments.svg2
-rw-r--r--apps/comments/l10n/af.js21
-rw-r--r--apps/comments/l10n/af.json19
-rw-r--r--apps/comments/l10n/ar.js18
-rw-r--r--apps/comments/l10n/ar.json18
-rw-r--r--apps/comments/l10n/ast.js34
-rw-r--r--apps/comments/l10n/ast.json34
-rw-r--r--apps/comments/l10n/az.js8
-rw-r--r--apps/comments/l10n/az.json6
-rw-r--r--apps/comments/l10n/bg.js8
-rw-r--r--apps/comments/l10n/bg.json8
-rw-r--r--apps/comments/l10n/bn_BD.js8
-rw-r--r--apps/comments/l10n/bn_BD.json6
-rw-r--r--apps/comments/l10n/bs.js8
-rw-r--r--apps/comments/l10n/bs.json6
-rw-r--r--apps/comments/l10n/ca.js44
-rw-r--r--apps/comments/l10n/ca.json44
-rw-r--r--apps/comments/l10n/cs.js14
-rw-r--r--apps/comments/l10n/cs.json14
-rw-r--r--apps/comments/l10n/cy_GB.js7
-rw-r--r--apps/comments/l10n/cy_GB.json5
-rw-r--r--apps/comments/l10n/da.js16
-rw-r--r--apps/comments/l10n/da.json16
-rw-r--r--apps/comments/l10n/de.js14
-rw-r--r--apps/comments/l10n/de.json14
-rw-r--r--apps/comments/l10n/de_DE.js14
-rw-r--r--apps/comments/l10n/de_DE.json14
-rw-r--r--apps/comments/l10n/el.js9
-rw-r--r--apps/comments/l10n/el.json9
-rw-r--r--apps/comments/l10n/en_GB.js14
-rw-r--r--apps/comments/l10n/en_GB.json14
-rw-r--r--apps/comments/l10n/eo.js22
-rw-r--r--apps/comments/l10n/eo.json20
-rw-r--r--apps/comments/l10n/es.js16
-rw-r--r--apps/comments/l10n/es.json16
-rw-r--r--apps/comments/l10n/es_419.js20
-rw-r--r--apps/comments/l10n/es_419.json18
-rw-r--r--apps/comments/l10n/es_AR.js21
-rw-r--r--apps/comments/l10n/es_AR.json19
-rw-r--r--apps/comments/l10n/es_CL.js20
-rw-r--r--apps/comments/l10n/es_CL.json18
-rw-r--r--apps/comments/l10n/es_CO.js18
-rw-r--r--apps/comments/l10n/es_CO.json18
-rw-r--r--apps/comments/l10n/es_CR.js20
-rw-r--r--apps/comments/l10n/es_CR.json18
-rw-r--r--apps/comments/l10n/es_DO.js20
-rw-r--r--apps/comments/l10n/es_DO.json18
-rw-r--r--apps/comments/l10n/es_EC.js15
-rw-r--r--apps/comments/l10n/es_EC.json15
-rw-r--r--apps/comments/l10n/es_GT.js20
-rw-r--r--apps/comments/l10n/es_GT.json18
-rw-r--r--apps/comments/l10n/es_HN.js20
-rw-r--r--apps/comments/l10n/es_HN.json18
-rw-r--r--apps/comments/l10n/es_MX.js19
-rw-r--r--apps/comments/l10n/es_MX.json19
-rw-r--r--apps/comments/l10n/es_NI.js20
-rw-r--r--apps/comments/l10n/es_NI.json18
-rw-r--r--apps/comments/l10n/es_PA.js20
-rw-r--r--apps/comments/l10n/es_PA.json18
-rw-r--r--apps/comments/l10n/es_PE.js20
-rw-r--r--apps/comments/l10n/es_PE.json18
-rw-r--r--apps/comments/l10n/es_PR.js20
-rw-r--r--apps/comments/l10n/es_PR.json18
-rw-r--r--apps/comments/l10n/es_PY.js20
-rw-r--r--apps/comments/l10n/es_PY.json18
-rw-r--r--apps/comments/l10n/es_SV.js20
-rw-r--r--apps/comments/l10n/es_SV.json18
-rw-r--r--apps/comments/l10n/es_UY.js20
-rw-r--r--apps/comments/l10n/es_UY.json18
-rw-r--r--apps/comments/l10n/et_EE.js22
-rw-r--r--apps/comments/l10n/et_EE.json22
-rw-r--r--apps/comments/l10n/eu.js14
-rw-r--r--apps/comments/l10n/eu.json14
-rw-r--r--apps/comments/l10n/fa.js42
-rw-r--r--apps/comments/l10n/fa.json42
-rw-r--r--apps/comments/l10n/fi.js12
-rw-r--r--apps/comments/l10n/fi.json12
-rw-r--r--apps/comments/l10n/fr.js16
-rw-r--r--apps/comments/l10n/fr.json16
-rw-r--r--apps/comments/l10n/ga.js36
-rw-r--r--apps/comments/l10n/ga.json34
-rw-r--r--apps/comments/l10n/gl.js26
-rw-r--r--apps/comments/l10n/gl.json26
-rw-r--r--apps/comments/l10n/he.js12
-rw-r--r--apps/comments/l10n/he.json12
-rw-r--r--apps/comments/l10n/hr.js9
-rw-r--r--apps/comments/l10n/hr.json9
-rw-r--r--apps/comments/l10n/hu.js14
-rw-r--r--apps/comments/l10n/hu.json14
-rw-r--r--apps/comments/l10n/hy.js7
-rw-r--r--apps/comments/l10n/hy.json5
-rw-r--r--apps/comments/l10n/ia.js19
-rw-r--r--apps/comments/l10n/ia.json17
-rw-r--r--apps/comments/l10n/id.js14
-rw-r--r--apps/comments/l10n/id.json14
-rw-r--r--apps/comments/l10n/is.js14
-rw-r--r--apps/comments/l10n/is.json14
-rw-r--r--apps/comments/l10n/it.js14
-rw-r--r--apps/comments/l10n/it.json14
-rw-r--r--apps/comments/l10n/ja.js14
-rw-r--r--apps/comments/l10n/ja.json14
-rw-r--r--apps/comments/l10n/ka.js32
-rw-r--r--apps/comments/l10n/ka.json30
-rw-r--r--apps/comments/l10n/ka_GE.js20
-rw-r--r--apps/comments/l10n/ka_GE.json18
-rw-r--r--apps/comments/l10n/km.js7
-rw-r--r--apps/comments/l10n/km.json5
-rw-r--r--apps/comments/l10n/kn.js7
-rw-r--r--apps/comments/l10n/kn.json5
-rw-r--r--apps/comments/l10n/ko.js18
-rw-r--r--apps/comments/l10n/ko.json18
-rw-r--r--apps/comments/l10n/lb.js8
-rw-r--r--apps/comments/l10n/lb.json6
-rw-r--r--apps/comments/l10n/lt_LT.js8
-rw-r--r--apps/comments/l10n/lt_LT.json8
-rw-r--r--apps/comments/l10n/lv.js20
-rw-r--r--apps/comments/l10n/lv.json18
-rw-r--r--apps/comments/l10n/mk.js14
-rw-r--r--apps/comments/l10n/mk.json14
-rw-r--r--apps/comments/l10n/mn.js19
-rw-r--r--apps/comments/l10n/mn.json17
-rw-r--r--apps/comments/l10n/ms_MY.js7
-rw-r--r--apps/comments/l10n/ms_MY.json5
-rw-r--r--apps/comments/l10n/nb.js16
-rw-r--r--apps/comments/l10n/nb.json16
-rw-r--r--apps/comments/l10n/nl.js26
-rw-r--r--apps/comments/l10n/nl.json26
-rw-r--r--apps/comments/l10n/nn_NO.js24
-rw-r--r--apps/comments/l10n/nn_NO.json22
-rw-r--r--apps/comments/l10n/oc.js6
-rw-r--r--apps/comments/l10n/oc.json6
-rw-r--r--apps/comments/l10n/pl.js16
-rw-r--r--apps/comments/l10n/pl.json16
-rw-r--r--apps/comments/l10n/ps.js19
-rw-r--r--apps/comments/l10n/ps.json17
-rw-r--r--apps/comments/l10n/pt_BR.js16
-rw-r--r--apps/comments/l10n/pt_BR.json16
-rw-r--r--apps/comments/l10n/pt_PT.js17
-rw-r--r--apps/comments/l10n/pt_PT.json17
-rw-r--r--apps/comments/l10n/ro.js10
-rw-r--r--apps/comments/l10n/ro.json10
-rw-r--r--apps/comments/l10n/ru.js18
-rw-r--r--apps/comments/l10n/ru.json18
-rw-r--r--apps/comments/l10n/sc.js9
-rw-r--r--apps/comments/l10n/sc.json9
-rw-r--r--apps/comments/l10n/si.js20
-rw-r--r--apps/comments/l10n/si.json18
-rw-r--r--apps/comments/l10n/sk.js14
-rw-r--r--apps/comments/l10n/sk.json14
-rw-r--r--apps/comments/l10n/sl.js14
-rw-r--r--apps/comments/l10n/sl.json14
-rw-r--r--apps/comments/l10n/sq.js20
-rw-r--r--apps/comments/l10n/sq.json18
-rw-r--r--apps/comments/l10n/sr.js14
-rw-r--r--apps/comments/l10n/sr.json14
-rw-r--r--apps/comments/l10n/sr@latin.js7
-rw-r--r--apps/comments/l10n/sr@latin.json5
-rw-r--r--apps/comments/l10n/sv.js18
-rw-r--r--apps/comments/l10n/sv.json18
-rw-r--r--apps/comments/l10n/sw.js36
-rw-r--r--apps/comments/l10n/sw.json34
-rw-r--r--apps/comments/l10n/th.js25
-rw-r--r--apps/comments/l10n/th.json23
-rw-r--r--apps/comments/l10n/tr.js18
-rw-r--r--apps/comments/l10n/tr.json18
-rw-r--r--apps/comments/l10n/ug.js34
-rw-r--r--apps/comments/l10n/ug.json34
-rw-r--r--apps/comments/l10n/uk.js20
-rw-r--r--apps/comments/l10n/uk.json20
-rw-r--r--apps/comments/l10n/ur_PK.js7
-rw-r--r--apps/comments/l10n/ur_PK.json5
-rw-r--r--apps/comments/l10n/vi.js11
-rw-r--r--apps/comments/l10n/vi.json11
-rw-r--r--apps/comments/l10n/zh_CN.js14
-rw-r--r--apps/comments/l10n/zh_CN.json14
-rw-r--r--apps/comments/l10n/zh_HK.js14
-rw-r--r--apps/comments/l10n/zh_HK.json14
-rw-r--r--apps/comments/l10n/zh_TW.js20
-rw-r--r--apps/comments/l10n/zh_TW.json20
-rw-r--r--apps/comments/lib/Activity/Filter.php66
-rw-r--r--apps/comments/lib/Activity/Listener.php66
-rw-r--r--apps/comments/lib/Activity/Provider.php76
-rw-r--r--apps/comments/lib/Activity/Setting.php90
-rw-r--r--apps/comments/lib/AppInfo/Application.php53
-rw-r--r--apps/comments/lib/Capabilities.php24
-rw-r--r--apps/comments/lib/Collaboration/CommentersSorter.php40
-rw-r--r--apps/comments/lib/Controller/NotificationsController.php (renamed from apps/comments/lib/Controller/Notifications.php)73
-rw-r--r--apps/comments/lib/EventHandler.php89
-rw-r--r--apps/comments/lib/Listener/CommentsEntityEventListener.php33
-rw-r--r--apps/comments/lib/Listener/CommentsEventListener.php63
-rw-r--r--apps/comments/lib/Listener/LoadAdditionalScripts.php29
-rw-r--r--apps/comments/lib/Listener/LoadSidebarScripts.php40
-rw-r--r--apps/comments/lib/MaxAutoCompleteResultsInitialState.php32
-rw-r--r--apps/comments/lib/Notification/Listener.php56
-rw-r--r--apps/comments/lib/Notification/Notifier.php63
-rw-r--r--apps/comments/lib/Search/CommentsSearchProvider.php57
-rw-r--r--apps/comments/lib/Search/LegacyProvider.php32
-rw-r--r--apps/comments/lib/Search/Result.php55
-rw-r--r--apps/comments/openapi.json46
-rw-r--r--apps/comments/openapi.json.license2
-rw-r--r--apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts179
-rw-r--r--apps/comments/src/actions/inlineUnreadCommentsAction.ts46
-rw-r--r--apps/comments/src/activitytabviewplugin.js73
-rw-r--r--apps/comments/src/app.js32
-rw-r--r--apps/comments/src/comments-activity-tab.ts78
-rw-r--r--apps/comments/src/comments-app.js23
-rw-r--r--apps/comments/src/comments-tab.js105
-rw-r--r--apps/comments/src/comments.js29
-rw-r--r--apps/comments/src/components/Comment.vue240
-rw-r--r--apps/comments/src/components/Moment.vue31
-rw-r--r--apps/comments/src/filesplugin.js141
-rw-r--r--apps/comments/src/init.ts8
-rw-r--r--apps/comments/src/logger.js11
-rw-r--r--apps/comments/src/mixins/CommentMixin.js56
-rw-r--r--apps/comments/src/mixins/CommentView.ts76
-rw-r--r--apps/comments/src/services/CommentsInstance.js58
-rw-r--r--apps/comments/src/services/DavClient.js49
-rw-r--r--apps/comments/src/services/DeleteComment.js31
-rw-r--r--apps/comments/src/services/EditComment.js31
-rw-r--r--apps/comments/src/services/GetComments.js92
-rw-r--r--apps/comments/src/services/GetComments.ts67
-rw-r--r--apps/comments/src/services/NewComment.js43
-rw-r--r--apps/comments/src/services/ReadComments.ts38
-rw-r--r--apps/comments/src/store/deletedCommentLimbo.js28
-rw-r--r--apps/comments/src/templates.js17
-rw-r--r--apps/comments/src/templates/filesplugin.handlebars3
-rw-r--r--apps/comments/src/utils/cancelableRequest.js43
-rw-r--r--apps/comments/src/utils/davUtils.js21
-rw-r--r--apps/comments/src/utils/decodeHtmlEntities.js21
-rw-r--r--apps/comments/src/utils/numberUtil.js30
-rw-r--r--apps/comments/src/views/ActivityCommentAction.vue54
-rw-r--r--apps/comments/src/views/ActivityCommentEntry.vue71
-rw-r--r--apps/comments/src/views/Comments.vue205
-rw-r--r--apps/comments/tests/Unit/Activity/ListenerTest.php67
-rw-r--r--apps/comments/tests/Unit/AppInfo/ApplicationTest.php58
-rw-r--r--apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php114
-rw-r--r--apps/comments/tests/Unit/Controller/NotificationsTest.php70
-rw-r--r--apps/comments/tests/Unit/EventHandlerTest.php82
-rw-r--r--apps/comments/tests/Unit/Notification/ListenerTest.php120
-rw-r--r--apps/comments/tests/Unit/Notification/NotifierTest.php90
-rw-r--r--apps/comments/tests/js/filespluginSpec.js117
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();
- });
- });
-});