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/appinfo/app.php62
-rw-r--r--apps/comments/appinfo/info.xml23
-rw-r--r--apps/comments/appinfo/routes.php24
-rw-r--r--apps/comments/composer/autoload.php18
-rw-r--r--apps/comments/composer/composer.lock18
-rw-r--r--apps/comments/composer/composer/ClassLoader.php208
-rw-r--r--apps/comments/composer/composer/InstalledVersions.php359
-rw-r--r--apps/comments/composer/composer/autoload_classmap.php16
-rw-r--r--apps/comments/composer/composer/autoload_namespaces.php2
-rw-r--r--apps/comments/composer/composer/autoload_psr4.php2
-rw-r--r--apps/comments/composer/composer/autoload_real.php18
-rw-r--r--apps/comments/composer/composer/autoload_static.php14
-rw-r--r--apps/comments/composer/composer/installed.json5
-rw-r--r--apps/comments/composer/composer/installed.php23
-rw-r--r--apps/comments/css/autocomplete.scss77
-rw-r--r--apps/comments/css/comments.css218
-rw-r--r--apps/comments/img/comments-dark.svg2
-rw-r--r--apps/comments/img/comments.svg2
-rw-r--r--apps/comments/js/activitytabviewplugin.js59
-rw-r--r--apps/comments/js/app.js20
-rw-r--r--apps/comments/js/commentcollection.js167
-rw-r--r--apps/comments/js/commentmodel.js93
-rw-r--r--apps/comments/js/commentstabview.js752
-rw-r--r--apps/comments/js/commentsummarymodel.js68
-rw-r--r--apps/comments/js/filesplugin.js126
-rw-r--r--apps/comments/js/merged.json11
-rw-r--r--apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js1
-rw-r--r--apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js2
-rw-r--r--apps/comments/l10n/af.js34
-rw-r--r--apps/comments/l10n/af.json32
-rw-r--r--apps/comments/l10n/af_ZA.js6
-rw-r--r--apps/comments/l10n/af_ZA.json4
-rw-r--r--apps/comments/l10n/ar.js43
-rw-r--r--apps/comments/l10n/ar.json43
-rw-r--r--apps/comments/l10n/ast.js52
-rw-r--r--apps/comments/l10n/ast.json52
-rw-r--r--apps/comments/l10n/az.js8
-rw-r--r--apps/comments/l10n/az.json6
-rw-r--r--apps/comments/l10n/bg.js38
-rw-r--r--apps/comments/l10n/bg.json38
-rw-r--r--apps/comments/l10n/bg_BG.js39
-rw-r--r--apps/comments/l10n/bg_BG.json37
-rw-r--r--apps/comments/l10n/bn_BD.js8
-rw-r--r--apps/comments/l10n/bn_BD.json6
-rw-r--r--apps/comments/l10n/bn_IN.js7
-rw-r--r--apps/comments/l10n/bn_IN.json5
-rw-r--r--apps/comments/l10n/bs.js8
-rw-r--r--apps/comments/l10n/bs.json6
-rw-r--r--apps/comments/l10n/ca.js56
-rw-r--r--apps/comments/l10n/ca.json56
-rw-r--r--apps/comments/l10n/cs.js56
-rw-r--r--apps/comments/l10n/cs.json56
-rw-r--r--apps/comments/l10n/cs_CZ.js39
-rw-r--r--apps/comments/l10n/cs_CZ.json37
-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.js46
-rw-r--r--apps/comments/l10n/da.json46
-rw-r--r--apps/comments/l10n/de.js48
-rw-r--r--apps/comments/l10n/de.json48
-rw-r--r--apps/comments/l10n/de_AT.js7
-rw-r--r--apps/comments/l10n/de_AT.json5
-rw-r--r--apps/comments/l10n/de_DE.js46
-rw-r--r--apps/comments/l10n/de_DE.json46
-rw-r--r--apps/comments/l10n/el.js39
-rw-r--r--apps/comments/l10n/el.json39
-rw-r--r--apps/comments/l10n/en_GB.js46
-rw-r--r--apps/comments/l10n/en_GB.json46
-rw-r--r--apps/comments/l10n/eo.js20
-rw-r--r--apps/comments/l10n/eo.json18
-rw-r--r--apps/comments/l10n/es.js48
-rw-r--r--apps/comments/l10n/es.json48
-rw-r--r--apps/comments/l10n/es_419.js36
-rw-r--r--apps/comments/l10n/es_419.json34
-rw-r--r--apps/comments/l10n/es_AR.js34
-rw-r--r--apps/comments/l10n/es_AR.json32
-rw-r--r--apps/comments/l10n/es_CL.js36
-rw-r--r--apps/comments/l10n/es_CL.json34
-rw-r--r--apps/comments/l10n/es_CO.js47
-rw-r--r--apps/comments/l10n/es_CO.json47
-rw-r--r--apps/comments/l10n/es_CR.js36
-rw-r--r--apps/comments/l10n/es_CR.json34
-rw-r--r--apps/comments/l10n/es_DO.js36
-rw-r--r--apps/comments/l10n/es_DO.json34
-rw-r--r--apps/comments/l10n/es_EC.js43
-rw-r--r--apps/comments/l10n/es_EC.json43
-rw-r--r--apps/comments/l10n/es_GT.js36
-rw-r--r--apps/comments/l10n/es_GT.json34
-rw-r--r--apps/comments/l10n/es_HN.js36
-rw-r--r--apps/comments/l10n/es_HN.json34
-rw-r--r--apps/comments/l10n/es_MX.js48
-rw-r--r--apps/comments/l10n/es_MX.json48
-rw-r--r--apps/comments/l10n/es_NI.js36
-rw-r--r--apps/comments/l10n/es_NI.json34
-rw-r--r--apps/comments/l10n/es_PA.js36
-rw-r--r--apps/comments/l10n/es_PA.json34
-rw-r--r--apps/comments/l10n/es_PE.js36
-rw-r--r--apps/comments/l10n/es_PE.json34
-rw-r--r--apps/comments/l10n/es_PR.js36
-rw-r--r--apps/comments/l10n/es_PR.json34
-rw-r--r--apps/comments/l10n/es_PY.js36
-rw-r--r--apps/comments/l10n/es_PY.json34
-rw-r--r--apps/comments/l10n/es_SV.js36
-rw-r--r--apps/comments/l10n/es_SV.json34
-rw-r--r--apps/comments/l10n/es_UY.js36
-rw-r--r--apps/comments/l10n/es_UY.json34
-rw-r--r--apps/comments/l10n/et_EE.js46
-rw-r--r--apps/comments/l10n/et_EE.json46
-rw-r--r--apps/comments/l10n/eu.js54
-rw-r--r--apps/comments/l10n/eu.json54
-rw-r--r--apps/comments/l10n/fa.js36
-rw-r--r--apps/comments/l10n/fa.json36
-rw-r--r--apps/comments/l10n/fi.js42
-rw-r--r--apps/comments/l10n/fi.json42
-rw-r--r--apps/comments/l10n/fi_FI.js30
-rw-r--r--apps/comments/l10n/fi_FI.json28
-rw-r--r--apps/comments/l10n/fil.js6
-rw-r--r--apps/comments/l10n/fil.json4
-rw-r--r--apps/comments/l10n/fr.js48
-rw-r--r--apps/comments/l10n/fr.json48
-rw-r--r--apps/comments/l10n/ga.js36
-rw-r--r--apps/comments/l10n/ga.json34
-rw-r--r--apps/comments/l10n/gl.js50
-rw-r--r--apps/comments/l10n/gl.json50
-rw-r--r--apps/comments/l10n/he.js41
-rw-r--r--apps/comments/l10n/he.json41
-rw-r--r--apps/comments/l10n/hi.js7
-rw-r--r--apps/comments/l10n/hi.json5
-rw-r--r--apps/comments/l10n/hr.js26
-rw-r--r--apps/comments/l10n/hr.json26
-rw-r--r--apps/comments/l10n/hu.js52
-rw-r--r--apps/comments/l10n/hu.json52
-rw-r--r--apps/comments/l10n/hu_HU.js39
-rw-r--r--apps/comments/l10n/hu_HU.json37
-rw-r--r--apps/comments/l10n/hy.js7
-rw-r--r--apps/comments/l10n/hy.json5
-rw-r--r--apps/comments/l10n/ia.js34
-rw-r--r--apps/comments/l10n/ia.json32
-rw-r--r--apps/comments/l10n/id.js37
-rw-r--r--apps/comments/l10n/id.json37
-rw-r--r--apps/comments/l10n/is.js44
-rw-r--r--apps/comments/l10n/is.json44
-rw-r--r--apps/comments/l10n/it.js48
-rw-r--r--apps/comments/l10n/it.json48
-rw-r--r--apps/comments/l10n/ja.js48
-rw-r--r--apps/comments/l10n/ja.json48
-rw-r--r--apps/comments/l10n/ka.js32
-rw-r--r--apps/comments/l10n/ka.json30
-rw-r--r--apps/comments/l10n/ka_GE.js36
-rw-r--r--apps/comments/l10n/ka_GE.json34
-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.js46
-rw-r--r--apps/comments/l10n/ko.json46
-rw-r--r--apps/comments/l10n/ku_IQ.js7
-rw-r--r--apps/comments/l10n/ku_IQ.json5
-rw-r--r--apps/comments/l10n/lb.js8
-rw-r--r--apps/comments/l10n/lb.json6
-rw-r--r--apps/comments/l10n/lt_LT.js41
-rw-r--r--apps/comments/l10n/lt_LT.json41
-rw-r--r--apps/comments/l10n/lv.js32
-rw-r--r--apps/comments/l10n/lv.json30
-rw-r--r--apps/comments/l10n/mk.js33
-rw-r--r--apps/comments/l10n/mk.json33
-rw-r--r--apps/comments/l10n/mn.js32
-rw-r--r--apps/comments/l10n/mn.json30
-rw-r--r--apps/comments/l10n/ms_MY.js7
-rw-r--r--apps/comments/l10n/ms_MY.json5
-rw-r--r--apps/comments/l10n/my_MM.js6
-rw-r--r--apps/comments/l10n/my_MM.json4
-rw-r--r--apps/comments/l10n/nb.js46
-rw-r--r--apps/comments/l10n/nb.json46
-rw-r--r--apps/comments/l10n/nb_NO.js39
-rw-r--r--apps/comments/l10n/nb_NO.json37
-rw-r--r--apps/comments/l10n/nds.js6
-rw-r--r--apps/comments/l10n/nds.json4
-rw-r--r--apps/comments/l10n/nl.js46
-rw-r--r--apps/comments/l10n/nl.json46
-rw-r--r--apps/comments/l10n/nn_NO.js7
-rw-r--r--apps/comments/l10n/nn_NO.json5
-rw-r--r--apps/comments/l10n/oc.js37
-rw-r--r--apps/comments/l10n/oc.json37
-rw-r--r--apps/comments/l10n/pa.js6
-rw-r--r--apps/comments/l10n/pa.json4
-rw-r--r--apps/comments/l10n/pl.js56
-rw-r--r--apps/comments/l10n/pl.json56
-rw-r--r--apps/comments/l10n/pt_BR.js48
-rw-r--r--apps/comments/l10n/pt_BR.json48
-rw-r--r--apps/comments/l10n/pt_PT.js40
-rw-r--r--apps/comments/l10n/pt_PT.json40
-rw-r--r--apps/comments/l10n/ro.js40
-rw-r--r--apps/comments/l10n/ro.json40
-rw-r--r--apps/comments/l10n/ru.js48
-rw-r--r--apps/comments/l10n/ru.json48
-rw-r--r--apps/comments/l10n/sc.js31
-rw-r--r--apps/comments/l10n/sc.json29
-rw-r--r--apps/comments/l10n/si_LK.js33
-rw-r--r--apps/comments/l10n/si_LK.json31
-rw-r--r--apps/comments/l10n/sk.js46
-rw-r--r--apps/comments/l10n/sk.json46
-rw-r--r--apps/comments/l10n/sk_SK.js34
-rw-r--r--apps/comments/l10n/sk_SK.json32
-rw-r--r--apps/comments/l10n/sl.js47
-rw-r--r--apps/comments/l10n/sl.json47
-rw-r--r--apps/comments/l10n/sq.js34
-rw-r--r--apps/comments/l10n/sq.json32
-rw-r--r--apps/comments/l10n/sr.js46
-rw-r--r--apps/comments/l10n/sr.json46
-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.js44
-rw-r--r--apps/comments/l10n/sv.json44
-rw-r--r--apps/comments/l10n/sw.js36
-rw-r--r--apps/comments/l10n/sw.json34
-rw-r--r--apps/comments/l10n/ta_LK.js7
-rw-r--r--apps/comments/l10n/ta_LK.json5
-rw-r--r--apps/comments/l10n/te.js7
-rw-r--r--apps/comments/l10n/te.json5
-rw-r--r--apps/comments/l10n/th_TH.js23
-rw-r--r--apps/comments/l10n/th_TH.json21
-rw-r--r--apps/comments/l10n/tr.js48
-rw-r--r--apps/comments/l10n/tr.json48
-rw-r--r--apps/comments/l10n/ug.js34
-rw-r--r--apps/comments/l10n/ug.json34
-rw-r--r--apps/comments/l10n/uk.js44
-rw-r--r--apps/comments/l10n/uk.json44
-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.js41
-rw-r--r--apps/comments/l10n/vi.json41
-rw-r--r--apps/comments/l10n/zh_CN.js50
-rw-r--r--apps/comments/l10n/zh_CN.json50
-rw-r--r--apps/comments/l10n/zh_HK.js33
-rw-r--r--apps/comments/l10n/zh_HK.json33
-rw-r--r--apps/comments/l10n/zh_TW.js56
-rw-r--r--apps/comments/l10n/zh_TW.json56
-rw-r--r--apps/comments/lib/Activity/Filter.php68
-rw-r--r--apps/comments/lib/Activity/Listener.php87
-rw-r--r--apps/comments/lib/Activity/Provider.php175
-rw-r--r--apps/comments/lib/Activity/Setting.php93
-rw-r--r--apps/comments/lib/AppInfo/Application.php80
-rw-r--r--apps/comments/lib/Capabilities.php24
-rw-r--r--apps/comments/lib/Collaboration/CommentersSorter.php65
-rw-r--r--apps/comments/lib/Controller/Notifications.php136
-rw-r--r--apps/comments/lib/Controller/NotificationsController.php103
-rw-r--r--apps/comments/lib/EventHandler.php90
-rw-r--r--apps/comments/lib/JSSettingsHelper.php45
-rw-r--r--apps/comments/lib/Listener/CommentsEntityEventListener.php35
-rw-r--r--apps/comments/lib/Listener/CommentsEventListener.php63
-rw-r--r--apps/comments/lib/Listener/LoadAdditionalScripts.php27
-rw-r--r--apps/comments/lib/Listener/LoadSidebarScripts.php40
-rw-r--r--apps/comments/lib/MaxAutoCompleteResultsInitialState.php27
-rw-r--r--apps/comments/lib/Notification/Listener.php79
-rw-r--r--apps/comments/lib/Notification/Notifier.php219
-rw-r--r--apps/comments/lib/Search/CommentsSearchProvider.php71
-rw-r--r--apps/comments/lib/Search/LegacyProvider.php97
-rw-r--r--apps/comments/lib/Search/Result.php105
-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/comments-activity-tab.ts78
-rw-r--r--apps/comments/src/comments-app.js15
-rw-r--r--apps/comments/src/comments-tab.js60
-rw-r--r--apps/comments/src/components/Comment.vue384
-rw-r--r--apps/comments/src/init.ts8
-rw-r--r--apps/comments/src/logger.js11
-rw-r--r--apps/comments/src/mixins/CommentMixin.js115
-rw-r--r--apps/comments/src/mixins/CommentView.ts76
-rw-r--r--apps/comments/src/services/CommentsInstance.js55
-rw-r--r--apps/comments/src/services/DavClient.js27
-rw-r--r--apps/comments/src/services/DeleteComment.js20
-rw-r--r--apps/comments/src/services/EditComment.js32
-rw-r--r--apps/comments/src/services/GetComments.ts67
-rw-r--r--apps/comments/src/services/NewComment.js50
-rw-r--r--apps/comments/src/services/ReadComments.ts38
-rw-r--r--apps/comments/src/store/deletedCommentLimbo.js28
-rw-r--r--apps/comments/src/utils/cancelableRequest.js36
-rw-r--r--apps/comments/src/utils/davUtils.js12
-rw-r--r--apps/comments/src/utils/decodeHtmlEntities.js17
-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.vue279
-rw-r--r--apps/comments/tests/Unit/Activity/ListenerTest.php159
-rw-r--r--apps/comments/tests/Unit/AppInfo/ApplicationTest.php65
-rw-r--r--apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php120
-rw-r--r--apps/comments/tests/Unit/Controller/NotificationsTest.php199
-rw-r--r--apps/comments/tests/Unit/EventHandlerTest.php88
-rw-r--r--apps/comments/tests/Unit/JSSettingsHelperTest.php73
-rw-r--r--apps/comments/tests/Unit/Notification/ListenerTest.php161
-rw-r--r--apps/comments/tests/Unit/Notification/NotifierTest.php247
-rw-r--r--apps/comments/tests/js/commentscollectionSpec.js148
-rw-r--r--apps/comments/tests/js/commentstabviewSpec.js690
-rw-r--r--apps/comments/tests/js/filespluginSpec.js102
297 files changed, 6578 insertions, 8276 deletions
diff --git a/apps/comments/.bowerrc b/apps/comments/.bowerrc
deleted file mode 100644
index faee1372545..00000000000
--- a/apps/comments/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "directory": "js/vendor"
-} \ No newline at end of file
diff --git a/apps/comments/appinfo/app.php b/apps/comments/appinfo/app.php
deleted file mode 100644
index 15c545ae1e4..00000000000
--- a/apps/comments/appinfo/app.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Lukas Reschke <lukas@statuscode.ch>
- * @author Vincent Petry <pvince81@owncloud.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-$eventDispatcher = \OC::$server->getEventDispatcher();
-$eventDispatcher->addListener(
- 'OCA\Files::loadAdditionalScripts',
- function() {
- \OCP\Util::addScript('oc-backbone-webdav');
- \OCP\Util::addScript('comments', 'merged');
- \OCP\Util::addStyle('comments', 'autocomplete');
- \OCP\Util::addStyle('comments', 'comments');
- }
-);
-
-$eventDispatcher->addListener(\OCP\Comments\CommentsEntityEvent::EVENT_ENTITY, function(\OCP\Comments\CommentsEntityEvent $event) {
- $event->addEntityCollection('files', function($name) {
- $nodes = \OC::$server->getUserFolder()->getById(intval($name));
- return !empty($nodes);
- });
-});
-
-$notificationManager = \OC::$server->getNotificationManager();
-$notificationManager->registerNotifier(
- function() {
- $application = new \OCP\AppFramework\App('comments');
- return $application->getContainer()->query(\OCA\Comments\Notification\Notifier::class);
- },
- function () {
- $l = \OC::$server->getL10N('comments');
- return ['id' => 'comments', 'name' => $l->t('Comments')];
- }
-);
-
-$commentsManager = \OC::$server->getCommentsManager();
-$commentsManager->registerEventHandler(function () {
- $application = new \OCP\AppFramework\App('comments');
- /** @var \OCA\Comments\EventHandler $handler */
- $handler = $application->getContainer()->query(\OCA\Comments\EventHandler::class);
- return $handler;
-});
diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml
index 61a23cf65f8..dc5af1a70a0 100644
--- a/apps/comments/appinfo/info.xml
+++ b/apps/comments/appinfo/info.xml
@@ -1,19 +1,28 @@
<?xml version="1.0"?>
-<info>
+<!--
+ - SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ - SPDX-License-Identifier: AGPL-3.0-only
+ -->
+<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>comments</id>
<name>Comments</name>
+ <summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
- <licence>AGPL</licence>
+ <version>1.22.0</version>
+ <licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
- <default_enable/>
- <version>1.4.0</version>
- <dependencies>
- <nextcloud min-version="14" max-version="14" />
- </dependencies>
<types>
<logging/>
</types>
+ <category>office</category>
+ <category>social</category>
+ <bugs>https://github.com/nextcloud/server/issues</bugs>
+ <dependencies>
+ <nextcloud min-version="32" max-version="32"/>
+ </dependencies>
<activity>
<settings>
diff --git a/apps/comments/appinfo/routes.php b/apps/comments/appinfo/routes.php
index 37d3496c4ed..903f1b2168c 100644
--- a/apps/comments/appinfo/routes.php
+++ b/apps/comments/appinfo/routes.php
@@ -1,26 +1,10 @@
<?php
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
return [
'routes' => [
['name' => 'Notifications#view', 'url' => '/notifications/view/{id}', 'verb' => 'GET'],
diff --git a/apps/comments/composer/autoload.php b/apps/comments/composer/autoload.php
index c974072d6b7..2bbfd4fbebe 100644
--- a/apps/comments/composer/autoload.php
+++ b/apps/comments/composer/autoload.php
@@ -2,6 +2,24 @@
// autoload.php @generated by Composer
+if (PHP_VERSION_ID < 50600) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, $err);
+ } elseif (!headers_sent()) {
+ echo $err;
+ }
+ }
+ trigger_error(
+ $err,
+ E_USER_ERROR
+ );
+}
+
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitComments::getLoader();
diff --git a/apps/comments/composer/composer.lock b/apps/comments/composer/composer.lock
new file mode 100644
index 00000000000..fd0bcbcb753
--- /dev/null
+++ b/apps/comments/composer/composer.lock
@@ -0,0 +1,18 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "d751713988987e9331980363e24189ce",
+ "packages": [],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/apps/comments/composer/composer/ClassLoader.php b/apps/comments/composer/composer/ClassLoader.php
index dc02dfb114f..7824d8f7eaf 100644
--- a/apps/comments/composer/composer/ClassLoader.php
+++ b/apps/comments/composer/composer/ClassLoader.php
@@ -37,57 +37,126 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
+ /** @var \Closure(string):void */
+ private static $includeFile;
+
+ /** @var string|null */
+ private $vendorDir;
+
// PSR-4
+ /**
+ * @var array<string, array<string, int>>
+ */
private $prefixLengthsPsr4 = array();
+ /**
+ * @var array<string, list<string>>
+ */
private $prefixDirsPsr4 = array();
+ /**
+ * @var list<string>
+ */
private $fallbackDirsPsr4 = array();
// PSR-0
+ /**
+ * List of PSR-0 prefixes
+ *
+ * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+ *
+ * @var array<string, array<string, list<string>>>
+ */
private $prefixesPsr0 = array();
+ /**
+ * @var list<string>
+ */
private $fallbackDirsPsr0 = array();
+ /** @var bool */
private $useIncludePath = false;
+
+ /**
+ * @var array<string, string>
+ */
private $classMap = array();
+
+ /** @var bool */
private $classMapAuthoritative = false;
+
+ /**
+ * @var array<string, bool>
+ */
private $missingClasses = array();
+
+ /** @var string|null */
private $apcuPrefix;
+ /**
+ * @var array<string, self>
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param string|null $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ self::initializeIncludeClosure();
+ }
+
+ /**
+ * @return array<string, list<string>>
+ */
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', $this->prefixesPsr0);
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
}
+ /**
+ * @return array<string, list<string>>
+ */
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
+ /**
+ * @return list<string>
+ */
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
+ /**
+ * @return list<string>
+ */
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
+ /**
+ * @return array<string, string> Array of classname => path
+ */
public function getClassMap()
{
return $this->classMap;
}
/**
- * @param array $classMap Class to filename map
+ * @param array<string, string> $classMap Class to filename map
+ *
+ * @return void
*/
public function addClassMap(array $classMap)
{
@@ -102,22 +171,25 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix
+ * @param list<string>|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
*/
public function add($prefix, $paths, $prepend = false)
{
+ $paths = (array) $paths;
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
- (array) $paths,
+ $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
- (array) $paths
+ $paths
);
}
@@ -126,19 +198,19 @@ class ClassLoader
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+ $this->prefixesPsr0[$first][$prefix] = $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
- (array) $paths,
+ $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
- (array) $paths
+ $paths
);
}
}
@@ -147,25 +219,28 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list<string>|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
+ $paths = (array) $paths;
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
- (array) $paths,
+ $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
- (array) $paths
+ $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
@@ -175,18 +250,18 @@ class ClassLoader
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ $this->prefixDirsPsr4[$prefix] = $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
- (array) $paths,
+ $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
- (array) $paths
+ $paths
);
}
}
@@ -195,8 +270,10 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
+ * @param string $prefix The prefix
+ * @param list<string>|string $paths The PSR-0 base directories
+ *
+ * @return void
*/
public function set($prefix, $paths)
{
@@ -211,10 +288,12 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param list<string>|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function setPsr4($prefix, $paths)
{
@@ -234,6 +313,8 @@ class ClassLoader
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
+ *
+ * @return void
*/
public function setUseIncludePath($useIncludePath)
{
@@ -256,6 +337,8 @@ class ClassLoader
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
+ *
+ * @return void
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
@@ -276,10 +359,12 @@ class ClassLoader
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
+ *
+ * @return void
*/
public function setApcuPrefix($apcuPrefix)
{
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
@@ -296,33 +381,55 @@ class ClassLoader
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
}
/**
* Unregisters this instance as an autoloader.
+ *
+ * @return void
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
+ * @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
- includeFile($file);
+ $includeFile = self::$includeFile;
+ $includeFile($file);
return true;
}
+
+ return null;
}
/**
@@ -367,6 +474,21 @@ class ClassLoader
return $file;
}
+ /**
+ * Returns the currently registered loaders keyed by their corresponding vendor directories.
+ *
+ * @return array<string, self>
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
@@ -377,7 +499,7 @@ class ClassLoader
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
- $search = $subPath.'\\';
+ $search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
@@ -432,14 +554,26 @@ class ClassLoader
return false;
}
-}
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- */
-function includeFile($file)
-{
- include $file;
+ /**
+ * @return void
+ */
+ private static function initializeIncludeClosure()
+ {
+ if (self::$includeFile !== null) {
+ return;
+ }
+
+ /**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ */
+ self::$includeFile = \Closure::bind(static function($file) {
+ include $file;
+ }, null, null);
+ }
}
diff --git a/apps/comments/composer/composer/InstalledVersions.php b/apps/comments/composer/composer/InstalledVersions.php
new file mode 100644
index 00000000000..51e734a774b
--- /dev/null
+++ b/apps/comments/composer/composer/InstalledVersions.php
@@ -0,0 +1,359 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ * Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints((string) $constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require $vendorDir.'/composer/installed.php';
+ $installed[] = self::$installedByVendor[$vendorDir] = $required;
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+ $required = require __DIR__ . '/installed.php';
+ self::$installed = $required;
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ if (self::$installed !== array()) {
+ $installed[] = self::$installed;
+ }
+
+ return $installed;
+ }
+}
diff --git a/apps/comments/composer/composer/autoload_classmap.php b/apps/comments/composer/composer/autoload_classmap.php
index 0000ab9081a..22f95a934d7 100644
--- a/apps/comments/composer/composer/autoload_classmap.php
+++ b/apps/comments/composer/composer/autoload_classmap.php
@@ -2,19 +2,27 @@
// autoload_classmap.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = $vendorDir;
return array(
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'OCA\\Comments\\Activity\\Filter' => $baseDir . '/../lib/Activity/Filter.php',
'OCA\\Comments\\Activity\\Listener' => $baseDir . '/../lib/Activity/Listener.php',
'OCA\\Comments\\Activity\\Provider' => $baseDir . '/../lib/Activity/Provider.php',
'OCA\\Comments\\Activity\\Setting' => $baseDir . '/../lib/Activity/Setting.php',
'OCA\\Comments\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
+ 'OCA\\Comments\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\Comments\\Collaboration\\CommentersSorter' => $baseDir . '/../lib/Collaboration/CommentersSorter.php',
- 'OCA\\Comments\\Controller\\Notifications' => $baseDir . '/../lib/Controller/Notifications.php',
- 'OCA\\Comments\\EventHandler' => $baseDir . '/../lib/EventHandler.php',
- 'OCA\\Comments\\JSSettingsHelper' => $baseDir . '/../lib/JSSettingsHelper.php',
+ 'OCA\\Comments\\Controller\\NotificationsController' => $baseDir . '/../lib/Controller/NotificationsController.php',
+ 'OCA\\Comments\\Listener\\CommentsEntityEventListener' => $baseDir . '/../lib/Listener/CommentsEntityEventListener.php',
+ 'OCA\\Comments\\Listener\\CommentsEventListener' => $baseDir . '/../lib/Listener/CommentsEventListener.php',
+ 'OCA\\Comments\\Listener\\LoadAdditionalScripts' => $baseDir . '/../lib/Listener/LoadAdditionalScripts.php',
+ 'OCA\\Comments\\Listener\\LoadSidebarScripts' => $baseDir . '/../lib/Listener/LoadSidebarScripts.php',
+ 'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => $baseDir . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
+ 'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php',
+ 'OCA\\Comments\\Search\\LegacyProvider' => $baseDir . '/../lib/Search/LegacyProvider.php',
+ 'OCA\\Comments\\Search\\Result' => $baseDir . '/../lib/Search/Result.php',
);
diff --git a/apps/comments/composer/composer/autoload_namespaces.php b/apps/comments/composer/composer/autoload_namespaces.php
index 71c9e91858d..3f5c9296251 100644
--- a/apps/comments/composer/composer/autoload_namespaces.php
+++ b/apps/comments/composer/composer/autoload_namespaces.php
@@ -2,7 +2,7 @@
// autoload_namespaces.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = $vendorDir;
return array(
diff --git a/apps/comments/composer/composer/autoload_psr4.php b/apps/comments/composer/composer/autoload_psr4.php
index f30d722bf9e..2db1b8decc4 100644
--- a/apps/comments/composer/composer/autoload_psr4.php
+++ b/apps/comments/composer/composer/autoload_psr4.php
@@ -2,7 +2,7 @@
// autoload_psr4.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = $vendorDir;
return array(
diff --git a/apps/comments/composer/composer/autoload_real.php b/apps/comments/composer/composer/autoload_real.php
index 40e29b668a4..7f9d22ca0a2 100644
--- a/apps/comments/composer/composer/autoload_real.php
+++ b/apps/comments/composer/composer/autoload_real.php
@@ -13,6 +13,9 @@ class ComposerAutoloaderInitComments
}
}
+ /**
+ * @return \Composer\Autoload\ClassLoader
+ */
public static function getLoader()
{
if (null !== self::$loader) {
@@ -20,20 +23,11 @@ class ComposerAutoloaderInitComments
}
spl_autoload_register(array('ComposerAutoloaderInitComments', 'loadClassLoader'), true, true);
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitComments', 'loadClassLoader'));
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
- if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
-
- call_user_func(\Composer\Autoload\ComposerStaticInitComments::getInitializer($loader));
- } else {
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
- }
- }
+ require __DIR__ . '/autoload_static.php';
+ call_user_func(\Composer\Autoload\ComposerStaticInitComments::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
diff --git a/apps/comments/composer/composer/autoload_static.php b/apps/comments/composer/composer/autoload_static.php
index 662f77f89dc..7e553f8e2e2 100644
--- a/apps/comments/composer/composer/autoload_static.php
+++ b/apps/comments/composer/composer/autoload_static.php
@@ -21,17 +21,25 @@ class ComposerStaticInitComments
);
public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'OCA\\Comments\\Activity\\Filter' => __DIR__ . '/..' . '/../lib/Activity/Filter.php',
'OCA\\Comments\\Activity\\Listener' => __DIR__ . '/..' . '/../lib/Activity/Listener.php',
'OCA\\Comments\\Activity\\Provider' => __DIR__ . '/..' . '/../lib/Activity/Provider.php',
'OCA\\Comments\\Activity\\Setting' => __DIR__ . '/..' . '/../lib/Activity/Setting.php',
'OCA\\Comments\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
+ 'OCA\\Comments\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\Comments\\Collaboration\\CommentersSorter' => __DIR__ . '/..' . '/../lib/Collaboration/CommentersSorter.php',
- 'OCA\\Comments\\Controller\\Notifications' => __DIR__ . '/..' . '/../lib/Controller/Notifications.php',
- 'OCA\\Comments\\EventHandler' => __DIR__ . '/..' . '/../lib/EventHandler.php',
- 'OCA\\Comments\\JSSettingsHelper' => __DIR__ . '/..' . '/../lib/JSSettingsHelper.php',
+ 'OCA\\Comments\\Controller\\NotificationsController' => __DIR__ . '/..' . '/../lib/Controller/NotificationsController.php',
+ 'OCA\\Comments\\Listener\\CommentsEntityEventListener' => __DIR__ . '/..' . '/../lib/Listener/CommentsEntityEventListener.php',
+ 'OCA\\Comments\\Listener\\CommentsEventListener' => __DIR__ . '/..' . '/../lib/Listener/CommentsEventListener.php',
+ 'OCA\\Comments\\Listener\\LoadAdditionalScripts' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalScripts.php',
+ 'OCA\\Comments\\Listener\\LoadSidebarScripts' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarScripts.php',
+ 'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => __DIR__ . '/..' . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
+ 'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php',
+ 'OCA\\Comments\\Search\\LegacyProvider' => __DIR__ . '/..' . '/../lib/Search/LegacyProvider.php',
+ 'OCA\\Comments\\Search\\Result' => __DIR__ . '/..' . '/../lib/Search/Result.php',
);
public static function getInitializer(ClassLoader $loader)
diff --git a/apps/comments/composer/composer/installed.json b/apps/comments/composer/composer/installed.json
new file mode 100644
index 00000000000..f20a6c47c6d
--- /dev/null
+++ b/apps/comments/composer/composer/installed.json
@@ -0,0 +1,5 @@
+{
+ "packages": [],
+ "dev": false,
+ "dev-package-names": []
+}
diff --git a/apps/comments/composer/composer/installed.php b/apps/comments/composer/composer/installed.php
new file mode 100644
index 00000000000..1a66c7f2416
--- /dev/null
+++ b/apps/comments/composer/composer/installed.php
@@ -0,0 +1,23 @@
+<?php return array(
+ 'root' => array(
+ 'name' => '__root__',
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../',
+ 'aliases' => array(),
+ 'dev' => false,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'b1797842784b250fb01ed5e3bf130705eb94751b',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/apps/comments/css/autocomplete.scss b/apps/comments/css/autocomplete.scss
deleted file mode 100644
index 41695e08301..00000000000
--- a/apps/comments/css/autocomplete.scss
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * based upon apps/comments/js/vendor/At.js/dist/css/jquery.atwho.css,
- * only changed colors and font-weight
- */
-
-.atwho-view {
- position:absolute;
- top: 0;
- left: 0;
- display: none;
- margin-top: 18px;
- background: $color-main-background;
- color: $color-main-text;
- border: 1px solid $color-border;
- border-radius: $border-radius;
- box-shadow: 0 0 5px $color-box-shadow;
- min-width: 120px;
- z-index: 11110 !important;
-}
-
-.atwho-view .atwho-header {
- padding: 5px;
- margin: 5px;
- cursor: pointer;
- border-bottom: solid 1px $color-border;
- color: $color-main-text;
- font-size: 11px;
- font-weight: bold;
-}
-
-.atwho-view .atwho-header .small {
- color: $color-main-text;
- float: right;
- padding-top: 2px;
- margin-right: -5px;
- font-size: 12px;
- font-weight: normal;
-}
-
-.atwho-view .atwho-header:hover {
- cursor: default;
-}
-
-.atwho-view .cur {
- background: $color-primary;
- color: $color-primary-text;
-}
-.atwho-view .cur small {
- color: $color-primary-text;
-}
-.atwho-view strong {
- color: $color-main-text;
- font-weight: normal;
-}
-.atwho-view .cur strong {
- color: $color-primary-text;
- font-weight: normal;
-}
-.atwho-view ul {
- /* width: 100px; */
- list-style:none;
- padding:0;
- margin:auto;
- max-height: 200px;
- overflow-y: auto;
-}
-.atwho-view ul li {
- display: block;
- padding: 5px 10px;
- border-bottom: 1px solid $color-border;
- cursor: pointer;
-}
-.atwho-view small {
- font-size: smaller;
- color: $color-main-text;
- font-weight: normal;
-}
diff --git a/apps/comments/css/comments.css b/apps/comments/css/comments.css
deleted file mode 100644
index 311eeebe4db..00000000000
--- a/apps/comments/css/comments.css
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-#commentsTabView .emptycontent {
- margin-top: 0;
-}
-
-#commentsTabView .newCommentForm {
- position: relative;
- margin-bottom: 20px;
-}
-
-#commentsTabView .newCommentForm .message {
- width: calc(100% - 81px); /* 36 (left margin) + 30 (right padding) + 15 (right padding of surrounding box) */
- margin-left: 36px;
- padding-right: 30px;
- display: block;
-}
-
-#commentsTabView .newCommentForm .submit {
- position: absolute;
- bottom: 0px;
- right: 8px;
- width: 30px;
- margin: 0;
- padding: 7px 9px;
- background-color: transparent;
- border: none;
- opacity: .3;
-}
-#commentsTabView .newCommentForm .submit:not(:disabled):hover,
-#commentsTabView .newCommentForm .submit:not(:disabled):focus {
- opacity: 1;
-}
-
-#commentsTabView .newCommentForm .submitLoading {
- background-position: left;
-
- /* Match rules for '#commentsTabView .newCommentForm .submit' to place the
- loading icon at the same position as the confirm icon */
- position: absolute;
- bottom: 0px;
- right: 8px;
- width: 30px;
- margin: 0;
- padding: 7px 9px;
-
- /* Match rules for 'input[type="submit"]' to place the loading icon at the
- same position as the confirm icon */
- min-height: 34px;
- box-sizing: border-box;
-}
-
-#commentsTabView .newCommentForm .cancel {
- margin-right: 6px;
-}
-
-#commentsTabView .newCommentForm div.message {
- resize: none;
-}
-
-#commentsTabView .newCommentForm div.message:empty:before {
- content: attr(data-placeholder);
- color: grey;
-}
-
-#commentsTabView .comment {
- position: relative;
- margin-bottom: 30px;
- word-wrap: break-word;
- overflow-wrap: break-word;
-}
-
-#commentsTabView .comment .avatar,
-.atwho-view-ul * .avatar{
- width: 32px;
- height: 32px;
- line-height: 32px;
- margin-right: 5px;
-}
-
-#commentsTabView .comment .message .avatar,
-.atwho-view-ul * .avatar
-{
- display: inline-block;
-}
-
-#activityTabView li.comment.collapsed .activitymessage,
-#commentsTabView .comment.collapsed .message {
- white-space: pre-wrap;
-}
-
-#activityTabView li.comment.collapsed .activitymessage,
-#commentsTabView .comment.collapsed .message {
- max-height: 70px;
- overflow: hidden;
-}
-
-#activityTabView li.comment .message-overlay,
-#commentsTabView .comment .message-overlay {
- display: none;
-}
-
-#activityTabView li.comment.collapsed .message-overlay,
-#commentsTabView .comment.collapsed .message-overlay {
- display: block;
- position: absolute;
- z-index: 2;
- height: 50px;
- pointer-events: none;
- left: 0;
- right: 0;
- bottom: 0;
- background: -moz-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- background: -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- background: -o-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- background: -ms-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00FFFFFF', endColorstr='#FFFFFFFF');
- background-repeat: no-repeat;
-}
-
-#commentsTabView .authorRow>div:not(.contactsmenu-popover) {
- display: inline-block;
- vertical-align: middle;
-}
-
-#commentsTabView .authorRow>div.hidden {
- display: none !important;
-}
-
-#commentsTabView .comments li .message .avatar-name-wrapper,
-.atwho-view-ul * .avatar-name-wrapper,
-#commentsTabView .comment .authorRow {
- position: relative;
- display: inline-flex;
- align-items: center;
- width: 100%;
-}
-
-#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),
-#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,
-#commentsTabView .comment .authorRow .avatar:not(.currentUser),
-#commentsTabView .comment .authorRow .author:not(.currentUser) {
- cursor: pointer;
-}
-
-.atwho-view-ul .avatar-name-wrapper,
-.atwho-view-ul .avatar-name-wrapper .avatar {
- cursor: pointer;
-}
-
-#commentsTabView .comments li .message .atwho-inserted {
- margin-left: 5px;
-}
-
-.atwho-view-ul * .avatar-name-wrapper {
- white-space: nowrap;
-}
-
-#commentsTabView .comment .author,
-#commentsTabView .comment .date {
- opacity: .5;
-}
-#commentsTabView .comment .date {
- margin-left: auto;
-}
-
-#commentsTabView .comments li .message {
- padding-left: 40px;
- display: inline-flex;
- flex-wrap: wrap;
- align-items: center;
-}
-
-#commentsTabView .comment .action {
- opacity: 0;
- padding: 5px;
-}
-
-#commentsTabView .comment:hover .action {
- opacity: 0.3;
-}
-
-#commentsTabView .comment .action:hover {
- opacity: 1;
-}
-
-#commentsTabView .comment .action.delete,
-#commentsTabView .comment .deleteLoading {
- position: absolute;
- right: 0;
-}
-
-#commentsTabView .comment.disabled {
- opacity: 0.3;
-}
-
-#commentsTabView .comment.disabled .action {
- visibility: hidden;
-}
-
-#commentsTabView .message.error {
- color: #e9322d;
- border-color: #e9322d;
- box-shadow: 0 0 6px #f8b9b7;
-}
-
-.app-files .action-comment {
- padding: 16px 14px;
-}
diff --git a/apps/comments/img/comments-dark.svg b/apps/comments/img/comments-dark.svg
index d331ea7711b..b0732c747fe 100644
--- a/apps/comments/img/comments-dark.svg
+++ b/apps/comments/img/comments-dark.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#000" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px"><path d="M240-384h480v-72H240v72Zm0-132h480v-72H240v72Zm0-132h480v-72H240v72Zm-72 408q-29.7 0-50.85-21.15Q96-282.3 96-312v-480q0-29.7 21.15-50.85Q138.3-864 168-864h624q29.7 0 50.85 21.15Q864-821.7 864-792v696L720-240H168Z"/></svg> \ No newline at end of file
diff --git a/apps/comments/img/comments.svg b/apps/comments/img/comments.svg
index b99c5f9c087..d4e4573bf91 100644
--- a/apps/comments/img/comments.svg
+++ b/apps/comments/img/comments.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 32 32"><path fill="#fff" d="M16 3C7.163 3 0 7.925 0 14s7.163 11 16 11c.5 0 .98-.032 1.47-.063L26 32v-9.406c3.658-2.017 6-5.12 6-8.595 0-6.076-7.164-11-16-11z"/></svg> \ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#fff"><path d="M240-384h480v-72H240v72Zm0-132h480v-72H240v72Zm0-132h480v-72H240v72Zm-72 408q-29.7 0-50.85-21.15Q96-282.3 96-312v-480q0-29.7 21.15-50.85Q138.3-864 168-864h624q29.7 0 50.85 21.15Q864-821.7 864-792v696L720-240H168Z"/></svg> \ No newline at end of file
diff --git a/apps/comments/js/activitytabviewplugin.js b/apps/comments/js/activitytabviewplugin.js
deleted file mode 100644
index b6195b80c45..00000000000
--- a/apps/comments/js/activitytabviewplugin.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * @author Joas Schilling <coding@schilljs.com>
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- */
-
-(function() {
- OCA.Comments.ActivityTabViewPlugin = {
-
- /**
- * Prepare activity for display
- *
- * @param {OCA.Activity.ActivityModel} model for this activity
- * @param {jQuery} $el jQuery handle for this activity
- * @param {string} view The view that displayes this activity
- */
- prepareModelForDisplay: function (model, $el, view) {
- if (model.get('app') !== 'comments' || model.get('type') !== 'comments') {
- return;
- }
-
- if (view === 'ActivityTabView') {
- $el.addClass('comment');
- if (model.get('message') && this._isLong(model.get('message'))) {
- $el.addClass('collapsed');
- var $overlay = $('<div>').addClass('message-overlay');
- $el.find('.activitymessage').after($overlay);
- $el.on('click', this._onClickCollapsedComment);
- }
- }
- },
-
- /*
- * Copy of CommentsTabView._onClickComment()
- */
- _onClickCollapsedComment: function(ev) {
- var $row = $(ev.target);
- if (!$row.is('.comment')) {
- $row = $row.closest('.comment');
- }
- $row.removeClass('collapsed');
- },
-
- /*
- * Copy of CommentsTabView._isLong()
- */
- _isLong: function(message) {
- return message.length > 250 || (message.match(/\n/g) || []).length > 1;
- }
- };
-
-
-})();
-
-OC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin);
diff --git a/apps/comments/js/app.js b/apps/comments/js/app.js
deleted file mode 100644
index 547059393a5..00000000000
--- a/apps/comments/js/app.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-(function() {
- if (!OCA.Comments) {
- /**
- * @namespace
- */
- OCA.Comments = {};
- }
-
-})();
-
diff --git a/apps/comments/js/commentcollection.js b/apps/comments/js/commentcollection.js
deleted file mode 100644
index a15039cf484..00000000000
--- a/apps/comments/js/commentcollection.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-(function(OC, OCA) {
-
- /**
- * @class OCA.Comments.CommentCollection
- * @classdesc
- *
- * Collection of comments assigned to a file
- *
- */
- var CommentCollection = OC.Backbone.Collection.extend(
- /** @lends OCA.Comments.CommentCollection.prototype */ {
-
- sync: OC.Backbone.davSync,
-
- model: OCA.Comments.CommentModel,
-
- /**
- * Object type
- *
- * @type string
- */
- _objectType: 'files',
-
- /**
- * Object id
- *
- * @type string
- */
- _objectId: null,
-
- /**
- * True if there are no more page results left to fetch
- *
- * @type bool
- */
- _endReached: false,
-
- /**
- * Number of comments to fetch per page
- *
- * @type int
- */
- _limit : 20,
-
- /**
- * Initializes the collection
- *
- * @param {string} [options.objectType] object type
- * @param {string} [options.objectId] object id
- */
- initialize: function(models, options) {
- options = options || {};
- if (options.objectType) {
- this._objectType = options.objectType;
- }
- if (options.objectId) {
- this._objectId = options.objectId;
- }
- },
-
- url: function() {
- return OC.linkToRemote('dav') + '/comments/' +
- encodeURIComponent(this._objectType) + '/' +
- encodeURIComponent(this._objectId) + '/';
- },
-
- setObjectId: function(objectId) {
- this._objectId = objectId;
- },
-
- hasMoreResults: function() {
- return !this._endReached;
- },
-
- reset: function() {
- this._endReached = false;
- this._summaryModel = null;
- return OC.Backbone.Collection.prototype.reset.apply(this, arguments);
- },
-
- /**
- * Fetch the next set of results
- */
- fetchNext: function(options) {
- var self = this;
- if (!this.hasMoreResults()) {
- return null;
- }
-
- var body = '<?xml version="1.0" encoding="utf-8" ?>\n' +
- '<oc:filter-comments xmlns:D="DAV:" xmlns:oc="http://owncloud.org/ns">\n' +
- // load one more so we know there is more
- ' <oc:limit>' + (this._limit + 1) + '</oc:limit>\n' +
- ' <oc:offset>' + this.length + '</oc:offset>\n' +
- '</oc:filter-comments>\n';
-
- options = options || {};
- var success = options.success;
- options = _.extend({
- remove: false,
- parse: true,
- data: body,
- davProperties: CommentCollection.prototype.model.prototype.davProperties,
- success: function(resp) {
- if (resp.length <= self._limit) {
- // no new entries, end reached
- self._endReached = true;
- } else {
- // remove last entry, for next page load
- resp = _.initial(resp);
- }
- if (!self.set(resp, options)) {
- return false;
- }
- if (success) {
- success.apply(null, arguments);
- }
- self.trigger('sync', 'REPORT', self, options);
- }
- }, options);
-
- return this.sync('REPORT', this, options);
- },
-
- /**
- * Returns the matching summary model
- *
- * @return {OCA.Comments.CommentSummaryModel} summary model
- */
- getSummaryModel: function() {
- if (!this._summaryModel) {
- this._summaryModel = new OCA.Comments.CommentSummaryModel({
- id: this._objectId,
- objectType: this._objectType
- });
- }
- return this._summaryModel;
- },
-
- /**
- * Updates the read marker for this comment thread
- *
- * @param {Date} [date] optional date, defaults to now
- * @param {Object} [options] backbone options
- */
- updateReadMarker: function(date, options) {
- options = options || {};
-
- return this.getSummaryModel().save({
- readMarker: (date || new Date()).toUTCString()
- }, options);
- }
- });
-
- OCA.Comments.CommentCollection = CommentCollection;
-})(OC, OCA);
-
diff --git a/apps/comments/js/commentmodel.js b/apps/comments/js/commentmodel.js
deleted file mode 100644
index 3711e53c9f3..00000000000
--- a/apps/comments/js/commentmodel.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-(function(OC, OCA) {
-
- _.extend(OC.Files.Client, {
- PROPERTY_FILEID: '{' + OC.Files.Client.NS_OWNCLOUD + '}id',
- PROPERTY_MESSAGE: '{' + OC.Files.Client.NS_OWNCLOUD + '}message',
- PROPERTY_ACTORTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',
- PROPERTY_ACTORID: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',
- PROPERTY_ISUNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',
- PROPERTY_OBJECTID: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',
- PROPERTY_OBJECTTYPE: '{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',
- PROPERTY_ACTORDISPLAYNAME: '{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',
- PROPERTY_CREATIONDATETIME: '{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',
- PROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'
- });
-
- /**
- * @class OCA.Comments.CommentModel
- * @classdesc
- *
- * Comment
- *
- */
- var CommentModel = OC.Backbone.Model.extend(
- /** @lends OCA.Comments.CommentModel.prototype */ {
- sync: OC.Backbone.davSync,
-
- defaults: {
- actorType: 'users',
- objectType: 'files'
- },
-
- davProperties: {
- 'id': OC.Files.Client.PROPERTY_FILEID,
- 'message': OC.Files.Client.PROPERTY_MESSAGE,
- 'actorType': OC.Files.Client.PROPERTY_ACTORTYPE,
- 'actorId': OC.Files.Client.PROPERTY_ACTORID,
- 'actorDisplayName': OC.Files.Client.PROPERTY_ACTORDISPLAYNAME,
- 'creationDateTime': OC.Files.Client.PROPERTY_CREATIONDATETIME,
- 'objectType': OC.Files.Client.PROPERTY_OBJECTTYPE,
- 'objectId': OC.Files.Client.PROPERTY_OBJECTID,
- 'isUnread': OC.Files.Client.PROPERTY_ISUNREAD,
- 'mentions': OC.Files.Client.PROPERTY_MENTIONS
- },
-
- parse: function(data) {
- return {
- id: data.id,
- message: data.message,
- actorType: data.actorType,
- actorId: data.actorId,
- actorDisplayName: data.actorDisplayName,
- creationDateTime: data.creationDateTime,
- objectType: data.objectType,
- objectId: data.objectId,
- isUnread: (data.isUnread === 'true'),
- mentions: this._parseMentions(data.mentions)
- };
- },
-
- _parseMentions: function(mentions) {
- if(_.isUndefined(mentions)) {
- return {};
- }
- var result = {};
- for(var i in mentions) {
- var mention = mentions[i];
- if(_.isUndefined(mention.localName) || mention.localName !== 'mention') {
- continue;
- }
- result[i] = {};
- for (var child = mention.firstChild; child; child = child.nextSibling) {
- if(_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {
- continue;
- }
- result[i][child.localName] = child.textContent;
- }
- }
- return result;
- }
- });
-
- OCA.Comments.CommentModel = CommentModel;
-})(OC, OCA);
diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js
deleted file mode 100644
index 0ad49163508..00000000000
--- a/apps/comments/js/commentstabview.js
+++ /dev/null
@@ -1,752 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-/* global Handlebars, escapeHTML */
-
-(function(OC, OCA) {
- var TEMPLATE =
- '<ul class="comments">' +
- '</ul>' +
- '<div class="emptycontent hidden"><div class="icon-comment"></div>' +
- '<p>{{emptyResultLabel}}</p></div>' +
- '<input type="button" class="showMore hidden" value="{{moreLabel}}"' +
- ' name="show-more" id="show-more" />' +
- '<div class="loading hidden" style="height: 50px"></div>';
-
- var EDIT_COMMENT_TEMPLATE =
- '<div class="newCommentRow comment" data-id="{{id}}">' +
- ' <div class="authorRow">' +
- ' <div class="avatar currentUser" data-username="{{actorId}}"></div>' +
- ' <div class="author currentUser">{{actorDisplayName}}</div>' +
- '{{#if isEditMode}}' +
- ' <a href="#" class="action delete icon icon-delete has-tooltip" title="{{deleteTooltip}}"></a>' +
- ' <div class="deleteLoading icon-loading-small hidden"></div>'+
- '{{/if}}' +
- ' </div>' +
- ' <form class="newCommentForm">' +
- ' <div contentEditable="true" class="message" data-placeholder="{{newMessagePlaceholder}}">{{message}}</div>' +
- ' <input class="submit icon-confirm" type="submit" value="" />' +
- '{{#if isEditMode}}' +
- ' <input class="cancel pull-right" type="button" value="{{cancelText}}" />' +
- '{{/if}}' +
- ' <div class="submitLoading icon-loading-small hidden"></div>'+
- ' </form>' +
- '</div>';
-
- var COMMENT_TEMPLATE =
- '<li class="comment{{#if isUnread}} unread{{/if}}{{#if isLong}} collapsed{{/if}}" data-id="{{id}}">' +
- ' <div class="authorRow">' +
- ' <div class="avatar{{#if isUserAuthor}} currentUser{{/if}}" {{#if actorId}}data-username="{{actorId}}"{{/if}}> </div>' +
- ' <div class="author{{#if isUserAuthor}} currentUser{{/if}}">{{actorDisplayName}}</div>' +
- '{{#if isUserAuthor}}' +
- ' <a href="#" class="action edit icon icon-rename has-tooltip" title="{{editTooltip}}"></a>' +
- '{{/if}}' +
- ' <div class="date has-tooltip live-relative-timestamp" data-timestamp="{{timestamp}}" title="{{altDate}}">{{date}}</div>' +
- ' </div>' +
- ' <div class="message">{{{formattedMessage}}}</div>' +
- '{{#if isLong}}' +
- ' <div class="message-overlay"></div>' +
- '{{/if}}' +
- '</li>';
-
- /**
- * @memberof OCA.Comments
- */
- var CommentsTabView = OCA.Files.DetailTabView.extend(
- /** @lends OCA.Comments.CommentsTabView.prototype */ {
- id: 'commentsTabView',
- className: 'tab commentsTabView',
- _autoCompleteData: undefined,
-
- events: {
- 'submit .newCommentForm': '_onSubmitComment',
- 'click .showMore': '_onClickShowMore',
- 'click .action.edit': '_onClickEditComment',
- 'click .action.delete': '_onClickDeleteComment',
- 'click .cancel': '_onClickCloseComment',
- 'click .comment': '_onClickComment',
- 'keyup div.message': '_onTextChange',
- 'change div.message': '_onTextChange',
- 'input div.message': '_onTextChange',
- 'paste div.message': '_onPaste'
- },
-
- _commentMaxLength: 1000,
-
- initialize: function() {
- OCA.Files.DetailTabView.prototype.initialize.apply(this, arguments);
- this.collection = new OCA.Comments.CommentCollection();
- this.collection.on('request', this._onRequest, this);
- this.collection.on('sync', this._onEndRequest, this);
- this.collection.on('add', this._onAddModel, this);
- this.collection.on('change:message', this._onChangeModel, this);
-
- this._commentMaxThreshold = this._commentMaxLength * 0.9;
-
- // TODO: error handling
- _.bindAll(this, '_onTypeComment', '_initAutoComplete', '_onAutoComplete');
- },
-
- template: function(params) {
- if (!this._template) {
- this._template = Handlebars.compile(TEMPLATE);
- }
- var currentUser = OC.getCurrentUser();
- return this._template(_.extend({
- actorId: currentUser.uid,
- actorDisplayName: currentUser.displayName
- }, params));
- },
-
- editCommentTemplate: function(params) {
- if (!this._editCommentTemplate) {
- this._editCommentTemplate = Handlebars.compile(EDIT_COMMENT_TEMPLATE);
- }
- var currentUser = OC.getCurrentUser();
- return this._editCommentTemplate(_.extend({
- actorId: currentUser.uid,
- actorDisplayName: currentUser.displayName,
- newMessagePlaceholder: t('comments', 'New comment …'),
- deleteTooltip: t('comments', 'Delete comment'),
- submitText: t('comments', 'Post'),
- cancelText: t('comments', 'Cancel')
- }, params));
- },
-
- commentTemplate: function(params) {
- if (!this._commentTemplate) {
- this._commentTemplate = Handlebars.compile(COMMENT_TEMPLATE);
- }
-
- params = _.extend({
- editTooltip: t('comments', 'Edit comment'),
- isUserAuthor: OC.getCurrentUser().uid === params.actorId,
- isLong: this._isLong(params.message)
- }, params);
-
- if (params.actorType === 'deleted_users') {
- // makes the avatar a X
- params.actorId = null;
- params.actorDisplayName = t('comments', '[Deleted user]');
- }
-
- return this._commentTemplate(params);
- },
-
- getLabel: function() {
- return t('comments', 'Comments');
- },
-
- setFileInfo: function(fileInfo) {
- if (fileInfo) {
- this.model = fileInfo;
-
- this.render();
- this._initAutoComplete($('#commentsTabView').find('.newCommentForm .message'));
- this.collection.setObjectId(this.model.id);
- // reset to first page
- this.collection.reset([], {silent: true});
- this.nextPage();
- } else {
- this.model = null;
- this.render();
- this.collection.reset();
- }
- },
-
- render: function() {
- this.$el.html(this.template({
- emptyResultLabel: t('comments', 'No comments yet, start the conversation!'),
- moreLabel: t('comments', 'More comments …')
- }));
- this.$el.find('.comments').before(this.editCommentTemplate({}));
- this.$el.find('.has-tooltip').tooltip();
- this.$container = this.$el.find('ul.comments');
- this.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32);
- this.delegateEvents();
- this.$el.find('.message').on('keydown input change', this._onTypeComment);
-
- autosize(this.$el.find('.newCommentRow .message'))
- },
-
- _initAutoComplete: function($target) {
- var s = this;
- var limit = 10;
- if(!_.isUndefined(OC.appConfig.comments)) {
- limit = OC.appConfig.comments.maxAutoCompleteResults;
- }
- $target.atwho({
- at: '@',
- limit: limit,
- callbacks: {
- remoteFilter: s._onAutoComplete,
- highlighter: function (li) {
- // misuse the highlighter callback to instead of
- // highlighting loads the avatars.
- var $li = $(li);
- $li.find('.avatar').avatar(undefined, 32);
- return $li;
- },
- sorter: function (q, items) { return items; }
- },
- displayTpl: '<li>'
- + '<span class="avatar-name-wrapper">'
- + '<div class="avatar" '
- + 'data-username="${id}"' // for avatars
- + ' data-user="${id}"' // for contactsmenu
- + ' data-user-display-name="${label}"></div>'
- + ' <strong>${label}</strong>'
- + '</span></li>',
- insertTpl: ''
- + '<span class="avatar-name-wrapper">'
- + '<div class="avatar" '
- + 'data-username="${id}"' // for avatars
- + ' data-user="${id}"' // for contactsmenu
- + ' data-user-display-name="${label}"></div>'
- + ' <strong>${label}</strong>'
- + '</span>',
- searchKey: "label"
- });
- $target.on('inserted.atwho', function (je, $el) {
- var editionMode = true;
- s._postRenderItem(
- // we need to pass the parent of the inserted element
- // passing the whole comments form would re-apply and request
- // avatars from the server
- $(je.target).find(
- 'div[data-username="' + $el.find('[data-username]').data('username') + '"]'
- ).parent(),
- editionMode
- );
- });
- },
-
- _onAutoComplete: function(query, callback) {
- if(_.isEmpty(query)) {
- return;
- }
- var s = this;
- if(!_.isUndefined(this._autoCompleteRequestTimer)) {
- clearTimeout(this._autoCompleteRequestTimer);
- }
- this._autoCompleteRequestTimer = _.delay(function() {
- if(!_.isUndefined(this._autoCompleteRequestCall)) {
- this._autoCompleteRequestCall.abort();
- }
- this._autoCompleteRequestCall = $.get(
- OC.generateUrl('/autocomplete/get'),
- {
- search: query,
- itemType: 'files',
- itemId: s.model.get('id'),
- sorter: 'commenters|share-recipients',
- limit: OC.appConfig.comments.maxAutoCompleteResults
- },
- function (data) {
- callback(data);
- }
- );
- }, 400);
- },
-
- _formatItem: function(commentModel) {
- var timestamp = new Date(commentModel.get('creationDateTime')).getTime();
- var data = _.extend({
- timestamp: timestamp,
- date: OC.Util.relativeModifiedDate(timestamp),
- altDate: OC.Util.formatDate(timestamp),
- formattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions'))
- }, commentModel.attributes);
- return data;
- },
-
- _toggleLoading: function(state) {
- this._loading = state;
- this.$el.find('.loading').toggleClass('hidden', !state);
- },
-
- _onRequest: function(type) {
- if (type === 'REPORT') {
- this._toggleLoading(true);
- this.$el.find('.showMore').addClass('hidden');
- }
- },
-
- _onEndRequest: function(type) {
- var fileInfoModel = this.model;
- this._toggleLoading(false);
- this.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length);
- this.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults());
-
- if (type !== 'REPORT') {
- return;
- }
-
- // find first unread comment
- var firstUnreadComment = this.collection.findWhere({isUnread: true});
- if (firstUnreadComment) {
- // update read marker
- this.collection.updateReadMarker(
- null,
- {
- success: function() {
- fileInfoModel.set('commentsUnread', 0);
- }
- }
- );
- }
- },
-
- /**
- * takes care of post-rendering after a new comment was added to the
- * collection
- *
- * @param model
- * @param collection
- * @param options
- * @private
- */
- _onAddModel: function(model, collection, options) {
- // we need to render it immediately, to ensure that the right
- // order of comments is kept on opening comments tab
- var $comment = $(this.commentTemplate(this._formatItem(model)));
- if (!_.isUndefined(options.at) && collection.length > 1) {
- this.$container.find('li').eq(options.at).before($comment);
- } else {
- this.$container.append($comment);
- }
- this._postRenderItem($comment);
- $('#commentsTabView').find('.newCommentForm div.message').text('').prop('contenteditable', true);
-
- // we need to update the model, because it consists of client data
- // only, but the server might add meta data, e.g. about mentions
- var oldMentions = model.get('mentions');
- var self = this;
- model.fetch({
- success: function (model) {
- if(_.isEqual(oldMentions, model.get('mentions'))) {
- // don't attempt to render if unnecessary, avoids flickering
- return;
- }
- var $updated = $(self.commentTemplate(self._formatItem(model)));
- $comment.html($updated.html());
- self._postRenderItem($comment);
- }
- })
-
- },
-
- /**
- * takes care of post-rendering after a new comment was edited
- *
- * @param model
- * @private
- */
- _onChangeModel: function (model) {
- if(model.get('message').trim() === model.previous('message').trim()) {
- return;
- }
-
- var $form = this.$container.find('.comment[data-id="' + model.id + '"] form');
- var $row = $form.closest('.comment');
- var $target = $row.data('commentEl');
- if(_.isUndefined($target)) {
- // ignore noise – this is only set after editing a comment and hitting post
- return;
- }
- var self = this;
-
- // we need to update the model, because it consists of client data
- // only, but the server might add meta data, e.g. about mentions
- model.fetch({
- success: function (model) {
- $target.removeClass('hidden');
- $row.remove();
-
- var $message = $target.find('.message');
- $message
- .html(self._formatMessage(model.get('message'), model.get('mentions')))
- .find('.avatar')
- .each(function () { $(this).avatar(); });
- self._postRenderItem($message);
- }
- });
- },
-
- _postRenderItem: function($el, editionMode) {
- $el.find('.has-tooltip').tooltip();
- $el.find('.avatar').each(function() {
- var $this = $(this);
- $this.avatar($this.attr('data-username'), 32);
- });
-
- var username = $el.find('.avatar').data('username');
- if (username !== oc_current_user) {
- $el.find('.authorRow .avatar, .authorRow .author').contactsMenu(
- username, 0, $el.find('.authorRow'));
- }
-
- var $message = $el.find('.message');
- if($message.length === 0) {
- // it is the case when writing a comment and mentioning a person
- $message = $el;
- }
- this._postRenderMessage($message, editionMode);
- },
-
- _postRenderMessage: function($el, editionMode) {
- if (editionMode) {
- return;
- }
-
- $el.find('.avatar').each(function() {
- var avatar = $(this);
- var strong = $(this).next();
- var appendTo = $(this).parent();
-
- var username = $(this).data('username');
- if (username !== oc_current_user) {
- $.merge(avatar, strong).contactsMenu(avatar.data('user'), 0, appendTo);
- }
- });
- },
-
- /**
- * Convert a message to be displayed in HTML,
- * converts newlines to <br> tags.
- */
- _formatMessage: function(message, mentions, editMode) {
- message = escapeHTML(message).replace(/\n/g, '<br/>');
-
- for(var i in mentions) {
- if(!mentions.hasOwnProperty(i)) {
- return;
- }
- var mention = '@' + mentions[i].mentionId;
-
- // escape possible regex characters in the name
- mention = mention.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
-
- var displayName = this._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName);
-
- // replace every mention either at the start of the input or after a whitespace
- // followed by a non-word character.
- message = message.replace(new RegExp("(^|\\s)(" + mention + ")\\b", 'g'),
- function(match, p1) {
- // to get number of whitespaces (0 vs 1) right
- return p1+displayName;
- }
- );
- }
- if(editMode !== true) {
- message = OCP.Comments.plainToRich(message);
- }
- return message;
- },
-
- _composeHTMLMention: function(uid, displayName) {
- var avatar = '<div class="avatar" '
- + 'data-username="' + _.escape(uid) + '"'
- + ' data-user="' + _.escape(uid) + '"'
- + ' data-user-display-name="'
- + _.escape(displayName) + '"></div>';
-
- var isCurrentUser = (uid === OC.getCurrentUser().uid);
-
- return ''
- + '<span class="atwho-inserted" contenteditable="false">'
- + '<span class="avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '">'
- + avatar + ' <strong>'+ _.escape(displayName)+'</strong>'
- + '</span>'
- + '</span>';
- },
-
- nextPage: function() {
- if (this._loading || !this.collection.hasMoreResults()) {
- return;
- }
-
- this.collection.fetchNext();
- },
-
- _onClickEditComment: function(ev) {
- ev.preventDefault();
- var $comment = $(ev.target).closest('.comment');
- var commentId = $comment.data('id');
- var commentToEdit = this.collection.get(commentId);
- var $formRow = $(this.editCommentTemplate(_.extend({
- isEditMode: true,
- submitText: t('comments', 'Save')
- }, commentToEdit.attributes)));
-
- $comment.addClass('hidden').removeClass('collapsed');
- // spawn form
- $comment.after($formRow);
- $formRow.data('commentEl', $comment);
- $formRow.find('.message').on('keydown input change', this._onTypeComment);
-
- // copy avatar element from original to avoid flickering
- $formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone());
- $formRow.find('.has-tooltip').tooltip();
-
- var $message = $formRow.find('.message');
- $message
- .html(this._formatMessage(commentToEdit.get('message'), commentToEdit.get('mentions'), true))
- .find('.avatar')
- .each(function () { $(this).avatar(); });
- var editionMode = true;
- this._postRenderItem($message, editionMode);
-
- // Enable autosize
- autosize($formRow.find('.message'));
-
- // enable autocomplete
- this._initAutoComplete($formRow.find('.message'));
-
- return false;
- },
-
- _onTypeComment: function(ev) {
- var $field = $(ev.target);
- var len = $field.text().length;
- var $submitButton = $field.data('submitButtonEl');
- if (!$submitButton) {
- $submitButton = $field.closest('form').find('.submit');
- $field.data('submitButtonEl', $submitButton);
- }
- $field.tooltip('hide');
- if (len > this._commentMaxThreshold) {
- $field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', {count: len, max: this._commentMaxLength}));
- $field.tooltip({trigger: 'manual'});
- $field.tooltip('show');
- $field.addClass('error');
- }
-
- var limitExceeded = (len > this._commentMaxLength);
- $field.toggleClass('error', limitExceeded);
- $submitButton.prop('disabled', limitExceeded);
-
- // Submits form with Enter, but Shift+Enter is a new line. If the
- // autocomplete popover is being shown Enter does not submit the
- // form either; it will be handled by At.js which will add the
- // currently selected item to the message.
- if (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) {
- $submitButton.click();
- ev.preventDefault();
- }
- },
-
- _onClickComment: function(ev) {
- var $row = $(ev.target);
- if (!$row.is('.comment')) {
- $row = $row.closest('.comment');
- }
- $row.removeClass('collapsed');
- },
-
- _onClickCloseComment: function(ev) {
- ev.preventDefault();
- var $row = $(ev.target).closest('.comment');
- $row.data('commentEl').removeClass('hidden');
- $row.remove();
- return false;
- },
-
- _onClickDeleteComment: function(ev) {
- ev.preventDefault();
- var $comment = $(ev.target).closest('.comment');
- var commentId = $comment.data('id');
- var $loading = $comment.find('.deleteLoading');
- var $commentField = $comment.find('.message');
- var $submit = $comment.find('.submit');
- var $cancel = $comment.find('.cancel');
-
- $commentField.prop('contenteditable', false);
- $submit.prop('disabled', true);
- $cancel.prop('disabled', true);
- $comment.addClass('disabled');
- $loading.removeClass('hidden');
-
- this.collection.get(commentId).destroy({
- success: function() {
- $comment.data('commentEl').remove();
- $comment.remove();
- },
- error: function() {
- $loading.addClass('hidden');
- $comment.removeClass('disabled');
- $commentField.prop('contenteditable', true);
- $submit.prop('disabled', false);
- $cancel.prop('disabled', false);
-
- OC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with id {id}', {id: commentId}));
- }
- });
-
- return false;
- },
-
- _onClickShowMore: function(ev) {
- ev.preventDefault();
- this.nextPage();
- },
-
- /**
- * takes care of updating comment element states after submit (either new
- * comment or edit).
- *
- * @param {OC.Backbone.Model} model
- * @param {jQuery} $form
- * @private
- */
- _onSubmitSuccess: function(model, $form) {
- var $submit = $form.find('.submit');
- var $loading = $form.find('.submitLoading');
-
- $submit.removeClass('hidden');
- $loading.addClass('hidden');
- },
-
- _commentBodyHTML2Plain: function($el) {
- var $comment = $el.clone();
-
- $comment.find('.avatar-name-wrapper').each(function () {
- var $this = $(this);
- var $inserted = $this.parent();
- $inserted.html('@' + $this.find('.avatar').data('username'));
- });
-
- $comment.html(OCP.Comments.richToPlain($comment.html()));
-
- var oldHtml;
- var html = $comment.html();
- do {
- // replace works one by one
- oldHtml = html;
- html = oldHtml.replace("<br>", "\n"); // preserve line breaks
- } while(oldHtml !== html);
- $comment.html(html);
-
- return $comment.text();
- },
-
- _onSubmitComment: function(e) {
- var self = this;
- var $form = $(e.target);
- var commentId = $form.closest('.comment').data('id');
- var currentUser = OC.getCurrentUser();
- var $submit = $form.find('.submit');
- var $loading = $form.find('.submitLoading');
- var $commentField = $form.find('.message');
- var message = $commentField.text().trim();
- e.preventDefault();
-
- if (!message.length || message.length > this._commentMaxLength) {
- return;
- }
-
- $commentField.prop('contenteditable', false);
- $submit.addClass('hidden');
- $loading.removeClass('hidden');
-
- message = this._commentBodyHTML2Plain($commentField);
- if (commentId) {
- // edit mode
- var comment = this.collection.get(commentId);
- comment.save({
- message: message
- }, {
- success: function(model) {
- self._onSubmitSuccess(model, $form);
- },
- error: function() {
- self._onSubmitError($form, commentId);
- }
- });
- } else {
- this.collection.create({
- actorId: currentUser.uid,
- actorDisplayName: currentUser.displayName,
- actorType: 'users',
- verb: 'comment',
- message: message,
- creationDateTime: (new Date()).toUTCString()
- }, {
- at: 0,
- // wait for real creation before adding
- wait: true,
- success: function(model) {
- self._onSubmitSuccess(model, $form);
- },
- error: function() {
- self._onSubmitError($form, undefined);
- }
- });
- }
-
- return false;
- },
-
- /**
- * takes care of updating the UI after an error on submit (either new
- * comment or edit).
- *
- * @param {jQuery} $form
- * @param {string|undefined} commentId
- * @private
- */
- _onSubmitError: function($form, commentId) {
- $form.find('.submit').removeClass('hidden');
- $form.find('.submitLoading').addClass('hidden');
- $form.find('.message').prop('contenteditable', true);
-
- if(!_.isUndefined(commentId)) {
- OC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', {id: commentId}), {type: 'error'});
- } else {
- OC.Notification.show(t('comments', 'Error occurred while posting comment'), {type: 'error'});
- }
- },
-
- /**
- * ensures the contenteditable div is really empty, when user removed
- * all input, so that the placeholder will be shown again
- *
- * @private
- */
- _onTextChange: function() {
- var $message = $('#commentsTabView').find('.newCommentForm div.message');
- if(!$message.text().trim().length) {
- $message.empty();
- }
- },
-
- /**
- * Limit pasting to plain text
- *
- * @param e
- * @private
- */
- _onPaste: function (e) {
- e.preventDefault();
- var text = e.originalEvent.clipboardData.getData("text/plain");
- document.execCommand('insertText', false, text);
- },
-
- /**
- * Returns whether the given message is long and needs
- * collapsing
- */
- _isLong: function(message) {
- return message.length > 250 || (message.match(/\n/g) || []).length > 1;
- }
- });
-
- OCA.Comments.CommentsTabView = CommentsTabView;
-})(OC, OCA);
diff --git a/apps/comments/js/commentsummarymodel.js b/apps/comments/js/commentsummarymodel.js
deleted file mode 100644
index ffabbc30fb4..00000000000
--- a/apps/comments/js/commentsummarymodel.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-(function(OC, OCA) {
-
- _.extend(OC.Files.Client, {
- PROPERTY_READMARKER: '{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'
- });
-
- /**
- * @class OCA.Comments.CommentSummaryModel
- * @classdesc
- *
- * Model containing summary information related to comments
- * like the read marker.
- *
- */
- var CommentSummaryModel = OC.Backbone.Model.extend(
- /** @lends OCA.Comments.CommentSummaryModel.prototype */ {
- sync: OC.Backbone.davSync,
-
- /**
- * Object type
- *
- * @type string
- */
- _objectType: 'files',
-
- /**
- * Object id
- *
- * @type string
- */
- _objectId: null,
-
- davProperties: {
- 'readMarker': OC.Files.Client.PROPERTY_READMARKER
- },
-
- /**
- * Initializes the summary model
- *
- * @param {string} [options.objectType] object type
- * @param {string} [options.objectId] object id
- */
- initialize: function(attrs, options) {
- options = options || {};
- if (options.objectType) {
- this._objectType = options.objectType;
- }
- },
-
- url: function() {
- return OC.linkToRemote('dav') + '/comments/' +
- encodeURIComponent(this._objectType) + '/' +
- encodeURIComponent(this.id) + '/';
- }
- });
-
- OCA.Comments.CommentSummaryModel = CommentSummaryModel;
-})(OC, OCA);
diff --git a/apps/comments/js/filesplugin.js b/apps/comments/js/filesplugin.js
deleted file mode 100644
index 8c5762065a1..00000000000
--- a/apps/comments/js/filesplugin.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-/* global Handlebars */
-
-(function() {
-
- _.extend(OC.Files.Client, {
- PROPERTY_COMMENTS_UNREAD: '{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'
- });
-
- var TEMPLATE_COMMENTS_UNREAD =
- '<a class="action action-comment permanent" title="{{countMessage}}" href="#">' +
- '<img class="svg" src="{{iconUrl}}"/>' +
- '</a>';
-
- OCA.Comments = _.extend({}, OCA.Comments);
- if (!OCA.Comments) {
- /**
- * @namespace
- */
- OCA.Comments = {};
- }
-
- /**
- * @namespace
- */
- OCA.Comments.FilesPlugin = {
- ignoreLists: [
- 'files_trashbin',
- 'files.public'
- ],
-
- _formatCommentCount: function(count) {
- if (!this._commentsUnreadTemplate) {
- this._commentsUnreadTemplate = Handlebars.compile(TEMPLATE_COMMENTS_UNREAD);
- }
- return this._commentsUnreadTemplate({
- count: count,
- countMessage: n('comments', '%n unread comment', '%n unread comments', count),
- iconUrl: OC.imagePath('core', 'actions/comment')
- });
- },
-
- attach: function(fileList) {
- var self = this;
- if (this.ignoreLists.indexOf(fileList.id) >= 0) {
- return;
- }
-
- fileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'));
-
- var oldGetWebdavProperties = fileList._getWebdavProperties;
- fileList._getWebdavProperties = function() {
- var props = oldGetWebdavProperties.apply(this, arguments);
- props.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD);
- return props;
- };
-
- fileList.filesClient.addFileInfoParser(function(response) {
- var data = {};
- var props = response.propStat[0].properties;
- var commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];
- if (!_.isUndefined(commentsUnread) && commentsUnread !== '') {
- data.commentsUnread = parseInt(commentsUnread, 10);
- }
- return data;
- });
-
- fileList.$el.addClass('has-comments');
- var oldCreateRow = fileList._createRow;
- fileList._createRow = function(fileData) {
- var $tr = oldCreateRow.apply(this, arguments);
- if (fileData.commentsUnread) {
- $tr.attr('data-comments-unread', fileData.commentsUnread);
- }
- return $tr;
- };
-
- // register "comment" action for reading comments
- fileList.fileActions.registerAction({
- name: 'Comment',
- displayName: t('comments', 'Comment'),
- mime: 'all',
- permissions: OC.PERMISSION_READ,
- type: OCA.Files.FileActions.TYPE_INLINE,
- render: function(actionSpec, isDefault, context) {
- var $file = context.$file;
- var unreadComments = $file.data('comments-unread');
- if (unreadComments) {
- var $actionLink = $(self._formatCommentCount(unreadComments));
- context.$file.find('a.name>span.fileactions').append($actionLink);
- return $actionLink;
- }
- return '';
- },
- actionHandler: function(fileName, context) {
- context.$file.find('.action-comment').tooltip('hide');
- // open sidebar in comments section
- context.fileList.showDetailsView(fileName, 'commentsTabView');
- }
- });
-
- // add attribute to "elementToFile"
- var oldElementToFile = fileList.elementToFile;
- fileList.elementToFile = function($el) {
- var fileInfo = oldElementToFile.apply(this, arguments);
- var commentsUnread = $el.data('comments-unread');
- if (commentsUnread) {
- fileInfo.commentsUnread = commentsUnread;
- }
- return fileInfo;
- };
- }
- };
-
-})();
-
-OC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin);
diff --git a/apps/comments/js/merged.json b/apps/comments/js/merged.json
deleted file mode 100644
index 0202c7ff55a..00000000000
--- a/apps/comments/js/merged.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- "app.js",
- "commentmodel.js",
- "commentcollection.js",
- "commentsummarymodel.js",
- "commentstabview.js",
- "filesplugin.js",
- "activitytabviewplugin.js",
- "vendor/Caret.js/dist/jquery.caret.min.js",
- "vendor/At.js/dist/js/jquery.atwho.min.js"
-]
diff --git a/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js b/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js
deleted file mode 100644
index d1e60152b4c..00000000000
--- a/apps/comments/js/vendor/At.js/dist/js/jquery.atwho.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,h;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i&&(t="(?:^|\\s)"+t),r=decodeURI("%C3%80"),o=decodeURI("%C3%BF"),h=n?" ":"",a=new RegExp(t+"([A-Za-z"+r+"-"+o+"0-9_"+h+"'.+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],o.atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i,n,r;r=t;try{return"string"!=typeof t&&(r=t(e)),r.replace(/\$\{([^\}]*)\}/g,function(t,i,n){return e[i]})}catch(n){return i=n,""}},highlighter:function(t,e){var i;return e?(i=new RegExp(">\\s*([^<]*?)("+e.replace("+","\\+")+")([^<]*)\\s*<","ig"),t.replace(i,function(t,e,i,n){return"> "+e+"<strong>"+i+"</strong>"+n+" <"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t("<div class='atwho-container'></div>"))},e.prototype.setupRootElement=function(e,i){var n,r;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(r){if(n=r,this.iframe=null,t.fn.atwho.debug)throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i?i:this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is("[contentEditable]")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on("compositionstart",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on("compositionend",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on("keyup.atwhoInner",function(t){return function(e){return t.onKeyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.onKeydown(e)}}(this)).on("blur.atwhoInner",function(t){return function(e){var i;return(i=t.controller())?(i.expectedQueryCBId=null,i.view.hide(e,i.getOpt("displayTimeout"))):void 0}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch(e)}}(this)).on("scroll.atwhoInner",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e,i;i=this.controllers;for(t in i)e=i[t],e.destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if(r=null!=(n=this.controller())?n.view:void 0,r&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt("spaceSelectsMatch")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt("tabSelectsMatch")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho["default"],e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r,s;s=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[s].apply(this,i)}catch(r){return n=r,t.error(n+" Or maybe At.js doesn't have function "+s)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt("alias"),n=i?t+"-"+i+".atwho":t+".atwho",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt("callbacks")[t]||e[t]},i.prototype.getOpt=function(t,e){var i,n;try{return this.setting[t]}catch(n){return i=n,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt("insertTpl"),i=t.extend({},e.data("item-data"),{"atwho-at":this.at}),this.callbacks("tplEval").call(this,n,i,"onInsert")},i.prototype.renderView=function(t){var e;return e=this.getOpt("searchKey"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt("limit")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;r>i;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||"click"!==t.type||this.getOpt("lookUpOnClick"))&&(!this.getOpt("suspendOnComposing")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt("delay"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),n>0&&e>n?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;return e=this.$inputor.val(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks("matcher").call(this,this.at,s,this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),n="string"==typeof r,n&&r.length<this.getOpt("minLen",0)?void 0:(n&&r.length<=this.getOpt("maxLen",20)?(o=t-r.length,i=o+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger("matched",[this.at,r.text])):(r=null,this.view.hide()),this.query=r)},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=""===(o=this.getOpt("suffix"))?o:o||" ",t+=o,s=""+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret("pos",r.length+t.length,{iframe:this.app.iframe}),i.is(":focus")||i.focus(),i.change()},i}(r);var l,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;l=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;return t=this.app.window.getSelection(),t.rangeCount>0?t.getRangeAt(0):void 0},n.prototype._setRange=function(e,i,n){return null==n&&(n=this._getRange()),n&&i?(i=t(i)[0],"after"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)):void 0},n.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},n.prototype._movingEvent=function(t){var e;return"click"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,h,l,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(".atwho-query")).contents().unwrap(),r.is(":empty")&&r.remove(),(r=t(".atwho-query",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?(o=d.cloneRange(),o.setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(".atwho-inserted")&&(a=t(d.startContainer).contents().get(c),this._setRange("after",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling),n.is(".atwho-inserted")&&0===d.startOffset&&this._setRange("after",n.contents().last()))}if(t(d.startContainer).closest(".atwho-inserted").addClass("atwho-query").siblings().removeClass("atwho-query"),(r=t(".atwho-query",this.app.document)).length>0&&r.is(":empty")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass("atwho-inserted"),r.length>0)switch(e.which){case i.LEFT:return this._setRange("before",r.get(0),d),void r.removeClass("atwho-query");case i.RIGHT:return this._setRange("after",r.get(0).nextSibling,d),void r.removeClass("atwho-query")}if(r.length>0&&(f=r.attr("data-atwho-at-query"))&&(r.empty().html(f).attr("data-atwho-at-query",null),this._setRange("after",r.get(0),d)),o=d.cloneRange(),o.setStart(d.startContainer,0),u=this.callbacks("matcher").call(this,this.at,o.toString(),this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),h="string"==typeof u,0===r.length&&h&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t("<span/>",this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass("atwho-query"),d.surroundContents(r.get(0)),l=r.contents().last().get(0),l&&(/firefox/i.test(navigator.userAgent)?(d.setStart(l,l.length),d.setEnd(l,l.length),this._clearRange(d)):this._setRange("after",l,d))),!(h&&u.length<this.getOpt("minLen",0)))return h&&u.length<=this.getOpt("maxLen",20)?(p={text:u,el:r},this.trigger("matched",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass("atwho-inserted")?r.removeClass("atwho-query"):!1!==this.callbacks("afterMatchFailed").call(this,this.at,r)&&this._setRange("after",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i,n;return n=this.query.el.offset(),n&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(i=(e=t(this.app.iframe)).offset(),n.left+=i.left-this.$inputor.scrollLeft(),n.top+=i.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(":focus")||this.$inputor.focus(),n=this.getOpt("functionOverrides"),n.insert?n.insert.call(this,t,e):(o=""===(o=this.getOpt("suffix"))?o:o||" ",i=e.data("item-data"),this.query.el.removeClass("atwho-query").addClass("atwho-inserted").html(t).attr("data-atwho-at-query",""+i["atwho-at"]+this.query.text).attr("contenteditable","false"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(""+o)),this._setRange("after",s,r)),this.$inputor.is(":focus")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt("searchKey"),n=this.context.callbacks("filter").call(this.context,t,n,r)||[],i=this.context.callbacks("remoteFilter"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt("alias")||this.context.at.charCodeAt(0),t=this.context.getOpt("headerTpl"),t&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:"at-view-"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find("ul"),i=0,n=0,e.on("mousemove.atwho-view","li",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,o=t(r.currentTarget),!o.hasClass("cur")))return e.find(".cur").removeClass("cur"),o.addClass("cur")}}(this)).on("click.atwho-view","li",function(i){return function(n){return e.find(".cur").removeClass("cur"),t(n.currentTarget).addClass("cur"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(".cur").length>0},e.prototype.choose=function(t){var e,i;return(e=this.$el.find(".cur")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks("beforeInsert").call(this.context,i,e,t),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.getOpt("hideWithoutSuffix")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks("beforeReposition"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger("reposition",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),e=t.next(),e.length||(e=this.$el.find("li:first")),e.addClass("cur"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),i=t.prev(),i.length||(i=this.$el.find("li:last")),i.addClass("cur"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt("scrollDuration"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger("hidden",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;if(!(t.isArray(e)&&e.length>0))return void this.hide();for(this.$el.find("ul").empty(),n=this.$el.find("ul"),h=this.context.getOpt("displayTpl"),r=0,s=e.length;s>r;r++)o=e[r],o=t.extend({},o,{"atwho-at":this.context.at}),a=this.context.callbacks("tplEval").call(this.context,h,o,"onDisplay"),i=t(this.context.callbacks("highlighter").call(this.context,a,this.context.query.text)),i.data("item-data",o),n.append(i);return this.show(),this.context.getOpt("highlightFirst")?n.find("li:first").addClass("cur"):void 0},e}();var p;p={load:function(t,e){var i;return(i=this.controller(t))?i.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data("atwho"))||o.data("atwho",s=new n(this)),"object"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error("Method "+e+" does not exist on jQuery.atwho"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho["default"]={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1}); \ No newline at end of file
diff --git a/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js b/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js
deleted file mode 100644
index a4d02eae247..00000000000
--- a/apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jquery.caret 2015-02-01 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l;k="caret",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint("EndToEnd",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart("character",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(){var b,c,d,e,f;return j.getSelection&&(d=this.range())?(d.endOffset-1>0&&d.endContainer===!this.domInputor&&(b=d.cloneRange(),b.setStart(d.endContainer,d.endOffset-1),b.setEnd(d.endContainer,d.endOffset),e=b.getBoundingClientRect(),c={height:e.height,left:e.left+e.width,top:e.top},b.detach()),c&&0!==(null!=c?c.height:void 0)||(b=d.cloneRange(),f=a(h.createTextNode("|")),b.insertNode(f[0]),b.selectNode(f[0]),e=b.getBoundingClientRect(),c={height:e.height,left:e.left,top:e.top},f.remove(),b.detach())):h.selection&&(c=this.getOldIEOffset()),c&&(c.top+=a(j).scrollTop(),c.left+=a(j).scrollLeft()),c},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\r\n/g,"\n"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints("StartToEnd",a)>-1?c:-g.moveStart("character",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move("character",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move("character",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\s/g,"&nbsp;")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g="<span style='position: relative; display: inline;'>"+f(i)+"</span>",g+="<span id='caret' style='position: relative; display: inline;'>|</span>",g+="<span style='position: relative; display: inline;'>"+f(e)+"</span>",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find("#caret"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||"true"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error("Method "+d+" does not exist on jQuery.caret")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g}); \ No newline at end of file
diff --git a/apps/comments/l10n/af.js b/apps/comments/l10n/af.js
deleted file mode 100644
index eeceac66ed0..00000000000
--- a/apps/comments/l10n/af.js
+++ /dev/null
@@ -1,34 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Kommentare",
- "New comment …" : "Nuwe kommentaar…",
- "Delete comment" : "Skrap kommentaar",
- "Post" : "Plaas",
- "Cancel" : "Kanselleer",
- "Edit comment" : "Wysig kommentaar",
- "[Deleted user]" : "[Geskrapte gebruiker]",
- "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
- "More comments …" : "Nog kommentare …",
- "Save" : "Bewaar",
- "Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}",
- "Error occurred while retrieving comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is",
- "Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is",
- "Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is",
- "_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"],
- "Comment" : "Kommentaar",
- "You commented" : "U het kommentaar gelewer",
- "%1$s commented" : "%1$s het kommentaar gelewer",
- "{author} commented" : "{outeur} het kommentaar gelewer",
- "You commented on %1$s" : "U het op %1$s kommentaar gelewer",
- "You commented on {file}" : "U het op {lêer} kommentaar gelewer",
- "%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer",
- "{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer",
- "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem",
- "{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
- "Unknown user" : "Onbekende gebruiker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/af.json b/apps/comments/l10n/af.json
deleted file mode 100644
index 16d5c8efa0e..00000000000
--- a/apps/comments/l10n/af.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{ "translations": {
- "Comments" : "Kommentare",
- "New comment …" : "Nuwe kommentaar…",
- "Delete comment" : "Skrap kommentaar",
- "Post" : "Plaas",
- "Cancel" : "Kanselleer",
- "Edit comment" : "Wysig kommentaar",
- "[Deleted user]" : "[Geskrapte gebruiker]",
- "No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
- "More comments …" : "Nog kommentare …",
- "Save" : "Bewaar",
- "Allowed characters {count} of {max}" : "Toegelate karakters {telling} van {maks}",
- "Error occurred while retrieving comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} opgehaal is",
- "Error occurred while updating comment with id {id}" : "’n Fout het voorgekom toe kommentaar met id {id} bygewerk is",
- "Error occurred while posting comment" : "’n Fout het voorgekom toe kommentaar geplaas is",
- "_%n unread comment_::_%n unread comments_" : ["%n ongeleesde kommentaar","%n ongeleeste kommentare"],
- "Comment" : "Kommentaar",
- "You commented" : "U het kommentaar gelewer",
- "%1$s commented" : "%1$s het kommentaar gelewer",
- "{author} commented" : "{outeur} het kommentaar gelewer",
- "You commented on %1$s" : "U het op %1$s kommentaar gelewer",
- "You commented on {file}" : "U het op {lêer} kommentaar gelewer",
- "%1$s commented on %2$s" : "%1$s het op %2$s kommentaar gelewer",
- "{author} commented on {file}" : "{outeur} het op {lêer} kommentaar gelewer",
- "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> vir lêers",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s het u in ’n kommentaar op “%2$s” genoem",
- "{user} mentioned you in a comment on “{file}”" : "{gebruiker} het u in ’n kommentaar oor “{lêer}” genoem",
- "Unknown user" : "Onbekende gebruiker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “%s” genoem",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "’n (Nou) geskrapte gebruiker het u in ’n kommentaar op “{lêer}” genoem"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/af_ZA.js b/apps/comments/l10n/af_ZA.js
deleted file mode 100644
index 0f841f8ec48..00000000000
--- a/apps/comments/l10n/af_ZA.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Kanselleer"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/af_ZA.json b/apps/comments/l10n/af_ZA.json
deleted file mode 100644
index 81ad64aac33..00000000000
--- a/apps/comments/l10n/af_ZA.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Cancel" : "Kanselleer"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/ar.js b/apps/comments/l10n/ar.js
index 380ff321551..725c42c1cb4 100644
--- a/apps/comments/l10n/ar.js
+++ b/apps/comments/l10n/ar.js
@@ -2,26 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "تعليقات",
- "Unknown user" : "مستخدم غير معروف",
- "New comment …" : "تعليق جديد",
- "Delete comment" : "حذف التعليق",
- "Post" : "ارسال",
- "Cancel" : "إلغاء",
- "Edit comment" : "تعديل التعليق",
- "[Deleted user]" : "[مستخدم محذوف]",
- "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
- "More comments …" : "مزيد من التعليقات...",
- "Save" : "حفظ",
- "Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}",
- "Error occurred while retrieving comment with id {id}" : "حصل خطأ أثناء عرض التعليق رقم {id}",
- "Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}",
- "Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق",
- "Comment" : "تعليق",
"You commented" : "قمت بكتابة تعليق",
- "%1$s commented" : "%1$s كتب تعليق",
+ "{author} commented" : "{author} علّق",
+ "You commented on %1$s" : "لقد علقت على %1$s",
"You commented on {file}" : "علقت على {file}",
"%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s",
"{author} commented on {file}" : "{author} علّق على {file}",
- "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات"
+ "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات",
+ "Files" : "الملفّات",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "تمت الإشارة إليك في \"{file}\"، في تعليقٍ من قِبَل حسابٍ تمّ حذفه سلفاً",
+ "{user} mentioned you in a comment on \"{file}\"" : "أشار إليك {user} في تعليق على {file}",
+ "Files app plugin to add comments to files" : "المكوِّن الإضافي لتطبيق الملفات لإضافة تعليقات إلى الملفات",
+ "Edit comment" : "تعديل التعليق",
+ "Delete comment" : "حذف التعليق",
+ "Cancel edit" : "إلغاء التعديل",
+ "New comment" : "تعليق جديد",
+ "Write a comment …" : "أكتُب تعليق ...",
+ "Post comment" : "أضف تعليق",
+ "@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
+ "Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
+ "Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
+ "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
+ "No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
+ "No more messages" : "لامزيد من الرسائل",
+ "Retry" : "أعد المحاولة",
+ "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
+ "Comment" : "تعليق",
+ "An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق",
+ "Comment deleted" : "التعليق محذوف",
+ "An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
+ "An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
diff --git a/apps/comments/l10n/ar.json b/apps/comments/l10n/ar.json
index 20871a07487..4438e60ebf3 100644
--- a/apps/comments/l10n/ar.json
+++ b/apps/comments/l10n/ar.json
@@ -1,25 +1,34 @@
{ "translations": {
"Comments" : "تعليقات",
- "Unknown user" : "مستخدم غير معروف",
- "New comment …" : "تعليق جديد",
- "Delete comment" : "حذف التعليق",
- "Post" : "ارسال",
- "Cancel" : "إلغاء",
- "Edit comment" : "تعديل التعليق",
- "[Deleted user]" : "[مستخدم محذوف]",
- "No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
- "More comments …" : "مزيد من التعليقات...",
- "Save" : "حفظ",
- "Allowed characters {count} of {max}" : "عدد الأحرف المسموح بها {count} من {max}",
- "Error occurred while retrieving comment with id {id}" : "حصل خطأ أثناء عرض التعليق رقم {id}",
- "Error occurred while updating comment with id {id}" : "حصل خطأ أثناء تعديل التعليق رقم {id}",
- "Error occurred while posting comment" : "حصل خطأ أثناء إرسال التعليق",
- "Comment" : "تعليق",
"You commented" : "قمت بكتابة تعليق",
- "%1$s commented" : "%1$s كتب تعليق",
+ "{author} commented" : "{author} علّق",
+ "You commented on %1$s" : "لقد علقت على %1$s",
"You commented on {file}" : "علقت على {file}",
"%1$s commented on %2$s" : "%1$s كتب تعليق على %2$s",
"{author} commented on {file}" : "{author} علّق على {file}",
- "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات"
+ "<strong>Comments</strong> for files" : "<strong>تعليقات</strong> على الملفات",
+ "Files" : "الملفّات",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "تمت الإشارة إليك في \"{file}\"، في تعليقٍ من قِبَل حسابٍ تمّ حذفه سلفاً",
+ "{user} mentioned you in a comment on \"{file}\"" : "أشار إليك {user} في تعليق على {file}",
+ "Files app plugin to add comments to files" : "المكوِّن الإضافي لتطبيق الملفات لإضافة تعليقات إلى الملفات",
+ "Edit comment" : "تعديل التعليق",
+ "Delete comment" : "حذف التعليق",
+ "Cancel edit" : "إلغاء التعديل",
+ "New comment" : "تعليق جديد",
+ "Write a comment …" : "أكتُب تعليق ...",
+ "Post comment" : "أضف تعليق",
+ "@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
+ "Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
+ "Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
+ "Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
+ "No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
+ "No more messages" : "لامزيد من الرسائل",
+ "Retry" : "أعد المحاولة",
+ "_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
+ "Comment" : "تعليق",
+ "An error occurred while trying to edit the comment" : "حدث خطأ أثناء محاولة تعديل التعليق",
+ "Comment deleted" : "التعليق محذوف",
+ "An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
+ "An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ast.js b/apps/comments/l10n/ast.js
index 1f31c5d5732..0ee30bdbb53 100644
--- a/apps/comments/l10n/ast.js
+++ b/apps/comments/l10n/ast.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Comentariu nuevu...",
- "Delete comment" : "Desaniciar comentariu",
- "Post" : "Espublizar",
- "Cancel" : "Encaboxar",
- "Edit comment" : "Editar comentariu",
- "[Deleted user]" : "[Usuariu desaniciáu]",
- "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!",
- "More comments …" : "Más comentarios...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}",
- "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}",
- "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}",
- "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu",
- "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"],
- "Comment" : "Comentariu",
"You commented" : "Comentesti",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Comentesti en %1$s",
- "You commented on {file}" : "Comentesti en {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{autor} comentó en {ficheru}",
+ "You commented on %1$s" : "Comentesti en: %1$s",
+ "You commented on {file}" : "Comentesti en: {file}",
+ "%1$s commented on %2$s" : "%1$s comentó en: %2$s",
+ "{author} commented on {file}" : "{author} comentó en: {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»",
- "Unknown user" : "Usuariu desconocíu",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»"
+ "Files" : "Ficheros",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mentáronte en «{file}», nun comentariu d'una cuenta que ta desaniciada",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentóte nun comentariu de: «{file}»",
+ "Files app plugin to add comments to files" : "Plugin de l'aplicación Ficheros p'amestar comentarios a los ficheros",
+ "Edit comment" : "Editar el comentariu",
+ "Delete comment" : "Desaniciar el comentariu",
+ "Cancel edit" : "Anular la edición",
+ "New comment" : "Comentariu nuevu",
+ "Write a comment …" : "Escribi un comentariu…",
+ "Post comment" : "Espublizar el comentariu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
+ "Could not reload comments" : "Nun se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
+ "Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
+ "No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!",
+ "No more messages" : "Nun hai más mensaxes",
+ "Retry" : "Retentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"],
+ "Comment" : "Comentariu",
+ "An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
+ "Comment deleted" : "Desanicióse'l comentariu",
+ "An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
+ "An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ast.json b/apps/comments/l10n/ast.json
index 9027a3c5f86..43193924d64 100644
--- a/apps/comments/l10n/ast.json
+++ b/apps/comments/l10n/ast.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Comentariu nuevu...",
- "Delete comment" : "Desaniciar comentariu",
- "Post" : "Espublizar",
- "Cancel" : "Encaboxar",
- "Edit comment" : "Editar comentariu",
- "[Deleted user]" : "[Usuariu desaniciáu]",
- "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!",
- "More comments …" : "Más comentarios...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}",
- "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}",
- "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}",
- "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu",
- "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"],
- "Comment" : "Comentariu",
"You commented" : "Comentesti",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Comentesti en %1$s",
- "You commented on {file}" : "Comentesti en {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{autor} comentó en {ficheru}",
+ "You commented on %1$s" : "Comentesti en: %1$s",
+ "You commented on {file}" : "Comentesti en: {file}",
+ "%1$s commented on %2$s" : "%1$s comentó en: %2$s",
+ "{author} commented on {file}" : "{author} comentó en: {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»",
- "Unknown user" : "Usuariu desconocíu",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»"
+ "Files" : "Ficheros",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mentáronte en «{file}», nun comentariu d'una cuenta que ta desaniciada",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentóte nun comentariu de: «{file}»",
+ "Files app plugin to add comments to files" : "Plugin de l'aplicación Ficheros p'amestar comentarios a los ficheros",
+ "Edit comment" : "Editar el comentariu",
+ "Delete comment" : "Desaniciar el comentariu",
+ "Cancel edit" : "Anular la edición",
+ "New comment" : "Comentariu nuevu",
+ "Write a comment …" : "Escribi un comentariu…",
+ "Post comment" : "Espublizar el comentariu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pa les menciones, : pa los fustaxes, / pal selector intelixente",
+ "Could not reload comments" : "Nun se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "Nun se pudieron marcar los comentarios como lleíos",
+ "Unable to load the comments list" : "Nun ye posible cargar la llista de comentarios",
+ "No comments yet, start the conversation!" : "Nun hai comentarios, ¡anicia una conversación!",
+ "No more messages" : "Nun hai más mensaxes",
+ "Retry" : "Retentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentariu nuevu","{unread} comentarios nuevos"],
+ "Comment" : "Comentariu",
+ "An error occurred while trying to edit the comment" : "Prodúxose un error mentanto se tentaba d'editar el comentariu",
+ "Comment deleted" : "Desanicióse'l comentariu",
+ "An error occurred while trying to delete the comment" : "Prodúxose un error mentanto se tentaba de desaniciar el comentariu",
+ "An error occurred while trying to create the comment" : "Prodúxose un error mentanto se tentaba de crear el comentariu"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/az.js b/apps/comments/l10n/az.js
deleted file mode 100644
index 75428f67cc5..00000000000
--- a/apps/comments/l10n/az.js
+++ /dev/null
@@ -1,8 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Dayandır",
- "Save" : "Saxla",
- "Comment" : "Komentariya"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/az.json b/apps/comments/l10n/az.json
deleted file mode 100644
index c54d6648c59..00000000000
--- a/apps/comments/l10n/az.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{ "translations": {
- "Cancel" : "Dayandır",
- "Save" : "Saxla",
- "Comment" : "Komentariya"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/bg.js b/apps/comments/l10n/bg.js
index ee323661bf0..a645c5a543f 100644
--- a/apps/comments/l10n/bg.js
+++ b/apps/comments/l10n/bg.js
@@ -2,33 +2,29 @@ OC.L10N.register(
"comments",
{
"Comments" : "Коментари",
- "New comment …" : "Нов коментар...",
- "Delete comment" : "Изтрий коментар",
- "Post" : "Публикация",
- "Cancel" : "Отказ",
- "Edit comment" : "Редактирай коментра",
- "[Deleted user]" : "[Изтрит потребител]",
- "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
- "More comments …" : "Още коментари...",
- "Save" : "Запазване",
- "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
- "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
- "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
- "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
- "Comment" : "Коментар",
"You commented" : "Вие коментирахте",
- "%1$s commented" : "%1$s коментира",
"{author} commented" : "{author} коментира",
"You commented on %1$s" : "Ти коментира за %1$s",
"You commented on {file}" : "Ти коментира за {file}",
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
"{author} commented on {file}" : "{author} коментира за {file}",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
- "Unknown user" : "Непознат потребител",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”"
+ "Files" : "Файлове",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} ви спомена в коментар за “{file}”",
+ "Files app plugin to add comments to files" : "Добавка на приложението Файлове за добавяне на коментари към файловете",
+ "Edit comment" : "Редактирай коментра",
+ "Delete comment" : "Изтрий коментар",
+ "Cancel edit" : "Отказ на редактиране",
+ "Post comment" : "Публикуване на коментар",
+ "Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
+ "No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!",
+ "No more messages" : " Няма повече съобщения",
+ "Retry" : "Опитай отново",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"],
+ "Comment" : "Коментар",
+ "An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара",
+ "Comment deleted" : " Изтрит е коментар",
+ "An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
+ "An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/bg.json b/apps/comments/l10n/bg.json
index 21d84ad2b00..5bb763dbc5d 100644
--- a/apps/comments/l10n/bg.json
+++ b/apps/comments/l10n/bg.json
@@ -1,32 +1,28 @@
{ "translations": {
"Comments" : "Коментари",
- "New comment …" : "Нов коментар...",
- "Delete comment" : "Изтрий коментар",
- "Post" : "Публикация",
- "Cancel" : "Отказ",
- "Edit comment" : "Редактирай коментра",
- "[Deleted user]" : "[Изтрит потребител]",
- "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
- "More comments …" : "Още коментари...",
- "Save" : "Запазване",
- "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
- "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
- "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
- "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
- "Comment" : "Коментар",
"You commented" : "Вие коментирахте",
- "%1$s commented" : "%1$s коментира",
"{author} commented" : "{author} коментира",
"You commented on %1$s" : "Ти коментира за %1$s",
"You commented on {file}" : "Ти коментира за {file}",
"%1$s commented on %2$s" : "%1$s коментиран за %2$s",
"{author} commented on {file}" : "{author} коментира за {file}",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
- "Unknown user" : "Непознат потребител",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”"
+ "Files" : "Файлове",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} ви спомена в коментар за “{file}”",
+ "Files app plugin to add comments to files" : "Добавка на приложението Файлове за добавяне на коментари към файловете",
+ "Edit comment" : "Редактирай коментра",
+ "Delete comment" : "Изтрий коментар",
+ "Cancel edit" : "Отказ на редактиране",
+ "Post comment" : "Публикуване на коментар",
+ "Unable to load the comments list" : "Списъкът с коментари не може да се зареди",
+ "No comments yet, start the conversation!" : "Все още няма коментари, започнете разговор!",
+ "No more messages" : " Няма повече съобщения",
+ "Retry" : "Опитай отново",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} нови коментари","{unread} нови коментари"],
+ "Comment" : "Коментар",
+ "An error occurred while trying to edit the comment" : "Възникна грешка при опит за редактиране на коментара",
+ "Comment deleted" : " Изтрит е коментар",
+ "An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
+ "An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/bg_BG.js b/apps/comments/l10n/bg_BG.js
deleted file mode 100644
index 6aa5a63fa28..00000000000
--- a/apps/comments/l10n/bg_BG.js
+++ /dev/null
@@ -1,39 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Коментари",
- "Unknown user" : "Непознат потребител",
- "New comment …" : "Нов коментар...",
- "Delete comment" : "Изтрий коментар",
- "Post" : "Публикация",
- "Cancel" : "Отказ",
- "Edit comment" : "Редактирай коментра",
- "[Deleted user]" : "[Изтрит потребител]",
- "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
- "More comments …" : "Още коментари...",
- "Save" : "Запазване",
- "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
- "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
- "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
- "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
- "Comment" : "Коментар",
- "You commented" : "Вие коментирахте",
- "%1$s commented" : "%1$s коментира",
- "{author} commented" : "{author} коментира",
- "You commented on %1$s" : "Ти коментира за %1$s",
- "You commented on {file}" : "Ти коментира за {file}",
- "%1$s commented on %2$s" : "%1$s коментиран за %2$s",
- "{author} commented on {file}" : "{author} коментира за {file}",
- "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
- "Type in a new comment..." : "Напиши нов коментар...",
- "No other comments available" : "Няма други коментари",
- "More comments..." : "Още коментари...",
- "{count} unread comments" : "{count} непрочетени коментари",
- "You commented on %2$s" : "Ти коментира за %2$s"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/bg_BG.json b/apps/comments/l10n/bg_BG.json
deleted file mode 100644
index dc3ed5416a9..00000000000
--- a/apps/comments/l10n/bg_BG.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{ "translations": {
- "Comments" : "Коментари",
- "Unknown user" : "Непознат потребител",
- "New comment …" : "Нов коментар...",
- "Delete comment" : "Изтрий коментар",
- "Post" : "Публикация",
- "Cancel" : "Отказ",
- "Edit comment" : "Редактирай коментра",
- "[Deleted user]" : "[Изтрит потребител]",
- "No comments yet, start the conversation!" : "Все-още няма коментари, започни разговор!",
- "More comments …" : "Още коментари...",
- "Save" : "Запазване",
- "Allowed characters {count} of {max}" : "Позволени символи {count} от {max}",
- "Error occurred while retrieving comment with id {id}" : "Възникна грешка по време на извличане на коментар с код {id}",
- "Error occurred while updating comment with id {id}" : "Възникна грешка по време на обновяване на коментар с код {id}",
- "Error occurred while posting comment" : "Възникна грешка по време на изпращане на коментар",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"],
- "Comment" : "Коментар",
- "You commented" : "Вие коментирахте",
- "%1$s commented" : "%1$s коментира",
- "{author} commented" : "{author} коментира",
- "You commented on %1$s" : "Ти коментира за %1$s",
- "You commented on {file}" : "Ти коментира за {file}",
- "%1$s commented on %2$s" : "%1$s коментиран за %2$s",
- "{author} commented on {file}" : "{author} коментира за {file}",
- "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за файлове",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Токущо) изтрит потребител те коментира в “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Токущо) изтрит потребител те спомена в коментар за “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s те спомена в коментар за “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} те спомена в коментар за “{file}”",
- "Type in a new comment..." : "Напиши нов коментар...",
- "No other comments available" : "Няма други коментари",
- "More comments..." : "Още коментари...",
- "{count} unread comments" : "{count} непрочетени коментари",
- "You commented on %2$s" : "Ти коментира за %2$s"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/bn_BD.js b/apps/comments/l10n/bn_BD.js
deleted file mode 100644
index fcff25b8402..00000000000
--- a/apps/comments/l10n/bn_BD.js
+++ /dev/null
@@ -1,8 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "বাতিল",
- "Save" : "সংরক্ষণ",
- "Comment" : "মন্তব্য"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/bn_BD.json b/apps/comments/l10n/bn_BD.json
deleted file mode 100644
index 81cd8fe1a48..00000000000
--- a/apps/comments/l10n/bn_BD.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{ "translations": {
- "Cancel" : "বাতিল",
- "Save" : "সংরক্ষণ",
- "Comment" : "মন্তব্য"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/bn_IN.js b/apps/comments/l10n/bn_IN.js
deleted file mode 100644
index 7b479dc0264..00000000000
--- a/apps/comments/l10n/bn_IN.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "বাতিল করা",
- "Save" : "সেভ"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/bn_IN.json b/apps/comments/l10n/bn_IN.json
deleted file mode 100644
index 9df2ea07062..00000000000
--- a/apps/comments/l10n/bn_IN.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "বাতিল করা",
- "Save" : "সেভ"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/bs.js b/apps/comments/l10n/bs.js
deleted file mode 100644
index b1f98fedfa6..00000000000
--- a/apps/comments/l10n/bs.js
+++ /dev/null
@@ -1,8 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Odustani",
- "Save" : "Spremi",
- "Comment" : "Komentar"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/comments/l10n/bs.json b/apps/comments/l10n/bs.json
deleted file mode 100644
index d73df1a46c6..00000000000
--- a/apps/comments/l10n/bs.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{ "translations": {
- "Cancel" : "Odustani",
- "Save" : "Spremi",
- "Comment" : "Komentar"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/ca.js b/apps/comments/l10n/ca.js
index d798017ef75..a8f3ce6d136 100644
--- a/apps/comments/l10n/ca.js
+++ b/apps/comments/l10n/ca.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentaris",
- "New comment …" : "Nou comentari...",
- "Delete comment" : "Esborrar comentari",
- "Post" : "Publica",
- "Cancel" : "Cancel·la",
- "Edit comment" : "Editar comentari",
- "[Deleted user]" : "[usuari Esborrat]",
- "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
- "More comments …" : "Més comentaris...",
- "Save" : "Desa",
- "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
- "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}",
- "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
- "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
- "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
+ "You commented" : "Heu escrit un comentari",
+ "{author} commented" : "{author} ha escrit un comentari",
+ "You commented on %1$s" : "Heu escrit un comentari a %1$s",
+ "You commented on {file}" : "Heu escrit un comentari a {file}",
+ "%1$s commented on %2$s" : "%1$s ha escrit un comentari a %2$s",
+ "{author} commented on {file}" : "{author} ha escrit un comentari a {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per a fitxers",
+ "Files" : "Fitxers",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un compte que s'ha suprimit",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} us ha esmentat en un comentari a «{file}»",
+ "Files app plugin to add comments to files" : "Connector de l'aplicació Fitxers per a afegir comentaris als fitxers",
+ "Edit comment" : "Edita el comentari",
+ "Delete comment" : "Suprimeix el comentari",
+ "Cancel edit" : "Cancel·la l'edició",
+ "New comment" : "Comentari nou",
+ "Write a comment …" : "Escriviu un comentari…",
+ "Post comment" : "Publica el comentari",
+ "@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
+ "Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
+ "Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
+ "Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
+ "No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
+ "No more messages" : "No hi ha més missatges",
+ "Retry" : "Torna-ho a provar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
- "You commented" : "Heu comentat",
- "%1$s commented" : "%1$s ha comentat",
- "{author} commented" : "{author} ha comentat",
- "You commented on %1$s" : "Heu comentat a %1$s",
- "You commented on {file}" : "Heu comentat a {file}",
- "%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
- "{author} commented on {file}" : "{author} ha comentat a {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
- "Unknown user" : "Usuari desconegut",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”"
+ "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
+ "Comment deleted" : "S'ha suprimit el comentari",
+ "An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
+ "An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ca.json b/apps/comments/l10n/ca.json
index ed8005829c7..d1f4ce2c7fe 100644
--- a/apps/comments/l10n/ca.json
+++ b/apps/comments/l10n/ca.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Comentaris",
- "New comment …" : "Nou comentari...",
- "Delete comment" : "Esborrar comentari",
- "Post" : "Publica",
- "Cancel" : "Cancel·la",
- "Edit comment" : "Editar comentari",
- "[Deleted user]" : "[usuari Esborrat]",
- "No comments yet, start the conversation!" : "Encara no hi ha comentaris. Comenceu la conversa!",
- "More comments …" : "Més comentaris...",
- "Save" : "Desa",
- "Allowed characters {count} of {max}" : "{count} caràcters permesos de {max}",
- "Error occurred while retrieving comment with id {id}" : "Hi ha hagut un error en extraure el comentari amb id {id}",
- "Error occurred while updating comment with id {id}" : "Hi ha hagut un error en actualitzar el comentari amb id {id}",
- "Error occurred while posting comment" : "Hi ha hagut un error en publicar el comentari",
- "_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
+ "You commented" : "Heu escrit un comentari",
+ "{author} commented" : "{author} ha escrit un comentari",
+ "You commented on %1$s" : "Heu escrit un comentari a %1$s",
+ "You commented on {file}" : "Heu escrit un comentari a {file}",
+ "%1$s commented on %2$s" : "%1$s ha escrit un comentari a %2$s",
+ "{author} commented on {file}" : "{author} ha escrit un comentari a {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per a fitxers",
+ "Files" : "Fitxers",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Se us ha esmentat a «{file}» en un comentari d'un compte que s'ha suprimit",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} us ha esmentat en un comentari a «{file}»",
+ "Files app plugin to add comments to files" : "Connector de l'aplicació Fitxers per a afegir comentaris als fitxers",
+ "Edit comment" : "Edita el comentari",
+ "Delete comment" : "Suprimeix el comentari",
+ "Cancel edit" : "Cancel·la l'edició",
+ "New comment" : "Comentari nou",
+ "Write a comment …" : "Escriviu un comentari…",
+ "Post comment" : "Publica el comentari",
+ "@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
+ "Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
+ "Failed to mark comments as read" : "No s'han pogut marcar els comentaris com a llegits",
+ "Unable to load the comments list" : "No s'ha pogut carregar la llista de comentaris",
+ "No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
+ "No more messages" : "No hi ha més missatges",
+ "Retry" : "Torna-ho a provar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
- "You commented" : "Heu comentat",
- "%1$s commented" : "%1$s ha comentat",
- "{author} commented" : "{author} ha comentat",
- "You commented on %1$s" : "Heu comentat a %1$s",
- "You commented on {file}" : "Heu comentat a {file}",
- "%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
- "{author} commented on {file}" : "{author} ha comentat a {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per arxius",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s us ha nomenat en un comentari a “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} us ha nomenat en un comentari de “{file}”",
- "Unknown user" : "Usuari desconegut",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuari (ara) esborrat us ha nomenat en un comentari a “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuari (ara) esborrat us ha nomenat en un comentari de “{file}”"
+ "An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
+ "Comment deleted" : "S'ha suprimit el comentari",
+ "An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
+ "An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/cs.js b/apps/comments/l10n/cs.js
index 52785210636..1c8d69c14e5 100644
--- a/apps/comments/l10n/cs.js
+++ b/apps/comments/l10n/cs.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Komentáře",
- "New comment …" : "Nový komentář ...",
- "Delete comment" : "Smazat komentář",
- "Post" : "Zveřejnit",
- "Cancel" : "Zrušit",
+ "You commented" : "Okomentovali jste",
+ "{author} commented" : "{author} okomentoval(a)",
+ "You commented on %1$s" : "Okomentovali jste %1$s",
+ "You commented on {file}" : "Okomentovali jste {file}",
+ "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
+ "{author} commented on {file}" : "{author} okomentoval(a) {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
+ "Files" : "Soubory",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
+ "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
- "[Deleted user]" : "[Smazaný uživatel]",
+ "Delete comment" : "Smazat komentář",
+ "Cancel edit" : "Zrušit úpravu",
+ "New comment" : "Nový komentář",
+ "Write a comment …" : "Napsat komentář…",
+ "Post comment" : "Odeslat komentář",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
+ "Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
+ "Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
+ "Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
- "More comments …" : "Více komentářů ...",
- "Save" : "Uložit",
- "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
- "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
- "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
- "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
+ "No more messages" : "Žádné další zprávy",
+ "Retry" : "Zkusit znovu",
+ "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment" : "Komentář",
- "You commented" : "Okomentoval(a) jsi",
- "%1$s commented" : "%1$s okomentován",
- "{author} commented" : "{author} okomentoval(a)",
- "You commented on %1$s" : "Okomentoval(a) jste %1$s",
- "You commented on {file}" : "Okomentoval(a) jste {file}",
- "%1$s commented on %2$s" : "%1$s okomentoval %2$s",
- "{author} commented on {file}" : "{author} okomentoval(a) {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
- "Unknown user" : "Neznámý uživatel",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\""
+ "An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
+ "Comment deleted" : "Komentář smazán",
+ "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
+ "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
+"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
diff --git a/apps/comments/l10n/cs.json b/apps/comments/l10n/cs.json
index 334ff58dd55..c933b71a7c6 100644
--- a/apps/comments/l10n/cs.json
+++ b/apps/comments/l10n/cs.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Komentáře",
- "New comment …" : "Nový komentář ...",
- "Delete comment" : "Smazat komentář",
- "Post" : "Zveřejnit",
- "Cancel" : "Zrušit",
+ "You commented" : "Okomentovali jste",
+ "{author} commented" : "{author} okomentoval(a)",
+ "You commented on %1$s" : "Okomentovali jste %1$s",
+ "You commented on {file}" : "Okomentovali jste {file}",
+ "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
+ "{author} commented on {file}" : "{author} okomentoval(a) {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
+ "Files" : "Soubory",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
+ "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
- "[Deleted user]" : "[Smazaný uživatel]",
+ "Delete comment" : "Smazat komentář",
+ "Cancel edit" : "Zrušit úpravu",
+ "New comment" : "Nový komentář",
+ "Write a comment …" : "Napsat komentář…",
+ "Post comment" : "Odeslat komentář",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
+ "Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
+ "Failed to mark comments as read" : "Nepodařilo se označit komentáře jako přečtené",
+ "Unable to load the comments list" : "Nedaří se načíst seznam komentářů",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
- "More comments …" : "Více komentářů ...",
- "Save" : "Uložit",
- "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
- "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
- "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
- "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
+ "No more messages" : "Žádné další zprávy",
+ "Retry" : "Zkusit znovu",
+ "_1 new comment_::_{unread} new comments_" : ["Jeden nový komentář","{unread} nové komentáře","{unread} nových komentářů","{unread} nové komentáře"],
"Comment" : "Komentář",
- "You commented" : "Okomentoval(a) jsi",
- "%1$s commented" : "%1$s okomentován",
- "{author} commented" : "{author} okomentoval(a)",
- "You commented on %1$s" : "Okomentoval(a) jste %1$s",
- "You commented on {file}" : "Okomentoval(a) jste {file}",
- "%1$s commented on %2$s" : "%1$s okomentoval %2$s",
- "{author} commented on {file}" : "{author} okomentoval(a) {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v “%s”, v komentáři od uživatele, který byl později smazán",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru “{file}”, v komentáři od uživatele, který byl později smazán",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
- "Unknown user" : "Neznámý uživatel",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\""
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
+ "An error occurred while trying to edit the comment" : "Došlo k chybě při pokusu o úpravu komentáře",
+ "Comment deleted" : "Komentář smazán",
+ "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
+ "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře"
+},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/cs_CZ.js b/apps/comments/l10n/cs_CZ.js
deleted file mode 100644
index da14fcf91b8..00000000000
--- a/apps/comments/l10n/cs_CZ.js
+++ /dev/null
@@ -1,39 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Komentáře",
- "Unknown user" : "Neznámý uživatel",
- "New comment …" : "Nový komentář ...",
- "Delete comment" : "Smazat komentář",
- "Post" : "Zveřejnit",
- "Cancel" : "Zrušit",
- "Edit comment" : "Upravit komentář",
- "[Deleted user]" : "[Smazaný uživatel]",
- "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
- "More comments …" : "Více komentářů ...",
- "Save" : "Uložit",
- "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
- "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
- "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
- "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
- "Comment" : "Komentář",
- "You commented" : "Okomentoval(a) jsi",
- "%1$s commented" : "%1$s okomentován",
- "{author} commented" : "{author} okomentoval(a)",
- "You commented on %1$s" : "Okomentoval(a) jste %1$s",
- "You commented on {file}" : "Okomentoval(a) jste {file}",
- "%1$s commented on %2$s" : "%1$s okomentoval %2$s",
- "{author} commented on {file}" : "{author} okomentoval(a) {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
- "Type in a new comment..." : "Zadat nový komentář...",
- "No other comments available" : "Nejsou dostupné žádné další komentáře",
- "More comments..." : "Více komentářů...",
- "{count} unread comments" : "{count} nepřečtených komentářů",
- "You commented on %2$s" : "Okomentoval(a) jsi %2$s"
-},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/comments/l10n/cs_CZ.json b/apps/comments/l10n/cs_CZ.json
deleted file mode 100644
index 1f1a84b6c09..00000000000
--- a/apps/comments/l10n/cs_CZ.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{ "translations": {
- "Comments" : "Komentáře",
- "Unknown user" : "Neznámý uživatel",
- "New comment …" : "Nový komentář ...",
- "Delete comment" : "Smazat komentář",
- "Post" : "Zveřejnit",
- "Cancel" : "Zrušit",
- "Edit comment" : "Upravit komentář",
- "[Deleted user]" : "[Smazaný uživatel]",
- "No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
- "More comments …" : "Více komentářů ...",
- "Save" : "Uložit",
- "Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Došlo k chybě při načítání komentáře s id {id}",
- "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}",
- "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře",
- "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"],
- "Comment" : "Komentář",
- "You commented" : "Okomentoval(a) jsi",
- "%1$s commented" : "%1$s okomentován",
- "{author} commented" : "{author} okomentoval(a)",
- "You commented on %1$s" : "Okomentoval(a) jste %1$s",
- "You commented on {file}" : "Okomentoval(a) jste {file}",
- "%1$s commented on %2$s" : "%1$s okomentoval %2$s",
- "{author} commented on {file}" : "{author} okomentoval(a) {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás zmínil(a) v komentáři u %2$s",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil v komentáři u “{file}”",
- "Type in a new comment..." : "Zadat nový komentář...",
- "No other comments available" : "Nejsou dostupné žádné další komentáře",
- "More comments..." : "Více komentářů...",
- "{count} unread comments" : "{count} nepřečtených komentářů",
- "You commented on %2$s" : "Okomentoval(a) jsi %2$s"
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/cy_GB.js b/apps/comments/l10n/cy_GB.js
deleted file mode 100644
index 4e1c6a57f6e..00000000000
--- a/apps/comments/l10n/cy_GB.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Diddymu",
- "Save" : "Cadw"
-},
-"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;");
diff --git a/apps/comments/l10n/cy_GB.json b/apps/comments/l10n/cy_GB.json
deleted file mode 100644
index 1ea3eafef30..00000000000
--- a/apps/comments/l10n/cy_GB.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Diddymu",
- "Save" : "Cadw"
-},"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/da.js b/apps/comments/l10n/da.js
index 8701bb639f1..23c4b9873e7 100644
--- a/apps/comments/l10n/da.js
+++ b/apps/comments/l10n/da.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar ...",
- "Delete comment" : "Slet kommentar",
- "Post" : "Indlæg",
- "Cancel" : "Annullér",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet user]",
- "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
- "More comments …" : "Flere kommentarer...",
- "Save" : "Gem",
- "Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}",
- "Error occurred while retrieving comment with id {id}" : "Der opstod fejl under hentning af kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}",
- "Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"],
- "Comment" : "Kommentér",
"You commented" : "Du kommenterede",
- "%1$s commented" : "%1$s kommenterede",
"{author} commented" : "{author} kommenterede",
"You commented on %1$s" : "Du kommenterede %1$s",
"You commented on {file}" : "Du kommenterede {file}",
"%1$s commented on %2$s" : "%1$s kommenterede %2$s",
"{author} commented on {file}" : "{author} kommenterede {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"",
- "Unknown user" : "Ukendt bruger",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\""
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer",
+ "Edit comment" : "Rediger kommentar",
+ "Delete comment" : "Slet kommentar",
+ "Cancel edit" : "Annuller redigering",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv kommentar…",
+ "Post comment" : "Skriv kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
+ "Could not reload comments" : "Kunne ikke indlæse kommentarer",
+ "Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
+ "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
+ "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
+ "No more messages" : "Ikke flere beskeder",
+ "Retry" : "Prøv igen",
+ "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"],
+ "Comment" : "Kommenter",
+ "An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
+ "Comment deleted" : "Kommentar slettet",
+ "An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
+ "An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/da.json b/apps/comments/l10n/da.json
index 2725cdb94a3..4abcd817f3b 100644
--- a/apps/comments/l10n/da.json
+++ b/apps/comments/l10n/da.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar ...",
- "Delete comment" : "Slet kommentar",
- "Post" : "Indlæg",
- "Cancel" : "Annullér",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet user]",
- "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
- "More comments …" : "Flere kommentarer...",
- "Save" : "Gem",
- "Allowed characters {count} of {max}" : "Tilladte tegn {count} af {max}",
- "Error occurred while retrieving comment with id {id}" : "Der opstod fejl under hentning af kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "Der opstod fejl under opdatering af kommentar med id {id}",
- "Error occurred while posting comment" : "Der opstod fejl under indsendelse af kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"],
- "Comment" : "Kommentér",
"You commented" : "Du kommenterede",
- "%1$s commented" : "%1$s kommenterede",
"{author} commented" : "{author} kommenterede",
"You commented on %1$s" : "Du kommenterede %1$s",
"You commented on {file}" : "Du kommenterede {file}",
"%1$s commented on %2$s" : "%1$s kommenterede %2$s",
"{author} commented on {file}" : "{author} kommenterede {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"%s”, I en kommentar af en bruger der siden er blevet slettet",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du blev nævnt i \"{file}”, I en kommentar af en bruger der siden er blevet slettet",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nævnte dig i en kommentarer på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nævnte dig i en kommentarer på \"{file}\"",
- "Unknown user" : "Ukendt bruger",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) slettet bruger nævnte dig i en kommentarer på “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) slettet bruger nævnte dig i en kommentarer på \"{file}\""
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du blev nævnt på \"{file}\", i en kommentar af en konto, som siden er blevet slettet",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nævnte dig i en kommentar til \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin til at tilføje kommentarer til filer",
+ "Edit comment" : "Rediger kommentar",
+ "Delete comment" : "Slet kommentar",
+ "Cancel edit" : "Annuller redigering",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv kommentar…",
+ "Post comment" : "Skriv kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
+ "Could not reload comments" : "Kunne ikke indlæse kommentarer",
+ "Failed to mark comments as read" : "Kunne ikke markere kommentarer som læst",
+ "Unable to load the comments list" : "Kan ikke indlæse kommentarlisten",
+ "No comments yet, start the conversation!" : "Ingen kommentarer endnu, start samtalen!",
+ "No more messages" : "Ikke flere beskeder",
+ "Retry" : "Prøv igen",
+ "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nye kommentarer"],
+ "Comment" : "Kommenter",
+ "An error occurred while trying to edit the comment" : "Der opstod en fejl under forsøget på at redigere kommentaren",
+ "Comment deleted" : "Kommentar slettet",
+ "An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
+ "An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/de.js b/apps/comments/l10n/de.js
index 9df6ee853f0..dc964592b19 100644
--- a/apps/comments/l10n/de.js
+++ b/apps/comments/l10n/de.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentare",
- "New comment …" : "Neuer Kommentar …",
- "Delete comment" : "Kommentar löschen",
- "Post" : "Speichern",
- "Cancel" : "Abbrechen",
- "Edit comment" : "Kommentar bearbeiten",
- "[Deleted user]" : "[Gelöschter Benutzer]",
- "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
- "More comments …" : "Weitere Kommentare…",
- "Save" : "Speichern",
- "Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
- "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
- "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
- "Comment" : "Kommentar",
- "You commented" : "Von Dir kommentiert",
- "%1$s commented" : "%1$s kommentierte",
+ "You commented" : "Du hast kommentiert",
"{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Du hast %1$s kommentiert",
"You commented on {file}" : "Du hast {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ",
- "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ",
- "Unknown user" : "Unbekannter Benutzer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt"
+ "Files" : "Dateien",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du wurdest in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt",
+ "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
+ "Edit comment" : "Kommentar bearbeiten",
+ "Delete comment" : "Kommentar löschen",
+ "Cancel edit" : "Bearbeiten abbrechen",
+ "New comment" : "Neuer Kommentar",
+ "Write a comment …" : "Einen Kommentar schreiben …",
+ "Post comment" : "Kommentar veröffentlichen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
+ "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+ "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
+ "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
+ "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
+ "No more messages" : "Keine weiteren Nachrichten",
+ "Retry" : "Wiederholen",
+ "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
+ "Comment deleted" : "Kommentar gelöscht",
+ "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
+ "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/de.json b/apps/comments/l10n/de.json
index 708267fc616..d0679199b23 100644
--- a/apps/comments/l10n/de.json
+++ b/apps/comments/l10n/de.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Kommentare",
- "New comment …" : "Neuer Kommentar …",
- "Delete comment" : "Kommentar löschen",
- "Post" : "Speichern",
- "Cancel" : "Abbrechen",
- "Edit comment" : "Kommentar bearbeiten",
- "[Deleted user]" : "[Gelöschter Benutzer]",
- "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
- "More comments …" : "Weitere Kommentare…",
- "Save" : "Speichern",
- "Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
- "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
- "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
- "Comment" : "Kommentar",
- "You commented" : "Von Dir kommentiert",
- "%1$s commented" : "%1$s kommentierte",
+ "You commented" : "Du hast kommentiert",
"{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Du hast %1$s kommentiert",
"You commented on {file}" : "Du hast {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Dich in einem Kommentar zu “%2$s” erwähnt ",
- "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt ",
- "Unknown user" : "Unbekannter Benutzer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu \"%s\" erwähnt",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Dich in einem Kommentar zu “{file}” erwähnt"
+ "Files" : "Dateien",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du wurdest in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt",
+ "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
+ "Edit comment" : "Kommentar bearbeiten",
+ "Delete comment" : "Kommentar löschen",
+ "Cancel edit" : "Bearbeiten abbrechen",
+ "New comment" : "Neuer Kommentar",
+ "Write a comment …" : "Einen Kommentar schreiben …",
+ "Post comment" : "Kommentar veröffentlichen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
+ "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+ "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
+ "Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
+ "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
+ "No more messages" : "Keine weiteren Nachrichten",
+ "Retry" : "Wiederholen",
+ "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
+ "Comment deleted" : "Kommentar gelöscht",
+ "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
+ "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/de_AT.js b/apps/comments/l10n/de_AT.js
deleted file mode 100644
index f92cad6bcde..00000000000
--- a/apps/comments/l10n/de_AT.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Abbrechen",
- "Save" : "Speichern"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/de_AT.json b/apps/comments/l10n/de_AT.json
deleted file mode 100644
index 45d2f9e21dd..00000000000
--- a/apps/comments/l10n/de_AT.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Abbrechen",
- "Save" : "Speichern"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/de_DE.js b/apps/comments/l10n/de_DE.js
index a2ef3431198..8a492c10bd3 100644
--- a/apps/comments/l10n/de_DE.js
+++ b/apps/comments/l10n/de_DE.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentare",
- "New comment …" : "Neuer Kommentar …",
- "Delete comment" : "Kommentar löschen",
- "Post" : "Speichern",
- "Cancel" : "Abbrechen",
- "Edit comment" : "Kommentar bearbeiten",
- "[Deleted user]" : "[gelöschter Benutzer]",
- "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
- "More comments …" : "Weitere Kommentare …",
- "Save" : "Speichern",
- "Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
- "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
- "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
- "Comment" : "Kommentar",
"You commented" : "Sie haben kommentiert",
- "%1$s commented" : "%1$s kommentierte",
"{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Sie haben %1$s kommentiert",
"You commented on {file}" : "Sie haben {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
- "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
- "Unknown user" : "Unbekannter Benutzer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt"
+ "Files" : "Dateien",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sie wurden in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Sie in einem Kommentar zu \"{file}\" erwähnt",
+ "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
+ "Edit comment" : "Kommentar bearbeiten",
+ "Delete comment" : "Kommentar löschen",
+ "Cancel edit" : "Bearbeiten abbrechen",
+ "New comment" : "Neuer Kommentar",
+ "Write a comment …" : "Schreiben Sie einen Kommentar …",
+ "Post comment" : "Kommentar veröffentlichen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
+ "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+ "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
+ "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden",
+ "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
+ "No more messages" : "Keine weiteren Nachrichten",
+ "Retry" : "Wiederholen",
+ "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
+ "Comment deleted" : "Kommentar gelöscht",
+ "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
+ "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/de_DE.json b/apps/comments/l10n/de_DE.json
index fb636bd9500..44f2bbd961d 100644
--- a/apps/comments/l10n/de_DE.json
+++ b/apps/comments/l10n/de_DE.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Kommentare",
- "New comment …" : "Neuer Kommentar …",
- "Delete comment" : "Kommentar löschen",
- "Post" : "Speichern",
- "Cancel" : "Abbrechen",
- "Edit comment" : "Kommentar bearbeiten",
- "[Deleted user]" : "[gelöschter Benutzer]",
- "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
- "More comments …" : "Weitere Kommentare …",
- "Save" : "Speichern",
- "Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
- "Error occurred while retrieving comment with id {id}" : "Es ist ein Fehler beim Empfangen des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while updating comment with id {id}" : "Es ist ein Fehler beim Aktualisieren des Kommentars mit der ID {id} aufgetreten",
- "Error occurred while posting comment" : "Es ist ein Fehler beim Veröffentlichen des Kommentars aufgetreten",
- "_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"],
- "Comment" : "Kommentar",
"You commented" : "Sie haben kommentiert",
- "%1$s commented" : "%1$s kommentierte",
"{author} commented" : "{author} kommentierte",
"You commented on %1$s" : "Sie haben %1$s kommentiert",
"You commented on {file}" : "Sie haben {file} kommentiert",
"%1$s commented on %2$s" : "%1$s kommentierte %2$s",
"{author} commented on {file}" : "{author} hat {file} kommentiert",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"%s\" von einem bereits gelöschten Nutzer erwähnt",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sie wurden in einem Kommentar auf \"{file}\" von einem bereits gelöschten Nutzer erwähnt",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s hat Sie in einem Kommentar zu “%2$s” erwähnt.",
- "{user} mentioned you in a comment on “{file}”" : "{user} hat Sie in einem Kommentar zu “{file}” erwähnt",
- "Unknown user" : "Unbekannter Benutzer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu \"%s\" erwähnt",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ein (nun) gelöschter Benutzer hat Sie in einem Kommentar zu “{file}” erwähnt"
+ "Files" : "Dateien",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sie wurden in einem Kommentar zu \"{file}\" von einem Konto erwähnt, das inzwischen gelöscht wurde.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Sie in einem Kommentar zu \"{file}\" erwähnt",
+ "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien",
+ "Edit comment" : "Kommentar bearbeiten",
+ "Delete comment" : "Kommentar löschen",
+ "Cancel edit" : "Bearbeiten abbrechen",
+ "New comment" : "Neuer Kommentar",
+ "Write a comment …" : "Schreiben Sie einen Kommentar …",
+ "Post comment" : "Kommentar veröffentlichen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
+ "Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+ "Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
+ "Unable to load the comments list" : "Kommentarliste kann nicht geladen werden",
+ "No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
+ "No more messages" : "Keine weiteren Nachrichten",
+ "Retry" : "Wiederholen",
+ "_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Es ist ein Fehler beim Bearbeiten des Kommentars aufgetreten",
+ "Comment deleted" : "Kommentar gelöscht",
+ "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
+ "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/el.js b/apps/comments/l10n/el.js
index 4a63e08b926..80b8c2b00fe 100644
--- a/apps/comments/l10n/el.js
+++ b/apps/comments/l10n/el.js
@@ -2,33 +2,30 @@ OC.L10N.register(
"comments",
{
"Comments" : "Σχόλια",
- "New comment …" : "Νέο σχόλιο ...",
- "Delete comment" : "Διαγραφή σχολίου",
- "Post" : "Δημοσίευση",
- "Cancel" : "Ακύρωση",
- "Edit comment" : "Επεξεργασία σχολίου",
- "[Deleted user]" : "[Διαγραμμένος χρήστης]",
- "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
- "More comments …" : "Περισσότερα σχόλια ...",
- "Save" : "Αποθήκευση",
- "Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}",
- "Error occurred while retrieving comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την λήψη σχολίου με αναγνωριστικό {id}",
- "Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}",
- "Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου",
- "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"],
- "Comment" : "Σχόλιο",
"You commented" : "Σχολιάσατε",
- "%1$s commented" : "%1$s σχολίασε",
"{author} commented" : "Ο {author} σχολίασε",
"You commented on %1$s" : "Σχολιάσατε στο %1$s",
"You commented on {file}" : "Σχολιάσατε στο {file}",
"%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s",
"{author} commented on {file}" : "Ο {author} σχολίασε στο {file}",
"<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”",
- "Unknown user" : "Άγνωστος χρήστης",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”"
+ "Files" : "Αρχεία",
+ "{user} mentioned you in a comment on \"{file}\"" : "Ο/η {user} σας ανέφερε σε σχόλιο στο “{file}”",
+ "Files app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία",
+ "Edit comment" : "Επεξεργασία σχολίου",
+ "Delete comment" : "Διαγραφή σχολίου",
+ "Cancel edit" : "Ακύρωση επεξεργασίας",
+ "New comment" : "Νέο σχόλιο",
+ "Post comment" : "Αναρτήστε σχόλιο",
+ "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.",
+ "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
+ "No more messages" : "Δεν υπάρχουν άλλα μηνύματα",
+ "Retry" : "Δοκιμή ξανά",
+ "_1 new comment_::_{unread} new comments_" : ["1 νέο σχόλιο","{unread} νέα σχόλια"],
+ "Comment" : "Σχόλιο",
+ "An error occurred while trying to edit the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια επεξεργασίας του σχολίου",
+ "Comment deleted" : "Το σχόλιο διαγράφηκε",
+ "An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου",
+ "An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/el.json b/apps/comments/l10n/el.json
index 0801a87b103..3c0c4a730e9 100644
--- a/apps/comments/l10n/el.json
+++ b/apps/comments/l10n/el.json
@@ -1,32 +1,29 @@
{ "translations": {
"Comments" : "Σχόλια",
- "New comment …" : "Νέο σχόλιο ...",
- "Delete comment" : "Διαγραφή σχολίου",
- "Post" : "Δημοσίευση",
- "Cancel" : "Ακύρωση",
- "Edit comment" : "Επεξεργασία σχολίου",
- "[Deleted user]" : "[Διαγραμμένος χρήστης]",
- "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
- "More comments …" : "Περισσότερα σχόλια ...",
- "Save" : "Αποθήκευση",
- "Allowed characters {count} of {max}" : "Επιτρεπόμενοι χαρακτήρες {count} από {max}",
- "Error occurred while retrieving comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την λήψη σχολίου με αναγνωριστικό {id}",
- "Error occurred while updating comment with id {id}" : "Ένα σφάλμα προέκυψε κατά την ενημέρωση του σχολίου με το αναγνωριστικό {id}",
- "Error occurred while posting comment" : "Ένα σφάλμα προέκυψε κατά την δημοσίευση σχολίου",
- "_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"],
- "Comment" : "Σχόλιο",
"You commented" : "Σχολιάσατε",
- "%1$s commented" : "%1$s σχολίασε",
"{author} commented" : "Ο {author} σχολίασε",
"You commented on %1$s" : "Σχολιάσατε στο %1$s",
"You commented on {file}" : "Σχολιάσατε στο {file}",
"%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s",
"{author} commented on {file}" : "Ο {author} σχολίασε στο {file}",
"<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”",
- "Unknown user" : "Άγνωστος χρήστης",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”"
+ "Files" : "Αρχεία",
+ "{user} mentioned you in a comment on \"{file}\"" : "Ο/η {user} σας ανέφερε σε σχόλιο στο “{file}”",
+ "Files app plugin to add comments to files" : "Επέκταση της εφαρμογής Αρχεία που επιτρέπει την προσθήκη σχολίων σε αρχεία",
+ "Edit comment" : "Επεξεργασία σχολίου",
+ "Delete comment" : "Διαγραφή σχολίου",
+ "Cancel edit" : "Ακύρωση επεξεργασίας",
+ "New comment" : "Νέο σχόλιο",
+ "Post comment" : "Αναρτήστε σχόλιο",
+ "Unable to load the comments list" : "Δεν είναι δυνατή η μεταφόρτωση της λίστας σχολίων.",
+ "No comments yet, start the conversation!" : "Δεν υπάρχουν σχόλια, ξεκινήστε την συζήτηση!",
+ "No more messages" : "Δεν υπάρχουν άλλα μηνύματα",
+ "Retry" : "Δοκιμή ξανά",
+ "_1 new comment_::_{unread} new comments_" : ["1 νέο σχόλιο","{unread} νέα σχόλια"],
+ "Comment" : "Σχόλιο",
+ "An error occurred while trying to edit the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια επεξεργασίας του σχολίου",
+ "Comment deleted" : "Το σχόλιο διαγράφηκε",
+ "An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου",
+ "An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/en_GB.js b/apps/comments/l10n/en_GB.js
index 20e3f12897e..20843d54147 100644
--- a/apps/comments/l10n/en_GB.js
+++ b/apps/comments/l10n/en_GB.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comments",
- "New comment …" : "New comment …",
- "Delete comment" : "Delete comment",
- "Post" : "Post",
- "Cancel" : "Cancel",
- "Edit comment" : "Edit comment",
- "[Deleted user]" : "[Deleted user]",
- "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
- "More comments …" : "More comments …",
- "Save" : "Save",
- "Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}",
- "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}",
- "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
- "Error occurred while posting comment" : "Error occurred while posting comment",
- "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
- "Comment" : "Comment",
"You commented" : "You commented",
- "%1$s commented" : "%1$s commented",
"{author} commented" : "{author} commented",
"You commented on %1$s" : "You commented on %1$s",
"You commented on {file}" : "You commented on {file}",
"%1$s commented on %2$s" : "%1$s commented on %2$s",
"{author} commented on {file}" : "{author} commented on {file}",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”",
- "Unknown user" : "Unknown user",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”"
+ "Files" : "Files",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "You were mentioned on \"{file}\", in a comment by an account that has since been deleted",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin to add comments to files",
+ "Edit comment" : "Edit comment",
+ "Delete comment" : "Delete comment",
+ "Cancel edit" : "Cancel edit",
+ "New comment" : "New comment",
+ "Write a comment …" : "Write a comment …",
+ "Post comment" : "Post comment",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
+ "Could not reload comments" : "Could not reload comments",
+ "Failed to mark comments as read" : "Failed to mark comments as read",
+ "Unable to load the comments list" : "Unable to load the comments list",
+ "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
+ "No more messages" : "No more messages",
+ "Retry" : "Retry",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
+ "Comment" : "Comment",
+ "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
+ "Comment deleted" : "Comment deleted",
+ "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
+ "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/en_GB.json b/apps/comments/l10n/en_GB.json
index 284015bba52..1d61dbdf9a6 100644
--- a/apps/comments/l10n/en_GB.json
+++ b/apps/comments/l10n/en_GB.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Comments",
- "New comment …" : "New comment …",
- "Delete comment" : "Delete comment",
- "Post" : "Post",
- "Cancel" : "Cancel",
- "Edit comment" : "Edit comment",
- "[Deleted user]" : "[Deleted user]",
- "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
- "More comments …" : "More comments …",
- "Save" : "Save",
- "Allowed characters {count} of {max}" : "Allowed characters: {count} of {max}",
- "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}",
- "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
- "Error occurred while posting comment" : "Error occurred while posting comment",
- "_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
- "Comment" : "Comment",
"You commented" : "You commented",
- "%1$s commented" : "%1$s commented",
"{author} commented" : "{author} commented",
"You commented on %1$s" : "You commented on %1$s",
"You commented on {file}" : "You commented on {file}",
"%1$s commented on %2$s" : "%1$s commented on %2$s",
"{author} commented on {file}" : "{author} commented on {file}",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "You were mentioned on “%s”, in a comment by a user that has since been deleted",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentioned you in a comment on “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”",
- "Unknown user" : "Unknown user",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) deleted user mentioned you in a comment on “{file}”"
+ "Files" : "Files",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "You were mentioned on \"{file}\", in a comment by an account that has since been deleted",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin to add comments to files",
+ "Edit comment" : "Edit comment",
+ "Delete comment" : "Delete comment",
+ "Cancel edit" : "Cancel edit",
+ "New comment" : "New comment",
+ "Write a comment …" : "Write a comment …",
+ "Post comment" : "Post comment",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
+ "Could not reload comments" : "Could not reload comments",
+ "Failed to mark comments as read" : "Failed to mark comments as read",
+ "Unable to load the comments list" : "Unable to load the comments list",
+ "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
+ "No more messages" : "No more messages",
+ "Retry" : "Retry",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
+ "Comment" : "Comment",
+ "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
+ "Comment deleted" : "Comment deleted",
+ "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
+ "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/eo.js b/apps/comments/l10n/eo.js
deleted file mode 100644
index c9416bf59a9..00000000000
--- a/apps/comments/l10n/eo.js
+++ /dev/null
@@ -1,20 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Type in a new comment..." : "Tajpu novan komenton...",
- "Delete comment" : "Forigi komenton",
- "Post" : "Afiŝi",
- "Cancel" : "Nuligi",
- "Edit comment" : "Redakti komenton",
- "[Deleted user]" : "[Forigita uzanto]",
- "Comments" : "Komentoj",
- "No other comments available" : "Neniu alia komento disponeblas",
- "More comments..." : "Pli da komentoj...",
- "Save" : "Konservi",
- "Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
- "{count} unread comments" : "{count} nelegitaj komentoj",
- "Comment" : "Komento",
- "%1$s commented" : "%1$s komentis",
- "%1$s commented on %2$s" : "%1$s komentis %2$s"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/eo.json b/apps/comments/l10n/eo.json
deleted file mode 100644
index b14d92caefa..00000000000
--- a/apps/comments/l10n/eo.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{ "translations": {
- "Type in a new comment..." : "Tajpu novan komenton...",
- "Delete comment" : "Forigi komenton",
- "Post" : "Afiŝi",
- "Cancel" : "Nuligi",
- "Edit comment" : "Redakti komenton",
- "[Deleted user]" : "[Forigita uzanto]",
- "Comments" : "Komentoj",
- "No other comments available" : "Neniu alia komento disponeblas",
- "More comments..." : "Pli da komentoj...",
- "Save" : "Konservi",
- "Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
- "{count} unread comments" : "{count} nelegitaj komentoj",
- "Comment" : "Komento",
- "%1$s commented" : "%1$s komentis",
- "%1$s commented on %2$s" : "%1$s komentis %2$s"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es.js b/apps/comments/l10n/es.js
index 7b6ed49be1f..38edb32d713 100644
--- a/apps/comments/l10n/es.js
+++ b/apps/comments/l10n/es.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Nuevo comentario",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario eliminado]",
- "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}",
- "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}",
- "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"],
- "Comment" : "Comentar",
"You commented" : "Has comentado",
- "%1$s commented" : "%1$s comentados",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Has comentado en %1$s",
"You commented on {file}" : "Has comentado en {file}",
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”"
+ "Files" : "Archivos",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”",
+ "Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cacelar edición",
+ "New comment" : "Comentario nuevo",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "Fallo al marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se pudo cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/es.json b/apps/comments/l10n/es.json
index ef4a4e9d923..51ae29fc0fa 100644
--- a/apps/comments/l10n/es.json
+++ b/apps/comments/l10n/es.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Nuevo comentario",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario eliminado]",
- "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con ID {id}",
- "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con ID {id}",
- "Error occurred while posting comment" : "Se ha producido un error al enviar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%nComentarios no leídos"],
- "Comment" : "Comentar",
"You commented" : "Has comentado",
- "%1$s commented" : "%1$s comentados",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Has comentado en %1$s",
"You commented on {file}" : "Has comentado en {file}",
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te han mencionado en \"%s\", en un comentario por un usuario que después ha sido eliminado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te han mencionado en \"{file}\", en un comentario de un usuario que después ha sido eliminado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) eliminado, te mencionó en un comentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "Files" : "Archivos",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”",
+ "Files app plugin to add comments to files" : "Plugin de la app de Archivos para añadir comentarios a archivos.",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cacelar edición",
+ "New comment" : "Comentario nuevo",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "Fallo al marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se pudo cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error intentando editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/es_419.js b/apps/comments/l10n/es_419.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_419.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_419.json b/apps/comments/l10n/es_419.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_419.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_AR.js b/apps/comments/l10n/es_AR.js
deleted file mode 100644
index f1df8024c17..00000000000
--- a/apps/comments/l10n/es_AR.js
+++ /dev/null
@@ -1,34 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Nuevo comentario ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Post",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}",
- "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con id {id}",
- "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}",
- "Error occurred while posting comment" : "Se ha producido un error al publicar un comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentar",
- "You commented" : "Ud. ha comentado",
- "%1$s commented" : "%1$s comentados",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Ud. ah comentado en %1$s",
- "You commented on {file}" : "Ud. ha comentado en {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_AR.json b/apps/comments/l10n/es_AR.json
deleted file mode 100644
index 032f4a58f5a..00000000000
--- a/apps/comments/l10n/es_AR.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Nuevo comentario ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Post",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} of {max}",
- "Error occurred while retrieving comment with id {id}" : "Se ha producido un error al recuperar el comentario con id {id}",
- "Error occurred while updating comment with id {id}" : "Se ha producido un error al actualizar el comentario con id {id}",
- "Error occurred while posting comment" : "Se ha producido un error al publicar un comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentar",
- "You commented" : "Ud. ha comentado",
- "%1$s commented" : "%1$s comentados",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Ud. ah comentado en %1$s",
- "You commented on {file}" : "Ud. ha comentado en {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te ha mencionado en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te ha mencionado en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un (now) usuario borrado te ha mencionado en un comentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (now) usuario borrado the ha mencionado en un comentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_CL.js b/apps/comments/l10n/es_CL.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_CL.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_CL.json b/apps/comments/l10n/es_CL.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_CL.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_CO.js b/apps/comments/l10n/es_CO.js
index df46f2006af..b8516c1449b 100644
--- a/apps/comments/l10n/es_CO.js
+++ b/apps/comments/l10n/es_CO.js
@@ -2,35 +2,34 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
+ "Files" : "Archivo",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”",
+ "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "New comment" : "Nuevo comentario",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/es_CO.json b/apps/comments/l10n/es_CO.json
index d388b93cb63..c212111b999 100644
--- a/apps/comments/l10n/es_CO.json
+++ b/apps/comments/l10n/es_CO.json
@@ -1,34 +1,33 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "Files" : "Archivo",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} le mencionó en un comentario en “{file}”",
+ "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "New comment" : "Nuevo comentario",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/es_CR.js b/apps/comments/l10n/es_CR.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_CR.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_CR.json b/apps/comments/l10n/es_CR.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_CR.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_DO.js b/apps/comments/l10n/es_DO.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_DO.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_DO.json b/apps/comments/l10n/es_DO.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_DO.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_EC.js b/apps/comments/l10n/es_EC.js
index df46f2006af..1a90e73546f 100644
--- a/apps/comments/l10n/es_EC.js
+++ b/apps/comments/l10n/es_EC.js
@@ -2,35 +2,30 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
+ "Files" : "Archivo",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} te mencionó en un comentario en \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "Post comment" : "Publicar comentario",
+ "Failed to mark comments as read" : "Error al marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario eliminado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/es_EC.json b/apps/comments/l10n/es_EC.json
index d388b93cb63..23c9432df1a 100644
--- a/apps/comments/l10n/es_EC.json
+++ b/apps/comments/l10n/es_EC.json
@@ -1,34 +1,29 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "Files" : "Archivo",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} te mencionó en un comentario en \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin de la aplicación de archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "Post comment" : "Publicar comentario",
+ "Failed to mark comments as read" : "Error al marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} comentarios nuevos","{unread} comentarios nuevos"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario eliminado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/es_GT.js b/apps/comments/l10n/es_GT.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_GT.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_GT.json b/apps/comments/l10n/es_GT.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_GT.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_HN.js b/apps/comments/l10n/es_HN.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_HN.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_HN.json b/apps/comments/l10n/es_HN.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_HN.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_MX.js b/apps/comments/l10n/es_MX.js
index df46f2006af..30959ef751f 100644
--- a/apps/comments/l10n/es_MX.js
+++ b/apps/comments/l10n/es_MX.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
+ "Files" : "Archivo",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} lo mencionó en un comentario en \"{file}\"",
+ "Files app plugin to add comments to files" : "Un complemento a la aplicación de Archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "New comment" : "Nuevo comentario",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/es_MX.json b/apps/comments/l10n/es_MX.json
index d388b93cb63..db42c396705 100644
--- a/apps/comments/l10n/es_MX.json
+++ b/apps/comments/l10n/es_MX.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
"You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
"{author} commented" : "{author} comentó",
"You commented on %1$s" : "Usted comentó en %1$s",
"You commented on {file}" : "Hiciste un comentario de {file}",
"%1$s commented on %2$s" : "%1$s comentó en %2$s",
"{author} commented on {file}" : "{author} comentó en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "Files" : "Archivo",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Fue mencionado en \"{file}\", en un comentario realizado por un usuario que ha sido eliminado",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} lo mencionó en un comentario en \"{file}\"",
+ "Files app plugin to add comments to files" : "Un complemento a la aplicación de Archivos para agregar comentarios a los archivos",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Borrar comentario",
+ "Cancel edit" : "Cancelar edición",
+ "New comment" : "Nuevo comentario",
+ "Write a comment …" : "Escribir un comentario …",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoticonos, / para selector inteligente",
+ "Could not reload comments" : "No se pudieron recargar los comentarios",
+ "Failed to mark comments as read" : "No se pudieron marcar los comentarios como leídos",
+ "Unable to load the comments list" : "No se puede cargar la lista de comentarios",
+ "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
+ "No more messages" : "No hay más mensajes",
+ "Retry" : "Reintentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario nuevo","{unread} nuevos comentarios","{unread} nuevos comentarios"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Ocurrió un error al intentar editar el comentario",
+ "Comment deleted" : "Comentario borrado",
+ "An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
+ "An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/es_NI.js b/apps/comments/l10n/es_NI.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_NI.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_NI.json b/apps/comments/l10n/es_NI.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_NI.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_PA.js b/apps/comments/l10n/es_PA.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_PA.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_PA.json b/apps/comments/l10n/es_PA.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_PA.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_PE.js b/apps/comments/l10n/es_PE.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_PE.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_PE.json b/apps/comments/l10n/es_PE.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_PE.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_PR.js b/apps/comments/l10n/es_PR.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_PR.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_PR.json b/apps/comments/l10n/es_PR.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_PR.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_PY.js b/apps/comments/l10n/es_PY.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_PY.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_PY.json b/apps/comments/l10n/es_PY.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_PY.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_SV.js b/apps/comments/l10n/es_SV.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_SV.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_SV.json b/apps/comments/l10n/es_SV.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_SV.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/es_UY.js b/apps/comments/l10n/es_UY.js
deleted file mode 100644
index df46f2006af..00000000000
--- a/apps/comments/l10n/es_UY.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/es_UY.json b/apps/comments/l10n/es_UY.json
deleted file mode 100644
index d388b93cb63..00000000000
--- a/apps/comments/l10n/es_UY.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "Comentarios",
- "New comment …" : "Comentario nuevo ...",
- "Delete comment" : "Borrar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario borrado]",
- "No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
- "More comments …" : "Más comentarios ...",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Se presentó un error al recuperar el comentario con Id {id}",
- "Error occurred while updating comment with id {id}" : "Se presentó un error al actualizar el comentario con Id {id}",
- "Error occurred while posting comment" : "Se presentó un error al publicar el comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer"],
- "Comment" : "Comentario",
- "You commented" : "Comentaste",
- "%1$s commented" : "%1$s comentó",
- "{author} commented" : "{author} comentó",
- "You commented on %1$s" : "Usted comentó en %1$s",
- "You commented on {file}" : "Hiciste un comentario de {file}",
- "%1$s commented on %2$s" : "%1$s comentó en %2$s",
- "{author} commented on {file}" : "{author} comentó en {file}",
- "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> de los archivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Te mencionaron en \"%s\", en un comentario de un usuario que ya ha sido borrado",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te mencionó en un comentario en “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”",
- "Unknown user" : "Usuario desconocido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (ahora) borrado te mencionó en un commentario en “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (ahora) borrado te mencionó en un commentario en “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/et_EE.js b/apps/comments/l10n/et_EE.js
index 952ac372a3d..f8e80d0e690 100644
--- a/apps/comments/l10n/et_EE.js
+++ b/apps/comments/l10n/et_EE.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentaarid",
- "New comment …" : "Uus kommentaar",
- "Delete comment" : "Kustuta kommentaar",
- "Post" : "Postita",
- "Cancel" : "Loobu",
- "Edit comment" : "Muuda kommentaari",
- "[Deleted user]" : "[Kustutatud kasutaja]",
- "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust",
- "More comments …" : "Veel kommentaare ...",
- "Save" : "Salvesta",
- "Allowed characters {count} of {max}" : "Lubatud märkide arv {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Kommentaari {id} laadimisel tekkis tõrge",
- "Error occurred while updating comment with id {id}" : "Kommentaari {id} uuendamisel tekkis tõrge",
- "Error occurred while posting comment" : "Viga kommentaari postitamisel",
- "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"],
- "Comment" : "Kommentaar",
"You commented" : "Sa kommenteerisid",
- "%1$s commented" : "%1$s kommenteeris",
"{author} commented" : "{author} kommenteeris",
"You commented on %1$s" : "Sa kommmenteerisid %1$s",
"You commented on {file}" : "Sa kommenteerisid faili {file}",
"%1$s commented on %2$s" : "%1$s kommenteeris %2$s",
"{author} commented on {file}" : "{author} kommenteeris faili {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris",
- "{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris",
- "Unknown user" : "Tundmatu kasutaja",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Kustutatud kasutaja mainis sind faili \"{file}\" kommentaaris"
+ "Files" : "Failid",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sind mainiti \"{file}\" kommentaarides konto poolt, mis on nüüdseks kustutatud",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mainis sind faili \"{file}\" kommentaaris",
+ "Files app plugin to add comments to files" : "Failid rakenduse laiendus failidele kommentaaride lisamiseks",
+ "Edit comment" : "Muuda kommentaari",
+ "Delete comment" : "Kustuta kommentaar",
+ "Cancel edit" : "Loobu muutmisest",
+ "New comment" : "Uus kommentaar",
+ "Write a comment …" : "Kirjuta kommentaar...",
+ "Post comment" : "Postita kommentaar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks",
+ "Could not reload comments" : "Ei saanud kommentaare uuesti laadida",
+ "Failed to mark comments as read" : "Kommentaaride loetuks märkimine ebaõnnestus",
+ "Unable to load the comments list" : "Kommentaaride loendi laadimine ebaõnnestus",
+ "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust!",
+ "No more messages" : "Rohkem teateid pole",
+ "Retry" : "Proovi uuesti",
+ "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"],
+ "Comment" : "Kommentaar",
+ "An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge",
+ "Comment deleted" : "Kommentaar kustutatud",
+ "An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
+ "An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/et_EE.json b/apps/comments/l10n/et_EE.json
index abe05a2eb81..3c56525cb0c 100644
--- a/apps/comments/l10n/et_EE.json
+++ b/apps/comments/l10n/et_EE.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Kommentaarid",
- "New comment …" : "Uus kommentaar",
- "Delete comment" : "Kustuta kommentaar",
- "Post" : "Postita",
- "Cancel" : "Loobu",
- "Edit comment" : "Muuda kommentaari",
- "[Deleted user]" : "[Kustutatud kasutaja]",
- "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust",
- "More comments …" : "Veel kommentaare ...",
- "Save" : "Salvesta",
- "Allowed characters {count} of {max}" : "Lubatud märkide arv {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Kommentaari {id} laadimisel tekkis tõrge",
- "Error occurred while updating comment with id {id}" : "Kommentaari {id} uuendamisel tekkis tõrge",
- "Error occurred while posting comment" : "Viga kommentaari postitamisel",
- "_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"],
- "Comment" : "Kommentaar",
"You commented" : "Sa kommenteerisid",
- "%1$s commented" : "%1$s kommenteeris",
"{author} commented" : "{author} kommenteeris",
"You commented on %1$s" : "Sa kommmenteerisid %1$s",
"You commented on {file}" : "Sa kommenteerisid faili {file}",
"%1$s commented on %2$s" : "%1$s kommenteeris %2$s",
"{author} commented on {file}" : "{author} kommenteeris faili {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris",
- "{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris",
- "Unknown user" : "Tundmatu kasutaja",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Kustutatud kasutaja mainis sind faili \"{file}\" kommentaaris"
+ "Files" : "Failid",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sind mainiti \"{file}\" kommentaarides konto poolt, mis on nüüdseks kustutatud",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mainis sind faili \"{file}\" kommentaaris",
+ "Files app plugin to add comments to files" : "Failid rakenduse laiendus failidele kommentaaride lisamiseks",
+ "Edit comment" : "Muuda kommentaari",
+ "Delete comment" : "Kustuta kommentaar",
+ "Cancel edit" : "Loobu muutmisest",
+ "New comment" : "Uus kommentaar",
+ "Write a comment …" : "Kirjuta kommentaar...",
+ "Post comment" : "Postita kommentaar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ mainimiseks, : emojide jaoks, / nutika valija jaoks",
+ "Could not reload comments" : "Ei saanud kommentaare uuesti laadida",
+ "Failed to mark comments as read" : "Kommentaaride loetuks märkimine ebaõnnestus",
+ "Unable to load the comments list" : "Kommentaaride loendi laadimine ebaõnnestus",
+ "No comments yet, start the conversation!" : "Kommentaare veel pole, alusta vestlust!",
+ "No more messages" : "Rohkem teateid pole",
+ "Retry" : "Proovi uuesti",
+ "_1 new comment_::_{unread} new comments_" : ["1 uus kommentaar","{unread} uus kommentaar"],
+ "Comment" : "Kommentaar",
+ "An error occurred while trying to edit the comment" : "Kommentaari muutmisel tekkis tõrge",
+ "Comment deleted" : "Kommentaar kustutatud",
+ "An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
+ "An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/eu.js b/apps/comments/l10n/eu.js
index aa2a3711acd..efa029c41ad 100644
--- a/apps/comments/l10n/eu.js
+++ b/apps/comments/l10n/eu.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Iruzkinak",
- "New comment …" : "Iruzkin berria...",
+ "You commented" : "Iruzkindu duzu",
+ "{author} commented" : "{author}-(e)k iruzkindu du",
+ "You commented on %1$s" : "%1$s-en iruzkindu duzu",
+ "You commented on {file}" : "{file} fitxategian iruzkina egin duzu",
+ "%1$s commented on %2$s" : "%1$s-ek %2$s-en iruzkindu du",
+ "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkina egin du",
+ "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak</strong>",
+ "Files" : "Fitxategiak",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den kontu baten iruzkin batean",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} erabiltzaileak aipatu zaitu \"{file}\"-eko iruzkin batean",
+ "Files app plugin to add comments to files" : "Fitxategiak aplikazioko plugina, fitxategiei iruzkinak gehitzeko",
+ "Edit comment" : "Editatu iruzkina",
"Delete comment" : "Ezabatu iruzkina",
- "Post" : "Bidali",
- "Cancel" : "Utzi",
- "Edit comment" : "Iruzkina editatu",
- "[Deleted user]" : "[Deleted user]",
+ "Cancel edit" : "Utzi editatzeari",
+ "New comment" : "Iruzkin berria",
+ "Write a comment …" : "Idatzi iruzkin bat ...",
+ "Post comment" : "Argitaratu iruzkina",
+ "@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
+ "Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+ "Failed to mark comments as read" : "Iruzkinak irakurritako gisa markatzeak huts egin du",
+ "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu",
"No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!",
- "More comments …" : "Iruzkin gehiago...",
- "Save" : "Gorde",
- "Allowed characters {count} of {max}" : "Onartutako karaktereak {max}-tik {count}",
- "Error occurred while retrieving comment with id {id}" : "Akatsa gertatu da {id} id duen iruzkina berreskuratzerakoan",
- "Error occurred while updating comment with id {id}" : "Akats bat gertatu da {id} id duen iruzkina aldatzerakoan",
- "Error occurred while posting comment" : "Akats bat gertatu da iruzkina bidaltzerakoan",
- "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"],
- "Comment" : "Iruzkina",
- "You commented" : "Iruzkindu duzu",
- "%1$s commented" : "%1$s iruzkin du",
- "{author} commented" : "{author}-(e)k iruzkin du",
- "You commented on %1$s" : "%1$s-en Iruzkin duzu",
- "You commented on {file}" : "{file}-en Iruzkin duzu",
- "%1$s commented on %2$s" : "%1$s %2$s-en iruzkin du",
- "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkin du",
- "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s-(e)k aipatu zaitu iruzkinean “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user}-(e)k aipatu zaitu iruzkinean “{file}”",
- "Unknown user" : "Erabiltzaile ezezaguna",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean “{file}”"
+ "No more messages" : "Ez da mezu gehiagorik",
+ "Retry" : "Saiatu berriro",
+ "_1 new comment_::_{unread} new comments_" : ["Iruzkin berri 1","{unread} iruzkin berri"],
+ "Comment" : "Iruzkindu",
+ "An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean",
+ "Comment deleted" : "Iruzkina ezabatu da",
+ "An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
+ "An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/eu.json b/apps/comments/l10n/eu.json
index 2fdafcf45fc..9df5961d387 100644
--- a/apps/comments/l10n/eu.json
+++ b/apps/comments/l10n/eu.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Iruzkinak",
- "New comment …" : "Iruzkin berria...",
+ "You commented" : "Iruzkindu duzu",
+ "{author} commented" : "{author}-(e)k iruzkindu du",
+ "You commented on %1$s" : "%1$s-en iruzkindu duzu",
+ "You commented on {file}" : "{file} fitxategian iruzkina egin duzu",
+ "%1$s commented on %2$s" : "%1$s-ek %2$s-en iruzkindu du",
+ "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkina egin du",
+ "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak</strong>",
+ "Files" : "Fitxategiak",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\"-n aipatu zaituzte, dagoeneko ezabatu den kontu baten iruzkin batean",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} erabiltzaileak aipatu zaitu \"{file}\"-eko iruzkin batean",
+ "Files app plugin to add comments to files" : "Fitxategiak aplikazioko plugina, fitxategiei iruzkinak gehitzeko",
+ "Edit comment" : "Editatu iruzkina",
"Delete comment" : "Ezabatu iruzkina",
- "Post" : "Bidali",
- "Cancel" : "Utzi",
- "Edit comment" : "Iruzkina editatu",
- "[Deleted user]" : "[Deleted user]",
+ "Cancel edit" : "Utzi editatzeari",
+ "New comment" : "Iruzkin berria",
+ "Write a comment …" : "Idatzi iruzkin bat ...",
+ "Post comment" : "Argitaratu iruzkina",
+ "@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
+ "Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+ "Failed to mark comments as read" : "Iruzkinak irakurritako gisa markatzeak huts egin du",
+ "Unable to load the comments list" : "Ezin da iruzkinen zerrenda kargatu",
"No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!",
- "More comments …" : "Iruzkin gehiago...",
- "Save" : "Gorde",
- "Allowed characters {count} of {max}" : "Onartutako karaktereak {max}-tik {count}",
- "Error occurred while retrieving comment with id {id}" : "Akatsa gertatu da {id} id duen iruzkina berreskuratzerakoan",
- "Error occurred while updating comment with id {id}" : "Akats bat gertatu da {id} id duen iruzkina aldatzerakoan",
- "Error occurred while posting comment" : "Akats bat gertatu da iruzkina bidaltzerakoan",
- "_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"],
- "Comment" : "Iruzkina",
- "You commented" : "Iruzkindu duzu",
- "%1$s commented" : "%1$s iruzkin du",
- "{author} commented" : "{author}-(e)k iruzkin du",
- "You commented on %1$s" : "%1$s-en Iruzkin duzu",
- "You commented on {file}" : "{file}-en Iruzkin duzu",
- "%1$s commented on %2$s" : "%1$s %2$s-en iruzkin du",
- "{author} commented on {file}" : "{author}-(e)k {file}-en iruzkin du",
- "<strong>Comments</strong> for files" : "Fitxategientzako <strong>iruzkinak",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s-(e)k aipatu zaitu iruzkinean “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user}-(e)k aipatu zaitu iruzkinean “{file}”",
- "Unknown user" : "Erabiltzaile ezezaguna",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Orain) ezabatutako erabiltzaile batek aipatu zaitu iruzkinean “{file}”"
+ "No more messages" : "Ez da mezu gehiagorik",
+ "Retry" : "Saiatu berriro",
+ "_1 new comment_::_{unread} new comments_" : ["Iruzkin berri 1","{unread} iruzkin berri"],
+ "Comment" : "Iruzkindu",
+ "An error occurred while trying to edit the comment" : "Errorea gertatu da iruzkina editatzen saiatzean",
+ "Comment deleted" : "Iruzkina ezabatu da",
+ "An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
+ "An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/fa.js b/apps/comments/l10n/fa.js
index 2eed645ec36..3317f902043 100644
--- a/apps/comments/l10n/fa.js
+++ b/apps/comments/l10n/fa.js
@@ -1,8 +1,36 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "منصرف شدن",
- "Save" : "ذخیره",
- "Comment" : "نظر"
+ "Comments" : "نظرات",
+ "You commented" : "دیدگاه شما",
+ "{author} commented" : "{author} دیدگاهی گذاشت",
+ "You commented on %1$s" : "دیدگاهی برای %1$s ثبت کردید",
+ "You commented on {file}" : "دیدگاهی برای {file} ثبت کردید",
+ "%1$s commented on %2$s" : "%1$s دیدگاهی برای %2$s ثبت کرد",
+ "{author} commented on {file}" : "{author} دیدگاهی برای {file} ثبت کرد",
+ "<strong>Comments</strong> for files" : "<strong>دیدگاه‌های</strong> زیر پرونده‌ها ",
+ "Files" : "پرونده‌ها",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "شما در «{file}» و در دیدگاهی که توسط حسابی که بعدتر پاک شده است مورد اشاره قرار گرفته‌اید",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} در دیدگاهش زیر «{file}» به شما اشاره کرد",
+ "Files app plugin to add comments to files" : "افزونهٔ برنامهٔ Files برای افزودن دیدگاه به پرونده‌ها",
+ "Edit comment" : "ویرایش دیدگاه",
+ "Delete comment" : "حذف دیدگاه",
+ "Cancel edit" : "Cancel edit",
+ "New comment" : "دیدگاه جدید",
+ "Write a comment …" : "دیدگاهی بنویسید...",
+ "Post comment" : "فرستادن دیدگاه",
+ "@ for mentions, : for emoji, / for smart picker" : "@ برای اشاره، : برای شکلک، / برای انتخاب‌گر هوشمند",
+ "Could not reload comments" : "ناتوانی در دریافت دیدگاه‌ها",
+ "Failed to mark comments as read" : "ناتوانی در علامت زدن دیدگاه‌های به عنوان خوانده شده",
+ "Unable to load the comments list" : "ناتوانی در دریافت فهرست دیدگاه‌ها",
+ "No comments yet, start the conversation!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!",
+ "No more messages" : "No more messages",
+ "Retry" : "تلاش دوباره",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} دیدگاه جدید"],
+ "Comment" : "نظر",
+ "An error occurred while trying to edit the comment" : "خطایی در خلال تلاش برای ویرایش دیدگاه رخ داد",
+ "Comment deleted" : "دیدگاه حذف شد",
+ "An error occurred while trying to delete the comment" : "خطایی در خلال تلاش برای حذف دیدگاه رخ داد",
+ "An error occurred while trying to create the comment" : "خطایی در خلال تلاش برای ایجاد دیدگاه رخ داد"
},
-"nplurals=1; plural=0;");
+"nplurals=2; plural=(n > 1);");
diff --git a/apps/comments/l10n/fa.json b/apps/comments/l10n/fa.json
index 5b99e9f2896..59df258f222 100644
--- a/apps/comments/l10n/fa.json
+++ b/apps/comments/l10n/fa.json
@@ -1,6 +1,34 @@
{ "translations": {
- "Cancel" : "منصرف شدن",
- "Save" : "ذخیره",
- "Comment" : "نظر"
-},"pluralForm" :"nplurals=1; plural=0;"
+ "Comments" : "نظرات",
+ "You commented" : "دیدگاه شما",
+ "{author} commented" : "{author} دیدگاهی گذاشت",
+ "You commented on %1$s" : "دیدگاهی برای %1$s ثبت کردید",
+ "You commented on {file}" : "دیدگاهی برای {file} ثبت کردید",
+ "%1$s commented on %2$s" : "%1$s دیدگاهی برای %2$s ثبت کرد",
+ "{author} commented on {file}" : "{author} دیدگاهی برای {file} ثبت کرد",
+ "<strong>Comments</strong> for files" : "<strong>دیدگاه‌های</strong> زیر پرونده‌ها ",
+ "Files" : "پرونده‌ها",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "شما در «{file}» و در دیدگاهی که توسط حسابی که بعدتر پاک شده است مورد اشاره قرار گرفته‌اید",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} در دیدگاهش زیر «{file}» به شما اشاره کرد",
+ "Files app plugin to add comments to files" : "افزونهٔ برنامهٔ Files برای افزودن دیدگاه به پرونده‌ها",
+ "Edit comment" : "ویرایش دیدگاه",
+ "Delete comment" : "حذف دیدگاه",
+ "Cancel edit" : "Cancel edit",
+ "New comment" : "دیدگاه جدید",
+ "Write a comment …" : "دیدگاهی بنویسید...",
+ "Post comment" : "فرستادن دیدگاه",
+ "@ for mentions, : for emoji, / for smart picker" : "@ برای اشاره، : برای شکلک، / برای انتخاب‌گر هوشمند",
+ "Could not reload comments" : "ناتوانی در دریافت دیدگاه‌ها",
+ "Failed to mark comments as read" : "ناتوانی در علامت زدن دیدگاه‌های به عنوان خوانده شده",
+ "Unable to load the comments list" : "ناتوانی در دریافت فهرست دیدگاه‌ها",
+ "No comments yet, start the conversation!" : "هنوز هیچ نظری ندارید ، مکالمه را شروع کنید!",
+ "No more messages" : "No more messages",
+ "Retry" : "تلاش دوباره",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} دیدگاه جدید"],
+ "Comment" : "نظر",
+ "An error occurred while trying to edit the comment" : "خطایی در خلال تلاش برای ویرایش دیدگاه رخ داد",
+ "Comment deleted" : "دیدگاه حذف شد",
+ "An error occurred while trying to delete the comment" : "خطایی در خلال تلاش برای حذف دیدگاه رخ داد",
+ "An error occurred while trying to create the comment" : "خطایی در خلال تلاش برای ایجاد دیدگاه رخ داد"
+},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/fi.js b/apps/comments/l10n/fi.js
index 20389f92707..28a05c1659d 100644
--- a/apps/comments/l10n/fi.js
+++ b/apps/comments/l10n/fi.js
@@ -2,33 +2,33 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentit",
- "New comment …" : "Uusi kommentti…",
- "Delete comment" : "Poista kommentti",
- "Post" : "Lähetä",
- "Cancel" : "Peruuta",
- "Edit comment" : "Muokkaa kommenttia",
- "[Deleted user]" : "[Poistettu käyttäjä]",
- "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
- "More comments …" : "Lisää kommentteja…",
- "Save" : "Tallenna",
- "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}",
- "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}",
- "Error occurred while posting comment" : "Virhe kommenttia lähettäessä",
- "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"],
- "Comment" : "Kommentti",
"You commented" : "Kommentoit",
- "%1$s commented" : "%1$s kommentoi",
"{author} commented" : "{author} kommentoi",
"You commented on %1$s" : "Kommentoit %1$s",
"You commented on {file}" : "Kommentoit tiedostoa {file}",
"%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s",
"{author} commented on {file}" : "{author} kommentoi tiedostoa {file}",
"<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainitsi sinut kommentissa “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa",
- "Unknown user" : "Tuntematon käyttäjä",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Poistettu käyttäjä mainitsi sinut kommentissa \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Poistettu käyttäjä mainitsi sinut tiedoston \"{file}\" kommentissa"
+ "Files" : "Tiedostot",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa",
+ "Edit comment" : "Muokkaa kommenttia",
+ "Delete comment" : "Poista kommentti",
+ "Cancel edit" : "Peruuta muokkaus",
+ "New comment" : "Uusi kommentti",
+ "Write a comment …" : "Kirjoita kommentti…",
+ "Post comment" : "Lähetä viesti",
+ "@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle",
+ "Could not reload comments" : "Kommenttien lataus epäonnistui",
+ "Failed to mark comments as read" : "Kommenttien merkitseminen luetuksi epäonnistui",
+ "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata",
+ "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
+ "No more messages" : "Ei enempää viestejä",
+ "Retry" : "Yritä uudelleen",
+ "_1 new comment_::_{unread} new comments_" : ["1 uusi kommentti","{unread} uutta kommenttia"],
+ "Comment" : "Kommentti",
+ "An error occurred while trying to edit the comment" : "Kommenttia muokatessa tapahtui virhe",
+ "Comment deleted" : "Kommentti poistettu",
+ "An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe",
+ "An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/fi.json b/apps/comments/l10n/fi.json
index 6d92e0d4be2..a8943301573 100644
--- a/apps/comments/l10n/fi.json
+++ b/apps/comments/l10n/fi.json
@@ -1,32 +1,32 @@
{ "translations": {
"Comments" : "Kommentit",
- "New comment …" : "Uusi kommentti…",
- "Delete comment" : "Poista kommentti",
- "Post" : "Lähetä",
- "Cancel" : "Peruuta",
- "Edit comment" : "Muokkaa kommenttia",
- "[Deleted user]" : "[Poistettu käyttäjä]",
- "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
- "More comments …" : "Lisää kommentteja…",
- "Save" : "Tallenna",
- "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}",
- "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}",
- "Error occurred while posting comment" : "Virhe kommenttia lähettäessä",
- "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"],
- "Comment" : "Kommentti",
"You commented" : "Kommentoit",
- "%1$s commented" : "%1$s kommentoi",
"{author} commented" : "{author} kommentoi",
"You commented on %1$s" : "Kommentoit %1$s",
"You commented on {file}" : "Kommentoit tiedostoa {file}",
"%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s",
"{author} commented on {file}" : "{author} kommentoi tiedostoa {file}",
"<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mainitsi sinut kommentissa “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa",
- "Unknown user" : "Tuntematon käyttäjä",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Poistettu käyttäjä mainitsi sinut kommentissa \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Poistettu käyttäjä mainitsi sinut tiedoston \"{file}\" kommentissa"
+ "Files" : "Tiedostot",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mainitsi sinut tiedoston \"{file}\" kommentissa",
+ "Edit comment" : "Muokkaa kommenttia",
+ "Delete comment" : "Poista kommentti",
+ "Cancel edit" : "Peruuta muokkaus",
+ "New comment" : "Uusi kommentti",
+ "Write a comment …" : "Kirjoita kommentti…",
+ "Post comment" : "Lähetä viesti",
+ "@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle",
+ "Could not reload comments" : "Kommenttien lataus epäonnistui",
+ "Failed to mark comments as read" : "Kommenttien merkitseminen luetuksi epäonnistui",
+ "Unable to load the comments list" : "Kommenttilistaa ei voitu ladata",
+ "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
+ "No more messages" : "Ei enempää viestejä",
+ "Retry" : "Yritä uudelleen",
+ "_1 new comment_::_{unread} new comments_" : ["1 uusi kommentti","{unread} uutta kommenttia"],
+ "Comment" : "Kommentti",
+ "An error occurred while trying to edit the comment" : "Kommenttia muokatessa tapahtui virhe",
+ "Comment deleted" : "Kommentti poistettu",
+ "An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe",
+ "An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/fi_FI.js b/apps/comments/l10n/fi_FI.js
deleted file mode 100644
index 18a26d6f1f0..00000000000
--- a/apps/comments/l10n/fi_FI.js
+++ /dev/null
@@ -1,30 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Kommentit",
- "New comment …" : "Uusi kommentti …",
- "Delete comment" : "Poista kommentti",
- "Post" : "Lähetä",
- "Cancel" : "Peruuta",
- "Edit comment" : "Muokkaa kommenttia",
- "[Deleted user]" : "[Poistettu käyttäjä]",
- "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
- "More comments …" : "Lisää kommentteja …",
- "Save" : "Tallenna",
- "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}",
- "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}",
- "Error occurred while posting comment" : "Virhe kommenttia lähettäessä",
- "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"],
- "Comment" : "Kommentti",
- "You commented" : "Kommentoit",
- "%1$s commented" : "%1$s kommentoi",
- "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s",
- "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>",
- "Type in a new comment..." : "Kirjoita uusi kommentti...",
- "No other comments available" : "Ei muita kommentteja saatavilla",
- "More comments..." : "Lisää kommentteja...",
- "{count} unread comments" : "{count} lukematonta kommenttia",
- "You commented on %2$s" : "Kommentoit %2$s"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/fi_FI.json b/apps/comments/l10n/fi_FI.json
deleted file mode 100644
index b5b825454cc..00000000000
--- a/apps/comments/l10n/fi_FI.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{ "translations": {
- "Comments" : "Kommentit",
- "New comment …" : "Uusi kommentti …",
- "Delete comment" : "Poista kommentti",
- "Post" : "Lähetä",
- "Cancel" : "Peruuta",
- "Edit comment" : "Muokkaa kommenttia",
- "[Deleted user]" : "[Poistettu käyttäjä]",
- "No comments yet, start the conversation!" : "Ei kommentteja vielä. Aloita keskustelu!",
- "More comments …" : "Lisää kommentteja …",
- "Save" : "Tallenna",
- "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}",
- "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}",
- "Error occurred while posting comment" : "Virhe kommenttia lähettäessä",
- "_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"],
- "Comment" : "Kommentti",
- "You commented" : "Kommentoit",
- "%1$s commented" : "%1$s kommentoi",
- "%1$s commented on %2$s" : "%1$s kommentoi kohdetta %2$s",
- "<strong>Comments</strong> for files" : "Tiedostojen <strong>kommentit</strong>",
- "Type in a new comment..." : "Kirjoita uusi kommentti...",
- "No other comments available" : "Ei muita kommentteja saatavilla",
- "More comments..." : "Lisää kommentteja...",
- "{count} unread comments" : "{count} lukematonta kommenttia",
- "You commented on %2$s" : "Kommentoit %2$s"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/fil.js b/apps/comments/l10n/fil.js
deleted file mode 100644
index e3734cb6ceb..00000000000
--- a/apps/comments/l10n/fil.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "I-cancel"
-},
-"nplurals=2; plural=(n > 1);");
diff --git a/apps/comments/l10n/fil.json b/apps/comments/l10n/fil.json
deleted file mode 100644
index a368f5adea8..00000000000
--- a/apps/comments/l10n/fil.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Cancel" : "I-cancel"
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/fr.js b/apps/comments/l10n/fr.js
index 3a0fa3cbc9a..a1f24df6b80 100644
--- a/apps/comments/l10n/fr.js
+++ b/apps/comments/l10n/fr.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Commentaires",
- "New comment …" : "Nouveau commentaire...",
- "Delete comment" : "Supprimer le commentaire",
- "Post" : "Poster",
- "Cancel" : "Annuler",
- "Edit comment" : "Modifier le commentaire",
- "[Deleted user]" : "[Utilisateur supprimé]",
- "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
- "More comments …" : "Plus de commentaires ...",
- "Save" : "Enregistrer",
- "Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
- "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}",
- "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}",
- "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire",
- "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus"],
- "Comment" : "Commenter",
"You commented" : "Vous avez commenté",
- "%1$s commented" : "%1$s a commenté",
"{author} commented" : "{author} a commenté",
"You commented on %1$s" : "Vous avez commenté %1$s",
"You commented on {file}" : "Vous avez commenté {file}",
"%1$s commented on %2$s" : "%1$s a commenté %2$s",
"{author} commented on {file}" : "{author} a commenté sur {file}",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"%s\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"{file}\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vous a mentionné⋅e dans un commentaire sur “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} vous a mentionné⋅e dans un commentaire sur “{file}”",
- "Unknown user" : "Utilisateur·trice inconnu·e",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “{file}”"
+ "Files" : "Fichiers",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »",
+ "Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers",
+ "Edit comment" : "Modifier le commentaire",
+ "Delete comment" : "Supprimer le commentaire",
+ "Cancel edit" : "Annuler les modifications",
+ "New comment" : "Nouveau commentaire",
+ "Write a comment …" : "Écrire un commentaire…",
+ "Post comment" : "Publier le commentaire",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
+ "Could not reload comments" : "Impossible de recharger les commentaires",
+ "Failed to mark comments as read" : "Les commentaires n'ont pas été marqués comme lus",
+ "Unable to load the comments list" : "Impossible de charger la liste des commentaires",
+ "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
+ "No more messages" : "Aucun autre message",
+ "Retry" : "Réessayer",
+ "_1 new comment_::_{unread} new comments_" : ["1 nouveau commentaire","{unread} nouveaux commentaires","{unread} nouveaux commentaires"],
+ "Comment" : "Commenter",
+ "An error occurred while trying to edit the comment" : "Une erreur s'est produite lors de la tentative de modification du commentaire",
+ "Comment deleted" : "Commentaire supprimé",
+ "An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire",
+ "An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire"
},
-"nplurals=2; plural=(n > 1);");
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/fr.json b/apps/comments/l10n/fr.json
index 8c66c7b6c09..861754c9719 100644
--- a/apps/comments/l10n/fr.json
+++ b/apps/comments/l10n/fr.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Commentaires",
- "New comment …" : "Nouveau commentaire...",
- "Delete comment" : "Supprimer le commentaire",
- "Post" : "Poster",
- "Cancel" : "Annuler",
- "Edit comment" : "Modifier le commentaire",
- "[Deleted user]" : "[Utilisateur supprimé]",
- "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
- "More comments …" : "Plus de commentaires ...",
- "Save" : "Enregistrer",
- "Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
- "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}",
- "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}",
- "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire",
- "_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus"],
- "Comment" : "Commenter",
"You commented" : "Vous avez commenté",
- "%1$s commented" : "%1$s a commenté",
"{author} commented" : "{author} a commenté",
"You commented on %1$s" : "Vous avez commenté %1$s",
"You commented on {file}" : "Vous avez commenté {file}",
"%1$s commented on %2$s" : "%1$s a commenté %2$s",
"{author} commented on {file}" : "{author} a commenté sur {file}",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"%s\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Vous avez été mentionné sur \"{file}\", dans un commentaire par un utilisateur qui a été supprimé depuis lors.",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vous a mentionné⋅e dans un commentaire sur “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} vous a mentionné⋅e dans un commentaire sur “{file}”",
- "Unknown user" : "Utilisateur·trice inconnu·e",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un·e utilisateur·trice (maintenant supprimé·e) vous a mentionné·e dans un commentaire sur “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
+ "Files" : "Fichiers",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »",
+ "Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers",
+ "Edit comment" : "Modifier le commentaire",
+ "Delete comment" : "Supprimer le commentaire",
+ "Cancel edit" : "Annuler les modifications",
+ "New comment" : "Nouveau commentaire",
+ "Write a comment …" : "Écrire un commentaire…",
+ "Post comment" : "Publier le commentaire",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
+ "Could not reload comments" : "Impossible de recharger les commentaires",
+ "Failed to mark comments as read" : "Les commentaires n'ont pas été marqués comme lus",
+ "Unable to load the comments list" : "Impossible de charger la liste des commentaires",
+ "No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
+ "No more messages" : "Aucun autre message",
+ "Retry" : "Réessayer",
+ "_1 new comment_::_{unread} new comments_" : ["1 nouveau commentaire","{unread} nouveaux commentaires","{unread} nouveaux commentaires"],
+ "Comment" : "Commenter",
+ "An error occurred while trying to edit the comment" : "Une erreur s'est produite lors de la tentative de modification du commentaire",
+ "Comment deleted" : "Commentaire supprimé",
+ "An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire",
+ "An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ga.js b/apps/comments/l10n/ga.js
new file mode 100644
index 00000000000..32438cb60ec
--- /dev/null
+++ b/apps/comments/l10n/ga.js
@@ -0,0 +1,36 @@
+OC.L10N.register(
+ "comments",
+ {
+ "Comments" : "Tuairimí",
+ "You commented" : "Rinne tú trácht",
+ "{author} commented" : "Rinne {author} nóta tráchta",
+ "You commented on %1$s" : "Rinne tú trácht ar%1$s",
+ "You commented on {file}" : "Rinne tú trácht ar {file}",
+ "%1$s commented on %2$s" : "%1$s trácht ar %2$s",
+ "{author} commented on {file}" : "{author} trácht ar {file}",
+ "<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid",
+ "Files" : "Comhaid",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin",
+ "{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"",
+ "Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid",
+ "Edit comment" : "Cuir trácht in eagar",
+ "Delete comment" : "Scrios nóta tráchta",
+ "Cancel edit" : "Cealaigh eagarthóireacht",
+ "New comment" : "Trácht nua",
+ "Write a comment …" : "Scríobh trácht…",
+ "Post comment" : "Post trácht",
+ "@ for mentions, : for emoji, / for smart picker" : "@ le haghaidh tagairtí, : le haghaidh emoji, / le haghaidh roghnóir cliste",
+ "Could not reload comments" : "Níorbh fhéidir na nótaí tráchta a athlódáil",
+ "Failed to mark comments as read" : "Theip ar nótaí tráchta a mharcáil mar léite",
+ "Unable to load the comments list" : "Ní féidir an liosta tuairimí a lódáil",
+ "No comments yet, start the conversation!" : "Gan trácht ar bith go fóill, cuir tús leis an gcomhrá!",
+ "No more messages" : "Níl a thuilleadh teachtaireachtaí",
+ "Retry" : "Bain triail eile as",
+ "_1 new comment_::_{unread} new comments_" : ["1 trácht nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua"],
+ "Comment" : "Trácht",
+ "An error occurred while trying to edit the comment" : "Tharla earráid agus an nóta tráchta á chur in eagar",
+ "Comment deleted" : "Trácht scriosta",
+ "An error occurred while trying to delete the comment" : "Tharla earráid agus an nóta tráchta á scriosadh",
+ "An error occurred while trying to create the comment" : "Tharla earráid agus an nóta tráchta á chruthú"
+},
+"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
diff --git a/apps/comments/l10n/ga.json b/apps/comments/l10n/ga.json
new file mode 100644
index 00000000000..4442145dea6
--- /dev/null
+++ b/apps/comments/l10n/ga.json
@@ -0,0 +1,34 @@
+{ "translations": {
+ "Comments" : "Tuairimí",
+ "You commented" : "Rinne tú trácht",
+ "{author} commented" : "Rinne {author} nóta tráchta",
+ "You commented on %1$s" : "Rinne tú trácht ar%1$s",
+ "You commented on {file}" : "Rinne tú trácht ar {file}",
+ "%1$s commented on %2$s" : "%1$s trácht ar %2$s",
+ "{author} commented on {file}" : "{author} trácht ar {file}",
+ "<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid",
+ "Files" : "Comhaid",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin",
+ "{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"",
+ "Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid",
+ "Edit comment" : "Cuir trácht in eagar",
+ "Delete comment" : "Scrios nóta tráchta",
+ "Cancel edit" : "Cealaigh eagarthóireacht",
+ "New comment" : "Trácht nua",
+ "Write a comment …" : "Scríobh trácht…",
+ "Post comment" : "Post trácht",
+ "@ for mentions, : for emoji, / for smart picker" : "@ le haghaidh tagairtí, : le haghaidh emoji, / le haghaidh roghnóir cliste",
+ "Could not reload comments" : "Níorbh fhéidir na nótaí tráchta a athlódáil",
+ "Failed to mark comments as read" : "Theip ar nótaí tráchta a mharcáil mar léite",
+ "Unable to load the comments list" : "Ní féidir an liosta tuairimí a lódáil",
+ "No comments yet, start the conversation!" : "Gan trácht ar bith go fóill, cuir tús leis an gcomhrá!",
+ "No more messages" : "Níl a thuilleadh teachtaireachtaí",
+ "Retry" : "Bain triail eile as",
+ "_1 new comment_::_{unread} new comments_" : ["1 trácht nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua","{unread} nóta tráchta nua"],
+ "Comment" : "Trácht",
+ "An error occurred while trying to edit the comment" : "Tharla earráid agus an nóta tráchta á chur in eagar",
+ "Comment deleted" : "Trácht scriosta",
+ "An error occurred while trying to delete the comment" : "Tharla earráid agus an nóta tráchta á scriosadh",
+ "An error occurred while trying to create the comment" : "Tharla earráid agus an nóta tráchta á chruthú"
+},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
+} \ No newline at end of file
diff --git a/apps/comments/l10n/gl.js b/apps/comments/l10n/gl.js
index f151a238db4..364e95abc69 100644
--- a/apps/comments/l10n/gl.js
+++ b/apps/comments/l10n/gl.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarios",
- "New comment …" : "Comentario novo …",
- "Delete comment" : "Eliminar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario eliminado]",
- "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
- "More comments …" : "Máis comentarios …",
- "Save" : "Gardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Produciuse un erro ao recuperar o comentario co ID {id}",
- "Error occurred while updating comment with id {id}" : "Produciuse un erro ao actualizar o comentario co ID {id}",
- "Error occurred while posting comment" : "Produciuse un erro ao publicar o comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"],
- "Comment" : "Comentario",
- "You commented" : "Vostede comentou",
- "%1$s commented" : "%1$s comentados",
+ "You commented" : "Vde. comentou",
"{author} commented" : "{author} comentou",
- "You commented on %1$s" : "Vostede comentou en %1$s",
- "You commented on {file}" : "Vostede comentou en {file}",
+ "You commented on %1$s" : "Vde. comentou en %1$s",
+ "You commented on {file}" : "Vde. comentou en {file}",
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
"{author} commented on {file}" : "{author} comentou en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para ficheiros",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionouno a vostede nun comentario en «%2$s»",
- "{user} mentioned you in a comment on “{file}”" : "{user} mencionouno a vostede nun comentario en «{file}»",
- "Unknown user" : "Usuario descoñecido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «%s»",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «{file}»"
+ "Files" : "Ficheiros",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mencionárono en «{file}», nun comentario dunha conta que xa foi eliminada",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionouno a Vde. nun comentario en «{file}»",
+ "Files app plugin to add comments to files" : "Complemento da aplicación de ficheiros para engadir comentarios aos ficheiros",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Eliminar comentario",
+ "Cancel edit" : "Cancelar a edición",
+ "New comment" : "Comentario novo",
+ "Write a comment …" : "Escriba un comentario…",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
+ "Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
+ "Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos",
+ "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios",
+ "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
+ "No more messages" : "Non hai máis mensaxes",
+ "Retry" : "Volver tentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Produciuse un erro cando tentaba editar o comentario",
+ "Comment deleted" : "Comentario eliminado",
+ "An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario",
+ "An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/gl.json b/apps/comments/l10n/gl.json
index 54864e6710c..128f8e5251f 100644
--- a/apps/comments/l10n/gl.json
+++ b/apps/comments/l10n/gl.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Comentarios",
- "New comment …" : "Comentario novo …",
- "Delete comment" : "Eliminar comentario",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentario",
- "[Deleted user]" : "[Usuario eliminado]",
- "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
- "More comments …" : "Máis comentarios …",
- "Save" : "Gardar",
- "Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
- "Error occurred while retrieving comment with id {id}" : "Produciuse un erro ao recuperar o comentario co ID {id}",
- "Error occurred while updating comment with id {id}" : "Produciuse un erro ao actualizar o comentario co ID {id}",
- "Error occurred while posting comment" : "Produciuse un erro ao publicar o comentario",
- "_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"],
- "Comment" : "Comentario",
- "You commented" : "Vostede comentou",
- "%1$s commented" : "%1$s comentados",
+ "You commented" : "Vde. comentou",
"{author} commented" : "{author} comentou",
- "You commented on %1$s" : "Vostede comentou en %1$s",
- "You commented on {file}" : "Vostede comentou en {file}",
+ "You commented on %1$s" : "Vde. comentou en %1$s",
+ "You commented on {file}" : "Vde. comentou en {file}",
"%1$s commented on %2$s" : "%1$s comentados en %2$s",
"{author} commented on {file}" : "{author} comentou en {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> para ficheiros",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionouno a vostede nun comentario en «%2$s»",
- "{user} mentioned you in a comment on “{file}”" : "{user} mencionouno a vostede nun comentario en «{file}»",
- "Unknown user" : "Usuario descoñecido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «%s»",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuario (agora) eliminado, mencionouno a vostede nun comentario en «{file}»"
+ "Files" : "Ficheiros",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Mencionárono en «{file}», nun comentario dunha conta que xa foi eliminada",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionouno a Vde. nun comentario en «{file}»",
+ "Files app plugin to add comments to files" : "Complemento da aplicación de ficheiros para engadir comentarios aos ficheiros",
+ "Edit comment" : "Editar comentario",
+ "Delete comment" : "Eliminar comentario",
+ "Cancel edit" : "Cancelar a edición",
+ "New comment" : "Comentario novo",
+ "Write a comment …" : "Escriba un comentario…",
+ "Post comment" : "Publicar comentario",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
+ "Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
+ "Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos",
+ "Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios",
+ "No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
+ "No more messages" : "Non hai máis mensaxes",
+ "Retry" : "Volver tentar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"],
+ "Comment" : "Comentario",
+ "An error occurred while trying to edit the comment" : "Produciuse un erro cando tentaba editar o comentario",
+ "Comment deleted" : "Comentario eliminado",
+ "An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario",
+ "An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/he.js b/apps/comments/l10n/he.js
index d21f53e4326..e1d0256599a 100644
--- a/apps/comments/l10n/he.js
+++ b/apps/comments/l10n/he.js
@@ -1,25 +1,30 @@
OC.L10N.register(
"comments",
{
- "Delete comment" : "מחיקת תגובה",
- "Post" : "פרסום",
- "Cancel" : "ביטול",
- "Edit comment" : "עריכת תגובה",
- "[Deleted user]" : "[משתמשים מוסרים]",
"Comments" : "תגובות",
- "Save" : "שמירה",
- "Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}",
- "Error occurred while retrieving comment with id {id}" : "שגיאה אירעה כאשר אוחזרה תגובה עם מספר זיהוי {id}",
- "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}",
- "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה",
- "Comment" : "תגובה",
"You commented" : "הערות שלך",
- "%1$s commented" : "התקבלו תגובות %1$s",
- "You commented on %2$s" : "הערות שלך ב- %2$s",
+ "{author} commented" : "התקבלה תגובה מאת {author}",
+ "You commented on %1$s" : "הגבת על %1$s",
+ "You commented on {file}" : "הגבת על {file}",
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
- "Type in a new comment..." : "יש להכניס תגובה חדשה...",
- "No other comments available" : "אין תגובות אחרות זמינות",
- "More comments..." : "תגובות נוספות...",
- "{count} unread comments" : "{count} תגובות שלא נקראו"
+ "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
+ "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
+ "Files" : "קבצים",
+ "{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
+ "Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
+ "Edit comment" : "עריכת תגובה",
+ "Delete comment" : "מחיקת תגובה",
+ "Cancel edit" : "בטל עריכה",
+ "Post comment" : "פרסם תגובה",
+ "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות",
+ "No comments yet, start the conversation!" : "אין תגובות עדיין, בואו נתחיל לקשקש!",
+ "No more messages" : "אין יותר הודעות",
+ "Retry" : "ניסיון חוזר",
+ "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות"],
+ "Comment" : "תגובה",
+ "An error occurred while trying to edit the comment" : "אירעה שגיאה בניסיון לערוך את התגובה",
+ "Comment deleted" : "נמחקה הערה",
+ "An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה",
+ "An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");
diff --git a/apps/comments/l10n/he.json b/apps/comments/l10n/he.json
index 5cf6472acb0..c59bb70dfd1 100644
--- a/apps/comments/l10n/he.json
+++ b/apps/comments/l10n/he.json
@@ -1,23 +1,28 @@
{ "translations": {
- "Delete comment" : "מחיקת תגובה",
- "Post" : "פרסום",
- "Cancel" : "ביטול",
- "Edit comment" : "עריכת תגובה",
- "[Deleted user]" : "[משתמשים מוסרים]",
"Comments" : "תגובות",
- "Save" : "שמירה",
- "Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}",
- "Error occurred while retrieving comment with id {id}" : "שגיאה אירעה כאשר אוחזרה תגובה עם מספר זיהוי {id}",
- "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}",
- "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה",
- "Comment" : "תגובה",
"You commented" : "הערות שלך",
- "%1$s commented" : "התקבלו תגובות %1$s",
- "You commented on %2$s" : "הערות שלך ב- %2$s",
+ "{author} commented" : "התקבלה תגובה מאת {author}",
+ "You commented on %1$s" : "הגבת על %1$s",
+ "You commented on {file}" : "הגבת על {file}",
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
- "Type in a new comment..." : "יש להכניס תגובה חדשה...",
- "No other comments available" : "אין תגובות אחרות זמינות",
- "More comments..." : "תגובות נוספות...",
- "{count} unread comments" : "{count} תגובות שלא נקראו"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
+ "<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
+ "Files" : "קבצים",
+ "{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
+ "Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
+ "Edit comment" : "עריכת תגובה",
+ "Delete comment" : "מחיקת תגובה",
+ "Cancel edit" : "בטל עריכה",
+ "Post comment" : "פרסם תגובה",
+ "Unable to load the comments list" : "לא ניתן לטעון את רשימת התגובות",
+ "No comments yet, start the conversation!" : "אין תגובות עדיין, בואו נתחיל לקשקש!",
+ "No more messages" : "אין יותר הודעות",
+ "Retry" : "ניסיון חוזר",
+ "_1 new comment_::_{unread} new comments_" : ["הערה חדשה אחת","{unread} הערות חדשות","{unread} הערות חדשות"],
+ "Comment" : "תגובה",
+ "An error occurred while trying to edit the comment" : "אירעה שגיאה בניסיון לערוך את התגובה",
+ "Comment deleted" : "נמחקה הערה",
+ "An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה",
+ "An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה"
+},"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/hi.js b/apps/comments/l10n/hi.js
deleted file mode 100644
index ed49cce9227..00000000000
--- a/apps/comments/l10n/hi.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "रद्द करें ",
- "Save" : "सहेजें"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hi.json b/apps/comments/l10n/hi.json
deleted file mode 100644
index f6b1d3d1b1b..00000000000
--- a/apps/comments/l10n/hi.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "रद्द करें ",
- "Save" : "सहेजें"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/hr.js b/apps/comments/l10n/hr.js
index d7aa807254c..00cd18cb7fb 100644
--- a/apps/comments/l10n/hr.js
+++ b/apps/comments/l10n/hr.js
@@ -1,7 +1,29 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "Odustanite",
- "Save" : "Spremi"
+ "Comments" : "Komentari",
+ "You commented" : "Vi ste komentirali",
+ "{author} commented" : "{author} je komentirao",
+ "You commented on %1$s" : "Vi ste komentirali %1$s",
+ "You commented on {file}" : "Komentirali ste {file}",
+ "%1$s commented on %2$s" : "%1$s je komentirao %2$s",
+ "{author} commented on {file}" : "{author} je komentirao {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
+ "Files" : "Datoteke",
+ "Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
+ "Edit comment" : "Uredi komentar",
+ "Delete comment" : "Izbriši komentar",
+ "Cancel edit" : "Otkaži uređivanje",
+ "Post comment" : "Objavi komentar",
+ "Unable to load the comments list" : "Nije moguće učitati popis komentara",
+ "No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
+ "No more messages" : "Nema više poruka",
+ "Retry" : "Pokušaj ponovno",
+ "_1 new comment_::_{unread} new comments_" : ["1 novi komentar","{unread} novih komentara","{unread} novih komentara"],
+ "Comment" : "Komentar",
+ "An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
+ "Comment deleted" : "Komentar izbrisan",
+ "An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
+ "An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
diff --git a/apps/comments/l10n/hr.json b/apps/comments/l10n/hr.json
index 78c71af4fd2..e6447eef1af 100644
--- a/apps/comments/l10n/hr.json
+++ b/apps/comments/l10n/hr.json
@@ -1,5 +1,27 @@
{ "translations": {
- "Cancel" : "Odustanite",
- "Save" : "Spremi"
+ "Comments" : "Komentari",
+ "You commented" : "Vi ste komentirali",
+ "{author} commented" : "{author} je komentirao",
+ "You commented on %1$s" : "Vi ste komentirali %1$s",
+ "You commented on {file}" : "Komentirali ste {file}",
+ "%1$s commented on %2$s" : "%1$s je komentirao %2$s",
+ "{author} commented on {file}" : "{author} je komentirao {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
+ "Files" : "Datoteke",
+ "Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
+ "Edit comment" : "Uredi komentar",
+ "Delete comment" : "Izbriši komentar",
+ "Cancel edit" : "Otkaži uređivanje",
+ "Post comment" : "Objavi komentar",
+ "Unable to load the comments list" : "Nije moguće učitati popis komentara",
+ "No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
+ "No more messages" : "Nema više poruka",
+ "Retry" : "Pokušaj ponovno",
+ "_1 new comment_::_{unread} new comments_" : ["1 novi komentar","{unread} novih komentara","{unread} novih komentara"],
+ "Comment" : "Komentar",
+ "An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
+ "Comment deleted" : "Komentar izbrisan",
+ "An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
+ "An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/hu.js b/apps/comments/l10n/hu.js
index cb85eadb037..05b0f519e0b 100644
--- a/apps/comments/l10n/hu.js
+++ b/apps/comments/l10n/hu.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Hozzászólások",
- "New comment …" : "Új hozzászólás...",
- "Delete comment" : "Hozzászólás törlése",
- "Post" : "Küldés",
- "Cancel" : "Mégsem",
- "Edit comment" : "Hozzászólás szerkesztése",
- "[Deleted user]" : "[Törölt felhasználó]",
- "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!",
- "More comments …" : "Több hozzászólás...",
- "Save" : "Mentés",
- "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}",
- "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
- "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
- "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
- "Comment" : "Hozzászólás",
- "You commented" : "Hozzászóltál",
- "%1$s commented" : "%1$s hozzászólt",
+ "You commented" : "Hozzászólt",
"{author} commented" : "{author} hozzászólt",
- "You commented on %1$s" : "Hozzászoltál ehhez: %1$s",
- "You commented on {file}" : "Hozzászóltál ehhez: {file}",
+ "You commented on %1$s" : "Hozzászólt ehhez: %1$s",
+ "You commented on {file}" : "Hozzászólt ehhez: {file}",
"%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
"{author} commented on {file}" : "{author} hozzászólt ehhez: {file}",
"<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “%s”, egy már törölt felhasználó hozzászólásában",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
- "Unknown user" : "Ismeretlen felhasználó",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”"
+ "Files" : "Fájlok",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt fiók hozzászólásában",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} megemlítette egy hozzászólásban ennél: „{file}”",
+ "Files app plugin to add comments to files" : "A Fájlok alkalmazás bővítménye, amellyel megjegyzések adhatóak a fájlokhoz",
+ "Edit comment" : "Hozzászólás szerkesztése",
+ "Delete comment" : "Hozzászólás törlése",
+ "Cancel edit" : "Változások elvetése",
+ "New comment" : "Új hozzászólás",
+ "Write a comment …" : "Hozzászólás írása…",
+ "Post comment" : "Hozzászólás közzététele",
+ "@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz",
+ "Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.",
+ "Failed to mark comments as read" : "A hozzászólások olvasottnak jelölése sikertelen",
+ "Unable to load the comments list" : "A hozzászólások betöltése sikertelen",
+ "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!",
+ "No more messages" : "Nincs több üzenet",
+ "Retry" : "Újra",
+ "_1 new comment_::_{unread} new comments_" : ["1 új hozzászólás","{unread} új hozzászólás"],
+ "Comment" : "Hozzászólás",
+ "An error occurred while trying to edit the comment" : "Hiba történt a megjegyzés szerkesztése közben",
+ "Comment deleted" : "Hozzászólás törölve",
+ "An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben",
+ "An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hu.json b/apps/comments/l10n/hu.json
index e29d12e2081..962f1c72c06 100644
--- a/apps/comments/l10n/hu.json
+++ b/apps/comments/l10n/hu.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Hozzászólások",
- "New comment …" : "Új hozzászólás...",
- "Delete comment" : "Hozzászólás törlése",
- "Post" : "Küldés",
- "Cancel" : "Mégsem",
- "Edit comment" : "Hozzászólás szerkesztése",
- "[Deleted user]" : "[Törölt felhasználó]",
- "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!",
- "More comments …" : "Több hozzászólás...",
- "Save" : "Mentés",
- "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}",
- "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
- "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
- "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
- "Comment" : "Hozzászólás",
- "You commented" : "Hozzászóltál",
- "%1$s commented" : "%1$s hozzászólt",
+ "You commented" : "Hozzászólt",
"{author} commented" : "{author} hozzászólt",
- "You commented on %1$s" : "Hozzászoltál ehhez: %1$s",
- "You commented on {file}" : "Hozzászóltál ehhez: {file}",
+ "You commented on %1$s" : "Hozzászólt ehhez: %1$s",
+ "You commented on {file}" : "Hozzászólt ehhez: {file}",
"%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
"{author} commented on {file}" : "{author} hozzászólt ehhez: {file}",
"<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “%s”, egy már törölt felhasználó hozzászólásában",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
- "Unknown user" : "Ismeretlen felhasználó",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”"
+ "Files" : "Fájlok",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Megemlítették ennél: „{file}”, egy már törölt fiók hozzászólásában",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} megemlítette egy hozzászólásban ennél: „{file}”",
+ "Files app plugin to add comments to files" : "A Fájlok alkalmazás bővítménye, amellyel megjegyzések adhatóak a fájlokhoz",
+ "Edit comment" : "Hozzászólás szerkesztése",
+ "Delete comment" : "Hozzászólás törlése",
+ "Cancel edit" : "Változások elvetése",
+ "New comment" : "Új hozzászólás",
+ "Write a comment …" : "Hozzászólás írása…",
+ "Post comment" : "Hozzászólás közzététele",
+ "@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz",
+ "Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.",
+ "Failed to mark comments as read" : "A hozzászólások olvasottnak jelölése sikertelen",
+ "Unable to load the comments list" : "A hozzászólások betöltése sikertelen",
+ "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!",
+ "No more messages" : "Nincs több üzenet",
+ "Retry" : "Újra",
+ "_1 new comment_::_{unread} new comments_" : ["1 új hozzászólás","{unread} új hozzászólás"],
+ "Comment" : "Hozzászólás",
+ "An error occurred while trying to edit the comment" : "Hiba történt a megjegyzés szerkesztése közben",
+ "Comment deleted" : "Hozzászólás törölve",
+ "An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben",
+ "An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/hu_HU.js b/apps/comments/l10n/hu_HU.js
deleted file mode 100644
index 253e6a90155..00000000000
--- a/apps/comments/l10n/hu_HU.js
+++ /dev/null
@@ -1,39 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Hozzászólások",
- "Unknown user" : "Ismeretlen felhasználó",
- "New comment …" : "Új hozzászólás...",
- "Delete comment" : "Hozzászólás törlése",
- "Post" : "Küldés",
- "Cancel" : "Mégsem",
- "Edit comment" : "Hozzászólás szerkesztése",
- "[Deleted user]" : "[Törölt felhasználó]",
- "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!",
- "More comments …" : "Több hozzászólás...",
- "Save" : "Mentés",
- "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}",
- "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
- "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
- "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
- "Comment" : "Hozzászólás",
- "You commented" : "Hozzászóltál",
- "%1$s commented" : "%1$s hozzászólt",
- "{author} commented" : "{author} hozzászólt",
- "You commented on %1$s" : "Hozzászoltál ehhez: %1$s",
- "You commented on {file}" : "Hozzászóltál ehhez: {file}",
- "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
- "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}",
- "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
- "Type in a new comment..." : "Új hozzászólás írása...",
- "No other comments available" : "Nincs több hozzászólás.",
- "More comments..." : "Több hozzászólás...",
- "{count} unread comments" : "{count} olvasatlan hozzászólás",
- "You commented on %2$s" : "Hozzászólt ehhez: %2$s"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hu_HU.json b/apps/comments/l10n/hu_HU.json
deleted file mode 100644
index 43c6a6f3cc0..00000000000
--- a/apps/comments/l10n/hu_HU.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{ "translations": {
- "Comments" : "Hozzászólások",
- "Unknown user" : "Ismeretlen felhasználó",
- "New comment …" : "Új hozzászólás...",
- "Delete comment" : "Hozzászólás törlése",
- "Post" : "Küldés",
- "Cancel" : "Mégsem",
- "Edit comment" : "Hozzászólás szerkesztése",
- "[Deleted user]" : "[Törölt felhasználó]",
- "No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdd el a beszélgetést!",
- "More comments …" : "Több hozzászólás...",
- "Save" : "Mentés",
- "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "Hiba a következő azonosítójú hozzászólás letöltése közben: {id}",
- "Error occurred while updating comment with id {id}" : "Hiba a következő azonosítójú hozzászólás frissítése közben: {id}",
- "Error occurred while posting comment" : "Hiba történt a hozzászólás küldése közben",
- "_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"],
- "Comment" : "Hozzászólás",
- "You commented" : "Hozzászóltál",
- "%1$s commented" : "%1$s hozzászólt",
- "{author} commented" : "{author} hozzászólt",
- "You commented on %1$s" : "Hozzászoltál ehhez: %1$s",
- "You commented on {file}" : "Hozzászóltál ehhez: {file}",
- "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
- "{author} commented on {file}" : "{author} hozzászólt ehhez: {file}",
- "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> fájlokhoz",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
- "Type in a new comment..." : "Új hozzászólás írása...",
- "No other comments available" : "Nincs több hozzászólás.",
- "More comments..." : "Több hozzászólás...",
- "{count} unread comments" : "{count} olvasatlan hozzászólás",
- "You commented on %2$s" : "Hozzászólt ehhez: %2$s"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/hy.js b/apps/comments/l10n/hy.js
deleted file mode 100644
index 6e6fa514244..00000000000
--- a/apps/comments/l10n/hy.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Չեղարկել",
- "Save" : "Պահպանել"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hy.json b/apps/comments/l10n/hy.json
deleted file mode 100644
index 1d692e6d00d..00000000000
--- a/apps/comments/l10n/hy.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Չեղարկել",
- "Save" : "Պահպանել"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/ia.js b/apps/comments/l10n/ia.js
deleted file mode 100644
index 923ad299811..00000000000
--- a/apps/comments/l10n/ia.js
+++ /dev/null
@@ -1,34 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Commentarios",
- "New comment …" : "Nove commentario ...",
- "Delete comment" : "Deler commentario",
- "Post" : "Publicar",
- "Cancel" : "Cancellar",
- "Edit comment" : "Modificar commentario",
- "[Deleted user]" : "[Usator delite]",
- "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!",
- "More comments …" : "Plus commentarios ...",
- "Save" : "Salveguardar",
- "Allowed characters {count} of {max}" : "{count} characteres permittite de {max}",
- "Error occurred while retrieving comment with id {id}" : "Un error occurreva durante le recuperation del commentario identificate per {id}",
- "Error occurred while updating comment with id {id}" : "Un error occurreva durante le actualisation del commentario identificate per {id}",
- "Error occurred while posting comment" : "Un error occurreva durante le publication del commentario",
- "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"],
- "Comment" : "Commentario",
- "You commented" : "Tu commentava",
- "%1$s commented" : "%1$s commentava",
- "{author} commented" : "{author} commentava",
- "You commented on %1$s" : "Tu commentava in %1$s",
- "You commented on {file}" : "Tu commentava in {file}",
- "%1$s commented on %2$s" : "%1$s commentava in %2$s",
- "{author} commented on {file}" : "{author} commentava in {file}",
- "<strong>Comments</strong> for files" : "<strong>Commentarios</strong> pro files",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentionava tu in un commentario in “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentionava tu in un commentario in “{file}”",
- "Unknown user" : "Usator incognite",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un (ora) delite usator mentionava tu in un commentario in “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (ora) delite usator mentionava tu in un commentario in “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ia.json b/apps/comments/l10n/ia.json
deleted file mode 100644
index 66fa31cf90c..00000000000
--- a/apps/comments/l10n/ia.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{ "translations": {
- "Comments" : "Commentarios",
- "New comment …" : "Nove commentario ...",
- "Delete comment" : "Deler commentario",
- "Post" : "Publicar",
- "Cancel" : "Cancellar",
- "Edit comment" : "Modificar commentario",
- "[Deleted user]" : "[Usator delite]",
- "No comments yet, start the conversation!" : "Il ha nulle commentarios ancora, initia le conversation!",
- "More comments …" : "Plus commentarios ...",
- "Save" : "Salveguardar",
- "Allowed characters {count} of {max}" : "{count} characteres permittite de {max}",
- "Error occurred while retrieving comment with id {id}" : "Un error occurreva durante le recuperation del commentario identificate per {id}",
- "Error occurred while updating comment with id {id}" : "Un error occurreva durante le actualisation del commentario identificate per {id}",
- "Error occurred while posting comment" : "Un error occurreva durante le publication del commentario",
- "_%n unread comment_::_%n unread comments_" : ["%n commentario non legite","%n commentarios non legite"],
- "Comment" : "Commentario",
- "You commented" : "Tu commentava",
- "%1$s commented" : "%1$s commentava",
- "{author} commented" : "{author} commentava",
- "You commented on %1$s" : "Tu commentava in %1$s",
- "You commented on {file}" : "Tu commentava in {file}",
- "%1$s commented on %2$s" : "%1$s commentava in %2$s",
- "{author} commented on {file}" : "{author} commentava in {file}",
- "<strong>Comments</strong> for files" : "<strong>Commentarios</strong> pro files",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentionava tu in un commentario in “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mentionava tu in un commentario in “{file}”",
- "Unknown user" : "Usator incognite",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un (ora) delite usator mentionava tu in un commentario in “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un (ora) delite usator mentionava tu in un commentario in “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/id.js b/apps/comments/l10n/id.js
index 62de36ea934..10e0fa73ee3 100644
--- a/apps/comments/l10n/id.js
+++ b/apps/comments/l10n/id.js
@@ -1,25 +1,28 @@
OC.L10N.register(
"comments",
{
- "Delete comment" : "Hapus komentar",
- "Post" : "Posting",
- "Cancel" : "Batal",
- "Edit comment" : "Sunting komentar",
- "[Deleted user]" : "[Hapus pengguna]",
"Comments" : "Komentar",
- "Save" : "Simpan",
- "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}",
- "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}",
- "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}",
- "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar",
- "Comment" : "Komentar",
"You commented" : "Anda berkomentar",
- "%1$s commented" : "%1$s dikomentari",
- "You commented on %2$s" : "Anda berkomentar di %2$s",
+ "{author} commented" : "{author} berkomentar",
+ "You commented on %1$s" : "Anda berkomentar pada %1$s",
+ "You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
- "Type in a new comment..." : "Ketik di komentar baru...",
- "No other comments available" : "Tidak ada komentar lainnya",
- "More comments..." : "Komentar lainya...",
- "{count} unread comments" : "{count} komentar belum dibaca"
+ "{author} commented on {file}" : "{author} berkomentar pada {file}",
+ "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
+ "Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
+ "Edit comment" : "Sunting komentar",
+ "Delete comment" : "Hapus komentar",
+ "Cancel edit" : "Batal sunting",
+ "Post comment" : "Posting komentar",
+ "Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
+ "No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
+ "No more messages" : "Tidak ada pesan lagi",
+ "Retry" : "Ulangi",
+ "Comment" : "Komentar",
+ "An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
+ "Comment deleted" : "Komentar dihapus",
+ "An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
+ "An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/id.json b/apps/comments/l10n/id.json
index 7850564c77d..56ecdc58c2c 100644
--- a/apps/comments/l10n/id.json
+++ b/apps/comments/l10n/id.json
@@ -1,23 +1,26 @@
{ "translations": {
- "Delete comment" : "Hapus komentar",
- "Post" : "Posting",
- "Cancel" : "Batal",
- "Edit comment" : "Sunting komentar",
- "[Deleted user]" : "[Hapus pengguna]",
"Comments" : "Komentar",
- "Save" : "Simpan",
- "Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}",
- "Error occurred while retrieving comment with id {id}" : "Terjadi kesalahan saat mendapatkan komentar dengan id {id}",
- "Error occurred while updating comment with id {id}" : "Terjadi kesalahan saat memperbarui komentar dengan id {id}",
- "Error occurred while posting comment" : "Terjadi kesalahan saat memosting komentar",
- "Comment" : "Komentar",
"You commented" : "Anda berkomentar",
- "%1$s commented" : "%1$s dikomentari",
- "You commented on %2$s" : "Anda berkomentar di %2$s",
+ "{author} commented" : "{author} berkomentar",
+ "You commented on %1$s" : "Anda berkomentar pada %1$s",
+ "You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
- "Type in a new comment..." : "Ketik di komentar baru...",
- "No other comments available" : "Tidak ada komentar lainnya",
- "More comments..." : "Komentar lainya...",
- "{count} unread comments" : "{count} komentar belum dibaca"
+ "{author} commented on {file}" : "{author} berkomentar pada {file}",
+ "<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
+ "Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
+ "Edit comment" : "Sunting komentar",
+ "Delete comment" : "Hapus komentar",
+ "Cancel edit" : "Batal sunting",
+ "Post comment" : "Posting komentar",
+ "Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
+ "No comments yet, start the conversation!" : "Belum ada yang berkomentar, mulailah perbincangan!",
+ "No more messages" : "Tidak ada pesan lagi",
+ "Retry" : "Ulangi",
+ "Comment" : "Komentar",
+ "An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
+ "Comment deleted" : "Komentar dihapus",
+ "An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
+ "An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/is.js b/apps/comments/l10n/is.js
index d86c4ecf0d9..d4b6327070b 100644
--- a/apps/comments/l10n/is.js
+++ b/apps/comments/l10n/is.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Athugasemdir",
- "New comment …" : "Ný athugasemd ...",
- "Delete comment" : "Eyða athugasemd",
- "Post" : "Senda",
- "Cancel" : "Hætta við",
- "Edit comment" : "Breyta athugasemd",
- "[Deleted user]" : "[Eyddur notandi]",
- "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
- "More comments …" : "Fleiri athugasemdir ...",
- "Save" : "Vista",
- "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}",
- "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}",
- "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}",
- "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd",
- "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"],
- "Comment" : "Athugasemd",
"You commented" : "Þú settir inn athugasemd",
- "%1$s commented" : "%1$s setti inn athugasemd",
"{author} commented" : "{author} setti inn athugasemd",
"You commented on %1$s" : "Þú settir inn athugasemd við %1$s",
"You commented on {file}" : "Þú settir inn athugasemd við {file}",
"%1$s commented on %2$s" : "%1$s setti inn athugasemd um %2$s",
"{author} commented on {file}" : "{author} setti inn athugasemd við {file}",
"<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s minntist á þig í athugasemd við “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} minntist á þig í athugasemd við “{file}”",
- "Unknown user" : "Óþekktur notandi",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “{file}”"
+ "Files" : "Skráaforrit",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Minnst var á þig í \"{file}\", í athugasemd frá notandaaðgangi sem síðan þá hefur verið eytt",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} minntist á þig í athugasemd við \"{file}\"",
+ "Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár",
+ "Edit comment" : "Breyta athugasemd",
+ "Delete comment" : "Eyða athugasemd",
+ "Cancel edit" : "Hætta við breytingar",
+ "New comment" : "Ný athugasemd",
+ "Write a comment …" : "Skrifa athugasemd ...",
+ "Post comment" : "Senda inn athugasemd",
+ "@ for mentions, : for emoji, / for smart picker" : "@ til að minnast á, : fyrir tjáningartákn, / fyrir snjallveljara",
+ "Could not reload comments" : "Gat ekki endurlesið athugasemdir",
+ "Failed to mark comments as read" : "Tókst ekki að merkja athugasemdir sem lesnar",
+ "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir",
+ "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
+ "No more messages" : "Engin fleiri skilaboð",
+ "Retry" : "Reyna aftur",
+ "_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"],
+ "Comment" : "Athugasemd",
+ "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni",
+ "Comment deleted" : "Athugasemd var eytt",
+ "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni",
+ "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
diff --git a/apps/comments/l10n/is.json b/apps/comments/l10n/is.json
index 32650436cca..458a1704c3b 100644
--- a/apps/comments/l10n/is.json
+++ b/apps/comments/l10n/is.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Athugasemdir",
- "New comment …" : "Ný athugasemd ...",
- "Delete comment" : "Eyða athugasemd",
- "Post" : "Senda",
- "Cancel" : "Hætta við",
- "Edit comment" : "Breyta athugasemd",
- "[Deleted user]" : "[Eyddur notandi]",
- "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
- "More comments …" : "Fleiri athugasemdir ...",
- "Save" : "Vista",
- "Allowed characters {count} of {max}" : "Leyfður stafafjöldi {count} af {max}",
- "Error occurred while retrieving comment with id {id}" : "Villa kom upp við að reyna að ná í athugasemd með auðkenninu {id}",
- "Error occurred while updating comment with id {id}" : "Villa kom upp við að reyna að uppfæra athugasemd með auðkenninu {id}",
- "Error occurred while posting comment" : "Villa kom upp við að senda inn athugasemd",
- "_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"],
- "Comment" : "Athugasemd",
"You commented" : "Þú settir inn athugasemd",
- "%1$s commented" : "%1$s setti inn athugasemd",
"{author} commented" : "{author} setti inn athugasemd",
"You commented on %1$s" : "Þú settir inn athugasemd við %1$s",
"You commented on {file}" : "Þú settir inn athugasemd við {file}",
"%1$s commented on %2$s" : "%1$s setti inn athugasemd um %2$s",
"{author} commented on {file}" : "{author} setti inn athugasemd við {file}",
"<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s minntist á þig í athugasemd við “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} minntist á þig í athugasemd við “{file}”",
- "Unknown user" : "Óþekktur notandi",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Notandi (sem nú er búið að eyða) minntist á þig í athugasemd við “{file}”"
+ "Files" : "Skráaforrit",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Minnst var á þig í \"{file}\", í athugasemd frá notandaaðgangi sem síðan þá hefur verið eytt",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} minntist á þig í athugasemd við \"{file}\"",
+ "Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár",
+ "Edit comment" : "Breyta athugasemd",
+ "Delete comment" : "Eyða athugasemd",
+ "Cancel edit" : "Hætta við breytingar",
+ "New comment" : "Ný athugasemd",
+ "Write a comment …" : "Skrifa athugasemd ...",
+ "Post comment" : "Senda inn athugasemd",
+ "@ for mentions, : for emoji, / for smart picker" : "@ til að minnast á, : fyrir tjáningartákn, / fyrir snjallveljara",
+ "Could not reload comments" : "Gat ekki endurlesið athugasemdir",
+ "Failed to mark comments as read" : "Tókst ekki að merkja athugasemdir sem lesnar",
+ "Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir",
+ "No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
+ "No more messages" : "Engin fleiri skilaboð",
+ "Retry" : "Reyna aftur",
+ "_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"],
+ "Comment" : "Athugasemd",
+ "An error occurred while trying to edit the comment" : "Villa átti sér stað við að breyta athugasemdinni",
+ "Comment deleted" : "Athugasemd var eytt",
+ "An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni",
+ "An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/it.js b/apps/comments/l10n/it.js
index eb51fb31e10..e2aac0c0b86 100644
--- a/apps/comments/l10n/it.js
+++ b/apps/comments/l10n/it.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Commenti",
- "New comment …" : "Nuovo commento...",
- "Delete comment" : "Elimina commento",
- "Post" : "Commento",
- "Cancel" : "Annulla",
- "Edit comment" : "Modifica commento",
- "[Deleted user]" : "[Utente eliminato]",
- "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!",
- "More comments …" : "Altri commenti...",
- "Save" : "Salva",
- "Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}",
- "Error occurred while retrieving comment with id {id}" : "Si è verificato un errore durante il tentativo di recupero del commento con id {id}",
- "Error occurred while updating comment with id {id}" : "Si è verificato un errore durante il tentativo di aggiornamento del commento con id {id}",
- "Error occurred while posting comment" : "Si è verificato un errore durante la pubblicazione del commento.",
- "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti"],
- "Comment" : "Commento",
"You commented" : "Hai commentato",
- "%1$s commented" : "%1$s ha commentato",
"{author} commented" : "{author} ha commentato",
"You commented on %1$s" : "Hai commentato su %1$s",
"You commented on {file}" : "Hai commentato su {file}",
"%1$s commented on %2$s" : "%1$s ha commentato %2$s",
"{author} commented on {file}" : "{author} ha commentato su {file}",
"<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"%s\", in un commento di un utente che è stato eliminato",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un utente che è stato eliminato",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ti ha menzionato in un commento su \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} ti ha menzionato in un commento su \"{file}\".",
- "Unknown user" : "Utente sconosciuto",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"%s\".",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"{file}\"."
+ "Files" : "File",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un account che è stato eliminato",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} ti ha menzionato in un commento su \"{file}\"",
+ "Files app plugin to add comments to files" : "Estensione dell'applicazione File per aggiungere commenti ai file",
+ "Edit comment" : "Modifica commento",
+ "Delete comment" : "Elimina commento",
+ "Cancel edit" : "Annulla modifica",
+ "New comment" : "Nuovo commento",
+ "Write a comment …" : "Scrivi un commento...",
+ "Post comment" : "Pubblica commento",
+ "@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
+ "Could not reload comments" : "Impossibile ricaricare i commenti",
+ "Failed to mark comments as read" : "Impossibile segnare i commenti come letti",
+ "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti",
+ "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!",
+ "No more messages" : "Non ci sono altri messaggi",
+ "Retry" : "Riprova",
+ "_1 new comment_::_{unread} new comments_" : ["1 nuovo commento","{unread} nuovi commenti","{unread} nuovi commenti"],
+ "Comment" : "Commento",
+ "An error occurred while trying to edit the comment" : "Si è verificato un errore durante il tentativo di modificare il commento",
+ "Comment deleted" : "Commento eliminato",
+ "An error occurred while trying to delete the comment" : "Si è verificato un errore durante il tentativo di eliminare il commento",
+ "An error occurred while trying to create the comment" : "Si è verificato un errore durante il tentativo di creare il commento"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/it.json b/apps/comments/l10n/it.json
index 818f79b01f8..09ba85ad60e 100644
--- a/apps/comments/l10n/it.json
+++ b/apps/comments/l10n/it.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Commenti",
- "New comment …" : "Nuovo commento...",
- "Delete comment" : "Elimina commento",
- "Post" : "Commento",
- "Cancel" : "Annulla",
- "Edit comment" : "Modifica commento",
- "[Deleted user]" : "[Utente eliminato]",
- "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!",
- "More comments …" : "Altri commenti...",
- "Save" : "Salva",
- "Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}",
- "Error occurred while retrieving comment with id {id}" : "Si è verificato un errore durante il tentativo di recupero del commento con id {id}",
- "Error occurred while updating comment with id {id}" : "Si è verificato un errore durante il tentativo di aggiornamento del commento con id {id}",
- "Error occurred while posting comment" : "Si è verificato un errore durante la pubblicazione del commento.",
- "_%n unread comment_::_%n unread comments_" : ["%n commento non letto","%n commenti non letti"],
- "Comment" : "Commento",
"You commented" : "Hai commentato",
- "%1$s commented" : "%1$s ha commentato",
"{author} commented" : "{author} ha commentato",
"You commented on %1$s" : "Hai commentato su %1$s",
"You commented on {file}" : "Hai commentato su {file}",
"%1$s commented on %2$s" : "%1$s ha commentato %2$s",
"{author} commented on {file}" : "{author} ha commentato su {file}",
"<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"%s\", in un commento di un utente che è stato eliminato",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un utente che è stato eliminato",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ti ha menzionato in un commento su \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} ti ha menzionato in un commento su \"{file}\".",
- "Unknown user" : "Utente sconosciuto",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"%s\".",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utente eliminato (ora) ti ha menzionato in un commento su \"{file}\"."
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "Files" : "File",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Sei stato menzionato su \"{file}\", in un commento di un account che è stato eliminato",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} ti ha menzionato in un commento su \"{file}\"",
+ "Files app plugin to add comments to files" : "Estensione dell'applicazione File per aggiungere commenti ai file",
+ "Edit comment" : "Modifica commento",
+ "Delete comment" : "Elimina commento",
+ "Cancel edit" : "Annulla modifica",
+ "New comment" : "Nuovo commento",
+ "Write a comment …" : "Scrivi un commento...",
+ "Post comment" : "Pubblica commento",
+ "@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
+ "Could not reload comments" : "Impossibile ricaricare i commenti",
+ "Failed to mark comments as read" : "Impossibile segnare i commenti come letti",
+ "Unable to load the comments list" : "Impossibile caricare l'elenco dei commenti",
+ "No comments yet, start the conversation!" : "Ancora nessun commento, inizia la conversazione!",
+ "No more messages" : "Non ci sono altri messaggi",
+ "Retry" : "Riprova",
+ "_1 new comment_::_{unread} new comments_" : ["1 nuovo commento","{unread} nuovi commenti","{unread} nuovi commenti"],
+ "Comment" : "Commento",
+ "An error occurred while trying to edit the comment" : "Si è verificato un errore durante il tentativo di modificare il commento",
+ "Comment deleted" : "Commento eliminato",
+ "An error occurred while trying to delete the comment" : "Si è verificato un errore durante il tentativo di eliminare il commento",
+ "An error occurred while trying to create the comment" : "Si è verificato un errore durante il tentativo di creare il commento"
+},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ja.js b/apps/comments/l10n/ja.js
index afe78324645..60800bfb5f9 100644
--- a/apps/comments/l10n/ja.js
+++ b/apps/comments/l10n/ja.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "コメント",
- "New comment …" : "新しいコメント...",
- "Delete comment" : "コメントを削除",
- "Post" : "追加",
- "Cancel" : "キャンセル",
- "Edit comment" : "コメントを編集",
- "[Deleted user]" : "[削除済みユーザー]",
- "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!",
- "More comments …" : "その他のコメント...",
- "Save" : "保存",
- "Allowed characters {count} of {max}" : "入力文字数 {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "コメントID {id} のコメントを取得する際にエラーが発生",
- "Error occurred while updating comment with id {id}" : "コメントID {id} のコメントをアップロードする際にエラーが発生",
- "Error occurred while posting comment" : "コメント投稿時にエラーが発生",
- "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"],
- "Comment" : "コメント",
"You commented" : "コメント済",
- "%1$s commented" : "%1$s がコメントを追加",
"{author} commented" : "{author} がコメントしました",
- "You commented on %1$s" : "%1$s にコメントしました",
+ "You commented on %1$s" : "%1$s についてコメントしました",
"You commented on {file}" : "{file} にコメントしました",
"%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました",
"{author} commented on {file}" : "{author} が{file} にコメントしました",
- "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</ strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s さんが “%2$s” のコメントであなたについて言及しました。",
- "{user} mentioned you in a comment on “{file}”" : "{user} さんが ““{file}” のコメントであなたについて言及しました。",
- "Unknown user" : "不明なユーザー",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(現在)削除されたユーザーが \"%s\" のコメントであなたのことについて言及しました",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(現在)削除されたユーザーが \"{file}\" のコメントであなたのことについて言及しました"
+ "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき",
+ "Files" : "ファイル",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "あなたは \"{file}\" で、削除されたアカウントのコメントで言及されました",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} さんが \"{file}\" のコメント内であなたついて言及しました",
+ "Files app plugin to add comments to files" : "ファイルにコメントを追加するためのファイルアプリプラグイン",
+ "Edit comment" : "コメントを編集",
+ "Delete comment" : "コメントを削除",
+ "Cancel edit" : "編集をキャンセル",
+ "New comment" : "新しいコメント",
+ "Write a comment …" : "コメントを書く...",
+ "Post comment" : "コメントを投稿",
+ "@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/",
+ "Could not reload comments" : "コメントをリロードできませんでした",
+ "Failed to mark comments as read" : "コメントを既読にすることができませんでした",
+ "Unable to load the comments list" : "コメントリストを読み込めませんでした",
+ "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!",
+ "No more messages" : "これ以上のメッセージはありません",
+ "Retry" : "再試行",
+ "_1 new comment_::_{unread} new comments_" : ["の未読のコメント {unread}"],
+ "Comment" : "コメント",
+ "An error occurred while trying to edit the comment" : "コメント編集中にエラーが発生しました",
+ "Comment deleted" : "コメントが削除されました",
+ "An error occurred while trying to delete the comment" : "コメントの削除中にエラーが発生しました",
+ "An error occurred while trying to create the comment" : "コメント中にエラーが発生しました"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/ja.json b/apps/comments/l10n/ja.json
index 5faf8d6f95f..08014639e97 100644
--- a/apps/comments/l10n/ja.json
+++ b/apps/comments/l10n/ja.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "コメント",
- "New comment …" : "新しいコメント...",
- "Delete comment" : "コメントを削除",
- "Post" : "追加",
- "Cancel" : "キャンセル",
- "Edit comment" : "コメントを編集",
- "[Deleted user]" : "[削除済みユーザー]",
- "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!",
- "More comments …" : "その他のコメント...",
- "Save" : "保存",
- "Allowed characters {count} of {max}" : "入力文字数 {count} / {max}",
- "Error occurred while retrieving comment with id {id}" : "コメントID {id} のコメントを取得する際にエラーが発生",
- "Error occurred while updating comment with id {id}" : "コメントID {id} のコメントをアップロードする際にエラーが発生",
- "Error occurred while posting comment" : "コメント投稿時にエラーが発生",
- "_%n unread comment_::_%n unread comments_" : ["%n の未読のコメント"],
- "Comment" : "コメント",
"You commented" : "コメント済",
- "%1$s commented" : "%1$s がコメントを追加",
"{author} commented" : "{author} がコメントしました",
- "You commented on %1$s" : "%1$s にコメントしました",
+ "You commented on %1$s" : "%1$s についてコメントしました",
"You commented on {file}" : "{file} にコメントしました",
"%1$s commented on %2$s" : "%2$s について、%1$s がコメントしました",
"{author} commented on {file}" : "{author} が{file} にコメントしました",
- "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</ strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s さんが “%2$s” のコメントであなたについて言及しました。",
- "{user} mentioned you in a comment on “{file}”" : "{user} さんが ““{file}” のコメントであなたについて言及しました。",
- "Unknown user" : "不明なユーザー",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(現在)削除されたユーザーが \"%s\" のコメントであなたのことについて言及しました",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(現在)削除されたユーザーが \"{file}\" のコメントであなたのことについて言及しました"
+ "<strong>Comments</strong> for files" : "ファイルへの<strong>コメント</strong>があったとき",
+ "Files" : "ファイル",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "あなたは \"{file}\" で、削除されたアカウントのコメントで言及されました",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} さんが \"{file}\" のコメント内であなたついて言及しました",
+ "Files app plugin to add comments to files" : "ファイルにコメントを追加するためのファイルアプリプラグイン",
+ "Edit comment" : "コメントを編集",
+ "Delete comment" : "コメントを削除",
+ "Cancel edit" : "編集をキャンセル",
+ "New comment" : "新しいコメント",
+ "Write a comment …" : "コメントを書く...",
+ "Post comment" : "コメントを投稿",
+ "@ for mentions, : for emoji, / for smart picker" : "メンションには@、絵文字には:、スマートピッカーには/",
+ "Could not reload comments" : "コメントをリロードできませんでした",
+ "Failed to mark comments as read" : "コメントを既読にすることができませんでした",
+ "Unable to load the comments list" : "コメントリストを読み込めませんでした",
+ "No comments yet, start the conversation!" : "まだコメントはありません、会話を開始してください!",
+ "No more messages" : "これ以上のメッセージはありません",
+ "Retry" : "再試行",
+ "_1 new comment_::_{unread} new comments_" : ["の未読のコメント {unread}"],
+ "Comment" : "コメント",
+ "An error occurred while trying to edit the comment" : "コメント編集中にエラーが発生しました",
+ "Comment deleted" : "コメントが削除されました",
+ "An error occurred while trying to delete the comment" : "コメントの削除中にエラーが発生しました",
+ "An error occurred while trying to create the comment" : "コメント中にエラーが発生しました"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ka.js b/apps/comments/l10n/ka.js
new file mode 100644
index 00000000000..4d721d8441c
--- /dev/null
+++ b/apps/comments/l10n/ka.js
@@ -0,0 +1,32 @@
+OC.L10N.register(
+ "comments",
+ {
+ "Comments" : "Comments",
+ "You commented" : "You commented",
+ "{author} commented" : "{author} commented",
+ "You commented on %1$s" : "You commented on %1$s",
+ "You commented on {file}" : "You commented on {file}",
+ "%1$s commented on %2$s" : "%1$s commented on %2$s",
+ "{author} commented on {file}" : "{author} commented on {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin to add comments to files",
+ "Edit comment" : "Edit comment",
+ "Delete comment" : "Delete comment",
+ "Cancel edit" : "Cancel edit",
+ "Post comment" : "Post comment",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
+ "Could not reload comments" : "Could not reload comments",
+ "Failed to mark comments as read" : "Failed to mark comments as read",
+ "Unable to load the comments list" : "Unable to load the comments list",
+ "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
+ "No more messages" : "No more messages",
+ "Retry" : "Retry",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
+ "Comment" : "Comment",
+ "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
+ "Comment deleted" : "Comment deleted",
+ "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
+ "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
+},
+"nplurals=2; plural=(n!=1);");
diff --git a/apps/comments/l10n/ka.json b/apps/comments/l10n/ka.json
new file mode 100644
index 00000000000..a8625a23f7a
--- /dev/null
+++ b/apps/comments/l10n/ka.json
@@ -0,0 +1,30 @@
+{ "translations": {
+ "Comments" : "Comments",
+ "You commented" : "You commented",
+ "{author} commented" : "{author} commented",
+ "You commented on %1$s" : "You commented on %1$s",
+ "You commented on {file}" : "You commented on {file}",
+ "%1$s commented on %2$s" : "%1$s commented on %2$s",
+ "{author} commented on {file}" : "{author} commented on {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
+ "Files app plugin to add comments to files" : "Files app plugin to add comments to files",
+ "Edit comment" : "Edit comment",
+ "Delete comment" : "Delete comment",
+ "Cancel edit" : "Cancel edit",
+ "Post comment" : "Post comment",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
+ "Could not reload comments" : "Could not reload comments",
+ "Failed to mark comments as read" : "Failed to mark comments as read",
+ "Unable to load the comments list" : "Unable to load the comments list",
+ "No comments yet, start the conversation!" : "No comments yet, start the conversation!",
+ "No more messages" : "No more messages",
+ "Retry" : "Retry",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
+ "Comment" : "Comment",
+ "An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
+ "Comment deleted" : "Comment deleted",
+ "An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
+ "An error occurred while trying to create the comment" : "An error occurred while trying to create the comment"
+},"pluralForm" :"nplurals=2; plural=(n!=1);"
+} \ No newline at end of file
diff --git a/apps/comments/l10n/ka_GE.js b/apps/comments/l10n/ka_GE.js
deleted file mode 100644
index 8b70a2d2243..00000000000
--- a/apps/comments/l10n/ka_GE.js
+++ /dev/null
@@ -1,36 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "კომენტარები",
- "New comment …" : "ახალი კომენტარი ...",
- "Delete comment" : "კომენტარის გაუქმება",
- "Post" : "პოსტი",
- "Cancel" : "უარყოფა",
- "Edit comment" : "კომენტარის ცვლილება",
- "[Deleted user]" : "[გაუქმებული მომხმარებელი]",
- "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ",
- "More comments …" : "მეტი კომენტარი ...",
- "Save" : "შენახვა",
- "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან",
- "Error occurred while retrieving comment with id {id}" : "კომენტარის id-ით {id}-ის მიღებისას წარმოიშვა შეცდომა",
- "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა",
- "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა",
- "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"],
- "Comment" : "კომენტარის დამატება",
- "You commented" : "თქვენ გააკეთეთ კომენტარი",
- "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი",
- "{author} commented" : "{author} მომხმარებელმა გააკეთა კომენტარი",
- "You commented on %1$s" : "თქვენ გააკეთეთ კომენტარი %1$s-ზე",
- "You commented on {file}" : "თქვენ გააკეთეთ კომენტარი {file}-ზე",
- "%1$s commented on %2$s" : "%1$s მომხმარებელმა გააკეთა კომენტარი %2$s-ზე",
- "{author} commented on {file}" : "{author} მომხმარებელმა გააკეთა კომენტარი {file}-ზე",
- "<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებზე",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “%s”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “{file}”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s გახსენათ “%2$s”-ზე გაკეთებულ კომენტარში",
- "{user} mentioned you in a comment on “{file}”" : "{user} გახსენათ “{file}” ფაილზე გაკეტებულ კომენტარში",
- "Unknown user" : "უცნობი მომხმარებელი",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\""
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/ka_GE.json b/apps/comments/l10n/ka_GE.json
deleted file mode 100644
index df3226ad00e..00000000000
--- a/apps/comments/l10n/ka_GE.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{ "translations": {
- "Comments" : "კომენტარები",
- "New comment …" : "ახალი კომენტარი ...",
- "Delete comment" : "კომენტარის გაუქმება",
- "Post" : "პოსტი",
- "Cancel" : "უარყოფა",
- "Edit comment" : "კომენტარის ცვლილება",
- "[Deleted user]" : "[გაუქმებული მომხმარებელი]",
- "No comments yet, start the conversation!" : "ჯერ კომენტარები არაა, დაიწყეთ საუბარი! ",
- "More comments …" : "მეტი კომენტარი ...",
- "Save" : "შენახვა",
- "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან",
- "Error occurred while retrieving comment with id {id}" : "კომენტარის id-ით {id}-ის მიღებისას წარმოიშვა შეცდომა",
- "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა",
- "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა",
- "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"],
- "Comment" : "კომენტარის დამატება",
- "You commented" : "თქვენ გააკეთეთ კომენტარი",
- "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი",
- "{author} commented" : "{author} მომხმარებელმა გააკეთა კომენტარი",
- "You commented on %1$s" : "თქვენ გააკეთეთ კომენტარი %1$s-ზე",
- "You commented on {file}" : "თქვენ გააკეთეთ კომენტარი {file}-ზე",
- "%1$s commented on %2$s" : "%1$s მომხმარებელმა გააკეთა კომენტარი %2$s-ზე",
- "{author} commented on {file}" : "{author} მომხმარებელმა გააკეთა კომენტარი {file}-ზე",
- "<strong>Comments</strong> for files" : "<strong>კომენტარები</strong> ფაილებზე",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “%s”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "თქვენ მოგიხსენიეს “{file}”-ში, ახლა უკვე გაუქმებული მომხმარებლის კომენტარში",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s გახსენათ “%2$s”-ზე გაკეთებულ კომენტარში",
- "{user} mentioned you in a comment on “{file}”" : "{user} გახსენათ “{file}” ფაილზე გაკეტებულ კომენტარში",
- "Unknown user" : "უცნობი მომხმარებელი",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\""
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/km.js b/apps/comments/l10n/km.js
deleted file mode 100644
index 16f065c86b3..00000000000
--- a/apps/comments/l10n/km.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "បោះបង់",
- "Save" : "រក្សាទុក"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/km.json b/apps/comments/l10n/km.json
deleted file mode 100644
index 20de21d56a1..00000000000
--- a/apps/comments/l10n/km.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "បោះបង់",
- "Save" : "រក្សាទុក"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/kn.js b/apps/comments/l10n/kn.js
deleted file mode 100644
index 97a48f9cb3e..00000000000
--- a/apps/comments/l10n/kn.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "ರದ್ದು",
- "Save" : "ಉಳಿಸಿ"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/kn.json b/apps/comments/l10n/kn.json
deleted file mode 100644
index 8a2b49fc262..00000000000
--- a/apps/comments/l10n/kn.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "ರದ್ದು",
- "Save" : "ಉಳಿಸಿ"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/ko.js b/apps/comments/l10n/ko.js
index 344ce0cdd01..5b75a6eea40 100644
--- a/apps/comments/l10n/ko.js
+++ b/apps/comments/l10n/ko.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "댓글",
- "New comment …" : "새로운 댓글 …",
- "Delete comment" : "댓글 삭제",
- "Post" : "게시",
- "Cancel" : "취소",
- "Edit comment" : "댓글 편집",
- "[Deleted user]" : "[삭제된 사용자]",
- "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
- "More comments …" : "더 많은 댓글 …",
- "Save" : "저장",
- "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능",
- "Error occurred while retrieving comment with id {id}" : "댓글 ID {id}을(를) 가져오는 중 오류가 발생했습니다",
- "Error occurred while updating comment with id {id}" : "댓글 ID {id}을(를) 업데이트하는 동안 오류가 발생했습니다 ",
- "Error occurred while posting comment" : "댓글을 게시하는 중 오류가 발생했습니다",
- "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"],
- "Comment" : "설명",
"You commented" : "댓글 남김",
- "%1$s commented" : "%1$s 님의 댓글",
"{author} commented" : "{author} 님이 댓글 남김",
"You commented on %1$s" : "%1$s에 댓글 남김",
"You commented on {file}" : "{file}에 댓글 남김",
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “%s”의 댓글에서 여러분을 언급함",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 여러분을 언급함",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함",
- "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함",
- "Unknown user" : "알 수 없는 사용자",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함"
+ "Files" : "파일",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
+ "Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
+ "Edit comment" : "댓글 편집",
+ "Delete comment" : "댓글 삭제",
+ "Cancel edit" : "편집 취소",
+ "New comment" : "새로운 댓글",
+ "Write a comment …" : "댓글 쓰기 ...",
+ "Post comment" : "댓글 게시",
+ "@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.",
+ "Could not reload comments" : "댓글을 다시 불러올 수 없음",
+ "Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음",
+ "Unable to load the comments list" : "댓글 목록을 불러올 수 없음",
+ "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
+ "No more messages" : "메시지 더 이상 없음",
+ "Retry" : "다시 시도",
+ "_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"],
+ "Comment" : "설명",
+ "An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생",
+ "Comment deleted" : "댓글이 삭제됨",
+ "An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생",
+ "An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/ko.json b/apps/comments/l10n/ko.json
index da3f833874b..a8aed7edea4 100644
--- a/apps/comments/l10n/ko.json
+++ b/apps/comments/l10n/ko.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "댓글",
- "New comment …" : "새로운 댓글 …",
- "Delete comment" : "댓글 삭제",
- "Post" : "게시",
- "Cancel" : "취소",
- "Edit comment" : "댓글 편집",
- "[Deleted user]" : "[삭제된 사용자]",
- "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
- "More comments …" : "더 많은 댓글 …",
- "Save" : "저장",
- "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능",
- "Error occurred while retrieving comment with id {id}" : "댓글 ID {id}을(를) 가져오는 중 오류가 발생했습니다",
- "Error occurred while updating comment with id {id}" : "댓글 ID {id}을(를) 업데이트하는 동안 오류가 발생했습니다 ",
- "Error occurred while posting comment" : "댓글을 게시하는 중 오류가 발생했습니다",
- "_%n unread comment_::_%n unread comments_" : ["읽지 않은 댓글 %n개"],
- "Comment" : "설명",
"You commented" : "댓글 남김",
- "%1$s commented" : "%1$s 님의 댓글",
"{author} commented" : "{author} 님이 댓글 남김",
"You commented on %1$s" : "%1$s에 댓글 남김",
"You commented on {file}" : "{file}에 댓글 남김",
"%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김",
"{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김",
"<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “%s”의 댓글에서 여러분을 언급함",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "삭제된 사용자가 남긴 “{file}”의 댓글에서 여러분을 언급함",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함",
- "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함",
- "Unknown user" : "알 수 없는 사용자",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함"
+ "Files" : "파일",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "삭제된 계정이 게시한 “{file}”의 댓글에서 나를 언급함",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 님이 “{file}”에 남긴 댓글에서 나를 언급함",
+ "Files app plugin to add comments to files" : "파일에 댓글을 남기는 파일 앱 플러그인",
+ "Edit comment" : "댓글 편집",
+ "Delete comment" : "댓글 삭제",
+ "Cancel edit" : "편집 취소",
+ "New comment" : "새로운 댓글",
+ "Write a comment …" : "댓글 쓰기 ...",
+ "Post comment" : "댓글 게시",
+ "@ for mentions, : for emoji, / for smart picker" : "@을 입력해 언급, :을 입력해 이모지 추가, /을 입력해 스마트 피커를 사용하십시오.",
+ "Could not reload comments" : "댓글을 다시 불러올 수 없음",
+ "Failed to mark comments as read" : "댓글을 읽음 표시할 수 없음",
+ "Unable to load the comments list" : "댓글 목록을 불러올 수 없음",
+ "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!",
+ "No more messages" : "메시지 더 이상 없음",
+ "Retry" : "다시 시도",
+ "_1 new comment_::_{unread} new comments_" : ["새 댓글 {unread}개"],
+ "Comment" : "설명",
+ "An error occurred while trying to edit the comment" : "댓글을 편집하는 중 오류 발생",
+ "Comment deleted" : "댓글이 삭제됨",
+ "An error occurred while trying to delete the comment" : "댓글을 삭제하는 중 오류 발생",
+ "An error occurred while trying to create the comment" : "댓글을 작성하는 중 오류 발생"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ku_IQ.js b/apps/comments/l10n/ku_IQ.js
deleted file mode 100644
index bbbe6f95bb1..00000000000
--- a/apps/comments/l10n/ku_IQ.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "لابردن",
- "Save" : "پاشکه‌وتکردن"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ku_IQ.json b/apps/comments/l10n/ku_IQ.json
deleted file mode 100644
index 1a46f867235..00000000000
--- a/apps/comments/l10n/ku_IQ.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "لابردن",
- "Save" : "پاشکه‌وتکردن"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/lb.js b/apps/comments/l10n/lb.js
deleted file mode 100644
index d7f8c5884ac..00000000000
--- a/apps/comments/l10n/lb.js
+++ /dev/null
@@ -1,8 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Ofbriechen",
- "Save" : "Späicheren",
- "Comment" : "Kommentar"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/lb.json b/apps/comments/l10n/lb.json
deleted file mode 100644
index bfa307a7e8d..00000000000
--- a/apps/comments/l10n/lb.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{ "translations": {
- "Cancel" : "Ofbriechen",
- "Save" : "Späicheren",
- "Comment" : "Kommentar"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js
index 323f74dadcc..c61f36f8af8 100644
--- a/apps/comments/l10n/lt_LT.js
+++ b/apps/comments/l10n/lt_LT.js
@@ -2,33 +2,28 @@ OC.L10N.register(
"comments",
{
"Comments" : "Komentarai",
- "New comment …" : "Naujas komentaras …",
- "Delete comment" : "Ištrinti komentarą",
- "Post" : "Įrašas",
- "Cancel" : "Atsisakyti",
- "Edit comment" : "Redaguoti komentarą",
- "[Deleted user]" : "[Ištrintas naudotojas]",
- "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!",
- "More comments …" : "Daugiau komentarų …",
- "Save" : "Įrašyti",
- "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}",
- "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}",
- "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}",
- "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida",
- "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"],
- "Comment" : "Komentaras",
"You commented" : "Jūs pakomentavote",
- "%1$s commented" : "%1$s pakomentavo",
"{author} commented" : "{author} pakomentavo",
"You commented on %1$s" : "Pakomentavote %1$s",
"You commented on {file}" : "Pakomentavote {file}",
"%1$s commented on %2$s" : "%1$s pakomentavo %2$s",
"{author} commented on {file}" : "{author} pakomentavo {file}",
- "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”",
- "Unknown user" : "Nežinomas naudotojas",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\""
+ "<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
+ "Files" : "Failai",
+ "Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
+ "Edit comment" : "Taisyti komentarą",
+ "Delete comment" : "Ištrinti komentarą",
+ "Cancel edit" : "Atsisakyti taisymo",
+ "New comment" : "Naujas komentaras",
+ "Post comment" : "Paskelbti komentarą",
+ "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
+ "No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
+ "Retry" : "Bandyti dar kartą",
+ "_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
+ "Comment" : "Komentaras",
+ "An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
+ "Comment deleted" : "Komentaras ištrintas",
+ "An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
+ "An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json
index 1290f72f39b..eed1892b83d 100644
--- a/apps/comments/l10n/lt_LT.json
+++ b/apps/comments/l10n/lt_LT.json
@@ -1,32 +1,27 @@
{ "translations": {
"Comments" : "Komentarai",
- "New comment …" : "Naujas komentaras …",
- "Delete comment" : "Ištrinti komentarą",
- "Post" : "Įrašas",
- "Cancel" : "Atsisakyti",
- "Edit comment" : "Redaguoti komentarą",
- "[Deleted user]" : "[Ištrintas naudotojas]",
- "No comments yet, start the conversation!" : "Kol kas komentarų nėra, pradėkite pokalbį!",
- "More comments …" : "Daugiau komentarų …",
- "Save" : "Įrašyti",
- "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}",
- "Error occurred while retrieving comment with id {id}" : "Klaida bandant parodyti komentarą pagal identifikavimo numerį {id}",
- "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}",
- "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida",
- "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"],
- "Comment" : "Komentaras",
"You commented" : "Jūs pakomentavote",
- "%1$s commented" : "%1$s pakomentavo",
"{author} commented" : "{author} pakomentavo",
"You commented on %1$s" : "Pakomentavote %1$s",
"You commented on {file}" : "Pakomentavote {file}",
"%1$s commented on %2$s" : "%1$s pakomentavo %2$s",
"{author} commented on {file}" : "{author} pakomentavo {file}",
- "<strong>Comments</strong> for files" : "<strong>Failų komentarai</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s paminėjo jus komentare \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} paminėjo jus komentare “{file}”",
- "Unknown user" : "Nežinomas naudotojas",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\""
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"
+ "<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
+ "Files" : "Failai",
+ "Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
+ "Edit comment" : "Taisyti komentarą",
+ "Delete comment" : "Ištrinti komentarą",
+ "Cancel edit" : "Atsisakyti taisymo",
+ "New comment" : "Naujas komentaras",
+ "Post comment" : "Paskelbti komentarą",
+ "Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
+ "No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
+ "Retry" : "Bandyti dar kartą",
+ "_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
+ "Comment" : "Komentaras",
+ "An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
+ "Comment deleted" : "Komentaras ištrintas",
+ "An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
+ "An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
+},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/lv.js b/apps/comments/l10n/lv.js
deleted file mode 100644
index e82c5cac90d..00000000000
--- a/apps/comments/l10n/lv.js
+++ /dev/null
@@ -1,32 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Komentāri",
- "New comment …" : "Jauns komentārs...",
- "Delete comment" : "Dzēst komentāru",
- "Post" : "Pievienot",
- "Cancel" : "Atcelt",
- "Edit comment" : "Rediģēt komentāru",
- "[Deleted user]" : "[Dzēsts lietotājs]",
- "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!",
- "More comments …" : "Vairāk komentāri...",
- "Save" : "Saglabāt",
- "Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}",
- "Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}",
- "Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}",
- "Error occurred while posting comment" : "Notika kļūda pievienojot komentāru",
- "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"],
- "Comment" : "Komentārs",
- "You commented" : "Tu komentēji",
- "%1$s commented" : "%1$s komentēja",
- "{author} commented" : "{author} komentēja",
- "You commented on %1$s" : "Tu komentēji %1$s",
- "You commented on {file}" : "Tu komentēji {file}",
- "%1$s commented on %2$s" : "%1$s komentēja %2$s",
- "{author} commented on {file}" : "{author} komentārs {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”",
- "Unknown user" : "Nezināms lietotājs"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/comments/l10n/lv.json b/apps/comments/l10n/lv.json
deleted file mode 100644
index ffe078c360f..00000000000
--- a/apps/comments/l10n/lv.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{ "translations": {
- "Comments" : "Komentāri",
- "New comment …" : "Jauns komentārs...",
- "Delete comment" : "Dzēst komentāru",
- "Post" : "Pievienot",
- "Cancel" : "Atcelt",
- "Edit comment" : "Rediģēt komentāru",
- "[Deleted user]" : "[Dzēsts lietotājs]",
- "No comments yet, start the conversation!" : "Vēl nav komentāru, uzsāciet sarunu!",
- "More comments …" : "Vairāk komentāri...",
- "Save" : "Saglabāt",
- "Allowed characters {count} of {max}" : "Atļautās zīmes {count} no {max}",
- "Error occurred while retrieving comment with id {id}" : "Notika kļūda saņemot komentāru ar id {id}",
- "Error occurred while updating comment with id {id}" : "Kļūda atjauninot komentāru ar id {id}",
- "Error occurred while posting comment" : "Notika kļūda pievienojot komentāru",
- "_%n unread comment_::_%n unread comments_" : ["%n nelasīti komentāri","%n nelasīti komentāri","%n nelasīti komentāri"],
- "Comment" : "Komentārs",
- "You commented" : "Tu komentēji",
- "%1$s commented" : "%1$s komentēja",
- "{author} commented" : "{author} komentēja",
- "You commented on %1$s" : "Tu komentēji %1$s",
- "You commented on {file}" : "Tu komentēji {file}",
- "%1$s commented on %2$s" : "%1$s komentēja %2$s",
- "{author} commented on {file}" : "{author} komentārs {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentāri</strong> datnēm",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s minēja jūs komentārā “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} minēja jūs komentārā “{file}”",
- "Unknown user" : "Nezināms lietotājs"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/mk.js b/apps/comments/l10n/mk.js
index eadb14aba45..9c73793ce49 100644
--- a/apps/comments/l10n/mk.js
+++ b/apps/comments/l10n/mk.js
@@ -1,9 +1,36 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "Откажи",
- "Save" : "Сними",
+ "Comments" : "Коментари",
+ "You commented" : "Kоментиравте",
+ "{author} commented" : "{author} коментираше",
+ "You commented on %1$s" : "Коментиравте на %1$s",
+ "You commented on {file}" : "Коментиравте на {file}",
+ "%1$s commented on %2$s" : "%1$s коментираше на %2$s",
+ "{author} commented on {file}" : "{author} коментираше на {file}",
+ "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за датотеки",
+ "Files" : "Датотеки",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Бевте спомнати на “{file}”, во коментар од корисник кој сега е избришан",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} те спомна во коментар на датотеката “{file}”",
+ "Files app plugin to add comments to files" : "Додади додаток за коментирање на датотеки",
+ "Edit comment" : "Измени го коментарот",
+ "Delete comment" : "Избриши коментар",
+ "Cancel edit" : "Откажи ажурирање",
+ "New comment" : "Нов коментар",
+ "Write a comment …" : "Напиши коментар ...",
+ "Post comment" : "Објави коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ за спомнување, : за емоција, / за паметен избор",
+ "Could not reload comments" : "Неможе да се вчитаат коментарите",
+ "Failed to mark comments as read" : "Неуспешно означување на коментарот како прочитан",
+ "Unable to load the comments list" : "Неможе да се вчита листата на коментари",
+ "No comments yet, start the conversation!" : "Сеуште нема коментари, започнете разговор!",
+ "No more messages" : "Нема повеќе пораки",
+ "Retry" : "Обидете се повторно",
+ "_1 new comment_::_{unread} new comments_" : ["1 нов коментар","{unread} нови коментари"],
"Comment" : "Коментар",
- "%1$s commented" : "%1$s коментиран"
+ "An error occurred while trying to edit the comment" : "Настана грешка при обид за ажурирање на коментар",
+ "Comment deleted" : "Коментарот е избришан",
+ "An error occurred while trying to delete the comment" : "Настана грешка при обидот за бришење на коментар",
+ "An error occurred while trying to create the comment" : "Настана грешка при обидот за креирање на коментар"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/comments/l10n/mk.json b/apps/comments/l10n/mk.json
index 106972fb5ec..5cd8c7b1076 100644
--- a/apps/comments/l10n/mk.json
+++ b/apps/comments/l10n/mk.json
@@ -1,7 +1,34 @@
{ "translations": {
- "Cancel" : "Откажи",
- "Save" : "Сними",
+ "Comments" : "Коментари",
+ "You commented" : "Kоментиравте",
+ "{author} commented" : "{author} коментираше",
+ "You commented on %1$s" : "Коментиравте на %1$s",
+ "You commented on {file}" : "Коментиравте на {file}",
+ "%1$s commented on %2$s" : "%1$s коментираше на %2$s",
+ "{author} commented on {file}" : "{author} коментираше на {file}",
+ "<strong>Comments</strong> for files" : "<strong>Коментари</strong> за датотеки",
+ "Files" : "Датотеки",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Бевте спомнати на “{file}”, во коментар од корисник кој сега е избришан",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} те спомна во коментар на датотеката “{file}”",
+ "Files app plugin to add comments to files" : "Додади додаток за коментирање на датотеки",
+ "Edit comment" : "Измени го коментарот",
+ "Delete comment" : "Избриши коментар",
+ "Cancel edit" : "Откажи ажурирање",
+ "New comment" : "Нов коментар",
+ "Write a comment …" : "Напиши коментар ...",
+ "Post comment" : "Објави коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ за спомнување, : за емоција, / за паметен избор",
+ "Could not reload comments" : "Неможе да се вчитаат коментарите",
+ "Failed to mark comments as read" : "Неуспешно означување на коментарот како прочитан",
+ "Unable to load the comments list" : "Неможе да се вчита листата на коментари",
+ "No comments yet, start the conversation!" : "Сеуште нема коментари, започнете разговор!",
+ "No more messages" : "Нема повеќе пораки",
+ "Retry" : "Обидете се повторно",
+ "_1 new comment_::_{unread} new comments_" : ["1 нов коментар","{unread} нови коментари"],
"Comment" : "Коментар",
- "%1$s commented" : "%1$s коментиран"
+ "An error occurred while trying to edit the comment" : "Настана грешка при обид за ажурирање на коментар",
+ "Comment deleted" : "Коментарот е избришан",
+ "An error occurred while trying to delete the comment" : "Настана грешка при обидот за бришење на коментар",
+ "An error occurred while trying to create the comment" : "Настана грешка при обидот за креирање на коментар"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/mn.js b/apps/comments/l10n/mn.js
deleted file mode 100644
index 53c2a9287b8..00000000000
--- a/apps/comments/l10n/mn.js
+++ /dev/null
@@ -1,32 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Сэтгэгдэл",
- "New comment …" : "Шинэ сэтгэгдэл",
- "Delete comment" : "Сэтгэгдэл устгах",
- "Post" : "Нийтлэл",
- "Cancel" : "Цуцлах",
- "Edit comment" : "Сэтгэгдэл засах",
- "[Deleted user]" : "[Хэрэглэгч устгагдсан]",
- "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна",
- "More comments …" : "Дараагийн сэтгэгдэлүүд",
- "Save" : "Хадгалах",
- "Allowed characters {count} of {max}" : "{max} боломжойгоос {count} тэмдэгт орсон байна",
- "Error occurred while retrieving comment with id {id}" : "{id} дугаартай сэтгэгдлийг авахад алдаа гарлаа",
- "Error occurred while updating comment with id {id}" : "{id} дугаартай сэтгэгдлийг шинэчилэхэд алдаа гарлаа",
- "Error occurred while posting comment" : "Сэтгэгдлийг хадгалахад алдаа гарлаа",
- "Comment" : "Сэтгэгдэл",
- "You commented" : "Та сэтгэгдэл бичсэн байна",
- "%1$s commented" : "%1$s сэтгэгдэл бичсэн",
- "{author} commented" : "{author} сэтгэгдэл бичсэн",
- "You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна",
- "You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна",
- "%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн",
- "{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн",
- "<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s нь таныг “%2$s”-ы сэтгэгдэлд дурдсан",
- "{user} mentioned you in a comment on “{file}”" : "{user} нь таныг “{file}”-ын сэтгэгдэлд дурдсан",
- "Unknown user" : " хэрэглэгч",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/mn.json b/apps/comments/l10n/mn.json
deleted file mode 100644
index 0276bbb4a9e..00000000000
--- a/apps/comments/l10n/mn.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{ "translations": {
- "Comments" : "Сэтгэгдэл",
- "New comment …" : "Шинэ сэтгэгдэл",
- "Delete comment" : "Сэтгэгдэл устгах",
- "Post" : "Нийтлэл",
- "Cancel" : "Цуцлах",
- "Edit comment" : "Сэтгэгдэл засах",
- "[Deleted user]" : "[Хэрэглэгч устгагдсан]",
- "No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна",
- "More comments …" : "Дараагийн сэтгэгдэлүүд",
- "Save" : "Хадгалах",
- "Allowed characters {count} of {max}" : "{max} боломжойгоос {count} тэмдэгт орсон байна",
- "Error occurred while retrieving comment with id {id}" : "{id} дугаартай сэтгэгдлийг авахад алдаа гарлаа",
- "Error occurred while updating comment with id {id}" : "{id} дугаартай сэтгэгдлийг шинэчилэхэд алдаа гарлаа",
- "Error occurred while posting comment" : "Сэтгэгдлийг хадгалахад алдаа гарлаа",
- "Comment" : "Сэтгэгдэл",
- "You commented" : "Та сэтгэгдэл бичсэн байна",
- "%1$s commented" : "%1$s сэтгэгдэл бичсэн",
- "{author} commented" : "{author} сэтгэгдэл бичсэн",
- "You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна",
- "You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна",
- "%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн",
- "{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн",
- "<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s нь таныг “%2$s”-ы сэтгэгдэлд дурдсан",
- "{user} mentioned you in a comment on “{file}”" : "{user} нь таныг “{file}”-ын сэтгэгдэлд дурдсан",
- "Unknown user" : " хэрэглэгч",
- "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/ms_MY.js b/apps/comments/l10n/ms_MY.js
deleted file mode 100644
index 37e8518632d..00000000000
--- a/apps/comments/l10n/ms_MY.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Batal",
- "Save" : "Simpan"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/ms_MY.json b/apps/comments/l10n/ms_MY.json
deleted file mode 100644
index dd6b20cbd7b..00000000000
--- a/apps/comments/l10n/ms_MY.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Batal",
- "Save" : "Simpan"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/my_MM.js b/apps/comments/l10n/my_MM.js
deleted file mode 100644
index 2fd6d1d1a9c..00000000000
--- a/apps/comments/l10n/my_MM.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "ပယ်ဖျက်မည်"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/my_MM.json b/apps/comments/l10n/my_MM.json
deleted file mode 100644
index 28a85e87b39..00000000000
--- a/apps/comments/l10n/my_MM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Cancel" : "ပယ်ဖျက်မည်"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/nb.js b/apps/comments/l10n/nb.js
index 2ca162d6b07..dcc1127639a 100644
--- a/apps/comments/l10n/nb.js
+++ b/apps/comments/l10n/nb.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar",
- "Delete comment" : "Slett kommentar",
- "Post" : "Send",
- "Cancel" : "Avbryt",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet bruker]",
- "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
- "More comments …" : "Flere kommentarer..",
- "Save" : "Lagre",
- "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "En feil oppstod under posting av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"],
- "Comment" : "Kommentar",
"You commented" : "Du kommenterte",
- "%1$s commented" : "%1$s kommentert",
"{author} commented" : "{author} kommenterte",
"You commented on %1$s" : "Du kommenterte på %1$s",
"You commented on {file}" : "Du kommenterte på {file}",
"%1$s commented on %2$s" : "%1$s kommenterte %2$s",
"{author} commented on {file}" : "{author} kommenterte på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"%s\", i en kommentar av en bruker som siden har blitt slettet",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
- "Unknown user" : "Ukjent bruker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”"
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du ble nevnt på \"{file}\", i en kommentar av en konto som siden har blitt slettet",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nevnte deg i en kommentar til \"{file}\"",
+ "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer",
+ "Edit comment" : "Rediger kommentar",
+ "Delete comment" : "Slett kommentar",
+ "Cancel edit" : "Avbryt endring",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv en kommentar...",
+ "Post comment" : "Send kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for nevner, : for emoji, / for smartvelger",
+ "Could not reload comments" : "Kunne ikke laste inn kommentarene på nytt",
+ "Failed to mark comments as read" : "Markering av kommentarer som lest feilet",
+ "Unable to load the comments list" : "Kan ikke laste inn kommentarlisten",
+ "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
+ "No more messages" : "Ingen flere meldinger",
+ "Retry" : "Prøv igjen",
+ "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren",
+ "Comment deleted" : "Kommentar slettet",
+ "An error occurred while trying to delete the comment" : "Det oppsto en feil under forsøk på å slette kommentaren",
+ "An error occurred while trying to create the comment" : "Det oppsto en feil under forsøket på å opprette kommentaren"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/nb.json b/apps/comments/l10n/nb.json
index 2c5a2861609..84c7337798d 100644
--- a/apps/comments/l10n/nb.json
+++ b/apps/comments/l10n/nb.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar",
- "Delete comment" : "Slett kommentar",
- "Post" : "Send",
- "Cancel" : "Avbryt",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet bruker]",
- "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
- "More comments …" : "Flere kommentarer..",
- "Save" : "Lagre",
- "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "En feil oppstod under posting av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"],
- "Comment" : "Kommentar",
"You commented" : "Du kommenterte",
- "%1$s commented" : "%1$s kommentert",
"{author} commented" : "{author} kommenterte",
"You commented on %1$s" : "Du kommenterte på %1$s",
"You commented on {file}" : "Du kommenterte på {file}",
"%1$s commented on %2$s" : "%1$s kommenterte %2$s",
"{author} commented on {file}" : "{author} kommenterte på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"%s\", i en kommentar av en bruker som siden har blitt slettet",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
- "Unknown user" : "Ukjent bruker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”"
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du ble nevnt på \"{file}\", i en kommentar av en konto som siden har blitt slettet",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nevnte deg i en kommentar til \"{file}\"",
+ "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer",
+ "Edit comment" : "Rediger kommentar",
+ "Delete comment" : "Slett kommentar",
+ "Cancel edit" : "Avbryt endring",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv en kommentar...",
+ "Post comment" : "Send kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ for nevner, : for emoji, / for smartvelger",
+ "Could not reload comments" : "Kunne ikke laste inn kommentarene på nytt",
+ "Failed to mark comments as read" : "Markering av kommentarer som lest feilet",
+ "Unable to load the comments list" : "Kan ikke laste inn kommentarlisten",
+ "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
+ "No more messages" : "Ingen flere meldinger",
+ "Retry" : "Prøv igjen",
+ "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren",
+ "Comment deleted" : "Kommentar slettet",
+ "An error occurred while trying to delete the comment" : "Det oppsto en feil under forsøk på å slette kommentaren",
+ "An error occurred while trying to create the comment" : "Det oppsto en feil under forsøket på å opprette kommentaren"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/nb_NO.js b/apps/comments/l10n/nb_NO.js
deleted file mode 100644
index d6ac9a2b7b6..00000000000
--- a/apps/comments/l10n/nb_NO.js
+++ /dev/null
@@ -1,39 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Kommentarer",
- "Unknown user" : "Ukjent bruker",
- "New comment …" : "Ny kommentar",
- "Delete comment" : "Slett kommentar",
- "Post" : "Send",
- "Cancel" : "Avbryt",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet bruker]",
- "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
- "More comments …" : "Flere kommentarer..",
- "Save" : "Lagre",
- "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "En feil oppstod under posting av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"],
- "Comment" : "Kommentar",
- "You commented" : "Du kommenterte",
- "%1$s commented" : "%1$s kommentert",
- "{author} commented" : "{author} kommenterte",
- "You commented on %1$s" : "Du kommenterte på %1$s",
- "You commented on {file}" : "Du kommenterte på {file}",
- "%1$s commented on %2$s" : "%1$s kommenterte %2$s",
- "{author} commented on {file}" : "{author} kommenterte på {file}",
- "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
- "Type in a new comment..." : "Skriv inn en ny kommentar...",
- "No other comments available" : "Ingen andre kommentarer tilgjengelig",
- "More comments..." : "Flere kommentarer..",
- "{count} unread comments" : "{count} uleste kommentarer",
- "You commented on %2$s" : "Du kommenterte til %2$s"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/nb_NO.json b/apps/comments/l10n/nb_NO.json
deleted file mode 100644
index 293eca39e84..00000000000
--- a/apps/comments/l10n/nb_NO.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{ "translations": {
- "Comments" : "Kommentarer",
- "Unknown user" : "Ukjent bruker",
- "New comment …" : "Ny kommentar",
- "Delete comment" : "Slett kommentar",
- "Post" : "Send",
- "Cancel" : "Avbryt",
- "Edit comment" : "Rediger kommentar",
- "[Deleted user]" : "[Slettet bruker]",
- "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!",
- "More comments …" : "Flere kommentarer..",
- "Save" : "Lagre",
- "Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "En feil oppstod under henting av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "En feil oppstod under oppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "En feil oppstod under posting av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"],
- "Comment" : "Kommentar",
- "You commented" : "Du kommenterte",
- "%1$s commented" : "%1$s kommentert",
- "{author} commented" : "{author} kommenterte",
- "You commented on %1$s" : "Du kommenterte på %1$s",
- "You commented on {file}" : "Du kommenterte på {file}",
- "%1$s commented on %2$s" : "%1$s kommenterte %2$s",
- "{author} commented on {file}" : "{author} kommenterte på {file}",
- "<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (now) slettet bruker nevnte deg i en kommentar til “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "A (now) slettet bruker nevnte deg i en kommentar til “{file}”",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nevnte deg i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”",
- "Type in a new comment..." : "Skriv inn en ny kommentar...",
- "No other comments available" : "Ingen andre kommentarer tilgjengelig",
- "More comments..." : "Flere kommentarer..",
- "{count} unread comments" : "{count} uleste kommentarer",
- "You commented on %2$s" : "Du kommenterte til %2$s"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/nds.js b/apps/comments/l10n/nds.js
deleted file mode 100644
index 9fc7bc4cfe2..00000000000
--- a/apps/comments/l10n/nds.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Abbrechen"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/nds.json b/apps/comments/l10n/nds.json
deleted file mode 100644
index 8c981f87994..00000000000
--- a/apps/comments/l10n/nds.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Cancel" : "Abbrechen"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/nl.js b/apps/comments/l10n/nl.js
index c27033507a2..cb42f547b7c 100644
--- a/apps/comments/l10n/nl.js
+++ b/apps/comments/l10n/nl.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Reacties",
- "New comment …" : "Nieuwe reactie ...",
- "Delete comment" : "Verwijder reactie",
- "Post" : "Reageer",
- "Cancel" : "Annuleren",
- "Edit comment" : "Bewerk reactie",
- "[Deleted user]" : "[Verwijderde gebruiker]",
- "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
- "More comments …" : "Meer reacties ...",
- "Save" : "Opslaan",
- "Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
- "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}",
- "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}",
- "Error occurred while posting comment" : "Er trad een fout op bij plaatsen reactie",
- "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"],
- "Comment" : "Reactie",
"You commented" : "Je reageerde",
- "%1$s commented" : "%1$s heeft gereageerd",
"{author} commented" : "{author} reageerde",
"You commented on %1$s" : "Je reageerde op %1$s",
"You commented on {file}" : "Je reageerde op {file}",
"%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s",
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Je werd op “%s”, in een reactie vermeld door een sindsdien verwijderde gebruiker",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vermeldde jou in een reactie op “%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\"",
- "Unknown user" : "Onbekende gebruiker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"{file}\""
+ "Files" : "Bestanden",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
+ "Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
+ "Edit comment" : "Reactie bewerken",
+ "Delete comment" : "Reactie verwijderen",
+ "Cancel edit" : "Bewerking annuleren",
+ "New comment" : "Nieuwe reactie",
+ "Write a comment …" : "Schrijf een reactie…",
+ "Post comment" : "Reactie plaatsen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
+ "Could not reload comments" : "Kon reactie niet opnieuw laden",
+ "Failed to mark comments as read" : "Kon reacties niet als gelezen markeren",
+ "Unable to load the comments list" : "Kan reactielijst niet laden",
+ "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
+ "No more messages" : "Geen berichten meer",
+ "Retry" : "Opnieuw proberen",
+ "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"],
+ "Comment" : "Reactie",
+ "An error occurred while trying to edit the comment" : "Er is een fout opgetreden bij het bewerken van de reactie",
+ "Comment deleted" : "Reactie verwijderd",
+ "An error occurred while trying to delete the comment" : "Er is een fout opgetreden bij het verwijderen van de reactie",
+ "An error occurred while trying to create the comment" : "Er is een fout opgetreden bij het aanmaken van de reactie"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/nl.json b/apps/comments/l10n/nl.json
index bde62425a10..6d660138be1 100644
--- a/apps/comments/l10n/nl.json
+++ b/apps/comments/l10n/nl.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Reacties",
- "New comment …" : "Nieuwe reactie ...",
- "Delete comment" : "Verwijder reactie",
- "Post" : "Reageer",
- "Cancel" : "Annuleren",
- "Edit comment" : "Bewerk reactie",
- "[Deleted user]" : "[Verwijderde gebruiker]",
- "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
- "More comments …" : "Meer reacties ...",
- "Save" : "Opslaan",
- "Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
- "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}",
- "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}",
- "Error occurred while posting comment" : "Er trad een fout op bij plaatsen reactie",
- "_%n unread comment_::_%n unread comments_" : ["%n ongelezen reactie","%n ongelezen reacties"],
- "Comment" : "Reactie",
"You commented" : "Je reageerde",
- "%1$s commented" : "%1$s heeft gereageerd",
"{author} commented" : "{author} reageerde",
"You commented on %1$s" : "Je reageerde op %1$s",
"You commented on {file}" : "Je reageerde op {file}",
"%1$s commented on %2$s" : "%1$s heeft gereageerd op %2$s",
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Je werd op “%s”, in een reactie vermeld door een sindsdien verwijderde gebruiker",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vermeldde jou in een reactie op “%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\"",
- "Unknown user" : "Onbekende gebruiker",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Een (nu) verwijderde gebruiker vermeldde je in een reactie op \"{file}\""
+ "Files" : "Bestanden",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
+ "Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
+ "Edit comment" : "Reactie bewerken",
+ "Delete comment" : "Reactie verwijderen",
+ "Cancel edit" : "Bewerking annuleren",
+ "New comment" : "Nieuwe reactie",
+ "Write a comment …" : "Schrijf een reactie…",
+ "Post comment" : "Reactie plaatsen",
+ "@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
+ "Could not reload comments" : "Kon reactie niet opnieuw laden",
+ "Failed to mark comments as read" : "Kon reacties niet als gelezen markeren",
+ "Unable to load the comments list" : "Kan reactielijst niet laden",
+ "No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
+ "No more messages" : "Geen berichten meer",
+ "Retry" : "Opnieuw proberen",
+ "_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"],
+ "Comment" : "Reactie",
+ "An error occurred while trying to edit the comment" : "Er is een fout opgetreden bij het bewerken van de reactie",
+ "Comment deleted" : "Reactie verwijderd",
+ "An error occurred while trying to delete the comment" : "Er is een fout opgetreden bij het verwijderen van de reactie",
+ "An error occurred while trying to create the comment" : "Er is een fout opgetreden bij het aanmaken van de reactie"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/nn_NO.js b/apps/comments/l10n/nn_NO.js
deleted file mode 100644
index ce79cf242bc..00000000000
--- a/apps/comments/l10n/nn_NO.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Avbryt",
- "Save" : "Lagra"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/nn_NO.json b/apps/comments/l10n/nn_NO.json
deleted file mode 100644
index 51f3ed49364..00000000000
--- a/apps/comments/l10n/nn_NO.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Avbryt",
- "Save" : "Lagra"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/oc.js b/apps/comments/l10n/oc.js
index 94b99dfa366..cee38c3d2ec 100644
--- a/apps/comments/l10n/oc.js
+++ b/apps/comments/l10n/oc.js
@@ -1,23 +1,28 @@
OC.L10N.register(
"comments",
{
- "Type in a new comment..." : "Escriure un comentari novèl...",
- "Delete comment" : "Suprimir lo comentari",
- "Post" : "Mandar",
- "Cancel" : "Anullar",
- "Edit comment" : "Modificar lo comentari",
- "[Deleted user]" : "[Utilizaire suprimit]",
"Comments" : "Comentaris",
- "No other comments available" : "Pas cap d'autre comentari",
- "More comments..." : "Mai de comentaris...",
- "Save" : "Enregistrar",
- "Allowed characters {count} of {max}" : "{count} sus {max} caractèrs autorizats",
- "{count} unread comments" : "{count} comentaris pas legits",
- "Comment" : "Comentar",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> pels fichièrs <em>(totjorn listats dins lo flux)</em>",
"You commented" : "Avètz comentat",
- "%1$s commented" : "%1$s a comentat",
- "You commented on %2$s" : "Avètz comentat %2$s",
- "%1$s commented on %2$s" : "%1$s a comentat %2$s"
+ "{author} commented" : "{author} a comentat",
+ "You commented on %1$s" : "Comentèretz %1$s",
+ "You commented on {file}" : "Comentèretz {file}",
+ "%1$s commented on %2$s" : "%1$s comentèt %2$s",
+ "{author} commented on {file}" : "{author} comentèt {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> de fichièrs",
+ "Files app plugin to add comments to files" : "Extension d’aplication Fichièrs per apondre de comentaris als fichièrs",
+ "Edit comment" : "Modificar lo comentari",
+ "Delete comment" : "Suprimir lo comentari",
+ "Cancel edit" : "Anullar la modificacion",
+ "Post comment" : "Publicar lo comentari",
+ "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris",
+ "No comments yet, start the conversation!" : "Cap de comentari pel moment, començat la conversacion !",
+ "No more messages" : "Pas mai de messatge",
+ "Retry" : "Tornar ensajar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentari novèl","{unread} comentaris novèls"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Error en ensajant de modificar lo comentari",
+ "Comment deleted" : "Comentari suprimit",
+ "An error occurred while trying to delete the comment" : "Error en ensajant de suprimir lo comentari",
+ "An error occurred while trying to create the comment" : "Error en ensajant de crear lo comentari"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/comments/l10n/oc.json b/apps/comments/l10n/oc.json
index 229d863ffc1..5d4636fb27e 100644
--- a/apps/comments/l10n/oc.json
+++ b/apps/comments/l10n/oc.json
@@ -1,21 +1,26 @@
{ "translations": {
- "Type in a new comment..." : "Escriure un comentari novèl...",
- "Delete comment" : "Suprimir lo comentari",
- "Post" : "Mandar",
- "Cancel" : "Anullar",
- "Edit comment" : "Modificar lo comentari",
- "[Deleted user]" : "[Utilizaire suprimit]",
"Comments" : "Comentaris",
- "No other comments available" : "Pas cap d'autre comentari",
- "More comments..." : "Mai de comentaris...",
- "Save" : "Enregistrar",
- "Allowed characters {count} of {max}" : "{count} sus {max} caractèrs autorizats",
- "{count} unread comments" : "{count} comentaris pas legits",
- "Comment" : "Comentar",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentaris</strong> pels fichièrs <em>(totjorn listats dins lo flux)</em>",
"You commented" : "Avètz comentat",
- "%1$s commented" : "%1$s a comentat",
- "You commented on %2$s" : "Avètz comentat %2$s",
- "%1$s commented on %2$s" : "%1$s a comentat %2$s"
+ "{author} commented" : "{author} a comentat",
+ "You commented on %1$s" : "Comentèretz %1$s",
+ "You commented on {file}" : "Comentèretz {file}",
+ "%1$s commented on %2$s" : "%1$s comentèt %2$s",
+ "{author} commented on {file}" : "{author} comentèt {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentaris</strong> de fichièrs",
+ "Files app plugin to add comments to files" : "Extension d’aplication Fichièrs per apondre de comentaris als fichièrs",
+ "Edit comment" : "Modificar lo comentari",
+ "Delete comment" : "Suprimir lo comentari",
+ "Cancel edit" : "Anullar la modificacion",
+ "Post comment" : "Publicar lo comentari",
+ "Unable to load the comments list" : "Cargament impossible de la lista dels comentaris",
+ "No comments yet, start the conversation!" : "Cap de comentari pel moment, començat la conversacion !",
+ "No more messages" : "Pas mai de messatge",
+ "Retry" : "Tornar ensajar",
+ "_1 new comment_::_{unread} new comments_" : ["1 comentari novèl","{unread} comentaris novèls"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Error en ensajant de modificar lo comentari",
+ "Comment deleted" : "Comentari suprimit",
+ "An error occurred while trying to delete the comment" : "Error en ensajant de suprimir lo comentari",
+ "An error occurred while trying to create the comment" : "Error en ensajant de crear lo comentari"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/pa.js b/apps/comments/l10n/pa.js
deleted file mode 100644
index 98e2affcd12..00000000000
--- a/apps/comments/l10n/pa.js
+++ /dev/null
@@ -1,6 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "ਰੱਦ ਕਰੋ"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/pa.json b/apps/comments/l10n/pa.json
deleted file mode 100644
index 2472134c5f2..00000000000
--- a/apps/comments/l10n/pa.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "translations": {
- "Cancel" : "ਰੱਦ ਕਰੋ"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js
index 813b90ef042..918cfffa852 100644
--- a/apps/comments/l10n/pl.js
+++ b/apps/comments/l10n/pl.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Komentarze",
- "New comment …" : "Nowy komentarz...",
- "Delete comment" : "Skasuj komentarz",
- "Post" : "Zapisz",
- "Cancel" : "Anuluj",
+ "You commented" : "Skomentowałeś",
+ "{author} commented" : "{author} skomentował",
+ "You commented on %1$s" : "Skomentowałeś w %1$s",
+ "You commented on {file}" : "Skomentowałeś w {file}",
+ "%1$s commented on %2$s" : "%1$s skomentował %2$s",
+ "{author} commented on {file}" : "{author} skomentował w {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
+ "Files" : "Pliki",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Wspomniano o Tobie w „{file}” w komentarzu konta, które zostało już usunięte",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} wspomniał o Tobie w komentarzu do “{file}”",
+ "Files app plugin to add comments to files" : "Plugin umożliwiający dodawanie komentarzy w aplikacji Pliki",
"Edit comment" : "Edytuj komentarz",
- "[Deleted user]" : "[Usunięty użytkownik]",
- "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!",
- "More comments …" : "Więcej komentarzy ...",
- "Save" : "Zapisz",
- "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.",
- "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
- "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
- "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
+ "Delete comment" : "Usuń komentarz",
+ "Cancel edit" : "Anuluj edycję",
+ "New comment" : "Nowy komentarz",
+ "Write a comment …" : "Napisz komentarz…",
+ "Post comment" : "Wyślij komentarz",
+ "@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania",
+ "Could not reload comments" : "Nie można ponownie wczytać komentarzy",
+ "Failed to mark comments as read" : "Nie udało się oznaczyć komentarzy jako przeczytane",
+ "Unable to load the comments list" : "Nie można załadować listy komentarzy",
+ "No comments yet, start the conversation!" : "Brak komentarzy, rozpocznij rozmowę!",
+ "No more messages" : "Nie ma więcej wiadomości",
+ "Retry" : "Powtórz",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś/-aś",
- "%1$s commented" : "%1$s skomentował/-a",
- "{author} commented" : "{author} skomentował/-a",
- "You commented on %1$s" : "Skomentowałeś/-aś w %1$s",
- "You commented on {file}" : "Skomentowałeś/-aś w {file}",
- "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s",
- "{author} commented on {file}" : "{author} skomentował/-a w {file}‭",
- "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"%s\" przez użytkownika, który został usunięty",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"{file}\" w komentarzach przez użytkownika, który został usunięty",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”",
- "Unknown user" : "Nieznany użytkownik",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”"
+ "An error occurred while trying to edit the comment" : "Wystąpił błąd podczas próby edycji komentarza",
+ "Comment deleted" : "Komentarz usunięty",
+ "An error occurred while trying to delete the comment" : "Wystąpił błąd podczas próby usunięcia komentarza",
+ "An error occurred while trying to create the comment" : "Wystąpił błąd podczas próby utworzenia komentarza"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);");
diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json
index 00694693059..a541f40224a 100644
--- a/apps/comments/l10n/pl.json
+++ b/apps/comments/l10n/pl.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Komentarze",
- "New comment …" : "Nowy komentarz...",
- "Delete comment" : "Skasuj komentarz",
- "Post" : "Zapisz",
- "Cancel" : "Anuluj",
+ "You commented" : "Skomentowałeś",
+ "{author} commented" : "{author} skomentował",
+ "You commented on %1$s" : "Skomentowałeś w %1$s",
+ "You commented on {file}" : "Skomentowałeś w {file}",
+ "%1$s commented on %2$s" : "%1$s skomentował %2$s",
+ "{author} commented on {file}" : "{author} skomentował w {file}",
+ "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
+ "Files" : "Pliki",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Wspomniano o Tobie w „{file}” w komentarzu konta, które zostało już usunięte",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} wspomniał o Tobie w komentarzu do “{file}”",
+ "Files app plugin to add comments to files" : "Plugin umożliwiający dodawanie komentarzy w aplikacji Pliki",
"Edit comment" : "Edytuj komentarz",
- "[Deleted user]" : "[Usunięty użytkownik]",
- "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!",
- "More comments …" : "Więcej komentarzy ...",
- "Save" : "Zapisz",
- "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "W trakcie pobierania komentarza o identyfikatorze {id} wystąpił błąd.",
- "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.",
- "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd",
- "_%n unread comment_::_%n unread comments_" : ["%n nieprzeczytany komentarz","%n nieprzeczytane komentarze","%n nieprzeczytanych komentarzy","%n nieprzeczytanych komentarzy"],
+ "Delete comment" : "Usuń komentarz",
+ "Cancel edit" : "Anuluj edycję",
+ "New comment" : "Nowy komentarz",
+ "Write a comment …" : "Napisz komentarz…",
+ "Post comment" : "Wyślij komentarz",
+ "@ for mentions, : for emoji, / for smart picker" : "@ dla wzmianek, : dla emoji, / dla inteligentnego wybierania",
+ "Could not reload comments" : "Nie można ponownie wczytać komentarzy",
+ "Failed to mark comments as read" : "Nie udało się oznaczyć komentarzy jako przeczytane",
+ "Unable to load the comments list" : "Nie można załadować listy komentarzy",
+ "No comments yet, start the conversation!" : "Brak komentarzy, rozpocznij rozmowę!",
+ "No more messages" : "Nie ma więcej wiadomości",
+ "Retry" : "Powtórz",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} nowy komentarz","{unread} nowe komentarze","{unread} nowych komentarzy","{unread} nowe komentarze"],
"Comment" : "Komentarz",
- "You commented" : "Skomentowałeś/-aś",
- "%1$s commented" : "%1$s skomentował/-a",
- "{author} commented" : "{author} skomentował/-a",
- "You commented on %1$s" : "Skomentowałeś/-aś w %1$s",
- "You commented on {file}" : "Skomentowałeś/-aś w {file}",
- "%1$s commented on %2$s" : "%1$s skomentował/-a %2$s",
- "{author} commented on {file}" : "{author} skomentował/-a w {file}‭",
- "<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"%s\" przez użytkownika, który został usunięty",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Zostałeś/aś wspomniany/a w \"{file}\" w komentarzach przez użytkownika, który został usunięty",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s wspomniał/-a o Tobie w komentarzu “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} wspomniał/-a o Tobie w komentarzu “{file}”",
- "Unknown user" : "Nieznany użytkownik",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Pewien (obecnie) usunięty użytkownik wspomniał o Tobie w komentarzu “{file}”"
+ "An error occurred while trying to edit the comment" : "Wystąpił błąd podczas próby edycji komentarza",
+ "Comment deleted" : "Komentarz usunięty",
+ "An error occurred while trying to delete the comment" : "Wystąpił błąd podczas próby usunięcia komentarza",
+ "An error occurred while trying to create the comment" : "Wystąpił błąd podczas próby utworzenia komentarza"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js
index 54ba334ef63..035edefd0bc 100644
--- a/apps/comments/l10n/pt_BR.js
+++ b/apps/comments/l10n/pt_BR.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentários",
- "New comment …" : "Novo comentário",
- "Delete comment" : "Excluir comentário",
- "Post" : "Postar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentário",
- "[Deleted user]" : "[Usuário excluído]",
- "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!",
- "More comments …" : "Mais comentários...",
- "Save" : "Salvar",
- "Allowed characters {count} of {max}" : "{count} de {max} caracteres permitidos",
- "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro durante a recuperação do comentário com id {id}",
- "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com id {id}",
- "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário",
- "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos"],
- "Comment" : "Comentar",
"You commented" : "Você comentou",
- "%1$s commented" : "%1$s comentou",
"{author} commented" : "{author} comentou",
"You commented on %1$s" : "Você comentou em %1$s",
"You commented on {file}" : "Você comentou sobre {file}",
"%1$s commented on %2$s" : "%1$s comentaram em %2$s",
"{author} commented on {file}" : "{author} comentou em {file}",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"\", “%s”, em um comentário por um usuário que já foi excluído",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário por um usuário que já foi excluído",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”",
- "Unknown user" : "Usuário desconhecido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído (agora) mencionou você em um comentário sobre “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário (now) recém excluído mencionou você em um comentário sobre “{file}”"
+ "Files" : "Arquivos",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
+ "Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
+ "Edit comment" : "Editar comentário",
+ "Delete comment" : "Excluir comentário",
+ "Cancel edit" : "Cancelar edição",
+ "New comment" : "Novo comentário",
+ "Write a comment …" : "Escreva um comentário …",
+ "Post comment" : "Postar comentário",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente",
+ "Could not reload comments" : "Não foi possível recarregar comentários",
+ "Failed to mark comments as read" : "Falha ao marcar comentários como lidos",
+ "Unable to load the comments list" : "Não foi possível carregar a lista de comentários",
+ "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!",
+ "No more messages" : "Sem mais mensagens",
+ "Retry" : "Tentar novamente",
+ "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Ocorreu um erro ao tentar editar o comentário",
+ "Comment deleted" : "Comentário excluído",
+ "An error occurred while trying to delete the comment" : "Ocorreu um erro ao tentar excluir o comentário",
+ "An error occurred while trying to create the comment" : "Ocorreu um erro ao tentar criar o comentário"
},
-"nplurals=2; plural=(n > 1);");
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json
index 4218a60661a..c1cb3d4c814 100644
--- a/apps/comments/l10n/pt_BR.json
+++ b/apps/comments/l10n/pt_BR.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Comentários",
- "New comment …" : "Novo comentário",
- "Delete comment" : "Excluir comentário",
- "Post" : "Postar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentário",
- "[Deleted user]" : "[Usuário excluído]",
- "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!",
- "More comments …" : "Mais comentários...",
- "Save" : "Salvar",
- "Allowed characters {count} of {max}" : "{count} de {max} caracteres permitidos",
- "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro durante a recuperação do comentário com id {id}",
- "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com id {id}",
- "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário",
- "_%n unread comment_::_%n unread comments_" : ["%n comentários não lidos","%n comentários não lidos"],
- "Comment" : "Comentar",
"You commented" : "Você comentou",
- "%1$s commented" : "%1$s comentou",
"{author} commented" : "{author} comentou",
"You commented on %1$s" : "Você comentou em %1$s",
"You commented on {file}" : "Você comentou sobre {file}",
"%1$s commented on %2$s" : "%1$s comentaram em %2$s",
"{author} commented on {file}" : "{author} comentou em {file}",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"\", “%s”, em um comentário por um usuário que já foi excluído",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário por um usuário que já foi excluído",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”",
- "Unknown user" : "Usuário desconhecido",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído (agora) mencionou você em um comentário sobre “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário (now) recém excluído mencionou você em um comentário sobre “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n > 1);"
+ "Files" : "Arquivos",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
+ "Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
+ "Edit comment" : "Editar comentário",
+ "Delete comment" : "Excluir comentário",
+ "Cancel edit" : "Cancelar edição",
+ "New comment" : "Novo comentário",
+ "Write a comment …" : "Escreva um comentário …",
+ "Post comment" : "Postar comentário",
+ "@ for mentions, : for emoji, / for smart picker" : "@ para menções, : para emoji, / para seletor inteligente",
+ "Could not reload comments" : "Não foi possível recarregar comentários",
+ "Failed to mark comments as read" : "Falha ao marcar comentários como lidos",
+ "Unable to load the comments list" : "Não foi possível carregar a lista de comentários",
+ "No comments yet, start the conversation!" : "Nenhum comentário ainda, inicie uma conversa!",
+ "No more messages" : "Sem mais mensagens",
+ "Retry" : "Tentar novamente",
+ "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"],
+ "Comment" : "Comentar",
+ "An error occurred while trying to edit the comment" : "Ocorreu um erro ao tentar editar o comentário",
+ "Comment deleted" : "Comentário excluído",
+ "An error occurred while trying to delete the comment" : "Ocorreu um erro ao tentar excluir o comentário",
+ "An error occurred while trying to create the comment" : "Ocorreu um erro ao tentar criar o comentário"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/pt_PT.js b/apps/comments/l10n/pt_PT.js
index bc1a4cef17d..e3b5e0f070a 100644
--- a/apps/comments/l10n/pt_PT.js
+++ b/apps/comments/l10n/pt_PT.js
@@ -1,25 +1,27 @@
OC.L10N.register(
"comments",
{
- "Delete comment" : "Eliminar comentário",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentário",
- "[Deleted user]" : "[Utilizador eliminado]",
"Comments" : "Comentários",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
- "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}",
- "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}",
- "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário",
- "Comment" : "Comentário",
"You commented" : "Comentou",
- "%1$s commented" : "%1$s comentou",
- "You commented on %2$s" : "Comentou %2$s",
- "%1$s commented on %2$s" : "%1$s comentou %2$s",
- "Type in a new comment..." : "Escreva um novo comentário...",
- "No other comments available" : "Nenhum outro comentário disponível",
- "More comments..." : "Mais comentários...",
- "{count} unread comments" : "{count} comentários não lidos"
+ "{author} commented" : "{author} comentou",
+ "You commented on %1$s" : "Você comentou em %1$s",
+ "You commented on {file}" : "Você comentou em {file}",
+ "%1$s commented on %2$s" : "%1$s comentou em %2$s",
+ "{author} commented on {file}" : "{author} comentou em {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentários</strong> aos ficheiros",
+ "Files" : "Ficheiros",
+ "Files app plugin to add comments to files" : "Plug-in da aplicação de ficheiros para adicionar comentários aos ficheiros",
+ "Edit comment" : "Editar comentário",
+ "Delete comment" : "Eliminar comentário",
+ "Cancel edit" : "Cancelar edição",
+ "New comment" : "Novo comentário",
+ "Write a comment …" : "Escreva um comentário...",
+ "Post comment" : "Publicar comentário",
+ "No comments yet, start the conversation!" : "Ainda sem comentários, inicie uma conversação!",
+ "No more messages" : "Sem mais mensagens",
+ "Retry" : "Repetir",
+ "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"],
+ "Comment" : "Comentário",
+ "Comment deleted" : "Comentário eliminado"
},
-"nplurals=2; plural=(n != 1);");
+"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/apps/comments/l10n/pt_PT.json b/apps/comments/l10n/pt_PT.json
index 7370bfc43b7..5f681b1ae42 100644
--- a/apps/comments/l10n/pt_PT.json
+++ b/apps/comments/l10n/pt_PT.json
@@ -1,23 +1,25 @@
{ "translations": {
- "Delete comment" : "Eliminar comentário",
- "Post" : "Publicar",
- "Cancel" : "Cancelar",
- "Edit comment" : "Editar comentário",
- "[Deleted user]" : "[Utilizador eliminado]",
"Comments" : "Comentários",
- "Save" : "Guardar",
- "Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
- "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}",
- "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}",
- "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário",
- "Comment" : "Comentário",
"You commented" : "Comentou",
- "%1$s commented" : "%1$s comentou",
- "You commented on %2$s" : "Comentou %2$s",
- "%1$s commented on %2$s" : "%1$s comentou %2$s",
- "Type in a new comment..." : "Escreva um novo comentário...",
- "No other comments available" : "Nenhum outro comentário disponível",
- "More comments..." : "Mais comentários...",
- "{count} unread comments" : "{count} comentários não lidos"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+ "{author} commented" : "{author} comentou",
+ "You commented on %1$s" : "Você comentou em %1$s",
+ "You commented on {file}" : "Você comentou em {file}",
+ "%1$s commented on %2$s" : "%1$s comentou em %2$s",
+ "{author} commented on {file}" : "{author} comentou em {file}",
+ "<strong>Comments</strong> for files" : "<strong>Comentários</strong> aos ficheiros",
+ "Files" : "Ficheiros",
+ "Files app plugin to add comments to files" : "Plug-in da aplicação de ficheiros para adicionar comentários aos ficheiros",
+ "Edit comment" : "Editar comentário",
+ "Delete comment" : "Eliminar comentário",
+ "Cancel edit" : "Cancelar edição",
+ "New comment" : "Novo comentário",
+ "Write a comment …" : "Escreva um comentário...",
+ "Post comment" : "Publicar comentário",
+ "No comments yet, start the conversation!" : "Ainda sem comentários, inicie uma conversação!",
+ "No more messages" : "Sem mais mensagens",
+ "Retry" : "Repetir",
+ "_1 new comment_::_{unread} new comments_" : ["1 novo comentário","{unread} novos comentários","{unread} novos comentários"],
+ "Comment" : "Comentário",
+ "Comment deleted" : "Comentário eliminado"
+},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ro.js b/apps/comments/l10n/ro.js
index 7b34fee8721..d9ee2da0dcc 100644
--- a/apps/comments/l10n/ro.js
+++ b/apps/comments/l10n/ro.js
@@ -2,33 +2,31 @@ OC.L10N.register(
"comments",
{
"Comments" : "Comentarii",
- "New comment …" : "Comentariu nou...",
- "Delete comment" : "Șterge comentariul",
- "Post" : "Postează",
- "Cancel" : "Anulează",
- "Edit comment" : "Editează comentariul",
- "[Deleted user]" : "[Utilizator șters]",
- "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
- "More comments …" : "Mai multe comentarii...",
- "Save" : "Salvează",
- "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}",
- "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}",
- "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}",
- "Error occurred while posting comment" : "Eroare la postarea comentariului",
- "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"],
- "Comment" : "Comentariu",
"You commented" : "Ai comentat",
- "%1$s commented" : "%1$s a comentat",
"{author} commented" : " {author} a comentat",
"You commented on %1$s" : "Ai comentat la %1$s",
"You commented on {file}" : "Ai comentat la {file}",
"%1$s commented on %2$s" : "%1$s a comentat la %2$s",
"{author} commented on {file}" : " {author} a comentat la {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”",
- "Unknown user" : "Utilizator necunoscut",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”"
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} te-a menționat într-un comentariu la fișierul \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii",
+ "Edit comment" : "Editează comentariul",
+ "Delete comment" : "Șterge comentariul",
+ "Cancel edit" : "Anulați editarea",
+ "Post comment" : "Postează comentariu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pentru mențiuni, : pentru emoji, / pentru smart picker",
+ "Could not reload comments" : "Nu se pot reîncărca comentariile",
+ "Failed to mark comments as read" : "Eroare la marcarea comentariilor ca citite",
+ "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată",
+ "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
+ "No more messages" : "Nu mai sunt mesaje",
+ "Retry" : "Reîncearcă",
+ "_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"],
+ "Comment" : "Comentariu",
+ "An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul",
+ "Comment deleted" : "Comentariul a fost șters",
+ "An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul",
+ "An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul"
},
"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
diff --git a/apps/comments/l10n/ro.json b/apps/comments/l10n/ro.json
index 0216f3eeb8a..f8db4ddc882 100644
--- a/apps/comments/l10n/ro.json
+++ b/apps/comments/l10n/ro.json
@@ -1,32 +1,30 @@
{ "translations": {
"Comments" : "Comentarii",
- "New comment …" : "Comentariu nou...",
- "Delete comment" : "Șterge comentariul",
- "Post" : "Postează",
- "Cancel" : "Anulează",
- "Edit comment" : "Editează comentariul",
- "[Deleted user]" : "[Utilizator șters]",
- "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
- "More comments …" : "Mai multe comentarii...",
- "Save" : "Salvează",
- "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}",
- "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}",
- "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}",
- "Error occurred while posting comment" : "Eroare la postarea comentariului",
- "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"],
- "Comment" : "Comentariu",
"You commented" : "Ai comentat",
- "%1$s commented" : "%1$s a comentat",
"{author} commented" : " {author} a comentat",
"You commented on %1$s" : "Ai comentat la %1$s",
"You commented on {file}" : "Ai comentat la {file}",
"%1$s commented on %2$s" : "%1$s a comentat la %2$s",
"{author} commented on {file}" : " {author} a comentat la {file}",
"<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”",
- "Unknown user" : "Utilizator necunoscut",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”"
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} te-a menționat într-un comentariu la fișierul \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin pentru aplicația de fișiere pentru adăugarea de comentarii",
+ "Edit comment" : "Editează comentariul",
+ "Delete comment" : "Șterge comentariul",
+ "Cancel edit" : "Anulați editarea",
+ "Post comment" : "Postează comentariu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pentru mențiuni, : pentru emoji, / pentru smart picker",
+ "Could not reload comments" : "Nu se pot reîncărca comentariile",
+ "Failed to mark comments as read" : "Eroare la marcarea comentariilor ca citite",
+ "Unable to load the comments list" : "Lista de comentarii nu poate fi încărcată",
+ "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!",
+ "No more messages" : "Nu mai sunt mesaje",
+ "Retry" : "Reîncearcă",
+ "_1 new comment_::_{unread} new comments_" : ["1 nou comentariu","{unread} noi comentarii","{unread} comentarii noi"],
+ "Comment" : "Comentariu",
+ "An error occurred while trying to edit the comment" : "A apărut o eroare la încercarea de a edita comentariul",
+ "Comment deleted" : "Comentariul a fost șters",
+ "An error occurred while trying to delete the comment" : "A apărut o eroare la încercarea de a șterge comentariul",
+ "An error occurred while trying to create the comment" : "A apărut o eroare la încercarea de a crea comentariul"
},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ru.js b/apps/comments/l10n/ru.js
index 1766a658d60..c6dc089a1d4 100644
--- a/apps/comments/l10n/ru.js
+++ b/apps/comments/l10n/ru.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Комментарии",
- "New comment …" : "Новый комментарий...",
- "Delete comment" : "Удалить комментарий",
- "Post" : "Опубликовать",
- "Cancel" : "Отмена",
- "Edit comment" : "Редактировать комментарий",
- "[Deleted user]" : "[Удалённый пользователь]",
- "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!",
- "More comments …" : "Ещё комментарии...",
- "Save" : "Сохранить",
- "Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
- "Error occurred while retrieving comment with id {id}" : "При получении комментария с id {id} произошла ошибка",
- "Error occurred while updating comment with id {id}" : "При обновлении комментария с id {id} произошла ошибка",
- "Error occurred while posting comment" : "При сохранении комментария произошла ошибка",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"],
- "Comment" : "Комментарий",
"You commented" : "Вы прокомментировали",
- "%1$s commented" : "%1$s прокомментировано",
"{author} commented" : "{author} прокомментировал",
"You commented on %1$s" : "Вы прокомментировали %1$s",
- "You commented on {file}" : "Вы прокомментировали {file}",
+ "You commented on {file}" : "Вы прокомментировали «{file}»",
"%1$s commented on %2$s" : "%1$s прокомментировано на %2$s",
"{author} commented on {file}" : "{author} прокомментировал {file}",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «%s» пользователем, учётная запись которого была удалена",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «{file}» пользователем, учётная запись которого была удалена",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.",
- "Unknown user" : "Неизвестный пользователь",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”."
+ "Files" : "Файлы",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вы были упомянуты в комментарии к «{file}» пользователем, учётная запись которого была удалена.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул(а) вас в комментарии к «{file}»",
+ "Files app plugin to add comments to files" : "Модуль приложения «Файлы», позволяющий комментировать файлы",
+ "Edit comment" : "Редактировать комментарий",
+ "Delete comment" : "Удалить комментарий",
+ "Cancel edit" : "Отменить правку",
+ "New comment" : "Новый комментарий",
+ "Write a comment …" : "Напишите комментарий…",
+ "Post comment" : "Опубликовать комментарий",
+ "@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора",
+ "Could not reload comments" : "Не удалось перезагрузить комментарии",
+ "Failed to mark comments as read" : "Не удалось пометить комментарии как прочитанные",
+ "Unable to load the comments list" : "Невозможно загрузить список комментариев",
+ "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!",
+ "No more messages" : "Сообщений нет",
+ "Retry" : "Повторить",
+ "_1 new comment_::_{unread} new comments_" : ["1 новый комментарий","{unread} новых комментариев","{unread} новых комментариев","{unread} новых комментариев"],
+ "Comment" : "Комментарий",
+ "An error occurred while trying to edit the comment" : "Попытка редактирования комментария завершилась ошибкой",
+ "Comment deleted" : "Комментарий удалён",
+ "An error occurred while trying to delete the comment" : "Попытка удаления комментария завершилась ошибкой",
+ "An error occurred while trying to create the comment" : "Попытка создания комментария завершилась ошибкой"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");
diff --git a/apps/comments/l10n/ru.json b/apps/comments/l10n/ru.json
index eecfec2017c..30a7ba82f37 100644
--- a/apps/comments/l10n/ru.json
+++ b/apps/comments/l10n/ru.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Комментарии",
- "New comment …" : "Новый комментарий...",
- "Delete comment" : "Удалить комментарий",
- "Post" : "Опубликовать",
- "Cancel" : "Отмена",
- "Edit comment" : "Редактировать комментарий",
- "[Deleted user]" : "[Удалённый пользователь]",
- "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!",
- "More comments …" : "Ещё комментарии...",
- "Save" : "Сохранить",
- "Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
- "Error occurred while retrieving comment with id {id}" : "При получении комментария с id {id} произошла ошибка",
- "Error occurred while updating comment with id {id}" : "При обновлении комментария с id {id} произошла ошибка",
- "Error occurred while posting comment" : "При сохранении комментария произошла ошибка",
- "_%n unread comment_::_%n unread comments_" : ["%n непрочитанный комментарий","%n непрочитанных комментариев","%n непрочитанных комментариев","%n непрочитанных комментариев"],
- "Comment" : "Комментарий",
"You commented" : "Вы прокомментировали",
- "%1$s commented" : "%1$s прокомментировано",
"{author} commented" : "{author} прокомментировал",
"You commented on %1$s" : "Вы прокомментировали %1$s",
- "You commented on {file}" : "Вы прокомментировали {file}",
+ "You commented on {file}" : "Вы прокомментировали «{file}»",
"%1$s commented on %2$s" : "%1$s прокомментировано на %2$s",
"{author} commented on {file}" : "{author} прокомментировал {file}",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «%s» пользователем, учётная запись которого была удалена",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вы были упомянуты в комментарии к файлу «{file}» пользователем, учётная запись которого была удалена",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s упомянул вас в комментарии к \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} упомянул вас в комментарии к “{file}”.",
- "Unknown user" : "Неизвестный пользователь",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “%s”.",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Пользователь (удалённый в настоящее время) упомянул вас в комментарии к “{file}”."
+ "Files" : "Файлы",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вы были упомянуты в комментарии к «{file}» пользователем, учётная запись которого была удалена.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} упомянул(а) вас в комментарии к «{file}»",
+ "Files app plugin to add comments to files" : "Модуль приложения «Файлы», позволяющий комментировать файлы",
+ "Edit comment" : "Редактировать комментарий",
+ "Delete comment" : "Удалить комментарий",
+ "Cancel edit" : "Отменить правку",
+ "New comment" : "Новый комментарий",
+ "Write a comment …" : "Напишите комментарий…",
+ "Post comment" : "Опубликовать комментарий",
+ "@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора",
+ "Could not reload comments" : "Не удалось перезагрузить комментарии",
+ "Failed to mark comments as read" : "Не удалось пометить комментарии как прочитанные",
+ "Unable to load the comments list" : "Невозможно загрузить список комментариев",
+ "No comments yet, start the conversation!" : "Комментарии отсутствуют, начните обсуждение!",
+ "No more messages" : "Сообщений нет",
+ "Retry" : "Повторить",
+ "_1 new comment_::_{unread} new comments_" : ["1 новый комментарий","{unread} новых комментариев","{unread} новых комментариев","{unread} новых комментариев"],
+ "Comment" : "Комментарий",
+ "An error occurred while trying to edit the comment" : "Попытка редактирования комментария завершилась ошибкой",
+ "Comment deleted" : "Комментарий удалён",
+ "An error occurred while trying to delete the comment" : "Попытка удаления комментария завершилась ошибкой",
+ "An error occurred while trying to create the comment" : "Попытка создания комментария завершилась ошибкой"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sc.js b/apps/comments/l10n/sc.js
new file mode 100644
index 00000000000..1980bde60d4
--- /dev/null
+++ b/apps/comments/l10n/sc.js
@@ -0,0 +1,31 @@
+OC.L10N.register(
+ "comments",
+ {
+ "Comments" : "Cummentos",
+ "You commented" : "As cummentadu",
+ "{author} commented" : "{author} at cummentadu",
+ "You commented on %1$s" : "As cummentadu in %1$s",
+ "You commented on {file}" : "As cummentadu {file}",
+ "%1$s commented on %2$s" : "%1$s at cummentadu %2$s",
+ "{author} commented on {file}" : "{author} at cummentadu {file}",
+ "<strong>Comments</strong> for files" : "<strong>Cummentos</strong> pro archìvios",
+ "Files" : "Archìvios",
+ "Files app plugin to add comments to files" : "Estensione de s'aplicatzione archìvios pro agiùnghere cummentos a archìvios",
+ "Edit comment" : "Modìfica cummentu",
+ "Delete comment" : "Cantzella cummentu",
+ "Cancel edit" : "Annulla modìfica",
+ "New comment" : "Cummentu nou",
+ "Post comment" : "Pùblica cummentu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pro mèntovos, : pro emojis, / pro su seletzionadore inteligente",
+ "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos",
+ "No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!",
+ "No more messages" : "Perunu àteru messàgiu",
+ "Retry" : "Torra a proare",
+ "_1 new comment_::_{unread} new comments_" : ["1 cummentu nou","{unread} cummentos noos"],
+ "Comment" : "Cummenta",
+ "An error occurred while trying to edit the comment" : "Ddoe at àpidu un'errore proende a modificare su cummentu",
+ "Comment deleted" : "Cummentu cantzelladu",
+ "An error occurred while trying to delete the comment" : "B'at àpidu un'errore proende a cantzellare su cummentu",
+ "An error occurred while trying to create the comment" : "B'at àpidu un'errore proende a creare su cummentu"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/sc.json b/apps/comments/l10n/sc.json
new file mode 100644
index 00000000000..1c7987c118d
--- /dev/null
+++ b/apps/comments/l10n/sc.json
@@ -0,0 +1,29 @@
+{ "translations": {
+ "Comments" : "Cummentos",
+ "You commented" : "As cummentadu",
+ "{author} commented" : "{author} at cummentadu",
+ "You commented on %1$s" : "As cummentadu in %1$s",
+ "You commented on {file}" : "As cummentadu {file}",
+ "%1$s commented on %2$s" : "%1$s at cummentadu %2$s",
+ "{author} commented on {file}" : "{author} at cummentadu {file}",
+ "<strong>Comments</strong> for files" : "<strong>Cummentos</strong> pro archìvios",
+ "Files" : "Archìvios",
+ "Files app plugin to add comments to files" : "Estensione de s'aplicatzione archìvios pro agiùnghere cummentos a archìvios",
+ "Edit comment" : "Modìfica cummentu",
+ "Delete comment" : "Cantzella cummentu",
+ "Cancel edit" : "Annulla modìfica",
+ "New comment" : "Cummentu nou",
+ "Post comment" : "Pùblica cummentu",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pro mèntovos, : pro emojis, / pro su seletzionadore inteligente",
+ "Unable to load the comments list" : "Non faghet a carrigare sa lista de cummentos",
+ "No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!",
+ "No more messages" : "Perunu àteru messàgiu",
+ "Retry" : "Torra a proare",
+ "_1 new comment_::_{unread} new comments_" : ["1 cummentu nou","{unread} cummentos noos"],
+ "Comment" : "Cummenta",
+ "An error occurred while trying to edit the comment" : "Ddoe at àpidu un'errore proende a modificare su cummentu",
+ "Comment deleted" : "Cummentu cantzelladu",
+ "An error occurred while trying to delete the comment" : "B'at àpidu un'errore proende a cantzellare su cummentu",
+ "An error occurred while trying to create the comment" : "B'at àpidu un'errore proende a creare su cummentu"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/comments/l10n/si_LK.js b/apps/comments/l10n/si_LK.js
deleted file mode 100644
index 8f030041abe..00000000000
--- a/apps/comments/l10n/si_LK.js
+++ /dev/null
@@ -1,33 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "අදහස් දැක්වීම්",
- "New comment …" : "අලුත් අදහස් දැක්වීමක් ...",
- "Delete comment" : "අදහස් දැක්වීම මකන්න",
- "Post" : "ලිපියක්",
- "Cancel" : "එපා",
- "Edit comment" : "අදහස වෙනස් කරන්න",
- "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]",
- "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !",
- "More comments …" : "තවත් අදහස් ...",
- "Save" : "සුරකින්න",
- "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත",
- "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත",
- "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත",
- "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත",
- "Comment" : "අදහස",
- "You commented" : "ඔයාගේ අදහස",
- "%1$s commented" : "%1$s අදහස් දක්වා ඇත",
- "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත",
- "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත",
- "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත",
- "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත",
- "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත",
- "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත",
- "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත",
- "Unknown user" : "හදුනානොගත් සේවාදායකයා",
- "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/si_LK.json b/apps/comments/l10n/si_LK.json
deleted file mode 100644
index 5a7331b6e9e..00000000000
--- a/apps/comments/l10n/si_LK.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{ "translations": {
- "Comments" : "අදහස් දැක්වීම්",
- "New comment …" : "අලුත් අදහස් දැක්වීමක් ...",
- "Delete comment" : "අදහස් දැක්වීම මකන්න",
- "Post" : "ලිපියක්",
- "Cancel" : "එපා",
- "Edit comment" : "අදහස වෙනස් කරන්න",
- "[Deleted user]" : "[ඉවත්කළ සේවාදායකයා]",
- "No comments yet, start the conversation!" : "තවම අදහස් නැත. ආරම්බක අදහස ඇතුළු කරන්න !",
- "More comments …" : "තවත් අදහස් ...",
- "Save" : "සුරකින්න",
- "Allowed characters {count} of {max}" : "අකුරු {max} න් {count} බාවිතා කර ඇත",
- "Error occurred while retrieving comment with id {id}" : "{id} අදහස ලබාගැනීමේ ගැටළුවක් ඇත",
- "Error occurred while updating comment with id {id}" : "{id} අදහස වෙනස් කිරීමේ දෝෂයක් ඇත",
- "Error occurred while posting comment" : "අදහස්ගැ දැක්වීමේ ගැටළුවක් ඇත",
- "Comment" : "අදහස",
- "You commented" : "ඔයාගේ අදහස",
- "%1$s commented" : "%1$s අදහස් දක්වා ඇත",
- "{author} commented" : "{අයිතිකරු} අදහස් දක්වා ඇත",
- "You commented on %1$s" : "ඔබ %1$s හි අදහස් දක්වා ඇත",
- "You commented on {file}" : "ඔබ {file} හි අදහස් දක්වා ඇත",
- "%1$s commented on %2$s" : "%1$s, %2$s තුල අදහස් දක්වා ඇත",
- "{author} commented on {file}" : "{author}, {file} තුල අදහසක් දක්වා ඇත",
- "<strong>Comments</strong> for files" : "ගොනු සදහා <strong>අදහස් </strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ඔබව %2$s හි අදහසක මතක් කර ඇත",
- "{user} mentioned you in a comment on “{file}”" : "{user} ඔබව {file} තුලදී මතක් කර ඇත",
- "Unknown user" : "හදුනානොගත් සේවාදායකයා",
- "A (now) deleted user mentioned you in a comment on “%s”" : "මකන ලද සේවාදායකයෙක් (now) ඔබව %s අදහස තුල මතක් කර ඇත",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "{file} තුල අදහස් දැක්වීමකදී, (now) ඉවත්කරන ලද සේවාදායකයෙක් ඔබව මතක් කර ඇත"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/sk.js b/apps/comments/l10n/sk.js
index 66df1f73d7e..380b8c88fb5 100644
--- a/apps/comments/l10n/sk.js
+++ b/apps/comments/l10n/sk.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Komentáre",
- "New comment …" : "Nový komentár ...",
- "Delete comment" : "Zmazať komentár",
- "Post" : "Odoslať",
- "Cancel" : "Zrušiť",
- "Edit comment" : "Upraviť komentár",
- "[Deleted user]" : "[Zmazaný užívateľ]",
- "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
- "More comments …" : "Ďalšie komentáre ...",
- "Save" : "Uložiť",
- "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
- "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
- "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
- "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
- "Comment" : "Komentár",
"You commented" : "Komentovali ste",
- "%1$s commented" : "%1$s komentoval",
"{author} commented" : "{author} komentoval",
"You commented on %1$s" : "Komentovali ste %1$s",
"You commented on {file}" : "Komentovali ste {file}",
"%1$s commented on %2$s" : "%1$s komentoval %2$s",
"{author} commented on {file}" : "{author} komentoval {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás spomenul v komentári k \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás spomenul v komentári k “{file}”",
- "Unknown user" : "Neznámy používateľ",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\""
+ "Files" : "Súbory",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári užívateľom ktorý bol už vymazaný",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vás spomenul v komentári k “{file}”",
+ "Files app plugin to add comments to files" : "Zásuvný modul aplikácie súborov, ktorý umožňuje súborom pridávať komentáre",
+ "Edit comment" : "Upraviť komentár",
+ "Delete comment" : "Zmazať komentár",
+ "Cancel edit" : "Zrušiť upravovanie",
+ "New comment" : "Nový komentár",
+ "Write a comment …" : "Napísať komentár ...",
+ "Post comment" : "Odoslať komentár",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber",
+ "Could not reload comments" : "Nepodarilo sa obnoviť komentáre",
+ "Failed to mark comments as read" : "Nepodarilo sa označiť komentáre ako prečítané.",
+ "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov",
+ "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
+ "No more messages" : "Žiadne ďaĺšie správy",
+ "Retry" : "Skúsiť znova",
+ "_1 new comment_::_{unread} new comments_" : ["1 nový komentár","{unread} nové komentáre","{unread} nových komentárov","{unread} nových komentárov"],
+ "Comment" : "Komentár",
+ "An error occurred while trying to edit the comment" : "Vyskytla sa chyba pri editovaní komentára",
+ "Comment deleted" : "Komentár bol odstránený",
+ "An error occurred while trying to delete the comment" : "Vyskytla sa chyba pri mazaní komentára",
+ "An error occurred while trying to create the comment" : "Vyskytla sa chyba pri vytváraní komentára"
},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
+"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/comments/l10n/sk.json b/apps/comments/l10n/sk.json
index 56f2d70fc37..e617085d50a 100644
--- a/apps/comments/l10n/sk.json
+++ b/apps/comments/l10n/sk.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Komentáre",
- "New comment …" : "Nový komentár ...",
- "Delete comment" : "Zmazať komentár",
- "Post" : "Odoslať",
- "Cancel" : "Zrušiť",
- "Edit comment" : "Upraviť komentár",
- "[Deleted user]" : "[Zmazaný užívateľ]",
- "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
- "More comments …" : "Ďalšie komentáre ...",
- "Save" : "Uložiť",
- "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
- "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
- "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
- "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
- "Comment" : "Komentár",
"You commented" : "Komentovali ste",
- "%1$s commented" : "%1$s komentoval",
"{author} commented" : "{author} komentoval",
"You commented on %1$s" : "Komentovali ste %1$s",
"You commented on {file}" : "Komentovali ste {file}",
"%1$s commented on %2$s" : "%1$s komentoval %2$s",
"{author} commented on {file}" : "{author} komentoval {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s vás spomenul v komentári k \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} vás spomenul v komentári k “{file}”",
- "Unknown user" : "Neznámy používateľ",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\""
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
+ "Files" : "Súbory",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Boli ste spomenutý v \"{file}\", v komentári užívateľom ktorý bol už vymazaný",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vás spomenul v komentári k “{file}”",
+ "Files app plugin to add comments to files" : "Zásuvný modul aplikácie súborov, ktorý umožňuje súborom pridávať komentáre",
+ "Edit comment" : "Upraviť komentár",
+ "Delete comment" : "Zmazať komentár",
+ "Cancel edit" : "Zrušiť upravovanie",
+ "New comment" : "Nový komentár",
+ "Write a comment …" : "Napísať komentár ...",
+ "Post comment" : "Odoslať komentár",
+ "@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber",
+ "Could not reload comments" : "Nepodarilo sa obnoviť komentáre",
+ "Failed to mark comments as read" : "Nepodarilo sa označiť komentáre ako prečítané.",
+ "Unable to load the comments list" : "Nie je možné načítať zoznam komentárov",
+ "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
+ "No more messages" : "Žiadne ďaĺšie správy",
+ "Retry" : "Skúsiť znova",
+ "_1 new comment_::_{unread} new comments_" : ["1 nový komentár","{unread} nové komentáre","{unread} nových komentárov","{unread} nových komentárov"],
+ "Comment" : "Komentár",
+ "An error occurred while trying to edit the comment" : "Vyskytla sa chyba pri editovaní komentára",
+ "Comment deleted" : "Komentár bol odstránený",
+ "An error occurred while trying to delete the comment" : "Vyskytla sa chyba pri mazaní komentára",
+ "An error occurred while trying to create the comment" : "Vyskytla sa chyba pri vytváraní komentára"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sk_SK.js b/apps/comments/l10n/sk_SK.js
deleted file mode 100644
index ed68f8f11ed..00000000000
--- a/apps/comments/l10n/sk_SK.js
+++ /dev/null
@@ -1,34 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Komentáre",
- "Unknown user" : "Neznámy používateľ",
- "New comment …" : "Nový komentár ...",
- "Delete comment" : "Zmazať komentár",
- "Post" : "Odoslať",
- "Cancel" : "Zrušiť",
- "Edit comment" : "Upraviť komentár",
- "[Deleted user]" : "[Zmazaný užívateľ]",
- "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
- "More comments …" : "Ďalšie komentáre ...",
- "Save" : "Uložiť",
- "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
- "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
- "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
- "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
- "Comment" : "Komentár",
- "You commented" : "Komentovali ste",
- "%1$s commented" : "%1$s komentoval",
- "{author} commented" : "{author} komentoval",
- "You commented on %1$s" : "Komentovali ste %1$s",
- "You commented on {file}" : "Komentovali ste {file}",
- "%1$s commented on %2$s" : "%1$s komentoval %2$s",
- "{author} commented on {file}" : "{author} komentoval {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
- "Type in a new comment..." : "Zadať nový komentár...",
- "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné",
- "More comments..." : "Ďalšie komentáre...",
- "{count} unread comments" : "{count} neprečítaných komentárov"
-},
-"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
diff --git a/apps/comments/l10n/sk_SK.json b/apps/comments/l10n/sk_SK.json
deleted file mode 100644
index f85f7dfb3e2..00000000000
--- a/apps/comments/l10n/sk_SK.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{ "translations": {
- "Comments" : "Komentáre",
- "Unknown user" : "Neznámy používateľ",
- "New comment …" : "Nový komentár ...",
- "Delete comment" : "Zmazať komentár",
- "Post" : "Odoslať",
- "Cancel" : "Zrušiť",
- "Edit comment" : "Upraviť komentár",
- "[Deleted user]" : "[Zmazaný užívateľ]",
- "No comments yet, start the conversation!" : "Žiadne komentáre, začnite konverzáciu!",
- "More comments …" : "Ďalšie komentáre ...",
- "Save" : "Uložiť",
- "Allowed characters {count} of {max}" : "Počet povolených znakov {count} z {max}",
- "Error occurred while retrieving comment with id {id}" : "Pri načítavaní komentára s id {id} nastala chyba",
- "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba",
- "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba",
- "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"],
- "Comment" : "Komentár",
- "You commented" : "Komentovali ste",
- "%1$s commented" : "%1$s komentoval",
- "{author} commented" : "{author} komentoval",
- "You commented on %1$s" : "Komentovali ste %1$s",
- "You commented on {file}" : "Komentovali ste {file}",
- "%1$s commented on %2$s" : "%1$s komentoval %2$s",
- "{author} commented on {file}" : "{author} komentoval {file}",
- "<strong>Comments</strong> for files" : "<strong>Komentáre</strong> pre súbory",
- "Type in a new comment..." : "Zadať nový komentár...",
- "No other comments available" : "Žiadne ďalšie komentáre nie sú dostupné",
- "More comments..." : "Ďalšie komentáre...",
- "{count} unread comments" : "{count} neprečítaných komentárov"
-},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/sl.js b/apps/comments/l10n/sl.js
index 8718a374b4d..5731163c19f 100644
--- a/apps/comments/l10n/sl.js
+++ b/apps/comments/l10n/sl.js
@@ -1,25 +1,36 @@
OC.L10N.register(
"comments",
{
- "Delete comment" : "Izbriši opombo",
- "Post" : "Objavi",
- "Cancel" : "Prekliči",
- "Edit comment" : "Uredi opombo",
- "[Deleted user]" : "[Izbrisan uporabnik]",
"Comments" : "Opombe",
- "Save" : "Shrani",
- "Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
- "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}",
- "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}",
- "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja",
+ "You commented" : "Napišete opombo",
+ "{author} commented" : "{author} vpiše opombo",
+ "You commented on %1$s" : "Napišete opombo za %1$s",
+ "You commented on {file}" : "Napišete opombo na {file}",
+ "%1$s commented on %2$s" : "%1$s napiše opombo na %2$s",
+ "{author} commented on {file}" : "{author} napiše opombo na {file}",
+ "<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam",
+ "Files" : "Datoteke",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«",
+ "Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam",
+ "Edit comment" : "Uredi opombo",
+ "Delete comment" : "Izbriši opombo",
+ "Cancel edit" : "Prekliči urejanje",
+ "New comment" : "Nova opomba",
+ "Write a comment …" : "Dopišite opombo ...",
+ "Post comment" : "Objavi opombo",
+ "@ for mentions, : for emoji, / for smart picker" : "@ za omenjanje osebe, : za izris izraznih ikon, / za pametni izbirnik",
+ "Could not reload comments" : "Opomb ni mogoče posodobiti",
+ "Failed to mark comments as read" : "Označevanje opomb kot prebranih je spodletelo",
+ "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb",
+ "No comments yet, start the conversation!" : "Ni še odzivov, bodite prvi!",
+ "No more messages" : "Ni drugih sporočil",
+ "Retry" : "Poskusi znova",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"],
"Comment" : "Opomba",
- "You commented" : "Vaša opomba",
- "%1$s commented" : "%1$s opomb",
- "You commented on %2$s" : "Napisali ste opombo na %2$s",
- "%1$s commented on %2$s" : "%1$s opomb ob %2$s",
- "Type in a new comment..." : "Vpis nove opombe ...",
- "No other comments available" : "Ni drugih opomb",
- "More comments..." : "Več opomb ...",
- "{count} unread comments" : "{count} neprebranih opomb"
+ "An error occurred while trying to edit the comment" : "Prišlo je do napake med poskusom urejanja opombe",
+ "Comment deleted" : "Opomba je izbrisana",
+ "An error occurred while trying to delete the comment" : "Prišlo je do napake med brisanjem opombe",
+ "An error occurred while trying to create the comment" : "Prišlo je do napake med ustvarjanjem opombe"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/comments/l10n/sl.json b/apps/comments/l10n/sl.json
index 33bb84c99e1..0ee0fcad23f 100644
--- a/apps/comments/l10n/sl.json
+++ b/apps/comments/l10n/sl.json
@@ -1,23 +1,34 @@
{ "translations": {
- "Delete comment" : "Izbriši opombo",
- "Post" : "Objavi",
- "Cancel" : "Prekliči",
- "Edit comment" : "Uredi opombo",
- "[Deleted user]" : "[Izbrisan uporabnik]",
"Comments" : "Opombe",
- "Save" : "Shrani",
- "Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
- "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}",
- "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}",
- "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja",
+ "You commented" : "Napišete opombo",
+ "{author} commented" : "{author} vpiše opombo",
+ "You commented on %1$s" : "Napišete opombo za %1$s",
+ "You commented on {file}" : "Napišete opombo na {file}",
+ "%1$s commented on %2$s" : "%1$s napiše opombo na %2$s",
+ "{author} commented on {file}" : "{author} napiše opombo na {file}",
+ "<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam",
+ "Files" : "Datoteke",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«",
+ "Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam",
+ "Edit comment" : "Uredi opombo",
+ "Delete comment" : "Izbriši opombo",
+ "Cancel edit" : "Prekliči urejanje",
+ "New comment" : "Nova opomba",
+ "Write a comment …" : "Dopišite opombo ...",
+ "Post comment" : "Objavi opombo",
+ "@ for mentions, : for emoji, / for smart picker" : "@ za omenjanje osebe, : za izris izraznih ikon, / za pametni izbirnik",
+ "Could not reload comments" : "Opomb ni mogoče posodobiti",
+ "Failed to mark comments as read" : "Označevanje opomb kot prebranih je spodletelo",
+ "Unable to load the comments list" : "Ni mogoče naložiti seznama opomb",
+ "No comments yet, start the conversation!" : "Ni še odzivov, bodite prvi!",
+ "No more messages" : "Ni drugih sporočil",
+ "Retry" : "Poskusi znova",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} nova opomba","{unread} novi opombi","{unread} nove opombe","{unread} novih opomb"],
"Comment" : "Opomba",
- "You commented" : "Vaša opomba",
- "%1$s commented" : "%1$s opomb",
- "You commented on %2$s" : "Napisali ste opombo na %2$s",
- "%1$s commented on %2$s" : "%1$s opomb ob %2$s",
- "Type in a new comment..." : "Vpis nove opombe ...",
- "No other comments available" : "Ni drugih opomb",
- "More comments..." : "Več opomb ...",
- "{count} unread comments" : "{count} neprebranih opomb"
+ "An error occurred while trying to edit the comment" : "Prišlo je do napake med poskusom urejanja opombe",
+ "Comment deleted" : "Opomba je izbrisana",
+ "An error occurred while trying to delete the comment" : "Prišlo je do napake med brisanjem opombe",
+ "An error occurred while trying to create the comment" : "Prišlo je do napake med ustvarjanjem opombe"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sq.js b/apps/comments/l10n/sq.js
deleted file mode 100644
index 200a8221f9d..00000000000
--- a/apps/comments/l10n/sq.js
+++ /dev/null
@@ -1,34 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Comments" : "Komente",
- "New comment …" : "Koment i ri ...",
- "Delete comment" : "Fshije komentin",
- "Post" : "Postoje",
- "Cancel" : "Anuloje",
- "Edit comment" : "Përpunoni komentin",
- "[Deleted user]" : "[Përdorues i fshirë]",
- "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!",
- "More comments …" : "Më shumë komente ...",
- "Save" : "Ruaje",
- "Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
- "Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}",
- "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}",
- "Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti",
- "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "],
- "Comment" : "Koment",
- "You commented" : "Komentuat",
- "%1$s commented" : "%1$s komentoi",
- "{author} commented" : "{autori} u komentua",
- "You commented on %1$s" : "Ju komentuat në %1$s",
- "You commented on {file}" : "Ju komentuat në {file}",
- "%1$s commented on %2$s" : "%1$s komentoi te %2$s",
- "{author} commented on {file}" : "{author} komentoi në {file}",
- "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”",
- "Unknown user" : "Përdorues i panjohur",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/sq.json b/apps/comments/l10n/sq.json
deleted file mode 100644
index 137cfef16de..00000000000
--- a/apps/comments/l10n/sq.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{ "translations": {
- "Comments" : "Komente",
- "New comment …" : "Koment i ri ...",
- "Delete comment" : "Fshije komentin",
- "Post" : "Postoje",
- "Cancel" : "Anuloje",
- "Edit comment" : "Përpunoni komentin",
- "[Deleted user]" : "[Përdorues i fshirë]",
- "No comments yet, start the conversation!" : "Akoma asnjë koment, fillo një bisedë!",
- "More comments …" : "Më shumë komente ...",
- "Save" : "Ruaje",
- "Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
- "Error occurred while retrieving comment with id {id}" : "Ndodhi një gabim teksa merrej komenti me id{id}",
- "Error occurred while updating comment with id {id}" : "Ndodhi një gabim teksa përditësohej komenti me id {id}",
- "Error occurred while posting comment" : "Ndodhi një gabim teksa postohej komenti",
- "_%n unread comment_::_%n unread comments_" : ["%n komente të palexuara","%n komente të palexuara "],
- "Comment" : "Koment",
- "You commented" : "Komentuat",
- "%1$s commented" : "%1$s komentoi",
- "{author} commented" : "{autori} u komentua",
- "You commented on %1$s" : "Ju komentuat në %1$s",
- "You commented on {file}" : "Ju komentuat në {file}",
- "%1$s commented on %2$s" : "%1$s komentoi te %2$s",
- "{author} commented on {file}" : "{author} komentoi në {file}",
- "<strong>Comments</strong> for files" : "<strong>Komente</strong> për skedarët",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s ju ka përmendur në një koment në “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} ju ka përmendur në një koment në “{file}”",
- "Unknown user" : "Përdorues i panjohur",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Një përdorues i fshirë (tani) ju ka përmendur në një koment në “{file}”"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/sr.js b/apps/comments/l10n/sr.js
index d51b102897e..95c34a5368f 100644
--- a/apps/comments/l10n/sr.js
+++ b/apps/comments/l10n/sr.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Коментари",
- "New comment …" : "Нови коментар …",
- "Delete comment" : "Обриши коментар",
- "Post" : "Објави",
- "Cancel" : "Откажи",
- "Edit comment" : "Измени коментар",
- "[Deleted user]" : "[Обрисан корисник]",
- "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију",
- "More comments …" : "Преостали коментари …",
- "Save" : "Сачувај",
- "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}",
- "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}",
- "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}",
- "Error occurred while posting comment" : "Дошло је до грешке при објави коментара",
- "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"],
- "Comment" : "Коментар",
"You commented" : "Искоментарисали сте",
- "%1$s commented" : "%1$s коментарисао",
"{author} commented" : "{author} коментарисао",
"You commented on %1$s" : "Коментарисали сте на %1$s",
"You commented on {file}" : "Коментаристали сте на {file}",
"%1$s commented on %2$s" : "%1$s коментарисао на %2$s",
"{author} commented on {file}" : "{author} коментарисао на {file}",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Поменути сте у \"%s\", у коментару који је оставио корисник који је од тада избрисан",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Поменути сте на фајлу \"{file}\", у коментару који је оставио корисник који је од тада избрисан",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”",
- "Unknown user" : "Непознат корисник",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”"
+ "Files" : "Фајлови",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Поменути сте за „{file}”, у коментару налога који је касније обрисан",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} вас је поменуо у коментару за „{file}",
+ "Files app plugin to add comments to files" : "Додатак апликацији за фајлове да додајете коментаре на фајлове",
+ "Edit comment" : "Измени коментар",
+ "Delete comment" : "Обриши коментар",
+ "Cancel edit" : "Поништи измену",
+ "New comment" : "Нови коментар",
+ "Write a comment …" : "Напишите коментар…",
+ "Post comment" : "Објави коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
+ "Could not reload comments" : "Коментари не могу поново да се учитају",
+ "Failed to mark comments as read" : "Није успело означавање коментара као прочитаних",
+ "Unable to load the comments list" : "Не могуи да учитам списак коментара",
+ "No comments yet, start the conversation!" : "Још нема коментара. Започните дискусију!",
+ "No more messages" : "Нема више порука",
+ "Retry" : "Покушај поново",
+ "_1 new comment_::_{unread} new comments_" : ["1 нови коментар","{unread} нова коментара","{unread} нова коментара"],
+ "Comment" : "Коментар",
+ "An error occurred while trying to edit the comment" : "Грешка приликом покушаја мењања коментара",
+ "Comment deleted" : "Коментар обрисан",
+ "An error occurred while trying to delete the comment" : "Грешка приликом покушаја брисања коментара",
+ "An error occurred while trying to create the comment" : "Грешка приликом покушаја креирања коментара"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/comments/l10n/sr.json b/apps/comments/l10n/sr.json
index f92a2d1fabe..80120b1efd6 100644
--- a/apps/comments/l10n/sr.json
+++ b/apps/comments/l10n/sr.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Коментари",
- "New comment …" : "Нови коментар …",
- "Delete comment" : "Обриши коментар",
- "Post" : "Објави",
- "Cancel" : "Откажи",
- "Edit comment" : "Измени коментар",
- "[Deleted user]" : "[Обрисан корисник]",
- "No comments yet, start the conversation!" : "Тренутно нема коментара. Започните дискусију",
- "More comments …" : "Преостали коментари …",
- "Save" : "Сачувај",
- "Allowed characters {count} of {max}" : "Дозвољених {count} знакова од {max}",
- "Error occurred while retrieving comment with id {id}" : "Дошло је до грешке при прегледу коментара ознаке {id}",
- "Error occurred while updating comment with id {id}" : "Дошло је до грешке при преправци коментара ознаке {id}",
- "Error occurred while posting comment" : "Дошло је до грешке при објави коментара",
- "_%n unread comment_::_%n unread comments_" : ["%nнепрочитани коментар","%nнепрочитана коментара ","%n непрочитаних коментара"],
- "Comment" : "Коментар",
"You commented" : "Искоментарисали сте",
- "%1$s commented" : "%1$s коментарисао",
"{author} commented" : "{author} коментарисао",
"You commented on %1$s" : "Коментарисали сте на %1$s",
"You commented on {file}" : "Коментаристали сте на {file}",
"%1$s commented on %2$s" : "%1$s коментарисао на %2$s",
"{author} commented on {file}" : "{author} коментарисао на {file}",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> на фајлове",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Поменути сте у \"%s\", у коментару који је оставио корисник који је од тада избрисан",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Поменути сте на фајлу \"{file}\", у коментару који је оставио корисник који је од тада избрисан",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s Вас је поменуо у коментару на \"%2$s\"",
- "{user} mentioned you in a comment on “{file}”" : "{user} Вас је поменуо у коментару на “{file}”",
- "Unknown user" : "Непознат корисник",
- "A (now) deleted user mentioned you in a comment on “%s”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "(Сада) обрисани корисник Вас је поменуо у коментару на “{file}”"
+ "Files" : "Фајлови",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Поменути сте за „{file}”, у коментару налога који је касније обрисан",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} вас је поменуо у коментару за „{file}",
+ "Files app plugin to add comments to files" : "Додатак апликацији за фајлове да додајете коментаре на фајлове",
+ "Edit comment" : "Измени коментар",
+ "Delete comment" : "Обриши коментар",
+ "Cancel edit" : "Поништи измену",
+ "New comment" : "Нови коментар",
+ "Write a comment …" : "Напишите коментар…",
+ "Post comment" : "Објави коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
+ "Could not reload comments" : "Коментари не могу поново да се учитају",
+ "Failed to mark comments as read" : "Није успело означавање коментара као прочитаних",
+ "Unable to load the comments list" : "Не могуи да учитам списак коментара",
+ "No comments yet, start the conversation!" : "Још нема коментара. Започните дискусију!",
+ "No more messages" : "Нема више порука",
+ "Retry" : "Покушај поново",
+ "_1 new comment_::_{unread} new comments_" : ["1 нови коментар","{unread} нова коментара","{unread} нова коментара"],
+ "Comment" : "Коментар",
+ "An error occurred while trying to edit the comment" : "Грешка приликом покушаја мењања коментара",
+ "Comment deleted" : "Коментар обрисан",
+ "An error occurred while trying to delete the comment" : "Грешка приликом покушаја брисања коментара",
+ "An error occurred while trying to create the comment" : "Грешка приликом покушаја креирања коментара"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sr@latin.js b/apps/comments/l10n/sr@latin.js
deleted file mode 100644
index c2185e95e92..00000000000
--- a/apps/comments/l10n/sr@latin.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "Odustani",
- "Save" : "Sačuvaj"
-},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/apps/comments/l10n/sr@latin.json b/apps/comments/l10n/sr@latin.json
deleted file mode 100644
index f61bed4853a..00000000000
--- a/apps/comments/l10n/sr@latin.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "Odustani",
- "Save" : "Sačuvaj"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/sv.js b/apps/comments/l10n/sv.js
index 94b78efb128..c96b8c94ee8 100644
--- a/apps/comments/l10n/sv.js
+++ b/apps/comments/l10n/sv.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar ...",
- "Delete comment" : "Radera kommentar",
- "Post" : "Skicka",
- "Cancel" : "Avbryt",
- "Edit comment" : "Redigera kommentar",
- "[Deleted user]" : "[Raderad användare]",
- "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
- "More comments …" : "Fler kommentarer ...",
- "Save" : "Spara",
- "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"],
- "Comment" : "Kommentar",
"You commented" : "Du kommenterade",
- "%1$s commented" : "%1$s kommenterade",
"{author} commented" : "{author} kommenterade",
"You commented on %1$s" : "Du kommenterade på %1$s",
"You commented on {file}" : "Du kommenterade på {file}",
"%1$s commented on %2$s" : "%1$s kommenterade på %2$s",
"{author} commented on {file}" : "{author} kommenterade på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"",
- "Unknown user" : "Okänd användare",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\""
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nämnde dig i kommentar för \"{file}\"",
+ "Files app plugin to add comments to files" : "Filer-appinsticksmodul för att lägga till kommentarer till filer",
+ "Edit comment" : "Redigera kommentar",
+ "Delete comment" : "Ta bort kommentar",
+ "Cancel edit" : "Avbryt redigering",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv en kommentar ...",
+ "Post comment" : "Publicera kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker",
+ "Could not reload comments" : "Kunde inte ladda om kommentarer",
+ "Failed to mark comments as read" : "Kunde inte markera kommentarer som lästa",
+ "Unable to load the comments list" : "Kunde inte ladda kommentarlistan",
+ "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
+ "No more messages" : "Inga fler meddelanden",
+ "Retry" : "Försök igen",
+ "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nya kommentarer"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Ett fel uppstod vid redigering av kommentaren",
+ "Comment deleted" : "Kommentar borttagen",
+ "An error occurred while trying to delete the comment" : "Ett fel uppstod vid borttagning av kommentaren",
+ "An error occurred while trying to create the comment" : "Ett fel uppstod vid skapande av kommentaren"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/sv.json b/apps/comments/l10n/sv.json
index ae50ff98d29..90d10190185 100644
--- a/apps/comments/l10n/sv.json
+++ b/apps/comments/l10n/sv.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "Kommentarer",
- "New comment …" : "Ny kommentar ...",
- "Delete comment" : "Radera kommentar",
- "Post" : "Skicka",
- "Cancel" : "Avbryt",
- "Edit comment" : "Redigera kommentar",
- "[Deleted user]" : "[Raderad användare]",
- "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
- "More comments …" : "Fler kommentarer ...",
- "Save" : "Spara",
- "Allowed characters {count} of {max}" : "Antal tillåtna tecken, {count} av {max}",
- "Error occurred while retrieving comment with id {id}" : "Fel inträffade vid inläsning av kommentar med id {id}",
- "Error occurred while updating comment with id {id}" : "Fel inträffade vid uppdatering av kommentar med id {id}",
- "Error occurred while posting comment" : "Fel inträffade vid publicering av kommentar",
- "_%n unread comment_::_%n unread comments_" : ["%n oläst kommentar","%n olästa kommentarer"],
- "Comment" : "Kommentar",
"You commented" : "Du kommenterade",
- "%1$s commented" : "%1$s kommenterade",
"{author} commented" : "{author} kommenterade",
"You commented on %1$s" : "Du kommenterade på %1$s",
"You commented on {file}" : "Du kommenterade på {file}",
"%1$s commented on %2$s" : "%1$s kommenterade på %2$s",
"{author} commented on {file}" : "{author} kommenterade på {file}",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> för filer",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s nämnde dig i en kommentar på “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} nämnde dig i en kommentar på \"{file}\"",
- "Unknown user" : "Okänd användare",
- "A (now) deleted user mentioned you in a comment on “%s”" : "En (nu) raderad användare nämnde dig i en kommentar på \"%s\"",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "En (nu) raderad användare nämnde dig i en kommentar på \"{file}\""
+ "Files" : "Filer",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Du har nämnts i \"{file}\", i en kommentar av en användare som sedan har blivit borttagen",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} nämnde dig i kommentar för \"{file}\"",
+ "Files app plugin to add comments to files" : "Filer-appinsticksmodul för att lägga till kommentarer till filer",
+ "Edit comment" : "Redigera kommentar",
+ "Delete comment" : "Ta bort kommentar",
+ "Cancel edit" : "Avbryt redigering",
+ "New comment" : "Ny kommentar",
+ "Write a comment …" : "Skriv en kommentar ...",
+ "Post comment" : "Publicera kommentar",
+ "@ for mentions, : for emoji, / for smart picker" : "@ för omnämnanden, : för emoji, / för smart picker",
+ "Could not reload comments" : "Kunde inte ladda om kommentarer",
+ "Failed to mark comments as read" : "Kunde inte markera kommentarer som lästa",
+ "Unable to load the comments list" : "Kunde inte ladda kommentarlistan",
+ "No comments yet, start the conversation!" : "Inga kommentarer ännu.",
+ "No more messages" : "Inga fler meddelanden",
+ "Retry" : "Försök igen",
+ "_1 new comment_::_{unread} new comments_" : ["1 ny kommentar","{unread} nya kommentarer"],
+ "Comment" : "Kommentar",
+ "An error occurred while trying to edit the comment" : "Ett fel uppstod vid redigering av kommentaren",
+ "Comment deleted" : "Kommentar borttagen",
+ "An error occurred while trying to delete the comment" : "Ett fel uppstod vid borttagning av kommentaren",
+ "An error occurred while trying to create the comment" : "Ett fel uppstod vid skapande av kommentaren"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/sw.js b/apps/comments/l10n/sw.js
new file mode 100644
index 00000000000..dbe931a3406
--- /dev/null
+++ b/apps/comments/l10n/sw.js
@@ -0,0 +1,36 @@
+OC.L10N.register(
+ "comments",
+ {
+ "Comments" : "Maoni",
+ "You commented" : "Ulitoa maoni",
+ "{author} commented" : "{author} alitoa maoni",
+ "You commented on %1$s" : "Ulitoa maoni katika %1$s",
+ "You commented on {file}" : "Ulitoa maoni katika {file}",
+ "%1$s commented on %2$s" : "%1$salitoa maoni katika %2$s",
+ "{author} commented on {file}" : "{author}alitoa maoni katika {file}",
+ "<strong>Comments</strong> for files" : "<strong>maoni</strong>kwa faili",
+ "Files" : "Mafaili",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Ulitajwa kwenye \"{file}\", kwenye maoni ya akaunti ambayo imefutwa",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user}amekutaja katika maoni kwenye\"{file}\"",
+ "Files app plugin to add comments to files" : "Programu-jalizi ya Faili ili kuongeza maoni kwenye faili ",
+ "Edit comment" : "Hariri maoni",
+ "Delete comment" : "Futa maoni",
+ "Cancel edit" : "Sistisha uhariri",
+ "New comment" : "Maoni mapya",
+ "Write a comment …" : "Andika maoni...",
+ "Post comment" : "Tuma maoni",
+ "@ for mentions, : for emoji, / for smart picker" : "@ kwa mitajo, : kwa emoji, / kwa kichagua smart",
+ "Could not reload comments" : "Haikuweza kupakia maoni",
+ "Failed to mark comments as read" : "imeshindwa kuweka alama kwenye maoni kama yamesomwa",
+ "Unable to load the comments list" : "Haiwezi kupakia orodha ya maoni",
+ "No comments yet, start the conversation!" : "Bado hakuna maoni, anza mazungumzo",
+ "No more messages" : "Hakuna jumbe zaidi",
+ "Retry" : "Jaribu tene",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread}maoni mapya "],
+ "Comment" : "Maoni",
+ "An error occurred while trying to edit the comment" : "Hitilafu ilitokea wakati wa kujaribu kuhariri maoni",
+ "Comment deleted" : "Maoni yamefutwa",
+ "An error occurred while trying to delete the comment" : "Hitilafu ilitokea wakati wa kujaribu kufuta maoni",
+ "An error occurred while trying to create the comment" : "Hitilafu ilitokea wakati wa kujaribu kuunda maoni"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/sw.json b/apps/comments/l10n/sw.json
new file mode 100644
index 00000000000..86dff80baf2
--- /dev/null
+++ b/apps/comments/l10n/sw.json
@@ -0,0 +1,34 @@
+{ "translations": {
+ "Comments" : "Maoni",
+ "You commented" : "Ulitoa maoni",
+ "{author} commented" : "{author} alitoa maoni",
+ "You commented on %1$s" : "Ulitoa maoni katika %1$s",
+ "You commented on {file}" : "Ulitoa maoni katika {file}",
+ "%1$s commented on %2$s" : "%1$salitoa maoni katika %2$s",
+ "{author} commented on {file}" : "{author}alitoa maoni katika {file}",
+ "<strong>Comments</strong> for files" : "<strong>maoni</strong>kwa faili",
+ "Files" : "Mafaili",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Ulitajwa kwenye \"{file}\", kwenye maoni ya akaunti ambayo imefutwa",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user}amekutaja katika maoni kwenye\"{file}\"",
+ "Files app plugin to add comments to files" : "Programu-jalizi ya Faili ili kuongeza maoni kwenye faili ",
+ "Edit comment" : "Hariri maoni",
+ "Delete comment" : "Futa maoni",
+ "Cancel edit" : "Sistisha uhariri",
+ "New comment" : "Maoni mapya",
+ "Write a comment …" : "Andika maoni...",
+ "Post comment" : "Tuma maoni",
+ "@ for mentions, : for emoji, / for smart picker" : "@ kwa mitajo, : kwa emoji, / kwa kichagua smart",
+ "Could not reload comments" : "Haikuweza kupakia maoni",
+ "Failed to mark comments as read" : "imeshindwa kuweka alama kwenye maoni kama yamesomwa",
+ "Unable to load the comments list" : "Haiwezi kupakia orodha ya maoni",
+ "No comments yet, start the conversation!" : "Bado hakuna maoni, anza mazungumzo",
+ "No more messages" : "Hakuna jumbe zaidi",
+ "Retry" : "Jaribu tene",
+ "_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread}maoni mapya "],
+ "Comment" : "Maoni",
+ "An error occurred while trying to edit the comment" : "Hitilafu ilitokea wakati wa kujaribu kuhariri maoni",
+ "Comment deleted" : "Maoni yamefutwa",
+ "An error occurred while trying to delete the comment" : "Hitilafu ilitokea wakati wa kujaribu kufuta maoni",
+ "An error occurred while trying to create the comment" : "Hitilafu ilitokea wakati wa kujaribu kuunda maoni"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/comments/l10n/ta_LK.js b/apps/comments/l10n/ta_LK.js
deleted file mode 100644
index 8d16f1e90b6..00000000000
--- a/apps/comments/l10n/ta_LK.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "இரத்து செய்க",
- "Save" : "சேமிக்க "
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ta_LK.json b/apps/comments/l10n/ta_LK.json
deleted file mode 100644
index b1a589161a6..00000000000
--- a/apps/comments/l10n/ta_LK.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "இரத்து செய்க",
- "Save" : "சேமிக்க "
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/te.js b/apps/comments/l10n/te.js
deleted file mode 100644
index ac519b5e833..00000000000
--- a/apps/comments/l10n/te.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "రద్దుచేయి",
- "Save" : "భద్రపరచు"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/te.json b/apps/comments/l10n/te.json
deleted file mode 100644
index 3184274b231..00000000000
--- a/apps/comments/l10n/te.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "రద్దుచేయి",
- "Save" : "భద్రపరచు"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/th_TH.js b/apps/comments/l10n/th_TH.js
deleted file mode 100644
index f8b2d4e2648..00000000000
--- a/apps/comments/l10n/th_TH.js
+++ /dev/null
@@ -1,23 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Type in a new comment..." : "เพิ่มความคิดเห็นใหม่ ...",
- "Delete comment" : "ลบความคิดเห็น",
- "Post" : "โพสต์",
- "Cancel" : "ยกเลิก",
- "Edit comment" : "แก้ไขความคิดเห็น",
- "[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]",
- "Comments" : "ความคิดเห็น",
- "No other comments available" : "ยังไม่มีความคิดเห็นอื่นๆ",
- "More comments..." : "ความคิดเห็นอื่นๆ ...",
- "Save" : "บันทึก",
- "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร",
- "{count} unread comments" : "{count} ความคิดเห็นที่ยังไม่ได้อ่าน",
- "Comment" : "แสดงความคิดเห็น",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>ความคิดเห็น</strong> สำหรับไฟล์ <em>(ระบุไว้เสมอในสตรีม)</em>",
- "You commented" : "คุณได้แสดงความคิดเห็นแล้ว",
- "%1$s commented" : "%1$s ได้ถูกแสดงความคิดเห็น",
- "You commented on %2$s" : "คุณได้แสดงความคิดเห็นบน %2$s",
- "%1$s commented on %2$s" : "%1$s ได้ถูกแสดงความคิดเห็นบน %2$s"
-},
-"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/th_TH.json b/apps/comments/l10n/th_TH.json
deleted file mode 100644
index 88740585e3c..00000000000
--- a/apps/comments/l10n/th_TH.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{ "translations": {
- "Type in a new comment..." : "เพิ่มความคิดเห็นใหม่ ...",
- "Delete comment" : "ลบความคิดเห็น",
- "Post" : "โพสต์",
- "Cancel" : "ยกเลิก",
- "Edit comment" : "แก้ไขความคิดเห็น",
- "[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]",
- "Comments" : "ความคิดเห็น",
- "No other comments available" : "ยังไม่มีความคิดเห็นอื่นๆ",
- "More comments..." : "ความคิดเห็นอื่นๆ ...",
- "Save" : "บันทึก",
- "Allowed characters {count} of {max}" : "อนุญาตให้ใช้ {count} จากทั้งหมด {max} ตัวอักษร",
- "{count} unread comments" : "{count} ความคิดเห็นที่ยังไม่ได้อ่าน",
- "Comment" : "แสดงความคิดเห็น",
- "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>ความคิดเห็น</strong> สำหรับไฟล์ <em>(ระบุไว้เสมอในสตรีม)</em>",
- "You commented" : "คุณได้แสดงความคิดเห็นแล้ว",
- "%1$s commented" : "%1$s ได้ถูกแสดงความคิดเห็น",
- "You commented on %2$s" : "คุณได้แสดงความคิดเห็นบน %2$s",
- "%1$s commented on %2$s" : "%1$s ได้ถูกแสดงความคิดเห็นบน %2$s"
-},"pluralForm" :"nplurals=1; plural=0;"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/tr.js b/apps/comments/l10n/tr.js
index 0baf7ae0619..c8294d0ec30 100644
--- a/apps/comments/l10n/tr.js
+++ b/apps/comments/l10n/tr.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "Yorumlar",
- "New comment …" : "Yorum ekle ...",
- "Delete comment" : "Yorumu sil",
- "Post" : "Gönder",
- "Cancel" : "İptal",
- "Edit comment" : "Yorumu düzenle",
- "[Deleted user]" : "[Silinmiş kullanıcı]",
- "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir sohbet başlatın!",
- "More comments …" : "Diğer yorumlar ...",
- "Save" : "Kaydet",
- "Allowed characters {count} of {max}" : "Yazılabilecek karakter sayısı {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "{id} kodlu yorum alınırken sorun çıktı",
- "Error occurred while updating comment with id {id}" : "{id} kodlu yorum güncellenirken sorun çıktı",
- "Error occurred while posting comment" : "Yorum gönderilirken sorun çıktı",
- "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"],
- "Comment" : "Yorum",
"You commented" : "Yorum yaptınız",
- "%1$s commented" : "%1$s yorumlanmış",
"{author} commented" : "{author} yorum yaptı",
"You commented on %1$s" : "%1$s hakkında yorum yaptınız",
"You commented on {file}" : "{file} hakkında yorum yaptınız",
"%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı",
"{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı",
- "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "\"%s\" hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "“{file}” hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti",
- "{user} mentioned you in a comment on “{file}”" : "{user}, “{file}” hakkındaki bir yorumda sizden bahsetti",
- "Unknown user" : "Bilinmeyen kullanıcı",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti"
+ "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorum</strong> yapıldığında",
+ "Files" : "Dosyalar",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\" hakkında bir yorumda silinmiş bir hesap tarafından anıldınız",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user}, \"{file}\" hakkındaki bir yorumda sizi andı",
+ "Files app plugin to add comments to files" : "Dosyalara notlar eklenmesini sağlayan Dosyalar uygulaması eklentisi",
+ "Edit comment" : "Yorumu düzenle",
+ "Delete comment" : "Yorumu sil",
+ "Cancel edit" : "Düzenlemeyi iptal et",
+ "New comment" : "Yorum ekle",
+ "Write a comment …" : "Bir yorum yazın…",
+ "Post comment" : "Yorum gönder",
+ "@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
+ "Could not reload comments" : "Yorumlar yeniden yüklenemedi",
+ "Failed to mark comments as read" : "Yorumlar okunmuş olarak işaretlenemedi",
+ "Unable to load the comments list" : "Yorum listesi yüklenemedi",
+ "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir görüşme başlatın!",
+ "No more messages" : "Başka ileti yok",
+ "Retry" : "Yeniden dene",
+ "_1 new comment_::_{unread} new comments_" : ["1 yeni yorum","{unread} yeni yorum"],
+ "Comment" : "Yorum",
+ "An error occurred while trying to edit the comment" : "Yorum düzenlenmeye çalışılırken bir sorun çıktı",
+ "Comment deleted" : "Yorum silindi",
+ "An error occurred while trying to delete the comment" : "Yorum silinmeye çalışılırken bir sorun çıktı",
+ "An error occurred while trying to create the comment" : "Yorum eklenmeye çalışılırken bir sorun çıktı"
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/comments/l10n/tr.json b/apps/comments/l10n/tr.json
index 0b653199a33..4664a265367 100644
--- a/apps/comments/l10n/tr.json
+++ b/apps/comments/l10n/tr.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "Yorumlar",
- "New comment …" : "Yorum ekle ...",
- "Delete comment" : "Yorumu sil",
- "Post" : "Gönder",
- "Cancel" : "İptal",
- "Edit comment" : "Yorumu düzenle",
- "[Deleted user]" : "[Silinmiş kullanıcı]",
- "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir sohbet başlatın!",
- "More comments …" : "Diğer yorumlar ...",
- "Save" : "Kaydet",
- "Allowed characters {count} of {max}" : "Yazılabilecek karakter sayısı {count}/{max}",
- "Error occurred while retrieving comment with id {id}" : "{id} kodlu yorum alınırken sorun çıktı",
- "Error occurred while updating comment with id {id}" : "{id} kodlu yorum güncellenirken sorun çıktı",
- "Error occurred while posting comment" : "Yorum gönderilirken sorun çıktı",
- "_%n unread comment_::_%n unread comments_" : ["%n okunmamış yorum","%n okunmamış yorum"],
- "Comment" : "Yorum",
"You commented" : "Yorum yaptınız",
- "%1$s commented" : "%1$s yorumlanmış",
"{author} commented" : "{author} yorum yaptı",
"You commented on %1$s" : "%1$s hakkında yorum yaptınız",
"You commented on {file}" : "{file} hakkında yorum yaptınız",
"%1$s commented on %2$s" : "%1$s, %2$s için yorum yaptı",
"{author} commented on {file}" : "{author}, {file} hakkında yorum yaptı",
- "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorumlar</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "\"%s\" hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "“{file}” hakkında bir yorumda silinmiş bir kullanıcı tarafından anıldınız",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s, “%2$s” hakkındaki bir yorumda sizden bahsetti",
- "{user} mentioned you in a comment on “{file}”" : "{user}, “{file}” hakkındaki bir yorumda sizden bahsetti",
- "Unknown user" : "Bilinmeyen kullanıcı",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Bir (artık) silinmiş kullanıcı “%s” hakkındaki bir yorumda sizden bahsetti",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Bir (artık) silinmiş kullanıcı “{file}” hakkındaki bir yorumda sizden bahsetti"
+ "<strong>Comments</strong> for files" : "Dosyalar için <strong>yorum</strong> yapıldığında",
+ "Files" : "Dosyalar",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "\"{file}\" hakkında bir yorumda silinmiş bir hesap tarafından anıldınız",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user}, \"{file}\" hakkındaki bir yorumda sizi andı",
+ "Files app plugin to add comments to files" : "Dosyalara notlar eklenmesini sağlayan Dosyalar uygulaması eklentisi",
+ "Edit comment" : "Yorumu düzenle",
+ "Delete comment" : "Yorumu sil",
+ "Cancel edit" : "Düzenlemeyi iptal et",
+ "New comment" : "Yorum ekle",
+ "Write a comment …" : "Bir yorum yazın…",
+ "Post comment" : "Yorum gönder",
+ "@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
+ "Could not reload comments" : "Yorumlar yeniden yüklenemedi",
+ "Failed to mark comments as read" : "Yorumlar okunmuş olarak işaretlenemedi",
+ "Unable to load the comments list" : "Yorum listesi yüklenemedi",
+ "No comments yet, start the conversation!" : "Henüz bir yorum yapılmamış! Bir görüşme başlatın!",
+ "No more messages" : "Başka ileti yok",
+ "Retry" : "Yeniden dene",
+ "_1 new comment_::_{unread} new comments_" : ["1 yeni yorum","{unread} yeni yorum"],
+ "Comment" : "Yorum",
+ "An error occurred while trying to edit the comment" : "Yorum düzenlenmeye çalışılırken bir sorun çıktı",
+ "Comment deleted" : "Yorum silindi",
+ "An error occurred while trying to delete the comment" : "Yorum silinmeye çalışılırken bir sorun çıktı",
+ "An error occurred while trying to create the comment" : "Yorum eklenmeye çalışılırken bir sorun çıktı"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ug.js b/apps/comments/l10n/ug.js
index 589911eeb21..dc45071aa69 100644
--- a/apps/comments/l10n/ug.js
+++ b/apps/comments/l10n/ug.js
@@ -1,7 +1,35 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "ۋاز كەچ",
- "Save" : "ساقلا"
+ "Comments" : "باھا",
+ "You commented" : "باھا بەردىڭىز",
+ "{author} commented" : "{author} باھا بەردى",
+ "You commented on %1$s" : "سىز%1 $ s غا باھا بەردىڭىز",
+ "You commented on {file}" : "سىز {file} گە باھا بەردىڭىز",
+ "%1$s commented on %2$s" : "%1 $ s%2 $ s غا باھا بەردى",
+ "{author} commented on {file}" : "{author} بولسا {file} گە باھا بەردى",
+ "<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>",
+ "Files" : "ھۆججەتلەر",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{file}» دە تىلغا ئېلىندى",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{file}\" دىكى باھادا تىلغا ئالدى",
+ "Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى",
+ "Edit comment" : "باھا تەھرىرلەش",
+ "Delete comment" : "باھانى ئۆچۈرۈڭ",
+ "Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ",
+ "New comment" : "يېڭى باھا",
+ "Write a comment …" : "باھا يېزىڭ…",
+ "Post comment" : "ئىنكاس يېزىڭ",
+ "@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن",
+ "Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى",
+ "Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى",
+ "Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى",
+ "No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!",
+ "No more messages" : "باشقا ئۇچۇر يوق",
+ "Retry" : "قايتا سىناڭ",
+ "Comment" : "باھا",
+ "An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى",
+ "Comment deleted" : "باھا ئۆچۈرۈلدى",
+ "An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى",
+ "An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى"
},
-"nplurals=1; plural=0;");
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ug.json b/apps/comments/l10n/ug.json
index 627eb112502..a7669c2131c 100644
--- a/apps/comments/l10n/ug.json
+++ b/apps/comments/l10n/ug.json
@@ -1,5 +1,33 @@
{ "translations": {
- "Cancel" : "ۋاز كەچ",
- "Save" : "ساقلا"
-},"pluralForm" :"nplurals=1; plural=0;"
+ "Comments" : "باھا",
+ "You commented" : "باھا بەردىڭىز",
+ "{author} commented" : "{author} باھا بەردى",
+ "You commented on %1$s" : "سىز%1 $ s غا باھا بەردىڭىز",
+ "You commented on {file}" : "سىز {file} گە باھا بەردىڭىز",
+ "%1$s commented on %2$s" : "%1 $ s%2 $ s غا باھا بەردى",
+ "{author} commented on {file}" : "{author} بولسا {file} گە باھا بەردى",
+ "<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>",
+ "Files" : "ھۆججەتلەر",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{file}» دە تىلغا ئېلىندى",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{file}\" دىكى باھادا تىلغا ئالدى",
+ "Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى",
+ "Edit comment" : "باھا تەھرىرلەش",
+ "Delete comment" : "باھانى ئۆچۈرۈڭ",
+ "Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ",
+ "New comment" : "يېڭى باھا",
+ "Write a comment …" : "باھا يېزىڭ…",
+ "Post comment" : "ئىنكاس يېزىڭ",
+ "@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن",
+ "Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى",
+ "Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى",
+ "Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى",
+ "No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!",
+ "No more messages" : "باشقا ئۇچۇر يوق",
+ "Retry" : "قايتا سىناڭ",
+ "Comment" : "باھا",
+ "An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى",
+ "Comment deleted" : "باھا ئۆچۈرۈلدى",
+ "An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى",
+ "An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/uk.js b/apps/comments/l10n/uk.js
index 547fa22b7a5..03b1fea5b85 100644
--- a/apps/comments/l10n/uk.js
+++ b/apps/comments/l10n/uk.js
@@ -1,20 +1,36 @@
OC.L10N.register(
"comments",
{
- "Type in a new comment..." : "Введіть новий коментар...",
- "Delete comment" : "Видалити коментар",
- "Post" : "Відправити",
- "Cancel" : "Скасувати",
- "Edit comment" : "Редагувати коментар",
- "[Deleted user]" : "[Видалений користувач]",
"Comments" : "Коментарі",
- "No other comments available" : "Інші коментарі не доступні",
- "More comments..." : "Більше коментарів...",
- "Save" : "Зберегти",
- "Allowed characters {count} of {max}" : "Доступно символів {count} з {max}",
- "{count} unread comments" : "{count} непрочитаних коментарів",
+ "You commented" : "Ви прокоментували",
+ "{author} commented" : "{author} прокоментував(-ла)",
+ "You commented on %1$s" : "Ви прокоментували на %1$s",
+ "You commented on {file}" : "Ви прокоментували {file}",
+ "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
+ "{author} commented on {file}" : "{author} прокоментував(-ла) {file}",
+ "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів",
+ "Files" : "Файли",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вас згадали у \"{file}\" в коментарі, який було додано користувачем, якого було вилучено",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
+ "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
+ "Edit comment" : "Редагувати коментар",
+ "Delete comment" : "Вилучити коментар",
+ "Cancel edit" : "Скасувати редагування",
+ "New comment" : "Новий коментар",
+ "Write a comment …" : "Додати коментар ...",
+ "Post comment" : "Опублікувати коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору",
+ "Could not reload comments" : "Не вдалося перезавантажити коментарі",
+ "Failed to mark comments as read" : "Не вдалося позначити коментарі прочитаними",
+ "Unable to load the comments list" : "Не вдалося завантажити список коментарів",
+ "No comments yet, start the conversation!" : "Тут можна додати коментарі",
+ "No more messages" : "Більше жодних повідомлень",
+ "Retry" : "Ще раз",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
"Comment" : "Коментар",
- "%1$s commented" : "%1$s прокоментовано",
- "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s"
+ "An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
+ "Comment deleted" : "Коментар вилучено",
+ "An error occurred while trying to delete the comment" : "Під час спроби вилучити коментар сталася помилка",
+ "An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка"
},
-"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
+"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
diff --git a/apps/comments/l10n/uk.json b/apps/comments/l10n/uk.json
index 5fbbe2a6217..7802b6d4f15 100644
--- a/apps/comments/l10n/uk.json
+++ b/apps/comments/l10n/uk.json
@@ -1,18 +1,34 @@
{ "translations": {
- "Type in a new comment..." : "Введіть новий коментар...",
- "Delete comment" : "Видалити коментар",
- "Post" : "Відправити",
- "Cancel" : "Скасувати",
- "Edit comment" : "Редагувати коментар",
- "[Deleted user]" : "[Видалений користувач]",
"Comments" : "Коментарі",
- "No other comments available" : "Інші коментарі не доступні",
- "More comments..." : "Більше коментарів...",
- "Save" : "Зберегти",
- "Allowed characters {count} of {max}" : "Доступно символів {count} з {max}",
- "{count} unread comments" : "{count} непрочитаних коментарів",
+ "You commented" : "Ви прокоментували",
+ "{author} commented" : "{author} прокоментував(-ла)",
+ "You commented on %1$s" : "Ви прокоментували на %1$s",
+ "You commented on {file}" : "Ви прокоментували {file}",
+ "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
+ "{author} commented on {file}" : "{author} прокоментував(-ла) {file}",
+ "<strong>Comments</strong> for files" : "З'явилися <strong>коментарі</strong> до файлів",
+ "Files" : "Файли",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Вас згадали у \"{file}\" в коментарі, який було додано користувачем, якого було вилучено",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
+ "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
+ "Edit comment" : "Редагувати коментар",
+ "Delete comment" : "Вилучити коментар",
+ "Cancel edit" : "Скасувати редагування",
+ "New comment" : "Новий коментар",
+ "Write a comment …" : "Додати коментар ...",
+ "Post comment" : "Опублікувати коментар",
+ "@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору",
+ "Could not reload comments" : "Не вдалося перезавантажити коментарі",
+ "Failed to mark comments as read" : "Не вдалося позначити коментарі прочитаними",
+ "Unable to load the comments list" : "Не вдалося завантажити список коментарів",
+ "No comments yet, start the conversation!" : "Тут можна додати коментарі",
+ "No more messages" : "Більше жодних повідомлень",
+ "Retry" : "Ще раз",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
"Comment" : "Коментар",
- "%1$s commented" : "%1$s прокоментовано",
- "%1$s commented on %2$s" : "%1$s прокоментовано у %2$s"
-},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
+ "An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
+ "Comment deleted" : "Коментар вилучено",
+ "An error occurred while trying to delete the comment" : "Під час спроби вилучити коментар сталася помилка",
+ "An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка"
+},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/comments/l10n/ur_PK.js b/apps/comments/l10n/ur_PK.js
deleted file mode 100644
index 2808425d15a..00000000000
--- a/apps/comments/l10n/ur_PK.js
+++ /dev/null
@@ -1,7 +0,0 @@
-OC.L10N.register(
- "comments",
- {
- "Cancel" : "منسوخ کریں",
- "Save" : "حفظ"
-},
-"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/ur_PK.json b/apps/comments/l10n/ur_PK.json
deleted file mode 100644
index 83df86652d2..00000000000
--- a/apps/comments/l10n/ur_PK.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "translations": {
- "Cancel" : "منسوخ کریں",
- "Save" : "حفظ"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
-} \ No newline at end of file
diff --git a/apps/comments/l10n/vi.js b/apps/comments/l10n/vi.js
index f91b311691e..7ee551e6efb 100644
--- a/apps/comments/l10n/vi.js
+++ b/apps/comments/l10n/vi.js
@@ -1,34 +1,31 @@
OC.L10N.register(
"comments",
{
- "Comments" : "Các bình luận",
- "New comment …" : "Tạo bình luận mới",
- "Delete comment" : "Xóa bình luận",
- "Post" : "Đăng",
- "Cancel" : "Hủy",
- "Edit comment" : "Sửa bình luận",
- "[Deleted user]" : "[Người dùng bị xoá]",
- "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!",
- "More comments …" : "Xem thêm các bình luận...",
- "Save" : "Lưu",
- "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}",
- "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}",
- "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}",
- "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận",
- "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"],
- "Comment" : "Bình luận",
+ "Comments" : "Bình luận",
"You commented" : "Bạn đã bình luận",
- "%1$s commented" : "%1$s được bình luận",
"{author} commented" : "{author} đã bình luận",
"You commented on %1$s" : "Bạn đã bình luận về %1$s",
"You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}",
"%1$s commented on %2$s" : "%1$s đã bình luận về%2$s",
"{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}",
"<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”",
- "Unknown user" : "Người dùng không tồn tại",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”"
+ "Files" : "Tệp tin",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} đã nhắc tới bạn trong một bình luận trên \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin ứng dụng Tệp để thêm bình luận vào tệp",
+ "Edit comment" : "Sửa bình luận",
+ "Delete comment" : "Xóa bình luận",
+ "Cancel edit" : "Hủy chỉnh sửa",
+ "Post comment" : "Đăng bình luận",
+ "Failed to mark comments as read" : "Không thể đánh dấu bình luận là đã đọc",
+ "Unable to load the comments list" : "Không thể tải danh sách bình luận",
+ "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!",
+ "No more messages" : "Không có thêm tin nhắn",
+ "Retry" : "Thử lại",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} bình luận mới"],
+ "Comment" : "Bình luận",
+ "An error occurred while trying to edit the comment" : "Đã xảy ra lỗi khi cố gắng chỉnh sửa bình luận",
+ "Comment deleted" : "Đã xóa bình luận",
+ "An error occurred while trying to delete the comment" : "Đã xảy ra lỗi khi cố gắng xóa bình luận",
+ "An error occurred while trying to create the comment" : "Đã xảy ra lỗi khi cố gắng tạo bình luận"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/vi.json b/apps/comments/l10n/vi.json
index c2a968a8d9c..a014378b887 100644
--- a/apps/comments/l10n/vi.json
+++ b/apps/comments/l10n/vi.json
@@ -1,32 +1,29 @@
{ "translations": {
- "Comments" : "Các bình luận",
- "New comment …" : "Tạo bình luận mới",
- "Delete comment" : "Xóa bình luận",
- "Post" : "Đăng",
- "Cancel" : "Hủy",
- "Edit comment" : "Sửa bình luận",
- "[Deleted user]" : "[Người dùng bị xoá]",
- "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!",
- "More comments …" : "Xem thêm các bình luận...",
- "Save" : "Lưu",
- "Allowed characters {count} of {max}" : "Số ký tự được còn lại là {count} trong tổng số {max}",
- "Error occurred while retrieving comment with id {id}" : "Có lỗi xảy ra khi truy xuất bình luận có id {id}",
- "Error occurred while updating comment with id {id}" : "Có lỗi xảy ra khi cập nhật bình luận có id {id}",
- "Error occurred while posting comment" : "Có lỗi xảy ra khi đăng bình luận",
- "_%n unread comment_::_%n unread comments_" : ["%n bình luận chưa đọc"],
- "Comment" : "Bình luận",
+ "Comments" : "Bình luận",
"You commented" : "Bạn đã bình luận",
- "%1$s commented" : "%1$s được bình luận",
"{author} commented" : "{author} đã bình luận",
"You commented on %1$s" : "Bạn đã bình luận về %1$s",
"You commented on {file}" : "Bạn đã bình luận đối với tệp tin {file}",
"%1$s commented on %2$s" : "%1$s đã bình luận về%2$s",
"{author} commented on {file}" : "{author} đã bình luận về tệp tin {file}",
"<strong>Comments</strong> for files" : "<strong>bình luận</strong> đối với các tệp tin",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s đề cập tới bạn trong một bình luận về “%2$s”",
- "{user} mentioned you in a comment on “{file}”" : "{user} đề cập tới bạn trong một bình luận về “{file}”",
- "Unknown user" : "Người dùng không tồn tại",
- "A (now) deleted user mentioned you in a comment on “%s”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “%s”",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "Có một người sử dụng (now) bị xóa đã đề cập tới bạn trong một bình luận về “{file}”"
+ "Files" : "Tệp tin",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} đã nhắc tới bạn trong một bình luận trên \"{file}\"",
+ "Files app plugin to add comments to files" : "Plugin ứng dụng Tệp để thêm bình luận vào tệp",
+ "Edit comment" : "Sửa bình luận",
+ "Delete comment" : "Xóa bình luận",
+ "Cancel edit" : "Hủy chỉnh sửa",
+ "Post comment" : "Đăng bình luận",
+ "Failed to mark comments as read" : "Không thể đánh dấu bình luận là đã đọc",
+ "Unable to load the comments list" : "Không thể tải danh sách bình luận",
+ "No comments yet, start the conversation!" : "Không có bình luận nào, bắt đầu cuộc hội thoại!",
+ "No more messages" : "Không có thêm tin nhắn",
+ "Retry" : "Thử lại",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} bình luận mới"],
+ "Comment" : "Bình luận",
+ "An error occurred while trying to edit the comment" : "Đã xảy ra lỗi khi cố gắng chỉnh sửa bình luận",
+ "Comment deleted" : "Đã xóa bình luận",
+ "An error occurred while trying to delete the comment" : "Đã xảy ra lỗi khi cố gắng xóa bình luận",
+ "An error occurred while trying to create the comment" : "Đã xảy ra lỗi khi cố gắng tạo bình luận"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_CN.js b/apps/comments/l10n/zh_CN.js
index 6663f6b064f..1b29a108500 100644
--- a/apps/comments/l10n/zh_CN.js
+++ b/apps/comments/l10n/zh_CN.js
@@ -2,33 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "评论",
- "New comment …" : "新评论 ...",
- "Delete comment" : "删除评论",
- "Post" : "发布",
- "Cancel" : "取消",
- "Edit comment" : "编辑评论",
- "[Deleted user]" : "[已删除用户]",
- "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
- "More comments …" : "更多评论 ...",
- "Save" : "保存",
- "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
- "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
- "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
- "Error occurred while posting comment" : "发布评论出错",
- "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
- "Comment" : "评论",
- "You commented" : "您的评论",
- "%1$s commented" : "%1$s 已评论",
+ "You commented" : "你的评论",
"{author} commented" : "{author} 评论了",
- "You commented on %1$s" : "您在 %1$s 的评论",
- "You commented on {file}" : "您对 {file} 的评论",
+ "You commented on %1$s" : "你在 %1$s 的评论",
+ "You commented on {file}" : "你对 {file} 的评论",
"%1$s commented on %2$s" : "%1$s 评论了 %2$s",
"{author} commented on {file}" : "{author} 对 {file} 的评论",
"<strong>Comments</strong> for files" : "文件的<strong>评论</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您",
- "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您",
- "Unknown user" : "未知用户",
- "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您"
+ "Files" : "文件",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "你在文件 “{file}” 内被一个已删除的账号评论提及",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的评论中提到了你",
+ "Files app plugin to add comments to files" : "文件应用插件可向文件添加评论",
+ "Edit comment" : "编辑评论",
+ "Delete comment" : "删除评论",
+ "Cancel edit" : "取消编辑",
+ "New comment" : "新评论",
+ "Write a comment …" : "发表评论 ...",
+ "Post comment" : "发表评论",
+ "@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择",
+ "Could not reload comments" : "无法重载评论",
+ "Failed to mark comments as read" : "无法将评论标记为已读",
+ "Unable to load the comments list" : "无法加载评论列表",
+ "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
+ "No more messages" : "没有更多消息",
+ "Retry" : "重试",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 条新评论"],
+ "Comment" : "评论",
+ "An error occurred while trying to edit the comment" : "编辑评论时出错",
+ "Comment deleted" : "评论已删除",
+ "An error occurred while trying to delete the comment" : "删除评论时出错",
+ "An error occurred while trying to create the comment" : "创建评论时出错"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/zh_CN.json b/apps/comments/l10n/zh_CN.json
index 78c080587dd..a6d668e613c 100644
--- a/apps/comments/l10n/zh_CN.json
+++ b/apps/comments/l10n/zh_CN.json
@@ -1,32 +1,34 @@
{ "translations": {
"Comments" : "评论",
- "New comment …" : "新评论 ...",
- "Delete comment" : "删除评论",
- "Post" : "发布",
- "Cancel" : "取消",
- "Edit comment" : "编辑评论",
- "[Deleted user]" : "[已删除用户]",
- "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
- "More comments …" : "更多评论 ...",
- "Save" : "保存",
- "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
- "Error occurred while retrieving comment with id {id}" : "检索 id 为 {id} 的评论出错",
- "Error occurred while updating comment with id {id}" : "更新 id 为 {id} 的评论出错",
- "Error occurred while posting comment" : "发布评论出错",
- "_%n unread comment_::_%n unread comments_" : ["%n 未读评论"],
- "Comment" : "评论",
- "You commented" : "您的评论",
- "%1$s commented" : "%1$s 已评论",
+ "You commented" : "你的评论",
"{author} commented" : "{author} 评论了",
- "You commented on %1$s" : "您在 %1$s 的评论",
- "You commented on {file}" : "您对 {file} 的评论",
+ "You commented on %1$s" : "你在 %1$s 的评论",
+ "You commented on {file}" : "你对 {file} 的评论",
"%1$s commented on %2$s" : "%1$s 评论了 %2$s",
"{author} commented on {file}" : "{author} 对 {file} 的评论",
"<strong>Comments</strong> for files" : "文件的<strong>评论</strong>",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的评论中提到了您",
- "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的评论中提到了您",
- "Unknown user" : "未知用户",
- "A (now) deleted user mentioned you in a comment on “%s”" : "一个(已)被删除的用户在 “%s” 的评论中提到了您",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "一个(已)被删除的用户在 “{file}” 的评论中提到了您"
+ "Files" : "文件",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "你在文件 “{file}” 内被一个已删除的账号评论提及",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的评论中提到了你",
+ "Files app plugin to add comments to files" : "文件应用插件可向文件添加评论",
+ "Edit comment" : "编辑评论",
+ "Delete comment" : "删除评论",
+ "Cancel edit" : "取消编辑",
+ "New comment" : "新评论",
+ "Write a comment …" : "发表评论 ...",
+ "Post comment" : "发表评论",
+ "@ for mentions, : for emoji, / for smart picker" : "使用“@”提及,“:”输入表情符号,“/”唤起智能选择",
+ "Could not reload comments" : "无法重载评论",
+ "Failed to mark comments as read" : "无法将评论标记为已读",
+ "Unable to load the comments list" : "无法加载评论列表",
+ "No comments yet, start the conversation!" : "还没有评论,开始对话吧!",
+ "No more messages" : "没有更多消息",
+ "Retry" : "重试",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 条新评论"],
+ "Comment" : "评论",
+ "An error occurred while trying to edit the comment" : "编辑评论时出错",
+ "Comment deleted" : "评论已删除",
+ "An error occurred while trying to delete the comment" : "删除评论时出错",
+ "An error occurred while trying to create the comment" : "创建评论时出错"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_HK.js b/apps/comments/l10n/zh_HK.js
index 65cddd342ca..ed0661f0655 100644
--- a/apps/comments/l10n/zh_HK.js
+++ b/apps/comments/l10n/zh_HK.js
@@ -1,7 +1,36 @@
OC.L10N.register(
"comments",
{
- "Cancel" : "取消",
- "Save" : "儲存"
+ "Comments" : "留言",
+ "You commented" : "您已留言",
+ "{author} commented" : "{author} 已留言",
+ "You commented on %1$s" : "你對 %1$s 留了言",
+ "You commented on {file}" : "你對 {file} 留了言",
+ "%1$s commented on %2$s" : "%1$s 對 %2$s 留了言",
+ "{author} commented on {file}" : "{author} 對 {file} 留了言",
+ "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
+ "Files" : "檔案",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已被刪除的帳戶在 “{file}” 的留言中提到你",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的留言中提到你",
+ "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋",
+ "Edit comment" : "編輯留言",
+ "Delete comment" : "刪除留言",
+ "Cancel edit" : "取消編輯",
+ "New comment" : "新評論",
+ "Write a comment …" : "發表評論 ...",
+ "Post comment" : "張貼留言",
+ "@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
+ "Could not reload comments" : "無法重新加載評論",
+ "Failed to mark comments as read" : "無法將評論標記為已讀",
+ "Unable to load the comments list" : "無法載入留言清單",
+ "No comments yet, start the conversation!" : "尚無留言,開始討論吧!",
+ "No more messages" : "沒有更多訊息",
+ "Retry" : "重試",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 個新留言"],
+ "Comment" : "留言",
+ "An error occurred while trying to edit the comment" : "嘗試編輯此留言時錯誤",
+ "Comment deleted" : "意見刪除",
+ "An error occurred while trying to delete the comment" : "嘗試刪除此留言時錯誤",
+ "An error occurred while trying to create the comment" : "嘗試建立此留言時錯誤"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/zh_HK.json b/apps/comments/l10n/zh_HK.json
index 4da0032a014..ea90a3983ea 100644
--- a/apps/comments/l10n/zh_HK.json
+++ b/apps/comments/l10n/zh_HK.json
@@ -1,5 +1,34 @@
{ "translations": {
- "Cancel" : "取消",
- "Save" : "儲存"
+ "Comments" : "留言",
+ "You commented" : "您已留言",
+ "{author} commented" : "{author} 已留言",
+ "You commented on %1$s" : "你對 %1$s 留了言",
+ "You commented on {file}" : "你對 {file} 留了言",
+ "%1$s commented on %2$s" : "%1$s 對 %2$s 留了言",
+ "{author} commented on {file}" : "{author} 對 {file} 留了言",
+ "<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
+ "Files" : "檔案",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已被刪除的帳戶在 “{file}” 的留言中提到你",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在 “{file}” 的留言中提到你",
+ "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋",
+ "Edit comment" : "編輯留言",
+ "Delete comment" : "刪除留言",
+ "Cancel edit" : "取消編輯",
+ "New comment" : "新評論",
+ "Write a comment …" : "發表評論 ...",
+ "Post comment" : "張貼留言",
+ "@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
+ "Could not reload comments" : "無法重新加載評論",
+ "Failed to mark comments as read" : "無法將評論標記為已讀",
+ "Unable to load the comments list" : "無法載入留言清單",
+ "No comments yet, start the conversation!" : "尚無留言,開始討論吧!",
+ "No more messages" : "沒有更多訊息",
+ "Retry" : "重試",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 個新留言"],
+ "Comment" : "留言",
+ "An error occurred while trying to edit the comment" : "嘗試編輯此留言時錯誤",
+ "Comment deleted" : "意見刪除",
+ "An error occurred while trying to delete the comment" : "嘗試刪除此留言時錯誤",
+ "An error occurred while trying to create the comment" : "嘗試建立此留言時錯誤"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js
index e02feadc08c..42e06d4e4dd 100644
--- a/apps/comments/l10n/zh_TW.js
+++ b/apps/comments/l10n/zh_TW.js
@@ -2,35 +2,35 @@ OC.L10N.register(
"comments",
{
"Comments" : "留言",
- "New comment …" : "新留言…",
- "Delete comment" : "刪除留言",
- "Post" : "送出",
- "Cancel" : "取消",
- "Edit comment" : "編輯留言",
- "[Deleted user]" : "[已刪除的使用者]",
- "No comments yet, start the conversation!" : "尚無留言,開始討論 !",
- "More comments …" : "其他留言…",
- "Save" : "儲存",
- "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}",
- "Error occurred while retrieving comment with id {id}" : "取得留言 {id} 發生錯誤",
- "Error occurred while updating comment with id {id}" : "編輯留言 {id} 發生錯誤",
- "Error occurred while posting comment" : "張貼留言出錯",
- "_%n unread comment_::_%n unread comments_" : ["%n 未讀留言"],
- "Comment" : "留言",
- "You commented" : "你已留言",
- "%1$s commented" : "%1$s 留言",
+ "You commented" : "您已留言",
"{author} commented" : "{author} 已留言",
- "You commented on %1$s" : "你對 %1$s 留言",
- "You commented on {file}" : "你對 {file} 留言",
- "%1$s commented on %2$s" : "%1$s 在 %2$s 留言",
- "{author} commented on {file}" : "{author} 對 {file} 留言",
+ "You commented on %1$s" : "您已對 %1$s 留言",
+ "You commented on {file}" : "您已對 {file} 留言",
+ "%1$s commented on %2$s" : "%1$s 已對 %2$s 留言",
+ "{author} commented on {file}" : "{author} 已對 {file} 留言",
"<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “%s” 的留言中提到你",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你",
- "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你",
- "Unknown user" : "未知的使用者",
- "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你"
+ "Files" : "檔案",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您",
+ "Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件",
+ "Edit comment" : "編輯留言",
+ "Delete comment" : "刪除留言",
+ "Cancel edit" : "取消編輯",
+ "New comment" : "新留言",
+ "Write a comment …" : "編寫留言……",
+ "Post comment" : "張貼留言",
+ "@ for mentions, : for emoji, / for smart picker" : "@ 表示提及,: 表示表情符號,/ 表示智慧型選取",
+ "Could not reload comments" : "無法重新載入留言",
+ "Failed to mark comments as read" : "無法將留言標記為已讀",
+ "Unable to load the comments list" : "無法載入留言列表",
+ "No comments yet, start the conversation!" : "尚無留言,開始討論!",
+ "No more messages" : "沒有其他訊息",
+ "Retry" : "重試",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"],
+ "Comment" : "留言",
+ "An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤",
+ "Comment deleted" : "留言已刪除",
+ "An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤",
+ "An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤"
},
"nplurals=1; plural=0;");
diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json
index f076b52d491..309eaba81b0 100644
--- a/apps/comments/l10n/zh_TW.json
+++ b/apps/comments/l10n/zh_TW.json
@@ -1,34 +1,34 @@
{ "translations": {
"Comments" : "留言",
- "New comment …" : "新留言…",
- "Delete comment" : "刪除留言",
- "Post" : "送出",
- "Cancel" : "取消",
- "Edit comment" : "編輯留言",
- "[Deleted user]" : "[已刪除的使用者]",
- "No comments yet, start the conversation!" : "尚無留言,開始討論 !",
- "More comments …" : "其他留言…",
- "Save" : "儲存",
- "Allowed characters {count} of {max}" : "已輸入 {count} / 長度限制 {max}",
- "Error occurred while retrieving comment with id {id}" : "取得留言 {id} 發生錯誤",
- "Error occurred while updating comment with id {id}" : "編輯留言 {id} 發生錯誤",
- "Error occurred while posting comment" : "張貼留言出錯",
- "_%n unread comment_::_%n unread comments_" : ["%n 未讀留言"],
- "Comment" : "留言",
- "You commented" : "你已留言",
- "%1$s commented" : "%1$s 留言",
+ "You commented" : "您已留言",
"{author} commented" : "{author} 已留言",
- "You commented on %1$s" : "你對 %1$s 留言",
- "You commented on {file}" : "你對 {file} 留言",
- "%1$s commented on %2$s" : "%1$s 在 %2$s 留言",
- "{author} commented on {file}" : "{author} 對 {file} 留言",
+ "You commented on %1$s" : "您已對 %1$s 留言",
+ "You commented on {file}" : "您已對 {file} 留言",
+ "%1$s commented on %2$s" : "%1$s 已對 %2$s 留言",
+ "{author} commented on {file}" : "{author} 已對 {file} 留言",
"<strong>Comments</strong> for files" : "檔案的<strong>留言</strong>",
- "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “%s” 的留言中提到你",
- "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你",
- "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你",
- "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你",
- "Unknown user" : "未知的使用者",
- "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你",
- "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你"
+ "Files" : "檔案",
+ "You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。",
+ "{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您",
+ "Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件",
+ "Edit comment" : "編輯留言",
+ "Delete comment" : "刪除留言",
+ "Cancel edit" : "取消編輯",
+ "New comment" : "新留言",
+ "Write a comment …" : "編寫留言……",
+ "Post comment" : "張貼留言",
+ "@ for mentions, : for emoji, / for smart picker" : "@ 表示提及,: 表示表情符號,/ 表示智慧型選取",
+ "Could not reload comments" : "無法重新載入留言",
+ "Failed to mark comments as read" : "無法將留言標記為已讀",
+ "Unable to load the comments list" : "無法載入留言列表",
+ "No comments yet, start the conversation!" : "尚無留言,開始討論!",
+ "No more messages" : "沒有其他訊息",
+ "Retry" : "重試",
+ "_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"],
+ "Comment" : "留言",
+ "An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤",
+ "Comment deleted" : "留言已刪除",
+ "An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤",
+ "An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/comments/lib/Activity/Filter.php b/apps/comments/lib/Activity/Filter.php
index 606d4652154..8dcafd872d7 100644
--- a/apps/comments/lib/Activity/Filter.php
+++ b/apps/comments/lib/Activity/Filter.php
@@ -1,92 +1,50 @@
<?php
+
/**
- * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
- *
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Activity;
-
use OCP\Activity\IFilter;
use OCP\IL10N;
use OCP\IURLGenerator;
class Filter implements IFilter {
-
- /** @var IL10N */
- protected $l;
-
- /** @var IURLGenerator */
- protected $url;
-
- public function __construct(IL10N $l, IURLGenerator $url) {
- $this->l = $l;
- $this->url = $url;
+ public function __construct(
+ protected IL10N $l,
+ protected IURLGenerator $url,
+ ) {
}
- /**
- * @return string Lowercase a-z only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
+ public function getIdentifier(): string {
return 'comments';
}
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
+ public function getName(): string {
return $this->l->t('Comments');
}
- /**
- * @return int
- * @since 11.0.0
- */
- public function getPriority() {
+ public function getPriority(): int {
return 40;
}
- /**
- * @return string Full URL to an icon, empty string when none is given
- * @since 11.0.0
- */
- public function getIcon() {
+ public function getIcon(): string {
return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg'));
}
/**
* @param string[] $types
* @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
*/
- public function filterTypes(array $types) {
+ public function filterTypes(array $types): array {
return $types;
}
/**
* @return string[] An array of allowed apps from which activities should be displayed
- * @since 11.0.0
*/
- public function allowedApps() {
+ public function allowedApps(): array {
return ['comments'];
}
}
diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php
index 76af565cf15..45064f4a6be 100644
--- a/apps/comments/lib/Activity/Listener.php
+++ b/apps/comments/lib/Activity/Listener.php
@@ -1,26 +1,10 @@
<?php
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Activity;
use OCP\Activity\IManager;
@@ -31,54 +15,23 @@ use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IUser;
use OCP\IUserSession;
-use OCP\Share;
use OCP\Share\IShareHelper;
class Listener {
- /** @var IManager */
- protected $activityManager;
- /** @var IUserSession */
- protected $session;
- /** @var \OCP\App\IAppManager */
- protected $appManager;
- /** @var \OCP\Files\Config\IMountProviderCollection */
- protected $mountCollection;
- /** @var \OCP\Files\IRootFolder */
- protected $rootFolder;
- /** @var IShareHelper */
- protected $shareHelper;
-
- /**
- * Listener constructor.
- *
- * @param IManager $activityManager
- * @param IUserSession $session
- * @param IAppManager $appManager
- * @param IMountProviderCollection $mountCollection
- * @param IRootFolder $rootFolder
- * @param IShareHelper $shareHelper
- */
- public function __construct(IManager $activityManager,
- IUserSession $session,
- IAppManager $appManager,
- IMountProviderCollection $mountCollection,
- IRootFolder $rootFolder,
- IShareHelper $shareHelper) {
- $this->activityManager = $activityManager;
- $this->session = $session;
- $this->appManager = $appManager;
- $this->mountCollection = $mountCollection;
- $this->rootFolder = $rootFolder;
- $this->shareHelper = $shareHelper;
+ public function __construct(
+ protected IManager $activityManager,
+ protected IUserSession $session,
+ protected IAppManager $appManager,
+ protected IMountProviderCollection $mountCollection,
+ protected IRootFolder $rootFolder,
+ protected IShareHelper $shareHelper,
+ ) {
}
- /**
- * @param CommentsEvent $event
- */
- public function commentEvent(CommentsEvent $event) {
+ public function commentEvent(CommentsEvent $event): void {
if ($event->getComment()->getObjectType() !== 'files'
- || !in_array($event->getEvent(), [CommentsEvent::EVENT_ADD])
- || !$this->appManager->isInstalled('activity')) {
+ || $event->getEvent() !== CommentsEvent::EVENT_ADD
+ || !$this->appManager->isEnabledForAnyone('activity')) {
// Comment not for file, not adding a comment or no activity-app enabled (save the energy)
return;
}
@@ -99,7 +52,7 @@ class Listener {
/** @var Node $node */
$node = array_shift($nodes);
$al = $this->shareHelper->getPathsForAccessList($node);
- $users = array_merge($users, $al['users']);
+ $users += $al['users'];
}
}
@@ -114,17 +67,19 @@ class Listener {
$activity->setApp('comments')
->setType('comments')
->setAuthor($actor)
- ->setObject($event->getComment()->getObjectType(), (int) $event->getComment()->getObjectId())
+ ->setObject($event->getComment()->getObjectType(), (int)$event->getComment()->getObjectId())
->setMessage('add_comment_message', [
'commentId' => $event->getComment()->getId(),
]);
foreach ($users as $user => $path) {
- $activity->setAffectedUser($user);
+ // numerical user ids end up as integers from array keys, but string
+ // is required
+ $activity->setAffectedUser((string)$user);
$activity->setSubject('add_comment_subject', [
'actor' => $actor,
- 'fileId' => (int) $event->getComment()->getObjectId(),
+ 'fileId' => (int)$event->getComment()->getObjectId(),
'filePath' => trim($path, '/'),
]);
$this->activityManager->publish($activity);
diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php
index c21b7a9c4fd..ee53357efdb 100644
--- a/apps/comments/lib/Activity/Provider.php
+++ b/apps/comments/lib/Activity/Provider.php
@@ -1,28 +1,12 @@
<?php
+
/**
- * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
- *
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Activity;
+use OCP\Activity\Exceptions\UnknownActivityException;
use OCP\Activity\IEvent;
use OCP\Activity\IManager;
use OCP\Activity\IProvider;
@@ -30,46 +14,19 @@ use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
use OCP\IL10N;
use OCP\IURLGenerator;
-use OCP\IUser;
use OCP\IUserManager;
use OCP\L10N\IFactory;
class Provider implements IProvider {
-
- /** @var IFactory */
- protected $languageFactory;
-
- /** @var IL10N */
- protected $l;
-
- /** @var IURLGenerator */
- protected $url;
-
- /** @var ICommentsManager */
- protected $commentsManager;
-
- /** @var IUserManager */
- protected $userManager;
-
- /** @var IManager */
- protected $activityManager;
-
- /** @var string[] */
- protected $displayNames = [];
-
- /**
- * @param IFactory $languageFactory
- * @param IURLGenerator $url
- * @param ICommentsManager $commentsManager
- * @param IUserManager $userManager
- * @param IManager $activityManager
- */
- public function __construct(IFactory $languageFactory, IURLGenerator $url, ICommentsManager $commentsManager, IUserManager $userManager, IManager $activityManager) {
- $this->languageFactory = $languageFactory;
- $this->url = $url;
- $this->commentsManager = $commentsManager;
- $this->userManager = $userManager;
- $this->activityManager = $activityManager;
+ protected ?IL10N $l = null;
+
+ public function __construct(
+ protected IFactory $languageFactory,
+ protected IURLGenerator $url,
+ protected ICommentsManager $commentsManager,
+ protected IUserManager $userManager,
+ protected IManager $activityManager,
+ ) {
}
/**
@@ -77,12 +34,12 @@ class Provider implements IProvider {
* @param IEvent $event
* @param IEvent|null $previousEvent
* @return IEvent
- * @throws \InvalidArgumentException
+ * @throws UnknownActivityException
* @since 11.0.0
*/
- public function parse($language, IEvent $event, IEvent $previousEvent = null) {
+ public function parse($language, IEvent $event, ?IEvent $previousEvent = null): IEvent {
if ($event->getApp() !== 'comments') {
- throw new \InvalidArgumentException();
+ throw new UnknownActivityException();
}
$this->l = $this->languageFactory->get('comments', $language);
@@ -98,78 +55,72 @@ class Provider implements IProvider {
if ($this->activityManager->isFormattingFilteredObject()) {
try {
return $this->parseShortVersion($event);
- } catch (\InvalidArgumentException $e) {
+ } catch (UnknownActivityException) {
// Ignore and simply use the long version...
}
}
return $this->parseLongVersion($event);
- } else {
- throw new \InvalidArgumentException();
}
+ throw new UnknownActivityException();
+
}
/**
- * @param IEvent $event
- * @return IEvent
- * @throws \InvalidArgumentException
+ * @throws UnknownActivityException
*/
- protected function parseShortVersion(IEvent $event) {
+ protected function parseShortVersion(IEvent $event): IEvent {
$subjectParameters = $this->getSubjectParameters($event);
if ($event->getSubject() === 'add_comment_subject') {
if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) {
- $event->setParsedSubject($this->l->t('You commented'))
- ->setRichSubject($this->l->t('You commented'), []);
+ $event->setRichSubject($this->l->t('You commented'), []);
} else {
$author = $this->generateUserParameter($subjectParameters['actor']);
- $event->setParsedSubject($this->l->t('%1$s commented', [$author['name']]))
- ->setRichSubject($this->l->t('{author} commented'), [
- 'author' => $author,
- ]);
+ $event->setRichSubject($this->l->t('{author} commented'), [
+ 'author' => $author,
+ ]);
}
} else {
- throw new \InvalidArgumentException();
+ throw new UnknownActivityException();
}
return $event;
}
/**
- * @param IEvent $event
- * @return IEvent
- * @throws \InvalidArgumentException
+ * @throws UnknownActivityException
*/
- protected function parseLongVersion(IEvent $event) {
+ protected function parseLongVersion(IEvent $event): IEvent {
$subjectParameters = $this->getSubjectParameters($event);
if ($event->getSubject() === 'add_comment_subject') {
if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) {
$event->setParsedSubject($this->l->t('You commented on %1$s', [
- $subjectParameters['filePath'],
- ]))
+ $subjectParameters['filePath'],
+ ]))
->setRichSubject($this->l->t('You commented on {file}'), [
'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']),
]);
} else {
$author = $this->generateUserParameter($subjectParameters['actor']);
$event->setParsedSubject($this->l->t('%1$s commented on %2$s', [
- $author['name'],
- $subjectParameters['filePath'],
- ]))
+ $author['name'],
+ $subjectParameters['filePath'],
+ ]))
->setRichSubject($this->l->t('{author} commented on {file}'), [
'author' => $author,
'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']),
]);
}
} else {
- throw new \InvalidArgumentException();
+ throw new UnknownActivityException();
}
return $event;
}
- protected function getSubjectParameters(IEvent $event) {
+ protected function getSubjectParameters(IEvent $event): array {
$subjectParameters = $event->getSubjectParameters();
if (isset($subjectParameters['fileId'])) {
return $subjectParameters;
@@ -184,27 +135,23 @@ class Provider implements IProvider {
// they will get the dead entries in their stream.
return [
'actor' => $subjectParameters[0],
- 'fileId' => (int) $event->getObjectId(),
+ 'fileId' => $event->getObjectId(),
'filePath' => trim($subjectParameters[1], '/'),
];
}
- /**
- * @param IEvent $event
- */
- protected function parseMessage(IEvent $event) {
+ protected function parseMessage(IEvent $event): void {
$messageParameters = $event->getMessageParameters();
if (empty($messageParameters)) {
// Email
return;
}
- $commentId = isset($messageParameters['commentId']) ? $messageParameters['commentId'] : $messageParameters[0];
+ $commentId = $messageParameters['commentId'] ?? $messageParameters[0];
try {
- $comment = $this->commentsManager->get((string) $commentId);
+ $comment = $this->commentsManager->get((string)$commentId);
$message = $comment->getMessage();
- $message = str_replace("\n", '<br />', str_replace(['<', '>'], ['&lt;', '&gt;'], $message));
$mentionCount = 1;
$mentions = [];
@@ -213,12 +160,11 @@ class Provider implements IProvider {
continue;
}
- $message = preg_replace(
- '/(^|\s)(' . '@' . $mention['id'] . ')(\b)/',
- //'${1}' . $this->regexSafeUser($mention['id'], $displayName) . '${3}',
- '${1}' . '{mention' . $mentionCount . '}' . '${3}',
- $message
- );
+ $message = str_replace('@"' . $mention['id'] . '"', '{mention' . $mentionCount . '}', $message);
+ if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) {
+ $message = str_replace('@' . $mention['id'], '{mention' . $mentionCount . '}', $message);
+ }
+
$mentions['mention' . $mentionCount] = $this->generateUserParameter($mention['id']);
$mentionCount++;
}
@@ -230,46 +176,23 @@ class Provider implements IProvider {
}
/**
- * @param int $id
- * @param string $path
- * @return array
+ * @return array<string, string>
*/
- protected function generateFileParameter($id, $path) {
+ protected function generateFileParameter(int $id, string $path): array {
return [
'type' => 'file',
- 'id' => $id,
+ 'id' => (string)$id,
'name' => basename($path),
'path' => $path,
'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]),
];
}
- /**
- * @param string $uid
- * @return array
- */
- protected function generateUserParameter($uid) {
- if (!isset($this->displayNames[$uid])) {
- $this->displayNames[$uid] = $this->getDisplayName($uid);
- }
-
+ protected function generateUserParameter(string $uid): array {
return [
'type' => 'user',
'id' => $uid,
- 'name' => $this->displayNames[$uid],
+ 'name' => $this->userManager->getDisplayName($uid) ?? $uid,
];
}
-
- /**
- * @param string $uid
- * @return string
- */
- protected function getDisplayName($uid) {
- $user = $this->userManager->get($uid);
- if ($user instanceof IUser) {
- return $user->getDisplayName();
- } else {
- return $uid;
- }
- }
}
diff --git a/apps/comments/lib/Activity/Setting.php b/apps/comments/lib/Activity/Setting.php
index 8a6bd982173..7fbf4001b20 100644
--- a/apps/comments/lib/Activity/Setting.php
+++ b/apps/comments/lib/Activity/Setting.php
@@ -1,100 +1,53 @@
<?php
+
/**
- * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>
- *
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Activity;
-
-use OCP\Activity\ISetting;
+use OCP\Activity\ActivitySettings;
use OCP\IL10N;
-class Setting implements ISetting {
-
- /** @var IL10N */
- protected $l;
-
- /**
- * @param IL10N $l
- */
- public function __construct(IL10N $l) {
- $this->l = $l;
+class Setting extends ActivitySettings {
+ public function __construct(
+ protected IL10N $l,
+ ) {
}
- /**
- * @return string Lowercase a-z and underscore only identifier
- * @since 11.0.0
- */
- public function getIdentifier() {
+ public function getIdentifier(): string {
return 'comments';
}
- /**
- * @return string A translated string
- * @since 11.0.0
- */
- public function getName() {
+ public function getName(): string {
return $this->l->t('<strong>Comments</strong> for files');
}
- /**
- * @return int whether the filter should be rather on the top or bottom of
- * the admin section. The filters are arranged in ascending order of the
- * priority values. It is required to return a value between 0 and 100.
- * @since 11.0.0
- */
- public function getPriority() {
+ public function getGroupIdentifier() {
+ return 'files';
+ }
+
+ public function getGroupName() {
+ return $this->l->t('Files');
+ }
+
+ public function getPriority(): int {
return 50;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function canChangeStream() {
+ public function canChangeStream(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledStream() {
+ public function isDefaultEnabledStream(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the mail
- * @since 11.0.0
- */
- public function canChangeMail() {
+ public function canChangeMail(): bool {
return true;
}
- /**
- * @return bool True when the option can be changed for the stream
- * @since 11.0.0
- */
- public function isDefaultEnabledMail() {
+ public function isDefaultEnabledMail(): bool {
return false;
}
}
-
diff --git a/apps/comments/lib/AppInfo/Application.php b/apps/comments/lib/AppInfo/Application.php
index e60f0cbf36b..db4a2ce614c 100644
--- a/apps/comments/lib/AppInfo/Application.php
+++ b/apps/comments/lib/AppInfo/Application.php
@@ -1,42 +1,62 @@
<?php
+
/**
- *
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\AppInfo;
-use OCA\Comments\Controller\Notifications;
-use OCA\Comments\JSSettingsHelper;
+use OCA\Comments\Capabilities;
+use OCA\Comments\Listener\CommentsEntityEventListener;
+use OCA\Comments\Listener\CommentsEventListener;
+use OCA\Comments\Listener\LoadAdditionalScripts;
+use OCA\Comments\Listener\LoadSidebarScripts;
+use OCA\Comments\MaxAutoCompleteResultsInitialState;
+use OCA\Comments\Notification\Notifier;
+use OCA\Comments\Search\CommentsSearchProvider;
+use OCA\Files\Event\LoadAdditionalScriptsEvent;
+use OCA\Files\Event\LoadSidebar;
use OCP\AppFramework\App;
-use OCP\Util;
+use OCP\AppFramework\Bootstrap\IBootContext;
+use OCP\AppFramework\Bootstrap\IBootstrap;
+use OCP\AppFramework\Bootstrap\IRegistrationContext;
+use OCP\Comments\CommentsEntityEvent;
+use OCP\Comments\CommentsEvent;
+
+class Application extends App implements IBootstrap {
+ public const APP_ID = 'comments';
+
+ public function __construct(array $urlParams = []) {
+ parent::__construct(self::APP_ID, $urlParams);
+ }
+
+ public function register(IRegistrationContext $context): void {
+ $context->registerCapability(Capabilities::class);
-class Application extends App {
+ $context->registerEventListener(
+ LoadAdditionalScriptsEvent::class,
+ LoadAdditionalScripts::class
+ );
+ $context->registerEventListener(
+ LoadSidebar::class,
+ LoadSidebarScripts::class
+ );
+ $context->registerEventListener(
+ CommentsEntityEvent::class,
+ CommentsEntityEventListener::class
+ );
+ $context->registerEventListener(
+ CommentsEvent::class,
+ CommentsEventListener::class,
+ );
- public function __construct (array $urlParams = array()) {
- parent::__construct('comments', $urlParams);
- $container = $this->getContainer();
+ $context->registerSearchProvider(CommentsSearchProvider::class);
- $container->registerAlias('NotificationsController', Notifications::class);
+ $context->registerInitialStateProvider(MaxAutoCompleteResultsInitialState::class);
+
+ $context->registerNotifierService(Notifier::class);
+ }
- $jsSettingsHelper = new JSSettingsHelper($container->getServer());
- Util::connectHook('\OCP\Config', 'js', $jsSettingsHelper, 'extend');
+ public function boot(IBootContext $context): void {
}
}
diff --git a/apps/comments/lib/Capabilities.php b/apps/comments/lib/Capabilities.php
new file mode 100644
index 00000000000..2057803d867
--- /dev/null
+++ b/apps/comments/lib/Capabilities.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments;
+
+use OCP\Capabilities\ICapability;
+
+class Capabilities implements ICapability {
+ /**
+ * @return array{files: array{comments: bool}}
+ */
+ public function getCapabilities(): array {
+ return [
+ 'files' => [
+ 'comments' => true,
+ ]
+ ];
+ }
+}
diff --git a/apps/comments/lib/Collaboration/CommentersSorter.php b/apps/comments/lib/Collaboration/CommentersSorter.php
index b8bb745b3b8..baa27155573 100644
--- a/apps/comments/lib/Collaboration/CommentersSorter.php
+++ b/apps/comments/lib/Collaboration/CommentersSorter.php
@@ -1,42 +1,21 @@
<?php
+
/**
- * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Collaboration;
-
use OCP\Collaboration\AutoComplete\ISorter;
use OCP\Comments\ICommentsManager;
class CommentersSorter implements ISorter {
-
- /** @var ICommentsManager */
- private $commentsManager;
-
- public function __construct(ICommentsManager $commentsManager) {
- $this->commentsManager = $commentsManager;
+ public function __construct(
+ private ICommentsManager $commentsManager,
+ ) {
}
- public function getId() {
+ public function getId(): string {
return 'commenters';
}
@@ -44,30 +23,30 @@ class CommentersSorter implements ISorter {
* Sorts people who commented on the given item atop (descelating) of the
* others
*
- * @param array $sortArray
+ * @param array &$sortArray
* @param array $context
*/
- public function sort(array &$sortArray, array $context) {
+ public function sort(array &$sortArray, array $context): void {
$commenters = $this->retrieveCommentsInformation($context['itemType'], $context['itemId']);
- if(count($commenters) === 0) {
+ if (count($commenters) === 0) {
return;
}
foreach ($sortArray as $type => &$byType) {
- if(!isset($commenters[$type])) {
+ if (!isset($commenters[$type])) {
continue;
}
// at least on PHP 5.6 usort turned out to be not stable. So we add
// the current index to the value and compare it on a draw
$i = 0;
- $workArray = array_map(function($element) use (&$i) {
+ $workArray = array_map(function ($element) use (&$i) {
return [$i++, $element];
}, $byType);
usort($workArray, function ($a, $b) use ($commenters, $type) {
$r = $this->compare($a[1], $b[1], $commenters[$type]);
- if($r === 0) {
+ if ($r === 0) {
$r = $a[0] - $b[0];
}
return $r;
@@ -79,22 +58,20 @@ class CommentersSorter implements ISorter {
}
/**
- * @param $type
- * @param $id
- * @return array
+ * @return array<string, array<string, int>>
*/
- protected function retrieveCommentsInformation($type, $id) {
+ protected function retrieveCommentsInformation(string $type, string $id): array {
$comments = $this->commentsManager->getForObject($type, $id);
- if(count($comments) === 0) {
+ if (count($comments) === 0) {
return [];
}
$actors = [];
foreach ($comments as $comment) {
- if(!isset($actors[$comment->getActorType()])) {
+ if (!isset($actors[$comment->getActorType()])) {
$actors[$comment->getActorType()] = [];
}
- if(!isset($actors[$comment->getActorType()][$comment->getActorId()])) {
+ if (!isset($actors[$comment->getActorType()][$comment->getActorId()])) {
$actors[$comment->getActorType()][$comment->getActorId()] = 1;
} else {
$actors[$comment->getActorType()][$comment->getActorId()]++;
@@ -103,12 +80,12 @@ class CommentersSorter implements ISorter {
return $actors;
}
- protected function compare(array $a, array $b, array $commenters) {
+ protected function compare(array $a, array $b, array $commenters): int {
$a = $a['value']['shareWith'];
$b = $b['value']['shareWith'];
- $valueA = isset($commenters[$a]) ? $commenters[$a] : 0;
- $valueB = isset($commenters[$b]) ? $commenters[$b] : 0;
+ $valueA = $commenters[$a] ?? 0;
+ $valueB = $commenters[$b] ?? 0;
return $valueB - $valueA;
}
diff --git a/apps/comments/lib/Controller/Notifications.php b/apps/comments/lib/Controller/Notifications.php
deleted file mode 100644
index 911f19d46e1..00000000000
--- a/apps/comments/lib/Controller/Notifications.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/**
- *
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OCA\Comments\Controller;
-
-use OCP\AppFramework\Controller;
-use OCP\AppFramework\Http\NotFoundResponse;
-use OCP\AppFramework\Http\RedirectResponse;
-use OCP\AppFramework\Http\Response;
-use OCP\Comments\IComment;
-use OCP\Comments\ICommentsManager;
-use OCP\Files\Folder;
-use OCP\IRequest;
-use OCP\IURLGenerator;
-use OCP\IUserSession;
-use OCP\Notification\IManager;
-
-/**
- * Class Notifications
- *
- * @package OCA\Comments\Controller
- */
-class Notifications extends Controller {
- /** @var Folder */
- protected $folder;
-
- /** @var ICommentsManager */
- protected $commentsManager;
-
- /** @var IURLGenerator */
- protected $urlGenerator;
-
- /** @var IManager */
- protected $notificationManager;
-
- /** @var IUserSession */
- protected $userSession;
-
- /**
- * Notifications constructor.
- *
- * @param string $appName
- * @param IRequest $request
- * @param ICommentsManager $commentsManager
- * @param Folder $folder
- * @param IURLGenerator $urlGenerator
- * @param IManager $notificationManager
- * @param IUserSession $userSession
- */
- public function __construct(
- $appName,
- IRequest $request,
- ICommentsManager $commentsManager,
- Folder $folder,
- IURLGenerator $urlGenerator,
- IManager $notificationManager,
- IUserSession $userSession
- ) {
- parent::__construct($appName, $request);
- $this->commentsManager = $commentsManager;
- $this->folder = $folder;
- $this->urlGenerator = $urlGenerator;
- $this->notificationManager = $notificationManager;
- $this->userSession = $userSession;
- }
-
- /**
- * @NoAdminRequired
- * @NoCSRFRequired
- *
- * @param string $id the comment ID
- * @return Response
- */
- public function view($id) {
- try {
- $comment = $this->commentsManager->get($id);
- if($comment->getObjectType() !== 'files') {
- return new NotFoundResponse();
- }
- $files = $this->folder->getById((int)$comment->getObjectId());
- if(count($files) === 0) {
- $this->markProcessed($comment);
- return new NotFoundResponse();
- }
-
- $url = $this->urlGenerator->linkToRouteAbsolute(
- 'files.viewcontroller.showFile',
- [ 'fileid' => $comment->getObjectId() ]
- );
-
- $this->markProcessed($comment);
-
- return new RedirectResponse($url);
- } catch (\Exception $e) {
- return new NotFoundResponse();
- }
- }
-
- /**
- * Marks the notification about a comment as processed
- * @param IComment $comment
- */
- protected function markProcessed(IComment $comment) {
- $user = $this->userSession->getUser();
- if(is_null($user)) {
- return;
- }
- $notification = $this->notificationManager->createNotification();
- $notification->setApp('comments')
- ->setObject('comment', $comment->getId())
- ->setSubject('mention')
- ->setUser($user->getUID());
- $this->notificationManager->markProcessed($notification);
- }
-}
diff --git a/apps/comments/lib/Controller/NotificationsController.php b/apps/comments/lib/Controller/NotificationsController.php
new file mode 100644
index 00000000000..0937b6929b8
--- /dev/null
+++ b/apps/comments/lib/Controller/NotificationsController.php
@@ -0,0 +1,103 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Controller;
+
+use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
+use OCP\AppFramework\Http\Attribute\OpenAPI;
+use OCP\AppFramework\Http\Attribute\PublicPage;
+use OCP\AppFramework\Http\NotFoundResponse;
+use OCP\AppFramework\Http\RedirectResponse;
+use OCP\Comments\IComment;
+use OCP\Comments\ICommentsManager;
+use OCP\Files\IRootFolder;
+use OCP\IRequest;
+use OCP\IURLGenerator;
+use OCP\IUser;
+use OCP\IUserSession;
+use OCP\Notification\IManager;
+
+/**
+ * @package OCA\Comments\Controller
+ */
+#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
+class NotificationsController extends Controller {
+ public function __construct(
+ string $appName,
+ IRequest $request,
+ protected ICommentsManager $commentsManager,
+ protected IRootFolder $rootFolder,
+ protected IURLGenerator $urlGenerator,
+ protected IManager $notificationManager,
+ protected IUserSession $userSession,
+ ) {
+ parent::__construct($appName, $request);
+ }
+
+ /**
+ * View a notification
+ *
+ * @param string $id ID of the notification
+ *
+ * @return RedirectResponse<Http::STATUS_SEE_OTHER, array{}>|NotFoundResponse<Http::STATUS_NOT_FOUND, array{}>
+ *
+ * 303: Redirected to notification
+ * 404: Notification not found
+ */
+ #[PublicPage]
+ #[NoCSRFRequired]
+ public function view(string $id): RedirectResponse|NotFoundResponse {
+ $currentUser = $this->userSession->getUser();
+ if (!$currentUser instanceof IUser) {
+ return new RedirectResponse(
+ $this->urlGenerator->linkToRoute('core.login.showLoginForm', [
+ 'redirect_url' => $this->urlGenerator->linkToRoute(
+ 'comments.Notifications.view',
+ ['id' => $id]
+ ),
+ ])
+ );
+ }
+
+ try {
+ $comment = $this->commentsManager->get($id);
+ if ($comment->getObjectType() !== 'files') {
+ return new NotFoundResponse();
+ }
+ $userFolder = $this->rootFolder->getUserFolder($currentUser->getUID());
+ $files = $userFolder->getById((int)$comment->getObjectId());
+
+ $this->markProcessed($comment, $currentUser);
+
+ if (empty($files)) {
+ return new NotFoundResponse();
+ }
+
+ $url = $this->urlGenerator->linkToRouteAbsolute(
+ 'files.viewcontroller.showFile',
+ [ 'fileid' => $comment->getObjectId() ]
+ );
+
+ return new RedirectResponse($url);
+ } catch (\Exception $e) {
+ return new NotFoundResponse();
+ }
+ }
+
+ /**
+ * Marks the notification about a comment as processed
+ */
+ protected function markProcessed(IComment $comment, IUser $currentUser): void {
+ $notification = $this->notificationManager->createNotification();
+ $notification->setApp('comments')
+ ->setObject('comment', $comment->getId())
+ ->setSubject('mention')
+ ->setUser($currentUser->getUID());
+ $this->notificationManager->markProcessed($notification);
+ }
+}
diff --git a/apps/comments/lib/EventHandler.php b/apps/comments/lib/EventHandler.php
deleted file mode 100644
index 0fc6de7bf49..00000000000
--- a/apps/comments/lib/EventHandler.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OCA\Comments;
-
-use OCA\Comments\Activity\Listener as ActivityListener;
-use OCA\Comments\AppInfo\Application;
-use OCA\Comments\Notification\Listener as NotificationListener;
-use OCP\Comments\CommentsEvent;
-use OCP\Comments\ICommentsEventHandler;
-
-/**
- * Class EventHandler
- *
- * @package OCA\Comments
- */
-class EventHandler implements ICommentsEventHandler {
- /** @var ActivityListener */
- private $activityListener;
-
- /** @var NotificationListener */
- private $notificationListener;
-
- public function __construct(ActivityListener $activityListener, NotificationListener $notificationListener) {
- $this->activityListener = $activityListener;
- $this->notificationListener = $notificationListener;
- }
-
- /**
- * @param CommentsEvent $event
- */
- public function handle(CommentsEvent $event) {
- if($event->getComment()->getObjectType() !== 'files') {
- // this is a 'files'-specific Handler
- return;
- }
-
- $eventType = $event->getEvent();
- if( $eventType === CommentsEvent::EVENT_ADD
- ) {
- $this->notificationHandler($event);
- $this->activityHandler($event);
- return;
- }
-
- $applicableEvents = [
- CommentsEvent::EVENT_PRE_UPDATE,
- CommentsEvent::EVENT_UPDATE,
- CommentsEvent::EVENT_DELETE,
- ];
- if(in_array($eventType, $applicableEvents)) {
- $this->notificationHandler($event);
- return;
- }
- }
-
- /**
- * @param CommentsEvent $event
- */
- private function activityHandler(CommentsEvent $event) {
- $this->activityListener->commentEvent($event);
- }
-
- /**
- * @param CommentsEvent $event
- */
- private function notificationHandler(CommentsEvent $event) {
- $this->notificationListener->evaluate($event);
- }
-}
diff --git a/apps/comments/lib/JSSettingsHelper.php b/apps/comments/lib/JSSettingsHelper.php
deleted file mode 100644
index dab68a48925..00000000000
--- a/apps/comments/lib/JSSettingsHelper.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OCA\Comments;
-
-
-use OCP\IServerContainer;
-
-class JSSettingsHelper {
- /** @var IServerContainer */
- private $c;
-
- public function __construct(IServerContainer $c) {
- $this->c = $c;
- }
-
- public function extend(array $settings) {
- $appConfig = json_decode($settings['array']['oc_appconfig'], true);
-
- $value = (int)$this->c->getConfig()->getAppValue('comments', 'maxAutoCompleteResults', 10);
- $appConfig['comments']['maxAutoCompleteResults'] = $value;
-
- $settings['array']['oc_appconfig'] = json_encode($appConfig);
- }
-}
diff --git a/apps/comments/lib/Listener/CommentsEntityEventListener.php b/apps/comments/lib/Listener/CommentsEntityEventListener.php
new file mode 100644
index 00000000000..5aeeb3c63ea
--- /dev/null
+++ b/apps/comments/lib/Listener/CommentsEntityEventListener.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Listener;
+
+use OCP\Comments\CommentsEntityEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Files\IRootFolder;
+
+/** @template-implements IEventListener<CommentsEntityEvent> */
+class CommentsEntityEventListener implements IEventListener {
+ public function __construct(
+ private IRootFolder $rootFolder,
+ private ?string $userId = null,
+ ) {
+ }
+
+ public function handle(Event $event): void {
+ if (!($event instanceof CommentsEntityEvent)) {
+ // Unrelated
+ return;
+ }
+
+ $event->addEntityCollection('files', function ($name): bool {
+ $nodes = $this->rootFolder->getUserFolder($this->userId)->getById((int)$name);
+ return !empty($nodes);
+ });
+ }
+}
diff --git a/apps/comments/lib/Listener/CommentsEventListener.php b/apps/comments/lib/Listener/CommentsEventListener.php
new file mode 100644
index 00000000000..a1e44995162
--- /dev/null
+++ b/apps/comments/lib/Listener/CommentsEventListener.php
@@ -0,0 +1,63 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+
+namespace OCA\Comments\Listener;
+
+use OCA\Comments\Activity\Listener as ActivityListener;
+use OCA\Comments\Notification\Listener as NotificationListener;
+use OCP\Comments\CommentsEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+
+/** @template-implements IEventListener<CommentsEvent|Event> */
+class CommentsEventListener implements IEventListener {
+ public function __construct(
+ private ActivityListener $activityListener,
+ private NotificationListener $notificationListener,
+ ) {
+ }
+
+ public function handle(Event $event): void {
+ if (!$event instanceof CommentsEvent) {
+ return;
+ }
+
+ if ($event->getComment()->getObjectType() !== 'files') {
+ // this is a 'files'-specific Handler
+ return;
+ }
+
+ $eventType = $event->getEvent();
+ if ($eventType === CommentsEvent::EVENT_ADD
+ ) {
+ $this->notificationHandler($event);
+ $this->activityHandler($event);
+ return;
+ }
+
+ $applicableEvents = [
+ CommentsEvent::EVENT_PRE_UPDATE,
+ CommentsEvent::EVENT_UPDATE,
+ CommentsEvent::EVENT_DELETE,
+ ];
+ if (in_array($eventType, $applicableEvents)) {
+ $this->notificationHandler($event);
+ return;
+ }
+ }
+
+ private function activityHandler(CommentsEvent $event): void {
+ $this->activityListener->commentEvent($event);
+ }
+
+ private function notificationHandler(CommentsEvent $event): void {
+ $this->notificationListener->evaluate($event);
+ }
+}
diff --git a/apps/comments/lib/Listener/LoadAdditionalScripts.php b/apps/comments/lib/Listener/LoadAdditionalScripts.php
new file mode 100644
index 00000000000..81e1bfe5310
--- /dev/null
+++ b/apps/comments/lib/Listener/LoadAdditionalScripts.php
@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Listener;
+
+use OCA\Comments\AppInfo\Application;
+use OCA\Files\Event\LoadAdditionalScriptsEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Util;
+
+/** @template-implements IEventListener<LoadAdditionalScriptsEvent> */
+class LoadAdditionalScripts implements IEventListener {
+ public function handle(Event $event): void {
+ if (!($event instanceof LoadAdditionalScriptsEvent)) {
+ return;
+ }
+
+ // Adding init script for file list inline actions
+ Util::addInitScript(Application::APP_ID, 'init');
+ }
+}
diff --git a/apps/comments/lib/Listener/LoadSidebarScripts.php b/apps/comments/lib/Listener/LoadSidebarScripts.php
new file mode 100644
index 00000000000..906fe40fed2
--- /dev/null
+++ b/apps/comments/lib/Listener/LoadSidebarScripts.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Listener;
+
+use OCA\Comments\AppInfo\Application;
+use OCA\Files\Event\LoadSidebar;
+use OCP\App\IAppManager;
+use OCP\AppFramework\Services\IInitialState;
+use OCP\Comments\ICommentsManager;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Util;
+
+/** @template-implements IEventListener<LoadSidebar> */
+class LoadSidebarScripts implements IEventListener {
+ public function __construct(
+ private ICommentsManager $commentsManager,
+ private IInitialState $initialState,
+ private IAppManager $appManager,
+ ) {
+ }
+
+ public function handle(Event $event): void {
+ if (!($event instanceof LoadSidebar)) {
+ return;
+ }
+
+ $this->commentsManager->load();
+
+ $this->initialState->provideInitialState('activityEnabled', $this->appManager->isEnabledForUser('activity'));
+ // Add comments sidebar tab script
+ Util::addScript(Application::APP_ID, 'comments-tab', 'files');
+ }
+}
diff --git a/apps/comments/lib/MaxAutoCompleteResultsInitialState.php b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php
new file mode 100644
index 00000000000..b4c8f8719db
--- /dev/null
+++ b/apps/comments/lib/MaxAutoCompleteResultsInitialState.php
@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments;
+
+use OCP\AppFramework\Services\InitialStateProvider;
+use OCP\IConfig;
+
+class MaxAutoCompleteResultsInitialState extends InitialStateProvider {
+ public function __construct(
+ private IConfig $config,
+ ) {
+ }
+
+ public function getKey(): string {
+ return 'maxAutoCompleteResults';
+ }
+
+ public function getData(): int {
+ return (int)$this->config->getAppValue('comments', 'maxAutoCompleteResults', '10');
+ }
+}
diff --git a/apps/comments/lib/Notification/Listener.php b/apps/comments/lib/Notification/Listener.php
index 896b383f873..43922f85e59 100644
--- a/apps/comments/lib/Notification/Listener.php
+++ b/apps/comments/lib/Notification/Listener.php
@@ -1,71 +1,38 @@
<?php
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Notification;
use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
use OCP\IUserManager;
use OCP\Notification\IManager;
+use OCP\Notification\INotification;
class Listener {
- /** @var IManager */
- protected $notificationManager;
-
- /** @var IUserManager */
- protected $userManager;
-
- /**
- * Listener constructor.
- *
- * @param IManager $notificationManager
- * @param IUserManager $userManager
- */
public function __construct(
- IManager $notificationManager,
- IUserManager $userManager
+ protected IManager $notificationManager,
+ protected IUserManager $userManager,
) {
-
- $this->notificationManager = $notificationManager;
- $this->userManager = $userManager;
}
- /**
- * @param CommentsEvent $event
- */
- public function evaluate(CommentsEvent $event) {
+ public function evaluate(CommentsEvent $event): void {
$comment = $event->getComment();
$mentions = $this->extractMentions($comment->getMentions());
- if(empty($mentions)) {
+ if (empty($mentions)) {
// no one to notify
return;
}
$notification = $this->instantiateNotification($comment);
- foreach($mentions as $uid) {
- if( ($comment->getActorType() === 'users' && $uid === $comment->getActorId())
+ foreach ($mentions as $uid) {
+ if (($comment->getActorType() === 'users' && $uid === $comment->getActorId())
|| !$this->userManager->userExists($uid)
) {
// do not notify unknown users or yourself
@@ -73,9 +40,8 @@ class Listener {
}
$notification->setUser($uid);
- if( $event->getEvent() === CommentsEvent::EVENT_DELETE
- || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE)
- {
+ if ($event->getEvent() === CommentsEvent::EVENT_DELETE
+ || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) {
$this->notificationManager->markProcessed($notification);
} else {
$this->notificationManager->notify($notification);
@@ -84,12 +50,9 @@ class Listener {
}
/**
- * creates a notification instance and fills it with comment data
- *
- * @param IComment $comment
- * @return \OCP\Notification\INotification
+ * Creates a notification instance and fills it with comment data
*/
- public function instantiateNotification(IComment $comment) {
+ public function instantiateNotification(IComment $comment): INotification {
$notification = $this->notificationManager->createNotification();
$notification
->setApp('comments')
@@ -101,18 +64,18 @@ class Listener {
}
/**
- * flattens the mention array returned from comments to a list of user ids.
+ * Flattens the mention array returned from comments to a list of user ids.
*
* @param array $mentions
- * @return string[] containing the mentions, e.g. ['alice', 'bob']
+ * @return list<string> containing the mentions, e.g. ['alice', 'bob']
*/
- public function extractMentions(array $mentions) {
- if(empty($mentions)) {
+ public function extractMentions(array $mentions): array {
+ if (empty($mentions)) {
return [];
}
$uids = [];
- foreach($mentions as $mention) {
- if($mention['type'] === 'user') {
+ foreach ($mentions as $mention) {
+ if ($mention['type'] === 'user') {
$uids[] = $mention['id'];
}
}
diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php
index ead68840a4f..62562bf42aa 100644
--- a/apps/comments/lib/Notification/Notifier.php
+++ b/apps/comments/lib/Notification/Notifier.php
@@ -1,149 +1,125 @@
<?php
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Notification;
+use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
use OCP\Files\IRootFolder;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory;
+use OCP\Notification\AlreadyProcessedException;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
+use OCP\Notification\UnknownNotificationException;
class Notifier implements INotifier {
-
- /** @var IFactory */
- protected $l10nFactory;
-
- /** @var IRootFolder */
- protected $rootFolder;
-
- /** @var ICommentsManager */
- protected $commentsManager;
-
- /** @var IURLGenerator */
- protected $url;
-
- /** @var IUserManager */
- protected $userManager;
-
public function __construct(
- IFactory $l10nFactory,
- IRootFolder $rootFolder,
- ICommentsManager $commentsManager,
- IURLGenerator $url,
- IUserManager $userManager
+ protected IFactory $l10nFactory,
+ protected IRootFolder $rootFolder,
+ protected ICommentsManager $commentsManager,
+ protected IURLGenerator $url,
+ protected IUserManager $userManager,
) {
- $this->l10nFactory = $l10nFactory;
- $this->rootFolder = $rootFolder;
- $this->commentsManager = $commentsManager;
- $this->url = $url;
- $this->userManager = $userManager;
+ }
+
+ /**
+ * Identifier of the notifier, only use [a-z0-9_]
+ *
+ * @return string
+ * @since 17.0.0
+ */
+ public function getID(): string {
+ return 'comments';
+ }
+
+ /**
+ * Human readable name describing the notifier
+ *
+ * @return string
+ * @since 17.0.0
+ */
+ public function getName(): string {
+ return $this->l10nFactory->get('comments')->t('Comments');
}
/**
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
- * @throws \InvalidArgumentException When the notification was not prepared by a notifier
+ * @throws UnknownNotificationException When the notification was not prepared by a notifier
+ * @throws AlreadyProcessedException When the notification is not needed anymore and should be deleted
+ * @since 9.0.0
*/
- public function prepare(INotification $notification, $languageCode) {
- if($notification->getApp() !== 'comments') {
- throw new \InvalidArgumentException();
+ public function prepare(INotification $notification, string $languageCode): INotification {
+ if ($notification->getApp() !== 'comments') {
+ throw new UnknownNotificationException();
}
try {
$comment = $this->commentsManager->get($notification->getObjectId());
- } catch(NotFoundException $e) {
+ } catch (NotFoundException $e) {
// needs to be converted to InvalidArgumentException, otherwise none Notifications will be shown at all
- throw new \InvalidArgumentException('Comment not found', 0, $e);
+ throw new UnknownNotificationException('Comment not found', 0, $e);
}
$l = $this->l10nFactory->get('comments', $languageCode);
$displayName = $comment->getActorId();
$isDeletedActor = $comment->getActorType() === ICommentsManager::DELETED_USER;
- if($comment->getActorType() === 'users') {
- $commenter = $this->userManager->get($comment->getActorId());
- if(!is_null($commenter)) {
- $displayName = $commenter->getDisplayName();
+ if ($comment->getActorType() === 'users') {
+ $commenter = $this->userManager->getDisplayName($comment->getActorId());
+ if ($commenter !== null) {
+ $displayName = $commenter;
}
}
- switch($notification->getSubject()) {
+ switch ($notification->getSubject()) {
case 'mention':
$parameters = $notification->getSubjectParameters();
- if($parameters[0] !== 'files') {
- throw new \InvalidArgumentException('Unsupported comment object');
+ if ($parameters[0] !== 'files') {
+ throw new UnknownNotificationException('Unsupported comment object');
}
$userFolder = $this->rootFolder->getUserFolder($notification->getUser());
$nodes = $userFolder->getById((int)$parameters[1]);
- if(empty($nodes)) {
- throw new \InvalidArgumentException('Cannot resolve file ID to node instance');
+ if (empty($nodes)) {
+ throw new AlreadyProcessedException();
}
$node = $nodes[0];
+ $path = rtrim($node->getPath(), '/');
+ if (str_starts_with($path, '/' . $notification->getUser() . '/files/')) {
+ // Remove /user/files/...
+ $fullPath = $path;
+ [,,, $path] = explode('/', $fullPath, 4);
+ }
+ $subjectParameters = [
+ 'file' => [
+ 'type' => 'file',
+ 'id' => $comment->getObjectId(),
+ 'name' => $node->getName(),
+ 'path' => $path,
+ 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]),
+ ],
+ ];
+
if ($isDeletedActor) {
- $notification->setParsedSubject($l->t(
- 'You were mentioned on “%s”, in a comment by a user that has since been deleted',
- [$node->getName()]
- ))
- ->setRichSubject(
- $l->t('You were mentioned on “{file}”, in a comment by a user that has since been deleted'),
- [
- 'file' => [
- 'type' => 'file',
- 'id' => $comment->getObjectId(),
- 'name' => $node->getName(),
- 'path' => $node->getPath(),
- 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]),
- ],
- ]
- );
+ $subject = $l->t('You were mentioned on "{file}", in a comment by an account that has since been deleted');
} else {
- $notification->setParsedSubject($l->t(
- '%1$s mentioned you in a comment on “%2$s”',
- [$displayName, $node->getName()]
- ))
- ->setRichSubject(
- $l->t('{user} mentioned you in a comment on “{file}”'),
- [
- 'user' => [
- 'type' => 'user',
- 'id' => $comment->getActorId(),
- 'name' => $displayName,
- ],
- 'file' => [
- 'type' => 'file',
- 'id' => $comment->getObjectId(),
- 'name' => $node->getName(),
- 'path' => $node->getPath(),
- 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $comment->getObjectId()]),
- ],
- ]
- );
+ $subject = $l->t('{user} mentioned you in a comment on "{file}"');
+ $subjectParameters['user'] = [
+ 'type' => 'user',
+ 'id' => $comment->getActorId(),
+ 'name' => $displayName,
+ ];
}
- $notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg')))
+ [$message, $messageParameters] = $this->commentToRichMessage($comment);
+ $notification->setRichSubject($subject, $subjectParameters)
+ ->setRichMessage($message, $messageParameters)
+ ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.svg')))
->setLink($this->url->linkToRouteAbsolute(
'comments.Notifications.view',
['id' => $comment->getId()])
@@ -153,8 +129,49 @@ class Notifier implements INotifier {
break;
default:
- throw new \InvalidArgumentException('Invalid subject');
+ throw new UnknownNotificationException('Invalid subject');
}
+ }
+ public function commentToRichMessage(IComment $comment): array {
+ $message = $comment->getMessage();
+ $messageParameters = [];
+ $mentionTypeCount = [];
+ $mentions = $comment->getMentions();
+ foreach ($mentions as $mention) {
+ if ($mention['type'] === 'user') {
+ $userDisplayName = $this->userManager->getDisplayName($mention['id']);
+ if ($userDisplayName === null) {
+ continue;
+ }
+ }
+ if (!array_key_exists($mention['type'], $mentionTypeCount)) {
+ $mentionTypeCount[$mention['type']] = 0;
+ }
+ $mentionTypeCount[$mention['type']]++;
+ // To keep a limited character set in parameter IDs ([a-zA-Z0-9-])
+ // the mention parameter ID does not include the mention ID (which
+ // could contain characters like '@' for user IDs) but a one-based
+ // index of the mentions of that type.
+ $mentionParameterId = 'mention-' . $mention['type'] . $mentionTypeCount[$mention['type']];
+ $message = str_replace('@"' . $mention['id'] . '"', '{' . $mentionParameterId . '}', $message);
+ if (!str_contains($mention['id'], ' ') && !str_starts_with($mention['id'], 'guest/')) {
+ $message = str_replace('@' . $mention['id'], '{' . $mentionParameterId . '}', $message);
+ }
+
+ try {
+ $displayName = $this->commentsManager->resolveDisplayName($mention['type'], $mention['id']);
+ } catch (\OutOfBoundsException $e) {
+ // There is no registered display name resolver for the mention
+ // type, so the client decides what to display.
+ $displayName = '';
+ }
+ $messageParameters[$mentionParameterId] = [
+ 'type' => $mention['type'],
+ 'id' => $mention['id'],
+ 'name' => $displayName
+ ];
+ }
+ return [$message, $messageParameters];
}
}
diff --git a/apps/comments/lib/Search/CommentsSearchProvider.php b/apps/comments/lib/Search/CommentsSearchProvider.php
new file mode 100644
index 00000000000..87a658cab1c
--- /dev/null
+++ b/apps/comments/lib/Search/CommentsSearchProvider.php
@@ -0,0 +1,71 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Search;
+
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\Search\IProvider;
+use OCP\Search\ISearchQuery;
+use OCP\Search\SearchResult;
+use OCP\Search\SearchResultEntry;
+use function array_map;
+use function pathinfo;
+
+class CommentsSearchProvider implements IProvider {
+ public function __construct(
+ private IUserManager $userManager,
+ private IL10N $l10n,
+ private IURLGenerator $urlGenerator,
+ private LegacyProvider $legacyProvider,
+ ) {
+ }
+
+ public function getId(): string {
+ return 'comments';
+ }
+
+ public function getName(): string {
+ return $this->l10n->t('Comments');
+ }
+
+ public function getOrder(string $route, array $routeParameters): int {
+ if ($route === 'files.View.index') {
+ // Files first
+ return 0;
+ }
+ return 10;
+ }
+
+ public function search(IUser $user, ISearchQuery $query): SearchResult {
+ return SearchResult::complete(
+ $this->l10n->t('Comments'),
+ array_map(function (Result $result) {
+ $path = $result->path;
+ $pathInfo = pathinfo($path);
+ $isUser = $this->userManager->userExists($result->authorId);
+ $avatarUrl = $isUser
+ ? $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $result->authorId, 'size' => 42])
+ : $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $result->authorId, 'size' => 42]);
+ return new SearchResultEntry(
+ $avatarUrl,
+ $result->name,
+ $path,
+ $this->urlGenerator->linkToRouteAbsolute('files.view.index', [
+ 'dir' => $pathInfo['dirname'],
+ 'scrollto' => $pathInfo['basename'],
+ ]),
+ '',
+ true
+ );
+ }, $this->legacyProvider->search($query->getTerm()))
+ );
+ }
+}
diff --git a/apps/comments/lib/Search/LegacyProvider.php b/apps/comments/lib/Search/LegacyProvider.php
new file mode 100644
index 00000000000..a269c418d06
--- /dev/null
+++ b/apps/comments/lib/Search/LegacyProvider.php
@@ -0,0 +1,97 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Search;
+
+use OCP\Comments\IComment;
+use OCP\Comments\ICommentsManager;
+use OCP\Files\Folder;
+use OCP\Files\Node;
+use OCP\Files\NotFoundException;
+use OCP\IUser;
+use OCP\IUserSession;
+use OCP\Search\Provider;
+use OCP\Server;
+use function count;
+
+class LegacyProvider extends Provider {
+ /**
+ * Search for $query
+ *
+ * @param string $query
+ * @return array An array of OCP\Search\Result's
+ * @since 7.0.0
+ */
+ public function search($query): array {
+ $cm = Server::get(ICommentsManager::class);
+ $us = Server::get(IUserSession::class);
+
+ $user = $us->getUser();
+ if (!$user instanceof IUser) {
+ return [];
+ }
+ $uf = \OC::$server->getUserFolder($user->getUID());
+
+ if ($uf === null) {
+ return [];
+ }
+
+ $result = [];
+ $numComments = 50;
+ $offset = 0;
+
+ while (count($result) < $numComments) {
+ /** @var IComment[] $comments */
+ $comments = $cm->search($query, 'files', '', 'comment', $offset, $numComments);
+
+ foreach ($comments as $comment) {
+ if ($comment->getActorType() !== 'users') {
+ continue;
+ }
+
+ $displayName = $cm->resolveDisplayName('user', $comment->getActorId());
+
+ try {
+ $file = $this->getFileForComment($uf, $comment);
+ $result[] = new Result($query,
+ $comment,
+ $displayName,
+ $file->getPath()
+ );
+ } catch (NotFoundException $e) {
+ continue;
+ }
+ }
+
+ if (count($comments) < $numComments) {
+ // Didn't find more comments when we tried to get, so there are no more comments.
+ return $result;
+ }
+
+ $offset += $numComments;
+ $numComments = 50 - count($result);
+ }
+
+ return $result;
+ }
+
+ /**
+ * @param Folder $userFolder
+ * @param IComment $comment
+ * @return Node
+ * @throws NotFoundException
+ */
+ protected function getFileForComment(Folder $userFolder, IComment $comment): Node {
+ $nodes = $userFolder->getById((int)$comment->getObjectId());
+ if (empty($nodes)) {
+ throw new NotFoundException('File not found');
+ }
+
+ return array_shift($nodes);
+ }
+}
diff --git a/apps/comments/lib/Search/Result.php b/apps/comments/lib/Search/Result.php
new file mode 100644
index 00000000000..7478c110d63
--- /dev/null
+++ b/apps/comments/lib/Search/Result.php
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Search;
+
+use OCP\Comments\IComment;
+use OCP\Files\NotFoundException;
+use OCP\Search\Result as BaseResult;
+
+/**
+ * @deprecated 20.0.0
+ */
+class Result extends BaseResult {
+ /**
+ * @deprecated 20.0.0
+ */
+ public $type = 'comment';
+ /**
+ * @deprecated 20.0.0
+ */
+ public $comment;
+ /**
+ * @deprecated 20.0.0
+ */
+ public $authorId;
+ /**
+ * @deprecated 20.0.0
+ */
+ public $path;
+ /**
+ * @deprecated 20.0.0
+ */
+ public $fileName;
+
+ /**
+ * @throws NotFoundException
+ * @deprecated 20.0.0
+ */
+ public function __construct(
+ string $search,
+ IComment $comment,
+ /**
+ * @deprecated 20.0.0
+ */
+ public string $authorName,
+ string $path,
+ ) {
+ parent::__construct(
+ $comment->getId(),
+ $comment->getMessage()
+ /* @todo , [link to file] */
+ );
+
+ $this->comment = $this->getRelevantMessagePart($comment->getMessage(), $search);
+ $this->authorId = $comment->getActorId();
+ $this->fileName = basename($path);
+ $this->path = $this->getVisiblePath($path);
+ }
+
+ /**
+ * @throws NotFoundException
+ */
+ protected function getVisiblePath(string $path): string {
+ $segments = explode('/', trim($path, '/'), 3);
+
+ if (!isset($segments[2])) {
+ throw new NotFoundException('Path not inside visible section');
+ }
+
+ return $segments[2];
+ }
+
+ /**
+ * @throws NotFoundException
+ */
+ protected function getRelevantMessagePart(string $message, string $search): string {
+ $start = mb_stripos($message, $search);
+ if ($start === false) {
+ throw new NotFoundException('Comment section not found');
+ }
+
+ $end = $start + mb_strlen($search);
+
+ if ($start <= 25) {
+ $start = 0;
+ $prefix = '';
+ } else {
+ $start -= 25;
+ $prefix = '…';
+ }
+
+ if ((mb_strlen($message) - $end) <= 25) {
+ $end = mb_strlen($message);
+ $suffix = '';
+ } else {
+ $end += 25;
+ $suffix = '…';
+ }
+
+ return $prefix . mb_substr($message, $start, $end - $start) . $suffix;
+ }
+}
diff --git a/apps/comments/openapi.json b/apps/comments/openapi.json
new file mode 100644
index 00000000000..cadc64da052
--- /dev/null
+++ b/apps/comments/openapi.json
@@ -0,0 +1,46 @@
+{
+ "openapi": "3.0.3",
+ "info": {
+ "title": "comments",
+ "version": "0.0.1",
+ "description": "Files app plugin to add comments to files",
+ "license": {
+ "name": "agpl"
+ }
+ },
+ "components": {
+ "securitySchemes": {
+ "basic_auth": {
+ "type": "http",
+ "scheme": "basic"
+ },
+ "bearer_auth": {
+ "type": "http",
+ "scheme": "bearer"
+ }
+ },
+ "schemas": {
+ "Capabilities": {
+ "type": "object",
+ "required": [
+ "files"
+ ],
+ "properties": {
+ "files": {
+ "type": "object",
+ "required": [
+ "comments"
+ ],
+ "properties": {
+ "comments": {
+ "type": "boolean"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "paths": {},
+ "tags": []
+}
diff --git a/apps/comments/openapi.json.license b/apps/comments/openapi.json.license
new file mode 100644
index 00000000000..83559daa9dc
--- /dev/null
+++ b/apps/comments/openapi.json.license
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+SPDX-License-Identifier: AGPL-3.0-or-later \ No newline at end of file
diff --git a/apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts
new file mode 100644
index 00000000000..e8020f1f029
--- /dev/null
+++ b/apps/comments/src/actions/inlineUnreadCommentsAction.spec.ts
@@ -0,0 +1,179 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import { File, Permission, View, FileAction } from '@nextcloud/files'
+import { describe, expect, test, vi } from 'vitest'
+
+import { action } from './inlineUnreadCommentsAction'
+import logger from '../logger'
+
+const view = {
+ id: 'files',
+ name: 'Files',
+} as View
+
+describe('Inline unread comments action display name tests', () => {
+ test('Default values', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 1,
+ },
+ })
+
+ expect(action).toBeInstanceOf(FileAction)
+ expect(action.id).toBe('comments-unread')
+ expect(action.displayName([file], view)).toBe('')
+ expect(action.title!([file], view)).toBe('1 new comment')
+ expect(action.iconSvgInline([], view)).toMatch(/<svg.+<\/svg>/)
+ expect(action.enabled!([file], view)).toBe(true)
+ expect(action.inline!(file, view)).toBe(true)
+ expect(action.default).toBeUndefined()
+ expect(action.order).toBe(-140)
+ })
+
+ test('Display name when file has two new comments', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 2,
+ },
+ })
+
+ expect(action.displayName([file], view)).toBe('')
+ expect(action.title!([file], view)).toBe('2 new comments')
+ })
+})
+
+describe('Inline unread comments action enabled tests', () => {
+ test('Action is disabled when comments-unread attribute is missing', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: { },
+ })
+
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+
+ test('Action is disabled when file does not have unread comments', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 0,
+ },
+ })
+
+ expect(action.enabled!([file], view)).toBe(false)
+ })
+
+ test('Action is enabled when file has a single unread comment', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 1,
+ },
+ })
+
+ expect(action.enabled!([file], view)).toBe(true)
+ })
+
+ test('Action is enabled when file has a two unread comments', () => {
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 2,
+ },
+ })
+
+ expect(action.enabled!([file], view)).toBe(true)
+ })
+})
+
+describe('Inline unread comments action execute tests', () => {
+ test('Action opens sidebar', async () => {
+ const openMock = vi.fn()
+ const setActiveTabMock = vi.fn()
+ window.OCA = {
+ Files: {
+ Sidebar: {
+ open: openMock,
+ setActiveTab: setActiveTabMock,
+ },
+ },
+ }
+
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 1,
+ },
+ })
+
+ const result = await action.exec!(file, view, '/')
+
+ expect(result).toBe(null)
+ expect(setActiveTabMock).toBeCalledWith('comments')
+ expect(openMock).toBeCalledWith('/foobar.txt')
+ })
+
+ test('Action handles sidebar open failure', async () => {
+ const openMock = vi.fn(() => { throw new Error('Mock error') })
+ const setActiveTabMock = vi.fn()
+ window.OCA = {
+ Files: {
+ Sidebar: {
+ open: openMock,
+ setActiveTab: setActiveTabMock,
+ },
+ },
+ }
+ vi.spyOn(logger, 'error').mockImplementation(() => vi.fn())
+
+ const file = new File({
+ id: 1,
+ source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt',
+ owner: 'admin',
+ mime: 'text/plain',
+ permissions: Permission.ALL,
+ attributes: {
+ 'comments-unread': 1,
+ },
+ })
+
+ const result = await action.exec!(file, view, '/')
+
+ expect(result).toBe(false)
+ expect(setActiveTabMock).toBeCalledWith('comments')
+ expect(openMock).toBeCalledWith('/foobar.txt')
+ expect(logger.error).toBeCalledTimes(1)
+ })
+})
diff --git a/apps/comments/src/actions/inlineUnreadCommentsAction.ts b/apps/comments/src/actions/inlineUnreadCommentsAction.ts
new file mode 100644
index 00000000000..0afd93d7606
--- /dev/null
+++ b/apps/comments/src/actions/inlineUnreadCommentsAction.ts
@@ -0,0 +1,46 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import { FileAction, Node } from '@nextcloud/files'
+import { translate as t, translatePlural as n } from '@nextcloud/l10n'
+import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw'
+
+import logger from '../logger'
+
+export const action = new FileAction({
+ id: 'comments-unread',
+
+ title(nodes: Node[]) {
+ const unread = nodes[0].attributes['comments-unread'] as number
+ if (unread >= 0) {
+ return n('comments', '1 new comment', '{unread} new comments', unread, { unread })
+ }
+ return t('comments', 'Comment')
+ },
+
+ // Empty string when rendered inline
+ displayName: () => '',
+
+ iconSvgInline: () => CommentProcessingSvg,
+
+ enabled(nodes: Node[]) {
+ const unread = nodes[0].attributes['comments-unread'] as number|undefined
+ return typeof unread === 'number' && unread > 0
+ },
+
+ async exec(node: Node) {
+ try {
+ window.OCA.Files.Sidebar.setActiveTab('comments')
+ await window.OCA.Files.Sidebar.open(node.path)
+ return null
+ } catch (error) {
+ logger.error('Error while opening sidebar', { error })
+ return false
+ }
+ },
+
+ inline: () => true,
+
+ order: -140,
+})
diff --git a/apps/comments/src/comments-activity-tab.ts b/apps/comments/src/comments-activity-tab.ts
new file mode 100644
index 00000000000..77f6c9bca04
--- /dev/null
+++ b/apps/comments/src/comments-activity-tab.ts
@@ -0,0 +1,78 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import moment from '@nextcloud/moment'
+import Vue, { type ComponentPublicInstance } from 'vue'
+import logger from './logger.js'
+import { getComments } from './services/GetComments.js'
+
+import { PiniaVuePlugin, createPinia } from 'pinia'
+
+Vue.use(PiniaVuePlugin)
+
+let ActivityTabPluginView
+let ActivityTabPluginInstance
+
+/**
+ * Register the comments plugins for the Activity sidebar
+ */
+export function registerCommentsPlugins() {
+ window.OCA.Activity.registerSidebarAction({
+ mount: async (el, { fileInfo, reload }) => {
+ const pinia = createPinia()
+
+ if (!ActivityTabPluginView) {
+ const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue')
+ // @ts-expect-error Types are broken for Vue2
+ ActivityTabPluginView = Vue.extend(ActivityCommentAction)
+ }
+ ActivityTabPluginInstance = new ActivityTabPluginView({
+ el,
+ pinia,
+ propsData: {
+ reloadCallback: reload,
+ resourceId: fileInfo.id,
+ },
+ })
+ logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo })
+ },
+ unmount: () => {
+ // destroy previous instance if available
+ if (ActivityTabPluginInstance) {
+ ActivityTabPluginInstance.$destroy()
+ }
+ },
+ })
+
+ window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => {
+ const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset })
+ logger.debug('Loaded comments', { fileInfo, comments })
+ const { default: CommentView } = await import('./views/ActivityCommentEntry.vue')
+ // @ts-expect-error Types are broken for Vue2
+ const CommentsViewObject = Vue.extend(CommentView)
+
+ return comments.map((comment) => ({
+ _CommentsViewInstance: undefined as ComponentPublicInstance | undefined,
+
+ timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),
+
+ mount(element: HTMLElement, { reload }) {
+ this._CommentsViewInstance = new CommentsViewObject({
+ el: element,
+ propsData: {
+ comment,
+ resourceId: fileInfo.id,
+ reloadCallback: reload,
+ },
+ })
+ },
+ unmount() {
+ this._CommentsViewInstance?.$destroy()
+ },
+ }))
+ })
+
+ window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments')
+ logger.info('Comments plugin registered for Activity sidebar action')
+}
diff --git a/apps/comments/src/comments-app.js b/apps/comments/src/comments-app.js
new file mode 100644
index 00000000000..a91a4bb37bb
--- /dev/null
+++ b/apps/comments/src/comments-app.js
@@ -0,0 +1,15 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import CommentsInstance from './services/CommentsInstance.js'
+
+// Init Comments
+if (window.OCA && !window.OCA.Comments) {
+ Object.assign(window.OCA, { Comments: {} })
+}
+
+// Init Comments App view
+Object.assign(window.OCA.Comments, { View: CommentsInstance })
+console.debug('OCA.Comments.View initialized')
diff --git a/apps/comments/src/comments-tab.js b/apps/comments/src/comments-tab.js
new file mode 100644
index 00000000000..d3ebe3e9596
--- /dev/null
+++ b/apps/comments/src/comments-tab.js
@@ -0,0 +1,60 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+// eslint-disable-next-line n/no-missing-import, import/no-unresolved
+import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
+import { getCSPNonce } from '@nextcloud/auth'
+import { loadState } from '@nextcloud/initial-state'
+import { registerCommentsPlugins } from './comments-activity-tab.ts'
+
+// @ts-expect-error __webpack_nonce__ is injected by webpack
+__webpack_nonce__ = getCSPNonce()
+
+if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
+ // Do not mount own tab but mount into activity
+ window.addEventListener('DOMContentLoaded', function() {
+ registerCommentsPlugins()
+ })
+} else {
+ // Init Comments tab component
+ let TabInstance = null
+ const commentTab = new OCA.Files.Sidebar.Tab({
+ id: 'comments',
+ name: t('comments', 'Comments'),
+ iconSvg: MessageReplyText,
+
+ async mount(el, fileInfo, context) {
+ if (TabInstance) {
+ TabInstance.$destroy()
+ }
+ TabInstance = new OCA.Comments.View('files', {
+ // Better integration with vue parent component
+ parent: context,
+ propsData: {
+ resourceId: fileInfo.id,
+ },
+ })
+ // Only mount after we have all the info we need
+ await TabInstance.update(fileInfo.id)
+ TabInstance.$mount(el)
+ },
+ update(fileInfo) {
+ TabInstance.update(fileInfo.id)
+ },
+ destroy() {
+ TabInstance.$destroy()
+ TabInstance = null
+ },
+ scrollBottomReached() {
+ TabInstance.onScrollBottomReached()
+ },
+ })
+
+ window.addEventListener('DOMContentLoaded', function() {
+ if (OCA.Files && OCA.Files.Sidebar) {
+ OCA.Files.Sidebar.registerTab(commentTab)
+ }
+ })
+}
diff --git a/apps/comments/src/components/Comment.vue b/apps/comments/src/components/Comment.vue
new file mode 100644
index 00000000000..80f035530fb
--- /dev/null
+++ b/apps/comments/src/components/Comment.vue
@@ -0,0 +1,384 @@
+<!--
+ - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+<template>
+ <component :is="tag"
+ v-show="!deleted && !isLimbo"
+ :class="{'comment--loading': loading}"
+ class="comment">
+ <!-- Comment header toolbar -->
+ <div class="comment__side">
+ <!-- Author -->
+ <NcAvatar class="comment__avatar"
+ :display-name="actorDisplayName"
+ :user="actorId"
+ :size="32" />
+ </div>
+ <div class="comment__body">
+ <div class="comment__header">
+ <span class="comment__author">{{ actorDisplayName }}</span>
+
+ <!-- Comment actions,
+ show if we have a message id and current user is author -->
+ <NcActions v-if="isOwnComment && id && !loading" class="comment__actions">
+ <template v-if="!editing">
+ <NcActionButton close-after-click
+ @click="onEdit">
+ <template #icon>
+ <IconPencilOutline :size="20" />
+ </template>
+ {{ t('comments', 'Edit comment') }}
+ </NcActionButton>
+ <NcActionSeparator />
+ <NcActionButton close-after-click
+ @click="onDeleteWithUndo">
+ <template #icon>
+ <IconTrashCanOutline :size="20" />
+ </template>
+ {{ t('comments', 'Delete comment') }}
+ </NcActionButton>
+ </template>
+
+ <NcActionButton v-else @click="onEditCancel">
+ <template #icon>
+ <IconClose :size="20" />
+ </template>
+ {{ t('comments', 'Cancel edit') }}
+ </NcActionButton>
+ </NcActions>
+
+ <!-- Show loading if we're editing or deleting, not on new ones -->
+ <div v-if="id && loading" class="comment_loading icon-loading-small" />
+
+ <!-- Relative time to the comment creation -->
+ <NcDateTime v-else-if="creationDateTime"
+ class="comment__timestamp"
+ :timestamp="timestamp"
+ :ignore-seconds="true" />
+ </div>
+
+ <!-- Message editor -->
+ <form v-if="editor || editing" class="comment__editor" @submit.prevent>
+ <div class="comment__editor-group">
+ <NcRichContenteditable ref="editor"
+ :auto-complete="autoComplete"
+ :contenteditable="!loading"
+ :label="editor ? t('comments', 'New comment') : t('comments', 'Edit comment')"
+ :placeholder="t('comments', 'Write a comment …')"
+ :value="localMessage"
+ :user-data="userData"
+ aria-describedby="tab-comments__editor-description"
+ @update:value="updateLocalMessage"
+ @submit="onSubmit" />
+ <div class="comment__submit">
+ <NcButton type="tertiary-no-background"
+ native-type="submit"
+ :aria-label="t('comments', 'Post comment')"
+ :disabled="isEmptyMessage"
+ @click="onSubmit">
+ <template #icon>
+ <NcLoadingIcon v-if="loading" />
+ <IconArrowRight v-else :size="20" />
+ </template>
+ </NcButton>
+ </div>
+ </div>
+ <div id="tab-comments__editor-description" class="comment__editor-description">
+ {{ t('comments', '@ for mentions, : for emoji, / for smart picker') }}
+ </div>
+ </form>
+
+ <!-- Message content -->
+ <NcRichText v-else
+ class="comment__message"
+ :class="{'comment__message--expanded': expanded}"
+ :text="richContent.message"
+ :arguments="richContent.mentions"
+ @click="onExpand" />
+ </div>
+ </component>
+</template>
+
+<script>
+import { getCurrentUser } from '@nextcloud/auth'
+import { translate as t } from '@nextcloud/l10n'
+
+import NcActionButton from '@nextcloud/vue/components/NcActionButton'
+import NcActions from '@nextcloud/vue/components/NcActions'
+import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
+import NcAvatar from '@nextcloud/vue/components/NcAvatar'
+import NcButton from '@nextcloud/vue/components/NcButton'
+import NcDateTime from '@nextcloud/vue/components/NcDateTime'
+import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
+import NcUserBubble from '@nextcloud/vue/components/NcUserBubble'
+
+import IconArrowRight from 'vue-material-design-icons/ArrowRight.vue'
+import IconClose from 'vue-material-design-icons/Close.vue'
+import IconTrashCanOutline from 'vue-material-design-icons/TrashCanOutline.vue'
+import IconPencilOutline from 'vue-material-design-icons/PencilOutline.vue'
+
+import CommentMixin from '../mixins/CommentMixin.js'
+import { mapStores } from 'pinia'
+import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
+
+// Dynamic loading
+const NcRichContenteditable = () => import('@nextcloud/vue/components/NcRichContenteditable')
+const NcRichText = () => import('@nextcloud/vue/components/NcRichText')
+
+export default {
+ name: 'Comment',
+
+ components: {
+ IconArrowRight,
+ IconClose,
+ IconTrashCanOutline,
+ IconPencilOutline,
+ NcActionButton,
+ NcActions,
+ NcActionSeparator,
+ NcAvatar,
+ NcButton,
+ NcDateTime,
+ NcLoadingIcon,
+ NcRichContenteditable,
+ NcRichText,
+ },
+ mixins: [CommentMixin],
+
+ inheritAttrs: false,
+
+ props: {
+ actorDisplayName: {
+ type: String,
+ required: true,
+ },
+ actorId: {
+ type: String,
+ required: true,
+ },
+ creationDateTime: {
+ type: String,
+ default: null,
+ },
+
+ /**
+ * Force the editor display
+ */
+ editor: {
+ type: Boolean,
+ default: false,
+ },
+
+ /**
+ * Provide the autocompletion data
+ */
+ autoComplete: {
+ type: Function,
+ required: true,
+ },
+ userData: {
+ type: Object,
+ default: () => ({}),
+ },
+
+ tag: {
+ type: String,
+ default: 'div',
+ },
+ },
+
+ data() {
+ return {
+ expanded: false,
+ // Only change data locally and update the original
+ // parent data when the request is sent and resolved
+ localMessage: '',
+ submitted: false,
+ }
+ },
+
+ computed: {
+ ...mapStores(useDeletedCommentLimbo),
+
+ /**
+ * Is the current user the author of this comment
+ *
+ * @return {boolean}
+ */
+ isOwnComment() {
+ return getCurrentUser().uid === this.actorId
+ },
+
+ richContent() {
+ const mentions = {}
+ let message = this.localMessage
+
+ Object.keys(this.userData).forEach((user, index) => {
+ const key = `mention-${index}`
+ const regex = new RegExp(`@${user}|@"${user}"`, 'g')
+ message = message.replace(regex, `{${key}}`)
+ mentions[key] = {
+ component: NcUserBubble,
+ props: {
+ user,
+ displayName: this.userData[user].label,
+ primary: this.userData[user].primary,
+ },
+ }
+ })
+
+ return { mentions, message }
+ },
+
+ isEmptyMessage() {
+ return !this.localMessage || this.localMessage.trim() === ''
+ },
+
+ /**
+ * Timestamp of the creation time (in ms UNIX time)
+ */
+ timestamp() {
+ return Date.parse(this.creationDateTime)
+ },
+
+ isLimbo() {
+ return this.deletedCommentLimboStore.checkForId(this.id)
+ },
+ },
+
+ watch: {
+ // If the data change, update the local value
+ message(message) {
+ this.updateLocalMessage(message)
+ },
+ },
+
+ beforeMount() {
+ // Init localMessage
+ this.updateLocalMessage(this.message)
+ },
+
+ methods: {
+ t,
+
+ /**
+ * Update local Message on outer change
+ *
+ * @param {string} message the message to set
+ */
+ updateLocalMessage(message) {
+ this.localMessage = message.toString()
+ this.submitted = false
+ },
+
+ /**
+ * Dispatch message between edit and create
+ */
+ onSubmit() {
+ // Do not submit if message is empty
+ if (this.localMessage.trim() === '') {
+ return
+ }
+
+ if (this.editor) {
+ this.onNewComment(this.localMessage.trim())
+ this.$nextTick(() => {
+ // Focus the editor again
+ this.$refs.editor.$el.focus()
+ })
+ return
+ }
+ this.onEditComment(this.localMessage.trim())
+ },
+
+ onExpand() {
+ this.expanded = true
+ },
+ },
+
+}
+</script>
+
+<style lang="scss" scoped>
+@use "sass:math";
+
+$comment-padding: 10px;
+
+.comment {
+ display: flex;
+ gap: 8px;
+ padding: 5px $comment-padding;
+
+ &__side {
+ display: flex;
+ align-items: flex-start;
+ padding-top: 6px;
+ }
+
+ &__body {
+ display: flex;
+ flex-grow: 1;
+ flex-direction: column;
+ }
+
+ &__header {
+ display: flex;
+ align-items: center;
+ min-height: 44px;
+ }
+
+ &__actions {
+ margin-inline-start: $comment-padding !important;
+ }
+
+ &__author {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--color-text-maxcontrast);
+ }
+
+ &_loading,
+ &__timestamp {
+ margin-inline-start: auto;
+ text-align: end;
+ white-space: nowrap;
+ color: var(--color-text-maxcontrast);
+ }
+
+ &__editor-group {
+ position: relative;
+ }
+
+ &__editor-description {
+ color: var(--color-text-maxcontrast);
+ padding-block: var(--default-grid-baseline);
+ }
+
+ &__submit {
+ position: absolute !important;
+ bottom: 5px;
+ inset-inline-end: 0;
+ }
+
+ &__message {
+ white-space: pre-wrap;
+ word-break: normal;
+ max-height: 70px;
+ overflow: hidden;
+ margin-top: -6px;
+ &--expanded {
+ max-height: none;
+ overflow: visible;
+ }
+ }
+}
+
+.rich-contenteditable__input {
+ min-height: 44px;
+ margin: 0;
+ padding: $comment-padding;
+}
+
+</style>
diff --git a/apps/comments/src/init.ts b/apps/comments/src/init.ts
new file mode 100644
index 00000000000..675274b1b40
--- /dev/null
+++ b/apps/comments/src/init.ts
@@ -0,0 +1,8 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import { registerFileAction } from '@nextcloud/files'
+import { action } from './actions/inlineUnreadCommentsAction'
+
+registerFileAction(action)
diff --git a/apps/comments/src/logger.js b/apps/comments/src/logger.js
new file mode 100644
index 00000000000..a51bc6d750b
--- /dev/null
+++ b/apps/comments/src/logger.js
@@ -0,0 +1,11 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getLoggerBuilder } from '@nextcloud/logger'
+
+export default getLoggerBuilder()
+ .setApp('comments')
+ .detectUser()
+ .build()
diff --git a/apps/comments/src/mixins/CommentMixin.js b/apps/comments/src/mixins/CommentMixin.js
new file mode 100644
index 00000000000..722ad3444ce
--- /dev/null
+++ b/apps/comments/src/mixins/CommentMixin.js
@@ -0,0 +1,115 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'
+import NewComment from '../services/NewComment.js'
+import DeleteComment from '../services/DeleteComment.js'
+import EditComment from '../services/EditComment.js'
+import { mapStores } from 'pinia'
+import { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'
+import logger from '../logger.js'
+
+export default {
+ props: {
+ id: {
+ type: Number,
+ default: null,
+ },
+ message: {
+ type: String,
+ default: '',
+ },
+ resourceId: {
+ type: [String, Number],
+ required: true,
+ },
+ resourceType: {
+ type: String,
+ default: 'files',
+ },
+ },
+
+ data() {
+ return {
+ deleted: false,
+ editing: false,
+ loading: false,
+ }
+ },
+
+ computed: {
+ ...mapStores(useDeletedCommentLimbo),
+ },
+
+ methods: {
+ // EDITION
+ onEdit() {
+ this.editing = true
+ },
+ onEditCancel() {
+ this.editing = false
+ // Restore original value
+ this.updateLocalMessage(this.message)
+ },
+ async onEditComment(message) {
+ this.loading = true
+ try {
+ await EditComment(this.resourceType, this.resourceId, this.id, message)
+ logger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })
+ this.$emit('update:message', message)
+ this.editing = false
+ } catch (error) {
+ showError(t('comments', 'An error occurred while trying to edit the comment'))
+ console.error(error)
+ } finally {
+ this.loading = false
+ }
+ },
+
+ // DELETION
+ onDeleteWithUndo() {
+ this.$emit('delete')
+ this.deleted = true
+ this.deletedCommentLimboStore.addId(this.id)
+ const timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)
+ showUndo(t('comments', 'Comment deleted'), () => {
+ clearTimeout(timeOutDelete)
+ this.deleted = false
+ this.deletedCommentLimboStore.removeId(this.id)
+ })
+ },
+ async onDelete() {
+ try {
+ await DeleteComment(this.resourceType, this.resourceId, this.id)
+ logger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })
+ this.$emit('delete', this.id)
+ } catch (error) {
+ showError(t('comments', 'An error occurred while trying to delete the comment'))
+ console.error(error)
+ this.deleted = false
+ this.deletedCommentLimboStore.removeId(this.id)
+ }
+ },
+
+ // CREATION
+ async onNewComment(message) {
+ this.loading = true
+ try {
+ const newComment = await NewComment(this.resourceType, this.resourceId, message)
+ logger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })
+ this.$emit('new', newComment)
+
+ // Clear old content
+ this.$emit('update:message', '')
+ this.localMessage = ''
+ } catch (error) {
+ showError(t('comments', 'An error occurred while trying to create the comment'))
+ console.error(error)
+ } finally {
+ this.loading = false
+ }
+ },
+ },
+}
diff --git a/apps/comments/src/mixins/CommentView.ts b/apps/comments/src/mixins/CommentView.ts
new file mode 100644
index 00000000000..c6cb3aa9ee0
--- /dev/null
+++ b/apps/comments/src/mixins/CommentView.ts
@@ -0,0 +1,76 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import axios from '@nextcloud/axios'
+import { getCurrentUser } from '@nextcloud/auth'
+import { loadState } from '@nextcloud/initial-state'
+import { generateOcsUrl } from '@nextcloud/router'
+import { defineComponent } from 'vue'
+
+export default defineComponent({
+ props: {
+ resourceId: {
+ type: Number,
+ required: true,
+ },
+ resourceType: {
+ type: String,
+ default: 'files',
+ },
+ },
+ data() {
+ return {
+ editorData: {
+ actorDisplayName: getCurrentUser()!.displayName as string,
+ actorId: getCurrentUser()!.uid as string,
+ key: 'editor',
+ },
+ userData: {},
+ }
+ },
+ methods: {
+ /**
+ * Autocomplete @mentions
+ *
+ * @param {string} search the query
+ * @param {Function} callback the callback to process the results with
+ */
+ async autoComplete(search, callback) {
+ const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {
+ params: {
+ search,
+ itemType: 'files',
+ itemId: this.resourceId,
+ sorter: 'commenters|share-recipients',
+ limit: loadState('comments', 'maxAutoCompleteResults'),
+ },
+ })
+ // Save user data so it can be used by the editor to replace mentions
+ data.ocs.data.forEach(user => { this.userData[user.id] = user })
+ return callback(Object.values(this.userData))
+ },
+
+ /**
+ * Make sure we have all mentions as Array of objects
+ *
+ * @param mentions the mentions list
+ */
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ genMentionsData(mentions: any[]): Record<string, object> {
+ Object.values(mentions)
+ .flat()
+ .forEach(mention => {
+ this.userData[mention.mentionId] = {
+ // TODO: support groups
+ icon: 'icon-user',
+ id: mention.mentionId,
+ label: mention.mentionDisplayName,
+ source: 'users',
+ primary: getCurrentUser()?.uid === mention.mentionId,
+ }
+ })
+ return this.userData
+ },
+ },
+})
diff --git a/apps/comments/src/services/CommentsInstance.js b/apps/comments/src/services/CommentsInstance.js
new file mode 100644
index 00000000000..cc45d0cbea7
--- /dev/null
+++ b/apps/comments/src/services/CommentsInstance.js
@@ -0,0 +1,55 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getCSPNonce } from '@nextcloud/auth'
+import { t, n } from '@nextcloud/l10n'
+import { PiniaVuePlugin, createPinia } from 'pinia'
+import Vue from 'vue'
+import CommentsApp from '../views/Comments.vue'
+import logger from '../logger.js'
+
+Vue.use(PiniaVuePlugin)
+// eslint-disable-next-line camelcase
+__webpack_nonce__ = getCSPNonce()
+
+// Add translates functions
+Vue.mixin({
+ data() {
+ return {
+ logger,
+ }
+ },
+ methods: {
+ t,
+ n,
+ },
+})
+
+export default class CommentInstance {
+
+ /**
+ * Initialize a new Comments instance for the desired type
+ *
+ * @param {string} resourceType the comments endpoint type
+ * @param {object} options the vue options (propsData, parent, el...)
+ */
+ constructor(resourceType = 'files', options = {}) {
+ const pinia = createPinia()
+
+ // Merge options and set `resourceType` property
+ options = {
+ ...options,
+ propsData: {
+ ...(options.propsData ?? {}),
+ resourceType,
+ },
+ pinia,
+ }
+ // Init Comments component
+ const View = Vue.extend(CommentsApp)
+ return new View(options)
+ }
+
+}
diff --git a/apps/comments/src/services/DavClient.js b/apps/comments/src/services/DavClient.js
new file mode 100644
index 00000000000..3e9a529283f
--- /dev/null
+++ b/apps/comments/src/services/DavClient.js
@@ -0,0 +1,27 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { createClient } from 'webdav'
+import { getRootPath } from '../utils/davUtils.js'
+import { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
+
+// init webdav client
+const client = createClient(getRootPath())
+
+// set CSRF token header
+const setHeaders = (token) => {
+ client.setHeaders({
+ // Add this so the server knows it is an request from the browser
+ 'X-Requested-With': 'XMLHttpRequest',
+ // Inject user auth
+ requesttoken: token ?? '',
+ })
+}
+
+// refresh headers when request token changes
+onRequestTokenUpdate(setHeaders)
+setHeaders(getRequestToken())
+
+export default client
diff --git a/apps/comments/src/services/DeleteComment.js b/apps/comments/src/services/DeleteComment.js
new file mode 100644
index 00000000000..1ed63d7836a
--- /dev/null
+++ b/apps/comments/src/services/DeleteComment.js
@@ -0,0 +1,20 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import client from './DavClient.js'
+
+/**
+ * Delete a comment
+ *
+ * @param {string} resourceType the resource type
+ * @param {number} resourceId the resource ID
+ * @param {number} commentId the comment iD
+ */
+export default async function(resourceType, resourceId, commentId) {
+ const commentPath = ['', resourceType, resourceId, commentId].join('/')
+
+ // Fetch newly created comment data
+ await client.deleteFile(commentPath)
+}
diff --git a/apps/comments/src/services/EditComment.js b/apps/comments/src/services/EditComment.js
new file mode 100644
index 00000000000..4ec33415a72
--- /dev/null
+++ b/apps/comments/src/services/EditComment.js
@@ -0,0 +1,32 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import client from './DavClient.js'
+
+/**
+ * Edit an existing comment
+ *
+ * @param {string} resourceType the resource type
+ * @param {number} resourceId the resource ID
+ * @param {number} commentId the comment iD
+ * @param {string} message the message content
+ */
+export default async function(resourceType, resourceId, commentId, message) {
+ const commentPath = ['', resourceType, resourceId, commentId].join('/')
+
+ return await client.customRequest(commentPath, Object.assign({
+ method: 'PROPPATCH',
+ data: `<?xml version="1.0"?>
+ <d:propertyupdate
+ xmlns:d="DAV:"
+ xmlns:oc="http://owncloud.org/ns">
+ <d:set>
+ <d:prop>
+ <oc:message>${message}</oc:message>
+ </d:prop>
+ </d:set>
+ </d:propertyupdate>`,
+ }))
+}
diff --git a/apps/comments/src/services/GetComments.ts b/apps/comments/src/services/GetComments.ts
new file mode 100644
index 00000000000..c42aa21d6cb
--- /dev/null
+++ b/apps/comments/src/services/GetComments.ts
@@ -0,0 +1,67 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { parseXML, type DAVResult, type FileStat, type ResponseDataDetailed } from 'webdav'
+
+// https://github.com/perry-mitchell/webdav-client/issues/339
+import { processResponsePayload } from 'webdav/dist/node/response.js'
+import { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js'
+import client from './DavClient.js'
+
+export const DEFAULT_LIMIT = 20
+
+/**
+ * Retrieve the comments list
+ *
+ * @param {object} data destructuring object
+ * @param {string} data.resourceType the resource type
+ * @param {number} data.resourceId the resource ID
+ * @param {object} [options] optional options for axios
+ * @param {number} [options.offset] the pagination offset
+ * @param {number} [options.limit] the pagination limit, defaults to 20
+ * @param {Date} [options.datetime] optional date to query
+ * @return {{data: object[]}} the comments list
+ */
+export const getComments = async function({ resourceType, resourceId }, options: { offset: number, limit?: number, datetime?: Date }) {
+ const resourcePath = ['', resourceType, resourceId].join('/')
+ const datetime = options.datetime ? `<oc:datetime>${options.datetime.toISOString()}</oc:datetime>` : ''
+ const response = await client.customRequest(resourcePath, Object.assign({
+ method: 'REPORT',
+ data: `<?xml version="1.0"?>
+ <oc:filter-comments
+ xmlns:d="DAV:"
+ xmlns:oc="http://owncloud.org/ns"
+ xmlns:nc="http://nextcloud.org/ns"
+ xmlns:ocs="http://open-collaboration-services.org/ns">
+ <oc:limit>${options.limit ?? DEFAULT_LIMIT}</oc:limit>
+ <oc:offset>${options.offset || 0}</oc:offset>
+ ${datetime}
+ </oc:filter-comments>`,
+ }, options))
+
+ const responseData = await response.text()
+ const result = await parseXML(responseData)
+ const stat = getDirectoryFiles(result, true)
+ return processResponsePayload(response, stat, true) as ResponseDataDetailed<FileStat[]>
+}
+
+// https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts
+const getDirectoryFiles = function(
+ result: DAVResult,
+ isDetailed = false,
+): Array<FileStat> {
+ // Extract the response items (directory contents)
+ const {
+ multistatus: { response: responseItems },
+ } = result
+
+ // Map all items to a consistent output structure (results)
+ return responseItems.map(item => {
+ // Each item should contain a stat object
+ const props = item.propstat!.prop!
+
+ return prepareFileFromProps(props, props.id!.toString(), isDetailed)
+ })
+}
diff --git a/apps/comments/src/services/NewComment.js b/apps/comments/src/services/NewComment.js
new file mode 100644
index 00000000000..663b4d72e02
--- /dev/null
+++ b/apps/comments/src/services/NewComment.js
@@ -0,0 +1,50 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getCurrentUser } from '@nextcloud/auth'
+import { getRootPath } from '../utils/davUtils.js'
+import { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'
+import axios from '@nextcloud/axios'
+import client from './DavClient.js'
+
+/**
+ * Retrieve the comments list
+ *
+ * @param {string} resourceType the resource type
+ * @param {number} resourceId the resource ID
+ * @param {string} message the message
+ * @return {object} the new comment
+ */
+export default async function(resourceType, resourceId, message) {
+ const resourcePath = ['', resourceType, resourceId].join('/')
+
+ const response = await axios.post(getRootPath() + resourcePath, {
+ actorDisplayName: getCurrentUser().displayName,
+ actorId: getCurrentUser().uid,
+ actorType: 'users',
+ creationDateTime: (new Date()).toUTCString(),
+ message,
+ objectType: resourceType,
+ verb: 'comment',
+ })
+
+ // Retrieve comment id from resource location
+ const commentId = parseInt(response.headers['content-location'].split('/').pop())
+ const commentPath = resourcePath + '/' + commentId
+
+ // Fetch newly created comment data
+ const comment = await client.stat(commentPath, {
+ details: true,
+ })
+
+ const props = comment.data.props
+ // Decode twice to handle potentially double-encoded entities
+ // FIXME Remove this once https://github.com/nextcloud/server/issues/29306
+ // is resolved
+ props.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)
+ props.message = decodeHtmlEntities(props.message, 2)
+
+ return comment.data
+}
diff --git a/apps/comments/src/services/ReadComments.ts b/apps/comments/src/services/ReadComments.ts
new file mode 100644
index 00000000000..73682e21d95
--- /dev/null
+++ b/apps/comments/src/services/ReadComments.ts
@@ -0,0 +1,38 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import client from './DavClient.js'
+
+import type { Response } from 'webdav'
+
+/**
+ * Mark comments older than the date timestamp as read
+ *
+ * @param resourceType the resource type
+ * @param resourceId the resource ID
+ * @param date the date object
+ */
+export const markCommentsAsRead = (
+ resourceType: string,
+ resourceId: number,
+ date: Date,
+): Promise<Response> => {
+ const resourcePath = ['', resourceType, resourceId].join('/')
+ const readMarker = date.toUTCString()
+
+ return client.customRequest(resourcePath, {
+ method: 'PROPPATCH',
+ data: `<?xml version="1.0"?>
+ <d:propertyupdate
+ xmlns:d="DAV:"
+ xmlns:oc="http://owncloud.org/ns">
+ <d:set>
+ <d:prop>
+ <oc:readMarker>${readMarker}</oc:readMarker>
+ </d:prop>
+ </d:set>
+ </d:propertyupdate>`,
+ })
+}
diff --git a/apps/comments/src/store/deletedCommentLimbo.js b/apps/comments/src/store/deletedCommentLimbo.js
new file mode 100644
index 00000000000..3e511addebb
--- /dev/null
+++ b/apps/comments/src/store/deletedCommentLimbo.js
@@ -0,0 +1,28 @@
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { defineStore } from 'pinia'
+
+export const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {
+ state: () => ({
+ idsInLimbo: [],
+ }),
+ actions: {
+ addId(id) {
+ this.idsInLimbo.push(id)
+ },
+
+ removeId(id) {
+ const index = this.idsInLimbo.indexOf(id)
+ if (index > -1) {
+ this.idsInLimbo.splice(index, 1)
+ }
+ },
+
+ checkForId(id) {
+ this.idsInLimbo.includes(id)
+ },
+ },
+})
diff --git a/apps/comments/src/utils/cancelableRequest.js b/apps/comments/src/utils/cancelableRequest.js
new file mode 100644
index 00000000000..c2d380c80f9
--- /dev/null
+++ b/apps/comments/src/utils/cancelableRequest.js
@@ -0,0 +1,36 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+/**
+ * Creates a cancelable axios 'request object'.
+ *
+ * @param {Function} request the axios promise request
+ * @return {object}
+ */
+const cancelableRequest = function(request) {
+ const controller = new AbortController()
+ const signal = controller.signal
+
+ /**
+ * Execute the request
+ *
+ * @param {string} url the url to send the request to
+ * @param {object} [options] optional config for the request
+ */
+ const fetch = async function(url, options) {
+ const response = await request(
+ url,
+ Object.assign({ signal }, options),
+ )
+ return response
+ }
+
+ return {
+ request: fetch,
+ abort: () => controller.abort(),
+ }
+}
+
+export default cancelableRequest
diff --git a/apps/comments/src/utils/davUtils.js b/apps/comments/src/utils/davUtils.js
new file mode 100644
index 00000000000..33efc8e7d10
--- /dev/null
+++ b/apps/comments/src/utils/davUtils.js
@@ -0,0 +1,12 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { generateRemoteUrl } from '@nextcloud/router'
+
+const getRootPath = function() {
+ return generateRemoteUrl('dav/comments')
+}
+
+export { getRootPath }
diff --git a/apps/comments/src/utils/decodeHtmlEntities.js b/apps/comments/src/utils/decodeHtmlEntities.js
new file mode 100644
index 00000000000..4c492954256
--- /dev/null
+++ b/apps/comments/src/utils/decodeHtmlEntities.js
@@ -0,0 +1,17 @@
+/**
+ * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+/**
+ * @param {any} value -
+ * @param {any} passes -
+ */
+export function decodeHtmlEntities(value, passes = 1) {
+ const parser = new DOMParser()
+ let decoded = value
+ for (let i = 0; i < passes; i++) {
+ decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent
+ }
+ return decoded
+}
diff --git a/apps/comments/src/views/ActivityCommentAction.vue b/apps/comments/src/views/ActivityCommentAction.vue
new file mode 100644
index 00000000000..f9a9a97796f
--- /dev/null
+++ b/apps/comments/src/views/ActivityCommentAction.vue
@@ -0,0 +1,54 @@
+<!--
+ - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <Comment v-bind="editorData"
+ :auto-complete="autoComplete"
+ :resource-type="resourceType"
+ :editor="true"
+ :user-data="userData"
+ :resource-id="resourceId"
+ class="comments-action"
+ @new="onNewComment" />
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue'
+import Comment from '../components/Comment.vue'
+import CommentView from '../mixins/CommentView.js'
+import logger from '../logger'
+import { showError } from '@nextcloud/dialogs'
+import { translate as t } from '@nextcloud/l10n'
+
+export default defineComponent({
+ components: {
+ Comment,
+ },
+ mixins: [CommentView],
+ props: {
+ reloadCallback: {
+ type: Function,
+ required: true,
+ },
+ },
+ methods: {
+ onNewComment() {
+ try {
+ // just force reload
+ this.reloadCallback()
+ } catch (e) {
+ showError(t('comments', 'Could not reload comments'))
+ logger.debug(e)
+ }
+ },
+ },
+})
+</script>
+
+<style scoped>
+.comments-action {
+ padding: 0;
+}
+</style>
diff --git a/apps/comments/src/views/ActivityCommentEntry.vue b/apps/comments/src/views/ActivityCommentEntry.vue
new file mode 100644
index 00000000000..bbfe530b2e3
--- /dev/null
+++ b/apps/comments/src/views/ActivityCommentEntry.vue
@@ -0,0 +1,71 @@
+<!--
+ - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <Comment ref="comment"
+ tag="li"
+ v-bind="comment.props"
+ :auto-complete="autoComplete"
+ :resource-type="resourceType"
+ :message="commentMessage"
+ :resource-id="resourceId"
+ :user-data="genMentionsData(comment.props.mentions)"
+ class="comments-activity"
+ @delete="reloadCallback()" />
+</template>
+
+<script lang="ts">
+import type { PropType } from 'vue'
+import { translate as t } from '@nextcloud/l10n'
+
+import Comment from '../components/Comment.vue'
+import CommentView from '../mixins/CommentView'
+
+export default {
+ name: 'ActivityCommentEntry',
+
+ components: {
+ Comment,
+ },
+
+ mixins: [CommentView],
+ props: {
+ comment: {
+ type: Object,
+ required: true,
+ },
+ reloadCallback: {
+ type: Function as PropType<() => void>,
+ required: true,
+ },
+ },
+
+ data() {
+ return {
+ commentMessage: '',
+ }
+ },
+
+ watch: {
+ comment() {
+ this.commentMessage = this.comment.props.message
+ },
+ },
+
+ mounted() {
+ this.commentMessage = this.comment.props.message
+ },
+
+ methods: {
+ t,
+ },
+}
+</script>
+
+<style scoped>
+.comments-activity {
+ padding: 0;
+}
+</style>
diff --git a/apps/comments/src/views/Comments.vue b/apps/comments/src/views/Comments.vue
new file mode 100644
index 00000000000..657af888a12
--- /dev/null
+++ b/apps/comments/src/views/Comments.vue
@@ -0,0 +1,279 @@
+<!--
+ - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ - SPDX-License-Identifier: AGPL-3.0-or-later
+-->
+
+<template>
+ <div v-element-visibility="onVisibilityChange"
+ class="comments"
+ :class="{ 'icon-loading': isFirstLoading }">
+ <!-- Editor -->
+ <Comment v-bind="editorData"
+ :auto-complete="autoComplete"
+ :resource-type="resourceType"
+ :editor="true"
+ :user-data="userData"
+ :resource-id="currentResourceId"
+ class="comments__writer"
+ @new="onNewComment" />
+
+ <template v-if="!isFirstLoading">
+ <NcEmptyContent v-if="!hasComments && done"
+ class="comments__empty"
+ :name="t('comments', 'No comments yet, start the conversation!')">
+ <template #icon>
+ <IconMessageReplyTextOutline />
+ </template>
+ </NcEmptyContent>
+ <ul v-else>
+ <!-- Comments -->
+ <Comment v-for="comment in comments"
+ :key="comment.props.id"
+ tag="li"
+ v-bind="comment.props"
+ :auto-complete="autoComplete"
+ :resource-type="resourceType"
+ :message.sync="comment.props.message"
+ :resource-id="currentResourceId"
+ :user-data="genMentionsData(comment.props.mentions)"
+ class="comments__list"
+ @delete="onDelete" />
+ </ul>
+
+ <!-- Loading more message -->
+ <div v-if="loading && !isFirstLoading" class="comments__info icon-loading" />
+
+ <div v-else-if="hasComments && done" class="comments__info">
+ {{ t('comments', 'No more messages') }}
+ </div>
+
+ <!-- Error message -->
+ <template v-else-if="error">
+ <NcEmptyContent class="comments__error" :name="error">
+ <template #icon>
+ <IconAlertCircleOutline />
+ </template>
+ </NcEmptyContent>
+ <NcButton class="comments__retry" @click="getComments">
+ <template #icon>
+ <IconRefresh />
+ </template>
+ {{ t('comments', 'Retry') }}
+ </NcButton>
+ </template>
+ </template>
+ </div>
+</template>
+
+<script>
+import { showError } from '@nextcloud/dialogs'
+import { translate as t } from '@nextcloud/l10n'
+import { vElementVisibility as elementVisibility } from '@vueuse/components'
+
+import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'
+import NcButton from '@nextcloud/vue/components/NcButton'
+import IconRefresh from 'vue-material-design-icons/Refresh.vue'
+import IconMessageReplyTextOutline from 'vue-material-design-icons/MessageReplyTextOutline.vue'
+import IconAlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue'
+
+import Comment from '../components/Comment.vue'
+import CommentView from '../mixins/CommentView'
+import cancelableRequest from '../utils/cancelableRequest.js'
+import { getComments, DEFAULT_LIMIT } from '../services/GetComments.ts'
+import { markCommentsAsRead } from '../services/ReadComments.ts'
+
+export default {
+ name: 'Comments',
+
+ components: {
+ Comment,
+ NcEmptyContent,
+ NcButton,
+ IconRefresh,
+ IconMessageReplyTextOutline,
+ IconAlertCircleOutline,
+ },
+
+ directives: {
+ elementVisibility,
+ },
+
+ mixins: [CommentView],
+
+ data() {
+ return {
+ error: '',
+ loading: false,
+ done: false,
+
+ currentResourceId: this.resourceId,
+ offset: 0,
+ comments: [],
+
+ cancelRequest: () => {},
+
+ Comment,
+ userData: {},
+ }
+ },
+
+ computed: {
+ hasComments() {
+ return this.comments.length > 0
+ },
+ isFirstLoading() {
+ return this.loading && this.offset === 0
+ },
+ },
+
+ watch: {
+ resourceId() {
+ this.currentResourceId = this.resourceId
+ },
+ },
+
+ methods: {
+ t,
+
+ async onVisibilityChange(isVisible) {
+ if (isVisible) {
+ try {
+ await markCommentsAsRead(this.resourceType, this.currentResourceId, new Date())
+ } catch (e) {
+ showError(e.message || t('comments', 'Failed to mark comments as read'))
+ }
+ }
+ },
+
+ /**
+ * Update current resourceId and fetch new data
+ *
+ * @param {number} resourceId the current resourceId (fileId...)
+ */
+ async update(resourceId) {
+ this.currentResourceId = resourceId
+ this.resetState()
+ this.getComments()
+ },
+
+ /**
+ * Ran when the bottom of the tab is reached
+ */
+ onScrollBottomReached() {
+ /**
+ * Do not fetch more if we:
+ * - are showing an error
+ * - already fetched everything
+ * - are currently loading
+ */
+ if (this.error || this.done || this.loading) {
+ return
+ }
+ this.getComments()
+ },
+
+ /**
+ * Get the existing shares infos
+ */
+ async getComments() {
+ // Cancel any ongoing request
+ this.cancelRequest('cancel')
+
+ try {
+ this.loading = true
+ this.error = ''
+
+ // Init cancellable request
+ const { request, abort } = cancelableRequest(getComments)
+ this.cancelRequest = abort
+
+ // Fetch comments
+ const { data: comments } = await request({
+ resourceType: this.resourceType,
+ resourceId: this.currentResourceId,
+ }, { offset: this.offset }) || { data: [] }
+
+ this.logger.debug(`Processed ${comments.length} comments`, { comments })
+
+ // We received less than the requested amount,
+ // we're done fetching comments
+ if (comments.length < DEFAULT_LIMIT) {
+ this.done = true
+ }
+
+ // Insert results
+ this.comments.push(...comments)
+
+ // Increase offset for next fetch
+ this.offset += DEFAULT_LIMIT
+ } catch (error) {
+ if (error.message === 'cancel') {
+ return
+ }
+ this.error = t('comments', 'Unable to load the comments list')
+ console.error('Error loading the comments list', error)
+ } finally {
+ this.loading = false
+ }
+ },
+
+ /**
+ * Add newly created comment to the list
+ *
+ * @param {object} comment the new comment
+ */
+ onNewComment(comment) {
+ this.comments.unshift(comment)
+ },
+
+ /**
+ * Remove deleted comment from the list
+ *
+ * @param {number} id the deleted comment
+ */
+ onDelete(id) {
+ const index = this.comments.findIndex(comment => comment.props.id === id)
+ if (index > -1) {
+ this.comments.splice(index, 1)
+ } else {
+ console.error('Could not find the deleted comment in the list', id)
+ }
+ },
+
+ /**
+ * Reset the current view to its default state
+ */
+ resetState() {
+ this.error = ''
+ this.loading = false
+ this.done = false
+ this.offset = 0
+ this.comments = []
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.comments {
+ min-height: 100%;
+ display: flex;
+ flex-direction: column;
+
+ &__empty,
+ &__error {
+ flex: 1 0;
+ }
+
+ &__retry {
+ margin: 0 auto;
+ }
+
+ &__info {
+ height: 60px;
+ color: var(--color-text-maxcontrast);
+ text-align: center;
+ line-height: 60px;
+ }
+}
+</style>
diff --git a/apps/comments/tests/Unit/Activity/ListenerTest.php b/apps/comments/tests/Unit/Activity/ListenerTest.php
new file mode 100644
index 00000000000..675a28a16b1
--- /dev/null
+++ b/apps/comments/tests/Unit/Activity/ListenerTest.php
@@ -0,0 +1,159 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\Comments\Tests\Unit\Activity;
+
+use OCA\Comments\Activity\Listener;
+use OCP\Activity\IEvent;
+use OCP\Activity\IManager;
+use OCP\App\IAppManager;
+use OCP\Comments\CommentsEvent;
+use OCP\Comments\IComment;
+use OCP\Files\Config\ICachedMountFileInfo;
+use OCP\Files\Config\IMountProviderCollection;
+use OCP\Files\Config\IUserMountCache;
+use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
+use OCP\Files\Node;
+use OCP\IUser;
+use OCP\IUserSession;
+use OCP\Share\IShareHelper;
+use PHPUnit\Framework\MockObject\MockObject;
+use Test\TestCase;
+
+class ListenerTest extends TestCase {
+ protected IManager&MockObject $activityManager;
+ protected IUserSession&MockObject $session;
+ protected IAppManager&MockObject $appManager;
+ protected IMountProviderCollection&MockObject $mountProviderCollection;
+ protected IRootFolder&MockObject $rootFolder;
+ protected IShareHelper&MockObject $shareHelper;
+ protected Listener $listener;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->activityManager = $this->createMock(IManager::class);
+ $this->session = $this->createMock(IUserSession::class);
+ $this->appManager = $this->createMock(IAppManager::class);
+ $this->mountProviderCollection = $this->createMock(IMountProviderCollection::class);
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->shareHelper = $this->createMock(IShareHelper::class);
+
+ $this->listener = new Listener(
+ $this->activityManager,
+ $this->session,
+ $this->appManager,
+ $this->mountProviderCollection,
+ $this->rootFolder,
+ $this->shareHelper
+ );
+ }
+
+ public function testCommentEvent(): void {
+ $this->appManager->expects($this->any())
+ ->method('isEnabledForAnyone')
+ ->with('activity')
+ ->willReturn(true);
+
+ $comment = $this->createMock(IComment::class);
+ $comment->expects($this->any())
+ ->method('getObjectType')
+ ->willReturn('files');
+
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
+ $event->expects($this->any())
+ ->method('getComment')
+ ->willReturn($comment);
+ $event->expects($this->any())
+ ->method('getEvent')
+ ->willReturn(CommentsEvent::EVENT_ADD);
+
+ /** @var IUser|MockObject $ownerUser */
+ $ownerUser = $this->createMock(IUser::class);
+ $ownerUser->expects($this->any())
+ ->method('getUID')
+ ->willReturn('937393');
+
+ /** @var MockObject $mount */
+ $mount = $this->createMock(ICachedMountFileInfo::class);
+ $mount->expects($this->any())
+ ->method('getUser')
+ ->willReturn($ownerUser); // perhaps not the right user, but does not matter in this scenario
+
+ $mounts = [ $mount, $mount ]; // to make sure duplicates are dealt with
+
+ $userMountCache = $this->createMock(IUserMountCache::class);
+ $userMountCache->expects($this->any())
+ ->method('getMountsForFileId')
+ ->willReturn($mounts);
+
+ $this->mountProviderCollection->expects($this->any())
+ ->method('getMountCache')
+ ->willReturn($userMountCache);
+
+ $node = $this->createMock(Node::class);
+ $nodes = [ $node ];
+
+ $ownerFolder = $this->createMock(Folder::class);
+ $ownerFolder->expects($this->any())
+ ->method('getById')
+ ->willReturn($nodes);
+
+ $this->rootFolder->expects($this->any())
+ ->method('getUserFolder')
+ ->willReturn($ownerFolder);
+
+ $al = [ 'users' => [
+ '873304' => 'i/got/it/here',
+ '254342' => 'there/i/have/it',
+ 'sandra' => 'and/here/i/placed/it'
+ ]];
+ $this->shareHelper->expects($this->any())
+ ->method('getPathsForAccessList')
+ ->willReturn($al);
+
+ $this->session->expects($this->any())
+ ->method('getUser')
+ ->willReturn($ownerUser);
+
+ /** @var MockObject $activity */
+ $activity = $this->createMock(IEvent::class);
+ $activity->expects($this->exactly(count($al['users'])))
+ ->method('setAffectedUser');
+ $activity->expects($this->once())
+ ->method('setApp')
+ ->with('comments')
+ ->willReturnSelf();
+ $activity->expects($this->once())
+ ->method('setType')
+ ->with('comments')
+ ->willReturnSelf();
+ $activity->expects($this->once())
+ ->method('setAuthor')
+ ->with($ownerUser->getUID())
+ ->willReturnSelf();
+ $activity->expects($this->once())
+ ->method('setObject')
+ ->with('files', $this->anything())
+ ->willReturnSelf();
+ $activity->expects($this->once())
+ ->method('setMessage')
+ ->with('add_comment_message', $this->anything())
+ ->willReturnSelf();
+
+ $this->activityManager->expects($this->once())
+ ->method('generateEvent')
+ ->willReturn($activity);
+ $this->activityManager->expects($this->exactly(count($al['users'])))
+ ->method('publish');
+
+ $this->listener->commentEvent($event);
+ }
+}
diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
index 6ff3bc54b0d..119db5333b5 100644
--- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
+++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
@@ -1,30 +1,24 @@
<?php
+
+declare(strict_types=1);
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Tests\Unit\AppInfo;
+use OCA\Comments\Activity\Filter;
+use OCA\Comments\Activity\Listener;
+use OCA\Comments\Activity\Provider;
+use OCA\Comments\Activity\Setting;
use OCA\Comments\AppInfo\Application;
+use OCA\Comments\Controller\NotificationsController;
use OCA\Comments\Notification\Notifier;
+use OCP\IUserManager;
+use OCP\IUserSession;
+use OCP\Server;
use Test\TestCase;
/**
@@ -35,36 +29,33 @@ use Test\TestCase;
* @package OCA\Comments\Tests\Unit\AppInfo
*/
class ApplicationTest extends TestCase {
- protected function setUp() {
+ protected function setUp(): void {
parent::setUp();
- \OC::$server->getUserManager()->createUser('dummy', '456');
- \OC::$server->getUserSession()->setUser(\OC::$server->getUserManager()->get('dummy'));
+ Server::get(IUserManager::class)->createUser('dummy', '456');
+ Server::get(IUserSession::class)->setUser(Server::get(IUserManager::class)->get('dummy'));
}
- protected function tearDown() {
- \OC::$server->getUserManager()->get('dummy')->delete();
+ protected function tearDown(): void {
+ Server::get(IUserManager::class)->get('dummy')->delete();
parent::tearDown();
}
- public function test() {
+ public function test(): void {
$app = new Application();
$c = $app->getContainer();
- // assert service instances in the container are properly setup
- $s = $c->query('NotificationsController');
- $this->assertInstanceOf('OCA\Comments\Controller\Notifications', $s);
-
$services = [
- 'OCA\Comments\Activity\Filter',
- 'OCA\Comments\Activity\Listener',
- 'OCA\Comments\Activity\Provider',
- 'OCA\Comments\Activity\Setting',
- 'OCA\Comments\Notification\Listener',
+ NotificationsController::class,
+ Filter::class,
+ Listener::class,
+ Provider::class,
+ Setting::class,
+ \OCA\Comments\Notification\Listener::class,
Notifier::class,
];
- foreach($services as $service) {
- $s = $c->query($service);
+ foreach ($services as $service) {
+ $s = $c->get($service);
$this->assertInstanceOf($service, $s);
}
}
diff --git a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php
index 0cc3e3d4b61..4d3392a562d 100644
--- a/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php
+++ b/apps/comments/tests/Unit/Collaboration/CommentersSorterTest.php
@@ -1,42 +1,22 @@
<?php
+
/**
- * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Tests\Unit\Collaboration;
-
use OCA\Comments\Collaboration\CommentersSorter;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
-use OCP\IConfig;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class CommentersSorterTest extends TestCase {
- /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $commentsManager;
- /** @var CommentersSorter */
- protected $sorter;
+ protected ICommentsManager&MockObject $commentsManager;
+ protected CommentersSorter $sorter;
- public function setUp() {
+ protected function setUp(): void {
parent::setUp();
$this->commentsManager = $this->createMock(ICommentsManager::class);
@@ -45,14 +25,14 @@ class CommentersSorterTest extends TestCase {
}
/**
- * @dataProvider sortDataProvider
* @param $data
*/
- public function testSort($data) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('sortDataProvider')]
+ public function testSort($data): void {
$commentMocks = [];
- foreach($data['actors'] as $actorType => $actors) {
+ foreach ($data['actors'] as $actorType => $actors) {
foreach ($actors as $actorId => $noOfComments) {
- for($i=0;$i<$noOfComments;$i++) {
+ for ($i = 0;$i < $noOfComments;$i++) {
$mock = $this->createMock(IComment::class);
$mock->expects($this->atLeastOnce())
->method('getActorType')
@@ -75,38 +55,36 @@ class CommentersSorterTest extends TestCase {
$this->assertEquals($data['expected'], $workArray);
}
- public function sortDataProvider() {
+ public static function sortDataProvider(): array {
return [[
[
#1 – sort properly and otherwise keep existing order
'actors' => ['users' => ['celia' => 3, 'darius' => 7, 'faruk' => 5, 'gail' => 5], 'bots' => ['r2-d2' => 8]],
'input' => [
- 'users' =>
- [
- ['value' => ['shareWith' => 'alice']],
- ['value' => ['shareWith' => 'bob']],
- ['value' => ['shareWith' => 'celia']],
- ['value' => ['shareWith' => 'darius']],
- ['value' => ['shareWith' => 'elena']],
- ['value' => ['shareWith' => 'faruk']],
- ['value' => ['shareWith' => 'gail']],
- ],
+ 'users' => [
+ ['value' => ['shareWith' => 'alice']],
+ ['value' => ['shareWith' => 'bob']],
+ ['value' => ['shareWith' => 'celia']],
+ ['value' => ['shareWith' => 'darius']],
+ ['value' => ['shareWith' => 'elena']],
+ ['value' => ['shareWith' => 'faruk']],
+ ['value' => ['shareWith' => 'gail']],
+ ],
'bots' => [
['value' => ['shareWith' => 'c-3po']],
['value' => ['shareWith' => 'r2-d2']],
]
],
'expected' => [
- 'users' =>
- [
- ['value' => ['shareWith' => 'darius']],
- ['value' => ['shareWith' => 'faruk']],
- ['value' => ['shareWith' => 'gail']],
- ['value' => ['shareWith' => 'celia']],
- ['value' => ['shareWith' => 'alice']],
- ['value' => ['shareWith' => 'bob']],
- ['value' => ['shareWith' => 'elena']],
- ],
+ 'users' => [
+ ['value' => ['shareWith' => 'darius']],
+ ['value' => ['shareWith' => 'faruk']],
+ ['value' => ['shareWith' => 'gail']],
+ ['value' => ['shareWith' => 'celia']],
+ ['value' => ['shareWith' => 'alice']],
+ ['value' => ['shareWith' => 'bob']],
+ ['value' => ['shareWith' => 'elena']],
+ ],
'bots' => [
['value' => ['shareWith' => 'r2-d2']],
['value' => ['shareWith' => 'c-3po']],
@@ -117,32 +95,30 @@ class CommentersSorterTest extends TestCase {
#2 – no commentors, input equals output
'actors' => [],
'input' => [
- 'users' =>
- [
- ['value' => ['shareWith' => 'alice']],
- ['value' => ['shareWith' => 'bob']],
- ['value' => ['shareWith' => 'celia']],
- ['value' => ['shareWith' => 'darius']],
- ['value' => ['shareWith' => 'elena']],
- ['value' => ['shareWith' => 'faruk']],
- ['value' => ['shareWith' => 'gail']],
- ],
+ 'users' => [
+ ['value' => ['shareWith' => 'alice']],
+ ['value' => ['shareWith' => 'bob']],
+ ['value' => ['shareWith' => 'celia']],
+ ['value' => ['shareWith' => 'darius']],
+ ['value' => ['shareWith' => 'elena']],
+ ['value' => ['shareWith' => 'faruk']],
+ ['value' => ['shareWith' => 'gail']],
+ ],
'bots' => [
['value' => ['shareWith' => 'c-3po']],
['value' => ['shareWith' => 'r2-d2']],
]
],
'expected' => [
- 'users' =>
- [
- ['value' => ['shareWith' => 'alice']],
- ['value' => ['shareWith' => 'bob']],
- ['value' => ['shareWith' => 'celia']],
- ['value' => ['shareWith' => 'darius']],
- ['value' => ['shareWith' => 'elena']],
- ['value' => ['shareWith' => 'faruk']],
- ['value' => ['shareWith' => 'gail']],
- ],
+ 'users' => [
+ ['value' => ['shareWith' => 'alice']],
+ ['value' => ['shareWith' => 'bob']],
+ ['value' => ['shareWith' => 'celia']],
+ ['value' => ['shareWith' => 'darius']],
+ ['value' => ['shareWith' => 'elena']],
+ ['value' => ['shareWith' => 'faruk']],
+ ['value' => ['shareWith' => 'gail']],
+ ],
'bots' => [
['value' => ['shareWith' => 'c-3po']],
['value' => ['shareWith' => 'r2-d2']],
diff --git a/apps/comments/tests/Unit/Controller/NotificationsTest.php b/apps/comments/tests/Unit/Controller/NotificationsTest.php
index eb29947342b..04490ca63e8 100644
--- a/apps/comments/tests/Unit/Controller/NotificationsTest.php
+++ b/apps/comments/tests/Unit/Controller/NotificationsTest.php
@@ -1,33 +1,22 @@
<?php
+
+declare(strict_types=1);
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Tests\Unit\Controller;
-use OCA\Comments\Controller\Notifications;
+use OCA\Comments\Controller\NotificationsController;
+use OCP\AppFramework\Http\NotFoundResponse;
+use OCP\AppFramework\Http\RedirectResponse;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IRequest;
use OCP\IURLGenerator;
@@ -35,91 +24,134 @@ use OCP\IUser;
use OCP\IUserSession;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class NotificationsTest extends TestCase {
- /** @var \OCA\Comments\Controller\Notifications */
- protected $notificationsController;
-
- /** @var \OCP\Comments\ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $commentsManager;
-
- /** @var \OCP\Files\Folder|\PHPUnit_Framework_MockObject_MockObject */
- protected $folder;
-
- /** @var \OCP\IUserSession|\PHPUnit_Framework_MockObject_MockObject */
- protected $session;
-
- /** @var \OCP\Notification\IManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $notificationManager;
-
- protected function setUp() {
+ protected ICommentsManager&MockObject $commentsManager;
+ protected IRootFolder&MockObject $rootFolder;
+ protected IUserSession&MockObject $session;
+ protected IManager&MockObject $notificationManager;
+ protected IURLGenerator&MockObject $urlGenerator;
+ protected NotificationsController $notificationsController;
+
+ protected function setUp(): void {
parent::setUp();
- $this->commentsManager = $this->getMockBuilder(ICommentsManager::class)->getMock();
- $this->folder = $this->getMockBuilder(Folder::class)->getMock();
- $this->session = $this->getMockBuilder(IUserSession::class)->getMock();
- $this->notificationManager = $this->getMockBuilder(IManager::class)->getMock();
+ $this->commentsManager = $this->createMock(ICommentsManager::class);
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->session = $this->createMock(IUserSession::class);
+ $this->notificationManager = $this->createMock(IManager::class);
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
- $this->notificationsController = new Notifications(
+ $this->notificationsController = new NotificationsController(
'comments',
- $this->getMockBuilder(IRequest::class)->getMock(),
+ $this->createMock(IRequest::class),
$this->commentsManager,
- $this->folder,
- $this->getMockBuilder(IURLGenerator::class)->getMock(),
+ $this->rootFolder,
+ $this->urlGenerator,
$this->notificationManager,
$this->session
);
}
-
- public function testViewSuccess() {
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+
+ public function testViewGuestRedirect(): void {
+ $this->commentsManager->expects($this->never())
+ ->method('get');
+
+ $this->rootFolder->expects($this->never())
+ ->method('getUserFolder');
+
+ $this->session->expects($this->once())
+ ->method('getUser')
+ ->willReturn(null);
+
+ $this->notificationManager->expects($this->never())
+ ->method('createNotification');
+ $this->notificationManager->expects($this->never())
+ ->method('markProcessed');
+
+ $this->urlGenerator->expects($this->exactly(2))
+ ->method('linkToRoute')
+ ->willReturnMap([
+ ['comments.Notifications.view', ['id' => '42'], 'link-to-comment'],
+ ['core.login.showLoginForm', ['redirect_url' => 'link-to-comment'], 'link-to-login'],
+ ]);
+
+ /** @var RedirectResponse $response */
+ $response = $this->notificationsController->view('42');
+ $this->assertInstanceOf(RedirectResponse::class, $response);
+ $this->assertSame('link-to-login', $response->getRedirectURL());
+ }
+
+ public function testViewSuccess(): void {
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
- ->will($this->returnValue('files'));
+ ->willReturn('files');
+ $comment->expects($this->any())
+ ->method('getId')
+ ->willReturn('1234');
$this->commentsManager->expects($this->any())
->method('get')
->with('42')
- ->will($this->returnValue($comment));
+ ->willReturn($comment);
+
+ $file = $this->createMock(Node::class);
+ $folder = $this->createMock(Folder::class);
+ $user = $this->createMock(IUser::class);
- $file = $this->getMockBuilder(Node::class)->getMock();
+ $this->rootFolder->expects($this->once())
+ ->method('getUserFolder')
+ ->willReturn($folder);
- $this->folder->expects($this->once())
+ $folder->expects($this->once())
->method('getById')
- ->will($this->returnValue([$file]));
+ ->willReturn([$file]);
$this->session->expects($this->once())
->method('getUser')
- ->will($this->returnValue($this->getMockBuilder(IUser::class)->getMock()));
+ ->willReturn($user);
- $notification = $this->getMockBuilder(INotification::class)->getMock();
+ $user->expects($this->any())
+ ->method('getUID')
+ ->willReturn('user');
+
+ $notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->once())
->method('createNotification')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->once())
->method('markProcessed')
->with($notification);
$response = $this->notificationsController->view('42');
- $this->assertInstanceOf('\OCP\AppFramework\Http\RedirectResponse', $response);
+ $this->assertInstanceOf(RedirectResponse::class, $response);
}
- public function testViewInvalidComment() {
+ public function testViewInvalidComment(): void {
$this->commentsManager->expects($this->any())
->method('get')
->with('42')
- ->will($this->throwException(new NotFoundException()));
+ ->willThrowException(new NotFoundException());
- $this->folder->expects($this->never())
- ->method('getById');
+ $this->rootFolder->expects($this->never())
+ ->method('getUserFolder');
- $this->session->expects($this->never())
- ->method('getUser');
+ $user = $this->createMock(IUser::class);
+
+ $this->session->expects($this->once())
+ ->method('getUser')
+ ->willReturn($user);
+
+ $user->expects($this->any())
+ ->method('getUID')
+ ->willReturn('user');
$this->notificationManager->expects($this->never())
->method('createNotification');
@@ -127,41 +159,56 @@ class NotificationsTest extends TestCase {
->method('markProcessed');
$response = $this->notificationsController->view('42');
- $this->assertInstanceOf('\OCP\AppFramework\Http\NotFoundResponse', $response);
+ $this->assertInstanceOf(NotFoundResponse::class, $response);
}
- public function testViewNoFile() {
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ public function testViewNoFile(): void {
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
- ->will($this->returnValue('files'));
+ ->willReturn('files');
+ $comment->expects($this->any())
+ ->method('getId')
+ ->willReturn('1234');
$this->commentsManager->expects($this->any())
->method('get')
->with('42')
- ->will($this->returnValue($comment));
+ ->willReturn($comment);
- $this->folder->expects($this->once())
+ $folder = $this->createMock(Folder::class);
+
+ $this->rootFolder->expects($this->once())
+ ->method('getUserFolder')
+ ->willReturn($folder);
+
+ $folder->expects($this->once())
->method('getById')
- ->will($this->returnValue([]));
+ ->willReturn([]);
+
+ $user = $this->createMock(IUser::class);
$this->session->expects($this->once())
->method('getUser')
- ->will($this->returnValue($this->getMockBuilder(IUser::class)->getMock()));
+ ->willReturn($user);
+
+ $user->expects($this->any())
+ ->method('getUID')
+ ->willReturn('user');
- $notification = $this->getMockBuilder(INotification::class)->getMock();
+ $notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->once())
->method('createNotification')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->once())
->method('markProcessed')
->with($notification);
$response = $this->notificationsController->view('42');
- $this->assertInstanceOf('\OCP\AppFramework\Http\NotFoundResponse', $response);
+ $this->assertInstanceOf(NotFoundResponse::class, $response);
}
}
diff --git a/apps/comments/tests/Unit/EventHandlerTest.php b/apps/comments/tests/Unit/EventHandlerTest.php
index bb714993f7a..9d26f828d70 100644
--- a/apps/comments/tests/Unit/EventHandlerTest.php
+++ b/apps/comments/tests/Unit/EventHandlerTest.php
@@ -1,70 +1,44 @@
<?php
+
+declare(strict_types=1);
+
/**
- * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Tests\Unit\Notification;
-use OCA\Comments\EventHandler;
-use OCP\Comments\CommentsEvent;
-use OCP\Comments\IComment;
use OCA\Comments\Activity\Listener as ActivityListener;
+use OCA\Comments\Listener\CommentsEventListener;
use OCA\Comments\Notification\Listener as NotificationListener;
+use OCP\Comments\CommentsEvent;
+use OCP\Comments\IComment;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class EventHandlerTest extends TestCase {
- /** @var EventHandler */
- protected $eventHandler;
-
- /** @var ActivityListener|\PHPUnit_Framework_MockObject_MockObject */
- protected $activityListener;
-
- /** @var NotificationListener|\PHPUnit_Framework_MockObject_MockObject */
- protected $notificationListener;
+ protected ActivityListener&MockObject $activityListener;
+ protected NotificationListener&MockObject $notificationListener;
+ protected CommentsEventListener $eventHandler;
- protected function setUp() {
+ protected function setUp(): void {
parent::setUp();
- $this->activityListener = $this->getMockBuilder(ActivityListener::class)
- ->disableOriginalConstructor()
- ->getMock();
+ $this->activityListener = $this->createMock(ActivityListener::class);
+ $this->notificationListener = $this->createMock(NotificationListener::class);
- $this->notificationListener = $this->getMockBuilder(NotificationListener::class)
- ->disableOriginalConstructor()
- ->getMock();
-
- $this->eventHandler = new EventHandler($this->activityListener, $this->notificationListener);
+ $this->eventHandler = new CommentsEventListener($this->activityListener, $this->notificationListener);
}
- public function testNotFiles() {
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ public function testNotFiles(): void {
+ /** @var IComment|MockObject $comment */
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->once())
->method('getObjectType')
->willReturn('smiles');
- /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */
- $event = $this->getMockBuilder(CommentsEvent::class)
- ->disableOriginalConstructor()
- ->getMock();
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
@@ -74,7 +48,7 @@ class EventHandlerTest extends TestCase {
$this->eventHandler->handle($event);
}
- public function handledProvider() {
+ public static function handledProvider(): array {
return [
[CommentsEvent::EVENT_DELETE],
[CommentsEvent::EVENT_UPDATE],
@@ -83,21 +57,16 @@ class EventHandlerTest extends TestCase {
];
}
- /**
- * @dataProvider handledProvider
- * @param string $eventType
- */
- public function testHandled($eventType) {
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ #[\PHPUnit\Framework\Attributes\DataProvider('handledProvider')]
+ public function testHandled(string $eventType): void {
+ /** @var IComment|MockObject $comment */
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->once())
->method('getObjectType')
->willReturn('files');
- /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */
- $event = $this->getMockBuilder(CommentsEvent::class)
- ->disableOriginalConstructor()
- ->getMock();
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
$event->expects($this->atLeastOnce())
->method('getComment')
->willReturn($comment);
@@ -115,5 +84,4 @@ class EventHandlerTest extends TestCase {
$this->eventHandler->handle($event);
}
-
}
diff --git a/apps/comments/tests/Unit/JSSettingsHelperTest.php b/apps/comments/tests/Unit/JSSettingsHelperTest.php
deleted file mode 100644
index ad2f34c7aab..00000000000
--- a/apps/comments/tests/Unit/JSSettingsHelperTest.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OCA\Comments\Tests\Unit;
-
-use OCA\Comments\JSSettingsHelper;
-use OCP\IConfig;
-use OCP\IServerContainer;
-use Test\TestCase;
-
-class JSSettingsHelperTest extends TestCase {
- /** @var IServerContainer|\PHPUnit_Framework_MockObject_MockObject */
- protected $c;
- /** @var JSSettingsHelper */
- protected $helper;
-
- public function setUp() {
- parent::setUp();
-
- $this->c = $this->createMock(IServerContainer::class);
-
- $this->helper = new JSSettingsHelper($this->c);
- }
-
- public function testExtend() {
- $config = $this->createMock(IConfig::class);
- $config->expects($this->once())
- ->method('getAppValue')
- ->with('comments', 'maxAutoCompleteResults')
- ->willReturn(13);
-
- $this->c->expects($this->once())
- ->method('getConfig')
- ->willReturn($config);
-
- $config = [
- 'oc_appconfig' => json_encode([
- 'anotherapp' => [
- 'foo' => 'bar',
- 'foobar' => true
- ]
- ])
- ];
-
- $this->helper->extend(['array' => &$config]);
-
- $appConfig = json_decode($config['oc_appconfig'], true);
- $this->assertTrue(isset($appConfig['comments']));
- $this->assertTrue(isset($appConfig['anotherapp']));
- $this->assertSame(2, count($appConfig['anotherapp']));
- $this->assertSame(13, $appConfig['comments']['maxAutoCompleteResults']);
- }
-}
diff --git a/apps/comments/tests/Unit/Notification/ListenerTest.php b/apps/comments/tests/Unit/Notification/ListenerTest.php
index d6f83262f30..356a26f23cd 100644
--- a/apps/comments/tests/Unit/Notification/ListenerTest.php
+++ b/apps/comments/tests/Unit/Notification/ListenerTest.php
@@ -1,27 +1,10 @@
<?php
+
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- *
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\Comments\Tests\Unit\Notification;
use OCA\Comments\Notification\Listener;
@@ -31,26 +14,20 @@ use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class ListenerTest extends TestCase {
- /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $notificationManager;
-
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $userManager;
-
- /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
- protected $urlGenerator;
-
- /** @var Listener */
- protected $listener;
+ protected IManager&MockObject $notificationManager;
+ protected IUserManager&MockObject $userManager;
+ protected IURLGenerator&MockObject $urlGenerator;
+ protected Listener $listener;
- protected function setUp() {
+ protected function setUp(): void {
parent::setUp();
- $this->notificationManager = $this->createMock(\OCP\Notification\IManager::class);
- $this->userManager = $this->createMock(\OCP\IUserManager::class);
+ $this->notificationManager = $this->createMock(IManager::class);
+ $this->userManager = $this->createMock(IUserManager::class);
$this->listener = new Listener(
$this->notificationManager,
@@ -58,7 +35,7 @@ class ListenerTest extends TestCase {
);
}
- public function eventProvider() {
+ public static function eventProvider(): array {
return [
[CommentsEvent::EVENT_ADD, 'notify'],
[CommentsEvent::EVENT_UPDATE, 'notify'],
@@ -68,19 +45,19 @@ class ListenerTest extends TestCase {
}
/**
- * @dataProvider eventProvider
* @param string $eventType
* @param string $notificationMethod
*/
- public function testEvaluate($eventType, $notificationMethod) {
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')]
+ public function testEvaluate($eventType, $notificationMethod): void {
+ /** @var IComment|MockObject $comment */
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
- ->will($this->returnValue('files'));
+ ->willReturn('files');
$comment->expects($this->any())
->method('getCreationDateTime')
- ->will($this->returnValue(new \DateTime()));
+ ->willReturn(new \DateTime());
$comment->expects($this->once())
->method('getMentions')
->willReturn([
@@ -91,75 +68,70 @@ class ListenerTest extends TestCase {
[ 'type' => 'user', 'id' => '23452-4333-54353-2342'],
[ 'type' => 'user', 'id' => 'yolo'],
]);
+ $comment->expects($this->atLeastOnce())
+ ->method('getId')
+ ->willReturn('1234');
- /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */
- $event = $this->getMockBuilder(CommentsEvent::class)
- ->disableOriginalConstructor()
- ->getMock();
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
- ->will($this->returnValue($comment));
+ ->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
- ->will($this->returnValue($eventType));
+ ->willReturn($eventType);
- /** @var INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
- $notification = $this->getMockBuilder(INotification::class)->getMock();
+ /** @var INotification|MockObject $notification */
+ $notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->exactly(6))
->method('setUser');
$this->notificationManager->expects($this->once())
->method('createNotification')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->exactly(6))
->method($notificationMethod)
->with($this->isInstanceOf('\OCP\Notification\INotification'));
$this->userManager->expects($this->exactly(6))
->method('userExists')
- ->withConsecutive(
- ['foobar'],
- ['barfoo'],
- ['foo@bar.com'],
- ['bar@foo.org@foobar.io'],
- ['23452-4333-54353-2342'],
- ['yolo']
- )
- ->will($this->returnValue(true));
+ ->willReturnMap([
+ ['foobar', true],
+ ['barfoo', true],
+ ['foo@bar.com', true],
+ ['bar@foo.org@foobar.io', true],
+ ['23452-4333-54353-2342', true],
+ ['yolo', true]
+ ]);
$this->listener->evaluate($event);
}
- /**
- * @dataProvider eventProvider
- * @param string $eventType
- */
- public function testEvaluateNoMentions($eventType) {
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ #[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')]
+ public function testEvaluateNoMentions(string $eventType): void {
+ /** @var IComment|MockObject $comment */
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
- ->will($this->returnValue('files'));
+ ->willReturn('files');
$comment->expects($this->any())
->method('getCreationDateTime')
- ->will($this->returnValue(new \DateTime()));
+ ->willReturn(new \DateTime());
$comment->expects($this->once())
->method('getMentions')
->willReturn([]);
- /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */
- $event = $this->getMockBuilder(CommentsEvent::class)
- ->disableOriginalConstructor()
- ->getMock();
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
- ->will($this->returnValue($comment));
+ ->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
- ->will($this->returnValue($eventType));
+ ->willReturn($eventType);
$this->notificationManager->expects($this->never())
->method('createNotification');
@@ -174,50 +146,49 @@ class ListenerTest extends TestCase {
$this->listener->evaluate($event);
}
- public function testEvaluateUserDoesNotExist() {
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject $comment */
- $comment = $this->getMockBuilder(IComment::class)->getMock();
+ public function testEvaluateUserDoesNotExist(): void {
+ /** @var IComment|MockObject $comment */
+ $comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
- ->will($this->returnValue('files'));
+ ->willReturn('files');
$comment->expects($this->any())
->method('getCreationDateTime')
- ->will($this->returnValue(new \DateTime()));
+ ->willReturn(new \DateTime());
$comment->expects($this->once())
->method('getMentions')
->willReturn([[ 'type' => 'user', 'id' => 'foobar']]);
+ $comment->expects($this->atLeastOnce())
+ ->method('getId')
+ ->willReturn('1234');
- /** @var CommentsEvent|\PHPUnit_Framework_MockObject_MockObject $event */
- $event = $this->getMockBuilder(CommentsEvent::class)
- ->disableOriginalConstructor()
- ->getMock();
+ /** @var CommentsEvent|MockObject $event */
+ $event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
- ->will($this->returnValue($comment));
+ ->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
- ->will($this->returnValue(CommentsEvent::EVENT_ADD));
+ ->willReturn(CommentsEvent::EVENT_ADD);
- /** @var INotification|\PHPUnit_Framework_MockObject_MockObject $notification */
- $notification = $this->getMockBuilder(INotification::class)->getMock();
+ /** @var INotification|MockObject $notification */
+ $notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->never())
->method('setUser');
$this->notificationManager->expects($this->once())
->method('createNotification')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$this->notificationManager->expects($this->never())
->method('notify');
$this->userManager->expects($this->once())
->method('userExists')
- ->withConsecutive(
- ['foobar']
- )
- ->will($this->returnValue(false));
+ ->with('foobar')
+ ->willReturn(false);
$this->listener->evaluate($event);
}
diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php
index 07dcbfdd849..37cad0b43df 100644
--- a/apps/comments/tests/Unit/Notification/NotifierTest.php
+++ b/apps/comments/tests/Unit/Notification/NotifierTest.php
@@ -1,27 +1,11 @@
<?php
+
+declare(strict_types=1);
+
/**
- * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de>
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
*/
-
namespace OCA\Comments\Tests\Unit\Notification;
use OCA\Comments\Notification\Notifier;
@@ -33,36 +17,27 @@ use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IL10N;
use OCP\IURLGenerator;
-use OCP\IUser;
use OCP\IUserManager;
use OCP\L10N\IFactory;
+use OCP\Notification\AlreadyProcessedException;
use OCP\Notification\INotification;
+use OCP\Notification\UnknownNotificationException;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class NotifierTest extends TestCase {
-
- /** @var Notifier */
- protected $notifier;
- /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
- protected $l10nFactory;
- /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
- protected $l;
- /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
- protected $folder;
- /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $commentsManager;
- /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
- protected $url;
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
- protected $userManager;
- /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */
- protected $notification;
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */
- protected $comment;
- /** @var string */
- protected $lc = 'tlh_KX';
-
- protected function setUp() {
+ protected IFactory&MockObject $l10nFactory;
+ protected IL10N&MockObject $l;
+ protected IRootFolder&MockObject $folder;
+ protected ICommentsManager&MockObject $commentsManager;
+ protected IURLGenerator&MockObject $url;
+ protected IUserManager&MockObject $userManager;
+ protected INotification&MockObject $notification;
+ protected IComment&MockObject $comment;
+ protected Notifier $notifier;
+ protected string $lc = 'tlh_KX';
+
+ protected function setUp(): void {
parent::setUp();
$this->l10nFactory = $this->createMock(IFactory::class);
@@ -82,31 +57,28 @@ class NotifierTest extends TestCase {
$this->l = $this->createMock(IL10N::class);
$this->l->expects($this->any())
->method('t')
- ->will($this->returnCallback(function ($text, $parameters = []) {
+ ->willReturnCallback(function ($text, $parameters = []) {
return vsprintf($text, $parameters);
- }));
+ });
$this->notification = $this->createMock(INotification::class);
$this->comment = $this->createMock(IComment::class);
}
- public function testPrepareSuccess() {
+ public function testPrepareSuccess(): void {
$fileName = 'Gre\'thor.odp';
$displayName = 'Huraga';
- $message = 'Huraga mentioned you in a comment on “Gre\'thor.odp”';
-
- /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('getDisplayName')
- ->willReturn($displayName);
- /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ /** @var Node&MockObject $node */
$node = $this->createMock(Node::class);
$node
->expects($this->atLeastOnce())
->method('getName')
->willReturn($fileName);
+ $node
+ ->expects($this->atLeastOnce())
+ ->method('getPath')
+ ->willReturn('/you/files/' . $fileName);
$userFolder = $this->createMock(Folder::class);
$this->folder->expects($this->once())
@@ -118,7 +90,7 @@ class NotifierTest extends TestCase {
->with('678')
->willReturn([$node]);
- $this->notification->expects($this->once())
+ $this->notification->expects($this->exactly(2))
->method('getUser')
->willReturn('you');
$this->notification
@@ -134,16 +106,22 @@ class NotifierTest extends TestCase {
->method('getSubjectParameters')
->willReturn(['files', '678']);
$this->notification
+ ->expects($this->never())
+ ->method('setParsedSubject');
+ $this->notification
->expects($this->once())
- ->method('setParsedSubject')
- ->with($message)
+ ->method('setRichSubject')
+ ->with('{user} mentioned you in a comment on "{file}"', $this->anything())
->willReturnSelf();
$this->notification
->expects($this->once())
- ->method('setRichSubject')
- ->with('{user} mentioned you in a comment on “{file}”', $this->anything())
+ ->method('setRichMessage')
+ ->with('Hi {mention-user1}!', ['mention-user1' => ['type' => 'user', 'id' => 'you', 'name' => 'Your name']])
->willReturnSelf();
$this->notification
+ ->expects($this->never())
+ ->method('setParsedMessage');
+ $this->notification
->expects($this->once())
->method('setIcon')
->with('absolute-image-path')
@@ -171,31 +149,52 @@ class NotifierTest extends TestCase {
->expects($this->any())
->method('getActorType')
->willReturn('users');
+ $this->comment
+ ->expects($this->any())
+ ->method('getMessage')
+ ->willReturn('Hi @you!');
+ $this->comment
+ ->expects($this->any())
+ ->method('getMentions')
+ ->willReturn([['type' => 'user', 'id' => 'you']]);
+ $this->comment->expects($this->atLeastOnce())
+ ->method('getId')
+ ->willReturn('1234');
$this->commentsManager
->expects($this->once())
->method('get')
->willReturn($this->comment);
+ $this->commentsManager
+ ->expects($this->once())
+ ->method('resolveDisplayName')
+ ->with('user', 'you')
+ ->willReturn('Your name');
$this->userManager
- ->expects($this->once())
- ->method('get')
- ->with('huraga')
- ->willReturn($user);
+ ->expects($this->exactly(2))
+ ->method('getDisplayName')
+ ->willReturnMap([
+ ['huraga', $displayName],
+ ['you', 'You'],
+ ]);
$this->notifier->prepare($this->notification, $this->lc);
}
- public function testPrepareSuccessDeletedUser() {
+ public function testPrepareSuccessDeletedUser(): void {
$fileName = 'Gre\'thor.odp';
- $message = 'You were mentioned on “Gre\'thor.odp”, in a comment by a user that has since been deleted';
- /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ /** @var Node|MockObject $node */
$node = $this->createMock(Node::class);
$node
->expects($this->atLeastOnce())
->method('getName')
->willReturn($fileName);
+ $node
+ ->expects($this->atLeastOnce())
+ ->method('getPath')
+ ->willReturn('/you/files/' . $fileName);
$userFolder = $this->createMock(Folder::class);
$this->folder->expects($this->once())
@@ -207,7 +206,7 @@ class NotifierTest extends TestCase {
->with('678')
->willReturn([$node]);
- $this->notification->expects($this->once())
+ $this->notification->expects($this->exactly(2))
->method('getUser')
->willReturn('you');
$this->notification
@@ -223,16 +222,22 @@ class NotifierTest extends TestCase {
->method('getSubjectParameters')
->willReturn(['files', '678']);
$this->notification
+ ->expects($this->never())
+ ->method('setParsedSubject');
+ $this->notification
->expects($this->once())
- ->method('setParsedSubject')
- ->with($message)
+ ->method('setRichSubject')
+ ->with('You were mentioned on "{file}", in a comment by an account that has since been deleted', $this->anything())
->willReturnSelf();
$this->notification
->expects($this->once())
- ->method('setRichSubject')
- ->with('You were mentioned on “{file}”, in a comment by a user that has since been deleted', $this->anything())
+ ->method('setRichMessage')
+ ->with('Hi {mention-user1}!', ['mention-user1' => ['type' => 'user', 'id' => 'you', 'name' => 'Your name']])
->willReturnSelf();
$this->notification
+ ->expects($this->never())
+ ->method('setParsedMessage');
+ $this->notification
->expects($this->once())
->method('setIcon')
->with('absolute-image-path')
@@ -260,23 +265,40 @@ class NotifierTest extends TestCase {
->expects($this->any())
->method('getActorType')
->willReturn(ICommentsManager::DELETED_USER);
+ $this->comment
+ ->expects($this->any())
+ ->method('getMessage')
+ ->willReturn('Hi @you!');
+ $this->comment
+ ->expects($this->any())
+ ->method('getMentions')
+ ->willReturn([['type' => 'user', 'id' => 'you']]);
$this->commentsManager
->expects($this->once())
->method('get')
->willReturn($this->comment);
+ $this->commentsManager
+ ->expects($this->once())
+ ->method('resolveDisplayName')
+ ->with('user', 'you')
+ ->willReturn('Your name');
$this->userManager
- ->expects($this->never())
- ->method('get');
+ ->expects($this->once())
+ ->method('getDisplayName')
+ ->willReturnMap([
+ ['huraga', null],
+ ['you', 'You'],
+ ]);
$this->notifier->prepare($this->notification, $this->lc);
}
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testPrepareDifferentApp() {
+
+ public function testPrepareDifferentApp(): void {
+ $this->expectException(UnknownNotificationException::class);
+
$this->folder
->expects($this->never())
->method('getById');
@@ -305,15 +327,15 @@ class NotifierTest extends TestCase {
$this->userManager
->expects($this->never())
- ->method('get');
+ ->method('getDisplayName');
$this->notifier->prepare($this->notification, $this->lc);
}
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testPrepareNotFound() {
+
+ public function testPrepareNotFound(): void {
+ $this->expectException(UnknownNotificationException::class);
+
$this->folder
->expects($this->never())
->method('getById');
@@ -343,22 +365,16 @@ class NotifierTest extends TestCase {
$this->userManager
->expects($this->never())
- ->method('get');
+ ->method('getDisplayName');
$this->notifier->prepare($this->notification, $this->lc);
}
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testPrepareDifferentSubject() {
- $displayName = 'Huraga';
- /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('getDisplayName')
- ->willReturn($displayName);
+ public function testPrepareDifferentSubject(): void {
+ $this->expectException(UnknownNotificationException::class);
+
+ $displayName = 'Huraga';
$this->folder
->expects($this->never())
@@ -404,24 +420,18 @@ class NotifierTest extends TestCase {
$this->userManager
->expects($this->once())
- ->method('get')
+ ->method('getDisplayName')
->with('huraga')
- ->willReturn($user);
+ ->willReturn($displayName);
$this->notifier->prepare($this->notification, $this->lc);
}
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testPrepareNotFiles() {
- $displayName = 'Huraga';
- /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('getDisplayName')
- ->willReturn($displayName);
+ public function testPrepareNotFiles(): void {
+ $this->expectException(UnknownNotificationException::class);
+
+ $displayName = 'Huraga';
$this->folder
->expects($this->never())
@@ -468,24 +478,18 @@ class NotifierTest extends TestCase {
$this->userManager
->expects($this->once())
- ->method('get')
+ ->method('getDisplayName')
->with('huraga')
- ->willReturn($user);
+ ->willReturn($displayName);
$this->notifier->prepare($this->notification, $this->lc);
}
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testPrepareUnresolvableFileID() {
- $displayName = 'Huraga';
- /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('getDisplayName')
- ->willReturn($displayName);
+ public function testPrepareUnresolvableFileID(): void {
+ $this->expectException(AlreadyProcessedException::class);
+
+ $displayName = 'Huraga';
$userFolder = $this->createMock(Folder::class);
$this->folder->expects($this->once())
@@ -541,11 +545,10 @@ class NotifierTest extends TestCase {
$this->userManager
->expects($this->once())
- ->method('get')
+ ->method('getDisplayName')
->with('huraga')
- ->willReturn($user);
+ ->willReturn($displayName);
$this->notifier->prepare($this->notification, $this->lc);
}
-
}
diff --git a/apps/comments/tests/js/commentscollectionSpec.js b/apps/comments/tests/js/commentscollectionSpec.js
deleted file mode 100644
index 2f41a272f67..00000000000
--- a/apps/comments/tests/js/commentscollectionSpec.js
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2016
- *
- * This file is licensed under the Affero General Public License comment 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-describe('OCA.Comments.CommentCollection', function() {
- var CommentCollection = OCA.Comments.CommentCollection;
- var collection, syncStub;
- var comment1, comment2, comment3;
-
- beforeEach(function() {
- syncStub = sinon.stub(CommentCollection.prototype, 'sync');
- collection = new CommentCollection();
- collection.setObjectId(5);
-
- comment1 = {
- id: 1,
- actorType: 'users',
- actorId: 'user1',
- actorDisplayName: 'User One',
- objectType: 'files',
- objectId: 5,
- message: 'First',
- creationDateTime: Date.UTC(2016, 1, 3, 10, 5, 0)
- };
- comment2 = {
- id: 2,
- actorType: 'users',
- actorId: 'user2',
- actorDisplayName: 'User Two',
- objectType: 'files',
- objectId: 5,
- message: 'Second\nNewline',
- creationDateTime: Date.UTC(2016, 1, 3, 10, 0, 0)
- };
- comment3 = {
- id: 3,
- actorType: 'users',
- actorId: 'user3',
- actorDisplayName: 'User Three',
- objectType: 'files',
- objectId: 5,
- message: 'Third',
- creationDateTime: Date.UTC(2016, 1, 3, 5, 0, 0)
- };
- });
- afterEach(function() {
- syncStub.restore();
- });
-
- it('fetches the next page', function() {
- collection._limit = 2;
- collection.fetchNext();
-
- expect(syncStub.calledOnce).toEqual(true);
- expect(syncStub.lastCall.args[0]).toEqual('REPORT');
- var options = syncStub.lastCall.args[2];
- expect(options.remove).toEqual(false);
-
- var parser = new DOMParser();
- var doc = parser.parseFromString(options.data, "application/xml");
- expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'limit')[0].textContent).toEqual('3');
- expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'offset')[0].textContent).toEqual('0');
-
- syncStub.yieldTo('success', [comment1, comment2, comment3]);
-
- expect(collection.length).toEqual(2);
- expect(collection.hasMoreResults()).toEqual(true);
-
- collection.fetchNext();
-
- expect(syncStub.calledTwice).toEqual(true);
- options = syncStub.lastCall.args[2];
- doc = parser.parseFromString(options.data, "application/xml");
- expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'limit')[0].textContent).toEqual('3');
- expect(doc.getElementsByTagNameNS('http://owncloud.org/ns', 'offset')[0].textContent).toEqual('2');
-
- syncStub.yieldTo('success', [comment3]);
-
- expect(collection.length).toEqual(3);
- expect(collection.hasMoreResults()).toEqual(false);
-
- collection.fetchNext();
-
- // no further requests
- expect(syncStub.calledTwice).toEqual(true);
- });
- it('resets page counted when calling reset', function() {
- collection.fetchNext();
-
- syncStub.yieldTo('success', [comment1]);
-
- expect(collection.hasMoreResults()).toEqual(false);
-
- collection.reset();
-
- expect(collection.hasMoreResults()).toEqual(true);
- });
- describe('resetting read marker', function() {
- var updateStub;
- var clock;
-
- beforeEach(function() {
- updateStub = sinon.stub(OCA.Comments.CommentSummaryModel.prototype, 'save');
- clock = sinon.useFakeTimers(Date.UTC(2016, 1, 3, 10, 5, 9));
- });
- afterEach(function() {
- updateStub.restore();
- clock.restore();
- });
-
- it('resets read marker to the default date', function() {
- var successStub = sinon.stub();
- collection.updateReadMarker(null, {
- success: successStub
- });
-
- expect(updateStub.calledOnce).toEqual(true);
- expect(updateStub.lastCall.args[0]).toEqual({
- readMarker: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
- });
-
- updateStub.yieldTo('success');
-
- expect(successStub.calledOnce).toEqual(true);
- });
- it('resets read marker to the given date', function() {
- var successStub = sinon.stub();
- collection.updateReadMarker(new Date(Date.UTC(2016, 1, 2, 3, 4, 5)), {
- success: successStub
- });
-
- expect(updateStub.calledOnce).toEqual(true);
- expect(updateStub.lastCall.args[0]).toEqual({
- readMarker: new Date(Date.UTC(2016, 1, 2, 3, 4, 5)).toUTCString()
- });
-
- updateStub.yieldTo('success');
-
- expect(successStub.calledOnce).toEqual(true);
- });
- });
-});
-
diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js
deleted file mode 100644
index 0131bc7bce3..00000000000
--- a/apps/comments/tests/js/commentstabviewSpec.js
+++ /dev/null
@@ -1,690 +0,0 @@
-/**
-* ownCloud
-*
-* @author Vincent Petry
-* @copyright 2016 Vincent Petry <pvince81@owncloud.com>
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* comment 3 of the License, or any later comment.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library. If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-describe('OCA.Comments.CommentsTabView tests', function() {
- var view, fileInfoModel;
- var fetchStub;
- var avatarStub;
- var testComments;
- var clock;
-
- /**
- * Creates a dummy message with the given length
- *
- * @param {int} len length
- * @return {string} message
- */
- function createMessageWithLength(len) {
- var bigMessage = '';
- for (var i = 0; i < len; i++) {
- bigMessage += 'a';
- }
- return bigMessage;
- }
-
- beforeEach(function() {
- clock = sinon.useFakeTimers(Date.UTC(2016, 1, 3, 10, 5, 9));
- fetchStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'fetchNext');
- avatarStub = sinon.stub($.fn, 'avatar');
- view = new OCA.Comments.CommentsTabView();
- fileInfoModel = new OCA.Files.FileInfoModel({
- id: 5,
- name: 'One.txt',
- mimetype: 'text/plain',
- permissions: 31,
- path: '/subdir',
- size: 123456789,
- etag: 'abcdefg',
- mtime: Date.UTC(2016, 1, 0, 0, 0, 0)
- });
- view.render();
- var comment1 = new OCA.Comments.CommentModel({
- id: 1,
- actorType: 'users',
- actorId: 'user1',
- actorDisplayName: 'User One',
- objectType: 'files',
- objectId: 5,
- message: 'First',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 0)).toUTCString()
- });
- var comment2 = new OCA.Comments.CommentModel({
- id: 2,
- actorType: 'users',
- actorId: 'user2',
- actorDisplayName: 'User Two',
- objectType: 'files',
- objectId: 5,
- message: 'Second\nNewline',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 0, 0)).toUTCString()
- });
- var comment3 = new OCA.Comments.CommentModel({
- id: 3,
- actorId: 'anotheruser',
- actorDisplayName: 'Another User',
- actorType: 'users',
- verb: 'comment',
- message: 'Hail to thee, @macbeth. Yours faithfully, @banquo',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(),
- mentions: {
- 0: {
- mentionDisplayName: "Thane of Cawdor",
- mentionId: "macbeth",
- mentionTye: "user"
- },
- 1: {
- mentionDisplayName: "Lord Banquo",
- mentionId: "banquo",
- mentionTye: "user"
- }
- }
- });
-
- testComments = [comment1, comment2, comment3];
- });
- afterEach(function() {
- view.remove();
- view = undefined;
- fetchStub.restore();
- avatarStub.restore();
- clock.restore();
- });
- describe('rendering', function() {
- it('reloads matching comments when setting file info model', function() {
- view.setFileInfo(fileInfoModel);
- expect(fetchStub.calledOnce).toEqual(true);
- });
-
- it('renders loading icon while fetching comments', function() {
- view.setFileInfo(fileInfoModel);
- view.collection.trigger('request');
-
- expect(view.$el.find('.loading').length).toEqual(1);
- expect(view.$el.find('.comments li').length).toEqual(0);
- });
-
- it('renders comments', function() {
- view.setFileInfo(fileInfoModel);
- view.collection.set(testComments);
-
- var $comments = view.$el.find('.comments>li');
- expect($comments.length).toEqual(3);
- var $item = $comments.eq(0);
- expect($item.find('.author').text()).toEqual('User One');
- expect($item.find('.date').text()).toEqual('seconds ago');
- expect($item.find('.message').text()).toEqual('First');
-
- $item = $comments.eq(1);
- expect($item.find('.author').text()).toEqual('User Two');
- expect($item.find('.date').text()).toEqual('5 minutes ago');
- expect($item.find('.message').html()).toEqual('Second<br>Newline');
- });
-
- it('renders comments from deleted user differently', function() {
- testComments[0].set('actorType', 'deleted_users', {silent: true});
- view.collection.set(testComments);
-
- var $item = view.$el.find('.comment[data-id=1]');
- expect($item.find('.author').text()).toEqual('[Deleted user]');
- expect($item.find('.avatar').attr('data-username')).not.toBeDefined();
- });
-
- it('renders mentioned user id to avatar and displayname', function() {
- view.collection.set(testComments);
-
- var $comment = view.$el.find('.comment[data-id=3] .message');
- expect($comment.length).toEqual(1);
- expect($comment.find('.avatar[data-user=macbeth]').length).toEqual(1);
- expect($comment.find('strong:first').text()).toEqual('Thane of Cawdor');
- expect($comment.find('.avatar[data-user=macbeth] ~ .contactsmenu-popover').length).toEqual(1);
-
- expect($comment.find('.avatar[data-user=banquo]').length).toEqual(1);
- expect($comment.find('.avatar[data-user=banquo] ~ strong').text()).toEqual('Lord Banquo');
- expect($comment.find('.avatar[data-user=banquo] ~ .contactsmenu-popover').length).toEqual(1);
- });
-
- });
- describe('more comments', function() {
- var hasMoreResultsStub;
-
- beforeEach(function() {
- view.collection.set(testComments);
- hasMoreResultsStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'hasMoreResults');
- });
- afterEach(function() {
- hasMoreResultsStub.restore();
- });
-
- it('shows "More comments" button when more comments are available', function() {
- hasMoreResultsStub.returns(true);
- view.collection.trigger('sync');
-
- expect(view.$el.find('.showMore').hasClass('hidden')).toEqual(false);
- });
- it('does not show "More comments" button when more comments are available', function() {
- hasMoreResultsStub.returns(false);
- view.collection.trigger('sync');
-
- expect(view.$el.find('.showMore').hasClass('hidden')).toEqual(true);
- });
- it('fetches and appends the next page when clicking the "More" button', function() {
- hasMoreResultsStub.returns(true);
-
- expect(fetchStub.notCalled).toEqual(true);
-
- view.$el.find('.showMore').click();
-
- expect(fetchStub.calledOnce).toEqual(true);
- });
- it('appends comment to the list when added to collection', function() {
- var comment4 = new OCA.Comments.CommentModel({
- id: 4,
- actorType: 'users',
- actorId: 'user3',
- actorDisplayName: 'User Three',
- objectType: 'files',
- objectId: 5,
- message: 'Third',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 5, 0, 0)).toUTCString()
- });
-
- view.collection.add(comment4);
-
- expect(view.$el.find('.comments>li').length).toEqual(4);
-
- var $item = view.$el.find('.comments>li').eq(3);
- expect($item.find('.author').text()).toEqual('User Three');
- expect($item.find('.date').text()).toEqual('5 hours ago');
- expect($item.find('.message').html()).toEqual('Third');
- });
- });
- describe('posting comments', function() {
- var createStub;
- var currentUserStub;
- var $newCommentForm;
-
- beforeEach(function() {
- view.collection.set(testComments);
- createStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'create');
- currentUserStub = sinon.stub(OC, 'getCurrentUser');
- currentUserStub.returns({
- uid: 'testuser',
- displayName: 'Test User'
- });
-
- $newCommentForm = view.$el.find('.newCommentForm');
-
- // Required for the absolute selector used to find the new comment
- // after a successful creation in _onSubmitSuccess.
- $('#testArea').append(view.$el);
- });
- afterEach(function() {
- createStub.restore();
- currentUserStub.restore();
- });
-
- it('creates a new comment when clicking post button', function() {
- $newCommentForm.find('.message').text('New message');
- $newCommentForm.submit();
-
- expect(createStub.calledOnce).toEqual(true);
- expect(createStub.lastCall.args[0]).toEqual({
- actorId: 'testuser',
- actorDisplayName: 'Test User',
- actorType: 'users',
- verb: 'comment',
- message: 'New message',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
- });
- });
- it('creates a new comment when typing enter', function() {
- $newCommentForm.find('.message').text('New message');
- var keydownEvent = new $.Event('keydown', {keyCode: 13});
- $newCommentForm.find('.message').trigger(keydownEvent);
-
- expect(createStub.calledOnce).toEqual(true);
- expect(createStub.lastCall.args[0]).toEqual({
- actorId: 'testuser',
- actorDisplayName: 'Test User',
- actorType: 'users',
- verb: 'comment',
- message: 'New message',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
- });
- expect(keydownEvent.isDefaultPrevented()).toEqual(true);
- });
- it('creates a new mention when typing enter in the autocomplete popover', function() {
- var autoCompleteStub = sinon.stub(view, '_onAutoComplete');
- autoCompleteStub.callsArgWith(1, [{"id":"userId", "label":"User Name", "source":"users"}]);
-
- // Force the autocomplete to be initialized
- view._initAutoComplete($newCommentForm.find('.message'));
-
- // PhantomJS does not seem to handle typing in a contenteditable, so
- // some tricks are needed to show the autocomplete popover.
- //
- // Instead of sending key events to type "@u" the characters are
- // programatically set in the input field.
- $newCommentForm.find('.message').text('Mention to @u');
-
- // When focusing on the input field the caret is not guaranteed to
- // be at the end; instead of calling "focus()" on the input field
- // the caret is explicitly set at the end of the input field, that
- // is, after "@u".
- var range = document.createRange();
- range.selectNodeContents($newCommentForm.find('.message')[0]);
- range.collapse(false);
- var selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(range);
-
- // As PhantomJS does not handle typing in a contenteditable the key
- // typed here is in practice ignored by At.js, but despite that it
- // will cause the popover to be shown.
- $newCommentForm.find('.message').trigger(new $.Event('keydown', {keyCode: 's'}));
- $newCommentForm.find('.message').trigger(new $.Event('keyup', {keyCode: 's'}));
-
- expect(autoCompleteStub.calledOnce).toEqual(true);
-
- var keydownEvent = new $.Event('keydown', {keyCode: 13});
- $newCommentForm.find('.message').trigger(keydownEvent);
-
- expect(createStub.calledOnce).toEqual(false);
- expect($newCommentForm.find('.message').html()).toContain('Mention to <span');
- expect($newCommentForm.find('.message').html()).toContain('<div class="avatar"');
- expect($newCommentForm.find('.message').html()).toContain('<strong>User Name</strong>');
- expect($newCommentForm.find('.message').text()).not.toContain('@');
- // In this case the default behaviour is prevented by the
- // "onKeydown" event handler of At.js.
- expect(keydownEvent.isDefaultPrevented()).toEqual(true);
- });
- it('creates a new line when typing shift+enter', function() {
- $newCommentForm.find('.message').text('New message');
- var keydownEvent = new $.Event('keydown', {keyCode: 13, shiftKey: true});
- $newCommentForm.find('.message').trigger(keydownEvent);
-
- expect(createStub.calledOnce).toEqual(false);
- // PhantomJS does not seem to handle typing in a contenteditable, so
- // instead of looking for a new line the best that can be done is
- // checking that the default behaviour would have been executed.
- expect($newCommentForm.find('.message').text()).toContain('New message');
- expect(keydownEvent.isDefaultPrevented()).toEqual(false);
- });
- it('creates a new comment with mentions when clicking post button', function() {
- $newCommentForm.find('.message').text('New message @anotheruser');
- $newCommentForm.submit();
-
- var createStubExpectedData = {
- actorId: 'testuser',
- actorDisplayName: 'Test User',
- actorType: 'users',
- verb: 'comment',
- message: 'New message @anotheruser',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
- };
-
- expect(createStub.calledOnce).toEqual(true);
- expect(createStub.lastCall.args[0]).toEqual(createStubExpectedData);
-
- var model = new OCA.Comments.CommentModel(_.extend({id: 4}, createStubExpectedData));
- var fetchStub = sinon.stub(model, 'fetch');
- // simulate the fact that create adds the model to the collection
- view.collection.add(model, {at: 0});
- createStub.yieldTo('success', model);
-
- expect(fetchStub.calledOnce).toEqual(true);
-
- // simulate the fact that fetch sets the attribute
- model.set('mentions', {
- 0: {
- mentionDisplayName: "Another User",
- mentionId: "anotheruser",
- mentionTye: "user"
- }
- });
- fetchStub.yieldTo('success', model);
-
- // comment was added to the list
- var $comment = view.$el.find('.comment[data-id=4]');
- expect($comment.length).toEqual(1);
- var $message = $comment.find('.message');
- expect($message.html()).toContain('New message');
- expect($message.find('.avatar').length).toEqual(1);
- expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1);
- expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User');
- expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1);
- });
- it('does not create a comment if the field is empty', function() {
- $newCommentForm.find('.message').val(' ');
- $newCommentForm.submit();
-
- expect(createStub.notCalled).toEqual(true);
- });
- it('does not create a comment if the field length is too large', function() {
- var bigMessage = '';
- for (var i = 0; i < view._commentMaxLength * 2; i++) {
- bigMessage += 'a';
- }
- $newCommentForm.find('.message').val(bigMessage);
- $newCommentForm.submit();
-
- expect(createStub.notCalled).toEqual(true);
- });
- describe('limit indicator', function() {
- var tooltipStub;
- var $message;
- var $submitButton;
-
- beforeEach(function() {
- tooltipStub = sinon.stub($.fn, 'tooltip');
- $message = $newCommentForm.find('.message');
- $submitButton = $newCommentForm.find('.submit');
- });
- afterEach(function() {
- tooltipStub.restore();
- });
-
- it('does not displays tooltip when limit is far away', function() {
- $message.val(createMessageWithLength(3));
- $message.trigger('change');
-
- expect(tooltipStub.calledWith('show')).toEqual(false);
- expect($submitButton.prop('disabled')).toEqual(false);
- expect($message.hasClass('error')).toEqual(false);
- });
- it('displays tooltip when limit is almost reached', function() {
- $message.text(createMessageWithLength(view._commentMaxLength - 2));
- $message.trigger('change');
-
- expect(tooltipStub.calledWith('show')).toEqual(true);
- expect($submitButton.prop('disabled')).toEqual(false);
- expect($message.hasClass('error')).toEqual(false);
- });
- it('displays tooltip and disabled button when limit is exceeded', function() {
- $message.text(createMessageWithLength(view._commentMaxLength + 2));
- $message.trigger('change');
-
- expect(tooltipStub.calledWith('show')).toEqual(true);
- expect($submitButton.prop('disabled')).toEqual(true);
- expect($message.hasClass('error')).toEqual(true);
- });
- });
- });
- describe('editing comments', function() {
- var saveStub;
- var fetchStub;
- var currentUserStub;
-
- beforeEach(function() {
- saveStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'save');
- fetchStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'fetch');
- currentUserStub = sinon.stub(OC, 'getCurrentUser');
- currentUserStub.returns({
- uid: 'testuser',
- displayName: 'Test User'
- });
- view.collection.add({
- id: 1,
- actorId: 'testuser',
- actorDisplayName: 'Test User',
- actorType: 'users',
- verb: 'comment',
- message: 'New message',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
- });
- view.collection.add({
- id: 2,
- actorId: 'anotheruser',
- actorDisplayName: 'Another User',
- actorType: 'users',
- verb: 'comment',
- message: 'New message from another user',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(),
- });
- view.collection.add({
- id: 3,
- actorId: 'testuser',
- actorDisplayName: 'Test User',
- actorType: 'users',
- verb: 'comment',
- message: 'Hail to thee, @macbeth. Yours faithfully, @banquo',
- creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(),
- mentions: {
- 0: {
- mentionDisplayName: "Thane of Cawdor",
- mentionId: "macbeth",
- mentionTye: "user"
- },
- 1: {
- mentionDisplayName: "Lord Banquo",
- mentionId: "banquo",
- mentionTye: "user"
- }
- }
- });
- });
- afterEach(function() {
- saveStub.restore();
- fetchStub.restore();
- currentUserStub.restore();
- });
-
- it('shows edit link for owner comments', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- expect($comment.length).toEqual(1);
- expect($comment.find('.action.edit').length).toEqual(1);
- });
-
- it('does not show edit link for other user\'s comments', function() {
- var $comment = view.$el.find('.comment[data-id=2]');
- expect($comment.length).toEqual(1);
- expect($comment.find('.action.edit').length).toEqual(0);
- });
-
- it('shows edit form when clicking edit', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
-
- expect($comment.hasClass('hidden')).toEqual(true);
- var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(1);
- });
-
- it('saves message and updates comment item when clicking save', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
-
- var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(1);
-
- $formRow.find('div.message').text('modified message');
- $formRow.find('form').submit();
-
- expect(saveStub.calledOnce).toEqual(true);
- expect(saveStub.lastCall.args[0]).toEqual({
- message: 'modified message'
- });
-
- var model = view.collection.get(1);
- // simulate the fact that save sets the attribute
- model.set('message', 'modified\nmessage');
- saveStub.yieldTo('success', model);
- view.collection.get(model);
-
- expect(fetchStub.called).toEqual(true);
- fetchStub.yieldTo('success', model);
-
- // original comment element is visible again
- expect($comment.hasClass('hidden')).toEqual(false);
- // and its message was updated
- expect($comment.find('.message').html()).toEqual('modified<br>message');
-
- // form row is gone
- $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(0);
- });
-
- it('saves message and updates comment item with mentions when clicking save', function() {
- var $comment = view.$el.find('.comment[data-id=3]');
- $comment.find('.action.edit').click();
-
- var $formRow = view.$el.find('.newCommentRow.comment[data-id=3]');
- expect($formRow.length).toEqual(1);
-
- $formRow.find('div.message').text('modified\nmessage @anotheruser');
- $formRow.find('form').submit();
-
- expect(saveStub.calledOnce).toEqual(true);
- expect(saveStub.lastCall.args[0]).toEqual({
- message: 'modified\nmessage @anotheruser'
- });
-
- var model = view.collection.get(3);
- // simulate the fact that save sets the attribute
- model.set('message', 'modified\nmessage @anotheruser');
- saveStub.yieldTo('success', model);
-
- expect(fetchStub.called).toEqual(true);
-
- // simulate the fact that fetch sets the attribute
- model.set('mentions', {
- 0: {
- mentionDisplayName: "Another User",
- mentionId: "anotheruser",
- mentionTye: "user"
- }
- });
- fetchStub.yieldTo('success', model);
-
- // original comment element is visible again
- expect($comment.hasClass('hidden')).toEqual(false);
- // and its message was updated
- var $message = $comment.find('.message');
- expect($message.html()).toContain('modified<br>message');
- expect($message.find('.avatar').length).toEqual(1);
- expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1);
- expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User');
- expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1);
-
- // form row is gone
- $formRow = view.$el.find('.newCommentRow.comment[data-id=3]');
- expect($formRow.length).toEqual(0);
- });
-
- it('restores original comment when cancelling', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
-
- var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(1);
-
- $formRow.find('textarea').val('modified\nmessage');
- $formRow.find('.cancel').click();
-
- expect(saveStub.notCalled).toEqual(true);
-
- // original comment element is visible again
- expect($comment.hasClass('hidden')).toEqual(false);
- // and its message was not updated
- expect($comment.find('.message').html()).toEqual('New message');
-
- // form row is gone
- $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(0);
- });
-
- it('destroys model when clicking delete', function() {
- var destroyStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'destroy');
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
-
- var $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(1);
-
- $formRow.find('.delete').click();
-
- expect(destroyStub.calledOnce).toEqual(true);
- expect(destroyStub.thisValues[0].id).toEqual(1);
-
- destroyStub.yieldTo('success');
-
- // original comment element is gone
- $comment = view.$el.find('.comment[data-id=1]');
- expect($comment.length).toEqual(0);
-
- // form row is gone
- $formRow = view.$el.find('.newCommentRow.comment[data-id=1]');
- expect($formRow.length).toEqual(0);
-
- destroyStub.restore();
- });
- it('does not submit comment if the field is empty', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
- $comment.find('.message').val(' ');
- $comment.find('form').submit();
-
- expect(saveStub.notCalled).toEqual(true);
- });
- it('does not submit comment if the field length is too large', function() {
- var $comment = view.$el.find('.comment[data-id=1]');
- $comment.find('.action.edit').click();
- $comment.find('.message').val(createMessageWithLength(view._commentMaxLength * 2));
- $comment.find('form').submit();
-
- expect(saveStub.notCalled).toEqual(true);
- });
- });
- describe('read marker', function() {
- var updateMarkerStub;
-
- beforeEach(function() {
- updateMarkerStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'updateReadMarker');
- });
- afterEach(function() {
- updateMarkerStub.restore();
- });
-
- it('resets the read marker after REPORT', function() {
- testComments[0].set('isUnread', true, {silent: true});
- testComments[1].set('isUnread', true, {silent: true});
- view.collection.set(testComments);
- view.collection.trigger('sync', 'REPORT');
-
- expect(updateMarkerStub.calledOnce).toEqual(true);
- expect(updateMarkerStub.lastCall.args[0]).toBeFalsy();
- });
- it('does not reset the read marker if there was no unread comments', function() {
- view.collection.set(testComments);
- view.collection.trigger('sync', 'REPORT');
-
- expect(updateMarkerStub.notCalled).toEqual(true);
- });
- it('does not reset the read marker when posting comments', function() {
- testComments[0].set('isUnread', true, {silent: true});
- testComments[1].set('isUnread', true, {silent: true});
- view.collection.set(testComments);
- view.collection.trigger('sync', 'POST');
-
- expect(updateMarkerStub.notCalled).toEqual(true);
- });
- });
-});
diff --git a/apps/comments/tests/js/filespluginSpec.js b/apps/comments/tests/js/filespluginSpec.js
deleted file mode 100644
index 78becc5af09..00000000000
--- a/apps/comments/tests/js/filespluginSpec.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
-
-describe('OCA.Comments.FilesPlugin tests', function() {
- var fileList;
- var testFiles;
-
- beforeEach(function() {
- var $content = $('<div id="content"></div>');
- $('#testArea').append($content);
- // dummy file list
- var $div = $(
- '<div>' +
- '<table id="filestable">' +
- '<thead></thead>' +
- '<tbody id="fileList"></tbody>' +
- '</table>' +
- '</div>');
- $('#content').append($div);
-
- fileList = new OCA.Files.FileList($div);
- OCA.Comments.FilesPlugin.attach(fileList);
-
- testFiles = [{
- id: 1,
- type: 'file',
- name: 'One.txt',
- path: '/subdir',
- mimetype: 'text/plain',
- size: 12,
- permissions: OC.PERMISSION_ALL,
- etag: 'abc',
- shareOwner: 'User One',
- isShareMountPoint: false,
- commentsUnread: 3
- }];
- });
- afterEach(function() {
- fileList.destroy();
- fileList = null;
- });
-
- describe('Comment icon', function() {
- it('does not render icon when no unread comments available', function() {
- testFiles[0].commentsUnread = 0;
- fileList.setFiles(testFiles);
- var $tr = fileList.findFileEl('One.txt');
- expect($tr.find('.action-comment').length).toEqual(0);
- });
- it('renders comment icon and extra data', function() {
- var $action, $tr;
- fileList.setFiles(testFiles);
- $tr = fileList.findFileEl('One.txt');
- $action = $tr.find('.action-comment');
- expect($action.length).toEqual(1);
- expect($action.hasClass('permanent')).toEqual(true);
-
- expect($tr.attr('data-comments-unread')).toEqual('3');
- });
- it('clicking icon opens sidebar', function() {
- var sidebarStub = sinon.stub(fileList, 'showDetailsView');
- var $action, $tr;
- fileList.setFiles(testFiles);
- $tr = fileList.findFileEl('One.txt');
- $action = $tr.find('.action-comment');
- $action.click();
-
- expect(sidebarStub.calledOnce).toEqual(true);
- expect(sidebarStub.lastCall.args[0]).toEqual('One.txt');
- expect(sidebarStub.lastCall.args[1]).toEqual('commentsTabView');
- });
- });
- describe('elementToFile', function() {
- it('returns comment count', function() {
- fileList.setFiles(testFiles);
- var $tr = fileList.findFileEl('One.txt');
- var data = fileList.elementToFile($tr);
- expect(data.commentsUnread).toEqual(3);
- });
- it('does not set comment count when not set', function() {
- delete testFiles[0].commentsUnread;
- fileList.setFiles(testFiles);
- var $tr = fileList.findFileEl('One.txt');
- var data = fileList.elementToFile($tr);
- expect(data.commentsUnread).not.toBeDefined();
- });
- it('does not set comment count when zero', function() {
- testFiles[0].commentsUnread = 0;
- fileList.setFiles(testFiles);
- var $tr = fileList.findFileEl('One.txt');
- var data = fileList.elementToFile($tr);
- expect(data.commentsUnread).not.toBeDefined();
- });
- });
-});