summaryrefslogtreecommitdiff
path: root/Thanks
diff options
context:
space:
mode:
authorAlex Legler <alex@a3li.li>2015-08-15 13:32:01 +0200
committerAlex Legler <alex@a3li.li>2015-08-15 13:32:01 +0200
commit5e0c871d6bc7a574787ac157266e0470c11d921d (patch)
tree61cc281105ae5ab6b5cbce93e8826cd4a881bc0e /Thanks
parentAdd Echo (diff)
downloadextensions-5e0c871d6bc7a574787ac157266e0470c11d921d.tar.gz
extensions-5e0c871d6bc7a574787ac157266e0470c11d921d.tar.bz2
extensions-5e0c871d6bc7a574787ac157266e0470c11d921d.zip
Add Thanks
Diffstat (limited to 'Thanks')
-rw-r--r--Thanks/.gitreview6
-rw-r--r--Thanks/.jshintrc10
-rw-r--r--Thanks/ApiFlowThank.php198
-rw-r--r--Thanks/ApiRevThank.php164
-rw-r--r--Thanks/ApiThank.php63
-rw-r--r--Thanks/COPYING21
-rw-r--r--Thanks/FlowThanksFormatter.php55
-rw-r--r--Thanks/SpecialThanks.php208
-rw-r--r--Thanks/ThankYou.pngbin0 -> 468 bytes
-rw-r--r--Thanks/Thanks.alias.php160
-rw-r--r--Thanks/Thanks.hooks.php302
-rw-r--r--Thanks/Thanks.i18n.php35
-rw-r--r--Thanks/Thanks.php178
-rw-r--r--Thanks/ThanksFormatter.php35
-rw-r--r--Thanks/ThanksLogFormatter.php20
-rw-r--r--Thanks/WhiteSmiley.pngbin0 -> 1136 bytes
-rw-r--r--Thanks/i18n/af.json45
-rw-r--r--Thanks/i18n/ar.json50
-rw-r--r--Thanks/i18n/arq.json9
-rw-r--r--Thanks/i18n/as.json12
-rw-r--r--Thanks/i18n/ast.json45
-rw-r--r--Thanks/i18n/az.json28
-rw-r--r--Thanks/i18n/azb.json9
-rw-r--r--Thanks/i18n/bcc.json20
-rw-r--r--Thanks/i18n/be-tarask.json35
-rw-r--r--Thanks/i18n/be.json30
-rw-r--r--Thanks/i18n/bg.json23
-rw-r--r--Thanks/i18n/bgn.json9
-rw-r--r--Thanks/i18n/bn.json49
-rw-r--r--Thanks/i18n/bo.json13
-rw-r--r--Thanks/i18n/br.json19
-rw-r--r--Thanks/i18n/bs.json32
-rw-r--r--Thanks/i18n/ca.json53
-rw-r--r--Thanks/i18n/cdo.json30
-rw-r--r--Thanks/i18n/ce.json45
-rw-r--r--Thanks/i18n/ckb.json38
-rw-r--r--Thanks/i18n/cs.json46
-rw-r--r--Thanks/i18n/cu.json8
-rw-r--r--Thanks/i18n/cv.json8
-rw-r--r--Thanks/i18n/cy.json47
-rw-r--r--Thanks/i18n/da.json35
-rw-r--r--Thanks/i18n/de-formal.json22
-rw-r--r--Thanks/i18n/de.json57
-rw-r--r--Thanks/i18n/diq.json20
-rw-r--r--Thanks/i18n/dsb.json34
-rw-r--r--Thanks/i18n/el.json46
-rw-r--r--Thanks/i18n/en.json54
-rw-r--r--Thanks/i18n/eo.json38
-rw-r--r--Thanks/i18n/es.json51
-rw-r--r--Thanks/i18n/et.json48
-rw-r--r--Thanks/i18n/eu.json22
-rw-r--r--Thanks/i18n/fa.json60
-rw-r--r--Thanks/i18n/fi.json58
-rw-r--r--Thanks/i18n/fr.json58
-rw-r--r--Thanks/i18n/frr.json54
-rw-r--r--Thanks/i18n/gd.json8
-rw-r--r--Thanks/i18n/gl.json57
-rw-r--r--Thanks/i18n/gom-deva.json8
-rw-r--r--Thanks/i18n/gu.json31
-rw-r--r--Thanks/i18n/haw.json9
-rw-r--r--Thanks/i18n/he.json58
-rw-r--r--Thanks/i18n/hi.json47
-rw-r--r--Thanks/i18n/hr.json29
-rw-r--r--Thanks/i18n/hsb.json33
-rw-r--r--Thanks/i18n/hu.json35
-rw-r--r--Thanks/i18n/hy.json39
-rw-r--r--Thanks/i18n/ia.json38
-rw-r--r--Thanks/i18n/id.json55
-rw-r--r--Thanks/i18n/ilo.json44
-rw-r--r--Thanks/i18n/is.json8
-rw-r--r--Thanks/i18n/it.json48
-rw-r--r--Thanks/i18n/ja.json47
-rw-r--r--Thanks/i18n/ka.json31
-rw-r--r--Thanks/i18n/kk-cyrl.json45
-rw-r--r--Thanks/i18n/kn.json11
-rw-r--r--Thanks/i18n/ko.json52
-rw-r--r--Thanks/i18n/krc.json29
-rw-r--r--Thanks/i18n/ksh.json44
-rw-r--r--Thanks/i18n/ky.json8
-rw-r--r--Thanks/i18n/la.json30
-rw-r--r--Thanks/i18n/lb.json37
-rw-r--r--Thanks/i18n/lrc.json29
-rw-r--r--Thanks/i18n/lt.json19
-rw-r--r--Thanks/i18n/lv.json28
-rw-r--r--Thanks/i18n/mai.json9
-rw-r--r--Thanks/i18n/mg.json8
-rw-r--r--Thanks/i18n/mk.json54
-rw-r--r--Thanks/i18n/ml.json45
-rw-r--r--Thanks/i18n/mni.json11
-rw-r--r--Thanks/i18n/mr.json32
-rw-r--r--Thanks/i18n/ms.json45
-rw-r--r--Thanks/i18n/mt.json33
-rw-r--r--Thanks/i18n/nap.json9
-rw-r--r--Thanks/i18n/nb.json56
-rw-r--r--Thanks/i18n/nds-nl.json52
-rw-r--r--Thanks/i18n/ne.json8
-rw-r--r--Thanks/i18n/nl.json52
-rw-r--r--Thanks/i18n/nn.json30
-rw-r--r--Thanks/i18n/oc.json32
-rw-r--r--Thanks/i18n/pa.json35
-rw-r--r--Thanks/i18n/pfl.json9
-rw-r--r--Thanks/i18n/pl.json47
-rw-r--r--Thanks/i18n/pms.json33
-rw-r--r--Thanks/i18n/ps.json32
-rw-r--r--Thanks/i18n/pt-br.json43
-rw-r--r--Thanks/i18n/pt.json57
-rw-r--r--Thanks/i18n/qqq.json60
-rw-r--r--Thanks/i18n/qu.json10
-rw-r--r--Thanks/i18n/rm.json9
-rw-r--r--Thanks/i18n/ro.json47
-rw-r--r--Thanks/i18n/roa-tara.json38
-rw-r--r--Thanks/i18n/ru.json50
-rw-r--r--Thanks/i18n/sah.json21
-rw-r--r--Thanks/i18n/sc.json9
-rw-r--r--Thanks/i18n/scn.json53
-rw-r--r--Thanks/i18n/sco.json13
-rw-r--r--Thanks/i18n/sdh.json8
-rw-r--r--Thanks/i18n/sgs.json10
-rw-r--r--Thanks/i18n/sh.json15
-rw-r--r--Thanks/i18n/shn.json8
-rw-r--r--Thanks/i18n/sk.json34
-rw-r--r--Thanks/i18n/sl.json47
-rw-r--r--Thanks/i18n/sr-ec.json46
-rw-r--r--Thanks/i18n/sr-el.json45
-rw-r--r--Thanks/i18n/sv.json61
-rw-r--r--Thanks/i18n/ta.json31
-rw-r--r--Thanks/i18n/tcy.json8
-rw-r--r--Thanks/i18n/te.json33
-rw-r--r--Thanks/i18n/th.json45
-rw-r--r--Thanks/i18n/tl.json31
-rw-r--r--Thanks/i18n/tr.json32
-rw-r--r--Thanks/i18n/tt-cyrl.json11
-rw-r--r--Thanks/i18n/uk.json49
-rw-r--r--Thanks/i18n/ur.json10
-rw-r--r--Thanks/i18n/uz.json31
-rw-r--r--Thanks/i18n/vec.json29
-rw-r--r--Thanks/i18n/vi.json52
-rw-r--r--Thanks/i18n/vo.json24
-rw-r--r--Thanks/i18n/yi.json31
-rw-r--r--Thanks/i18n/yue.json17
-rw-r--r--Thanks/i18n/zh-hans.json64
-rw-r--r--Thanks/i18n/zh-hant.json54
-rw-r--r--Thanks/modules/ext.thanks.flowthank.js58
-rw-r--r--Thanks/modules/ext.thanks.mobilediff.js112
-rw-r--r--Thanks/modules/ext.thanks.revthank.js79
-rw-r--r--Thanks/modules/ext.thanks.thank.js39
-rw-r--r--Thanks/tests/ApiFlowThankIntegrationTest.php230
-rw-r--r--Thanks/tests/ApiRevThankIntegrationTest.php78
-rw-r--r--Thanks/tests/ApiRevThankUnitTest.php81
-rw-r--r--Thanks/tests/qunit/test_ext.thanks.mobilediff.js22
-rw-r--r--Thanks/version4
151 files changed, 6343 insertions, 0 deletions
diff --git a/Thanks/.gitreview b/Thanks/.gitreview
new file mode 100644
index 00000000..795214ee
--- /dev/null
+++ b/Thanks/.gitreview
@@ -0,0 +1,6 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/Thanks.git
+defaultbranch=master
+defaultrebase=0
diff --git a/Thanks/.jshintrc b/Thanks/.jshintrc
new file mode 100644
index 00000000..2ca81330
--- /dev/null
+++ b/Thanks/.jshintrc
@@ -0,0 +1,10 @@
+{
+ "predef": [
+ "mediaWiki",
+ "jQuery",
+ "QUnit"
+ ],
+
+ "browser": true,
+ "supernew": true
+}
diff --git a/Thanks/ApiFlowThank.php b/Thanks/ApiFlowThank.php
new file mode 100644
index 00000000..9901dda9
--- /dev/null
+++ b/Thanks/ApiFlowThank.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ * API module to send Flow thanks notifications
+ *
+ * This API does not prevent sending thanks using post IDs that refer to topic
+ * titles, though Thank buttons are only shown for comments in the UI.
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+
+use Flow\Container;
+use Flow\Data\RootPostLoader;
+use Flow\Exception\FlowException;
+use Flow\Model\PostRevision;
+use Flow\Model\UUID;
+
+class ApiFlowThank extends ApiThank {
+ public function execute() {
+ $this->dieIfFlowNotInstalled();
+ $this->dieIfEchoNotInstalled();
+
+ $user = $this->getUser();
+ $this->dieOnBadUser( $user );
+
+ $params = $this->extractRequestParams();
+
+ try {
+ $postId = UUID::create( $params['postid'] );
+ } catch ( FlowException $e ) {
+ $this->dieUsage( 'Post ID is invalid', 'invalidpostid' );
+ }
+
+ $data = $this->getFlowData( $postId );
+
+ $recipient = $this->getRecipientFromPost( $data['post'] );
+ $this->dieOnBadRecipient( $user, $recipient );
+
+ if ( $this->userAlreadySentThanksForId( $user, $postId ) ) {
+ $this->markResultSuccess( $recipient->getName() );
+ return;
+ }
+
+ $rootPost = $data['root'];
+ $workflowId = $rootPost->getPostId();
+ $rawTopicTitleText = Container::get( 'templating' )->getContent( $rootPost, 'wikitext' );
+ // Truncate the title text to prevent issues with database storage.
+ $topicTitleText = $this->getLanguage()->truncate( $rawTopicTitleText, 200 );
+ $pageTitle = $this->getPageTitleFromRootPost( $rootPost );
+
+ $this->sendThanks(
+ $user,
+ $recipient,
+ $postId,
+ $workflowId,
+ $topicTitleText,
+ $pageTitle
+ );
+ }
+
+ private function dieIfFlowNotInstalled() {
+ if ( !class_exists( 'FlowHooks' ) ) {
+ $this->dieUsage( 'Flow is not installed on this wiki', 'flownotinstalled' );
+ }
+ }
+
+ private function userAlreadySentThanksForId( User $user, UUID $id ) {
+ return $user->getRequest()->getSessionData( "flow-thanked-{$id->getAlphadecimal()}" );
+ }
+
+ /**
+ * @param UUID $postId UUID of the post to thank for
+ * @return array containing 'post' and 'root' as keys
+ */
+ private function getFlowData( UUID $postId ) {
+ $rootPostLoader = Container::get( 'loader.root_post' );
+
+ try {
+ $data = $rootPostLoader->getWithRoot( $postId );
+ } catch ( FlowException $e ) {
+ $this->dieUsage( 'Post ID is invalid', 'invalidpostid' );
+ }
+
+ if ( $data['post'] === null ) {
+ $this->dieUsage( 'Post ID is invalid', 'invalidpostid' );
+ }
+ return $data;
+ }
+
+ /**
+ * @param PostRevision $post
+ * @return User
+ */
+ private function getRecipientFromPost( PostRevision $post ) {
+ $recipient = User::newFromId( $post->getCreatorId() );
+ if ( !$recipient->loadFromId() ) {
+ $this->dieUsage( 'Recipient is invalid', 'invalidrecipient' );
+ }
+ return $recipient;
+ }
+
+ /**
+ * @param PostRevision $rootPost
+ * @return Title
+ */
+ private function getPageTitleFromRootPost( PostRevision $rootPost ) {
+ $workflow = Container::get( 'storage' )->get( 'Workflow', $rootPost->getPostId() );
+ return $workflow->getOwnerTitle();
+ }
+
+ /**
+ * @param User $user
+ * @param User $recipient
+ * @param UUID $postId
+ * @param UUID $workflowId
+ * @param string $topicTitleText
+ * @param Title $pageTitle
+ */
+ private function sendThanks( User $user, User $recipient, UUID $postId, UUID $workflowId,
+ $topicTitleText, Title $pageTitle ) {
+
+ global $wgThanksLogging;
+
+ // Create the notification via Echo extension
+ EchoEvent::create( array(
+ 'type' => 'flow-thank',
+ 'title' => $pageTitle,
+ 'extra' => array(
+ 'post-id' => $postId->getAlphadecimal(),
+ 'workflow' => $workflowId->getAlphadecimal(),
+ 'thanked-user-id' => $recipient->getId(),
+ 'topic-title' => $topicTitleText,
+ ),
+ 'agent' => $user,
+ ) );
+
+ // Mark the thank in session to prevent duplicates (Bug 46690).
+ $user->getRequest()->setSessionData( "flow-thanked-{$postId->getAlphadecimal()}", true );
+ // Set success message.
+ $this->markResultSuccess( $recipient->getName() );
+ // Log it if we're supposed to log it.
+ if ( $wgThanksLogging ) {
+ $this->logThanks( $user, $recipient );
+ }
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getDescription() {
+ return array(
+ 'This API is for sending thank you notifications for Flow comments.',
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getParamDescription() {
+ return array(
+ 'postid' => 'The UUID of the post to thank for',
+ 'token' => 'An edit token (to prevent CSRF abuse)',
+ );
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'postid' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'token' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getExamples() {
+ return array(
+ 'api.php?action=flowthank&postid=abc123&token=xyz456+\\'
+ => 'Send thanks for the comment with UUID abc123',
+ );
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ */
+ protected function getExamplesMessages() {
+ return array(
+ 'action=flowthank&postid=xyz789&token=123ABC'
+ => 'apihelp-flowthank-example-1',
+ );
+ }
+}
diff --git a/Thanks/ApiRevThank.php b/Thanks/ApiRevThank.php
new file mode 100644
index 00000000..a1c0fd4b
--- /dev/null
+++ b/Thanks/ApiRevThank.php
@@ -0,0 +1,164 @@
+<?php
+/**
+ * API module to send thanks notifications for revisions
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+class ApiRevThank extends ApiThank {
+ public function execute() {
+ $this->dieIfEchoNotInstalled();
+
+ $user = $this->getUser();
+ $this->dieOnBadUser( $user );
+
+ $params = $this->extractRequestParams();
+ $revision = $this->getRevisionFromParams( $params );
+
+ if ( $this->userAlreadySentThanksForRevision( $user, $revision ) ) {
+ $this->markResultSuccess( $revision->getUserText() );
+ } else {
+ $recipient = $this->getUserFromRevision( $revision );
+ $this->dieOnBadRecipient( $user, $recipient );
+ $this->sendThanks(
+ $user,
+ $revision,
+ $recipient,
+ $this->getSourceFromParams( $params )
+ );
+ }
+ }
+
+ protected function userAlreadySentThanksForRevision( User $user, Revision $revision ) {
+ return $user->getRequest()->getSessionData( "thanks-thanked-{$revision->getId()}" );
+ }
+
+ private function getRevisionFromParams( $params ) {
+ $revision = Revision::newFromId( $params['rev'] );
+
+ // Revision ID 1 means an invalid argument was passed in.
+ if ( !$revision || $revision->getId() === 1 ) {
+ $this->dieUsage( 'Revision ID is not valid', 'invalidrevision' );
+ } elseif ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
+ $this->dieUsage( 'Revision has been deleted', 'revdeleted' );
+ }
+ return $revision;
+ }
+
+ private function getTitleFromRevision( Revision $revision ) {
+ $title = Title::newFromID( $revision->getPage() );
+ if ( !$title instanceof Title ) {
+ $this->dieUsage( 'Page title could not be retrieved', 'notitle' );
+ }
+ return $title;
+ }
+
+ /**
+ * Set the source of the thanks, e.g. 'diff' or 'history'
+ */
+ private function getSourceFromParams( $params ) {
+ if ( $params['source'] ) {
+ return trim( $params['source'] );
+ } else {
+ return 'undefined';
+ }
+ }
+
+ private function getUserFromRevision( Revision $revision ) {
+ $recipient = $revision->getUser();
+ if ( !$recipient ) {
+ $this->dieUsage( 'No valid recipient found', 'invalidrecipient' );
+ }
+ return User::newFromId( $recipient );
+ }
+
+ private function sendThanks( User $user, Revision $revision, User $recipient, $source ) {
+ global $wgThanksLogging;
+ $title = $this->getTitleFromRevision( $revision );
+
+ // Create the notification via Echo extension
+ EchoEvent::create( array(
+ 'type' => 'edit-thank',
+ 'title' => $title,
+ 'extra' => array(
+ 'revid' => $revision->getId(),
+ 'thanked-user-id' => $recipient->getId(),
+ 'source' => $source,
+ ),
+ 'agent' => $user,
+ ) );
+
+ // Mark the thank in session to prevent duplicates (Bug 46690)
+ $user->getRequest()->setSessionData( "thanks-thanked-{$revision->getId()}", true );
+ // Set success message
+ $this->markResultSuccess( $recipient->getName() );
+ // Log it if we're supposed to log it
+ if ( $wgThanksLogging ) {
+ $this->logThanks( $user, $recipient );
+ }
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getDescription() {
+ return array(
+ 'This API is for sending thank you notifications from one editor to another.',
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getParamDescription() {
+ return array(
+ 'rev' => 'A revision ID for an edit that you want to thank someone for',
+ 'token' => 'An edit token (to prevent CSRF abuse)',
+ 'source' => "A short string describing the source of the request, for example, 'diff' or 'history'",
+ );
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'rev' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'token' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'source' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => false,
+ )
+ );
+ }
+
+ public function getHelpUrls() {
+ return array(
+ 'https://www.mediawiki.org/wiki/Extension:Thanks#API_Documentation',
+ );
+ }
+
+ /**
+ * @deprecated since MediaWiki core 1.25
+ */
+ public function getExamples() {
+ return array(
+ 'api.php?action=thank&revid=123&source=diff&token=xyz456'
+ => 'Send thanks for revision with the ID 123, with the source being a diff page',
+ );
+ }
+
+ /**
+ * @see ApiBase::getExamplesMessages()
+ */
+ protected function getExamplesMessages() {
+ return array(
+ 'action=thank&revid=456&source=diff&token=123ABC'
+ => 'apihelp-thank-example-1',
+ );
+ }
+}
diff --git a/Thanks/ApiThank.php b/Thanks/ApiThank.php
new file mode 100644
index 00000000..d7cda6eb
--- /dev/null
+++ b/Thanks/ApiThank.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Base API module for Thanks
+ *
+ * @ingroup API
+ * @ingroup Extensions
+ */
+abstract class ApiThank extends ApiBase {
+ protected function dieIfEchoNotInstalled() {
+ if ( !class_exists( 'EchoNotifier' ) ) {
+ $this->dieUsage( 'Echo is not installed on this wiki', 'echonotinstalled' );
+ }
+ }
+
+ protected function dieOnBadUser( User $user ) {
+ if ( $user->isAnon() ) {
+ $this->dieUsage( 'Anonymous users cannot send thanks', 'notloggedin' );
+ } elseif ( $user->pingLimiter( 'thanks-notification' ) ) {
+ $this->dieUsageMsg( array( 'actionthrottledtext' ) );
+ } elseif ( $user->isBlocked() ) {
+ $this->dieUsageMsg( array( 'blockedtext' ) );
+ }
+ }
+
+ protected function dieOnBadRecipient( User $user, User $recipient ) {
+ global $wgThanksSendToBots;
+
+ if ( $user->getId() === $recipient->getId() ) {
+ $this->dieUsage( 'You cannot thank yourself', 'invalidrecipient' );
+ } elseif ( !$wgThanksSendToBots && in_array( 'bot', $recipient->getGroups() ) ) {
+ $this->dieUsage( 'Bots cannot be thanked', 'invalidrecipient' );
+ }
+ }
+
+ protected function markResultSuccess( $recipientName ) {
+ $this->getResult()->addValue( null, 'result', array(
+ 'success' => 1,
+ 'recipient' => $recipientName,
+ ) );
+ }
+
+ protected function logThanks( User $user, User $recipient ) {
+ $logEntry = new ManualLogEntry( 'thanks', 'thank' );
+ $logEntry->setPerformer( $user );
+ $target = $recipient->getUserPage();
+ $logEntry->setTarget( $target );
+ $logId = $logEntry->insert();
+ $logEntry->publish( $logId, 'udp' );
+ }
+
+ public function needsToken() {
+ return 'csrf';
+ }
+
+ // Writes to the Echo database and sometimes log tables.
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+}
diff --git a/Thanks/COPYING b/Thanks/COPYING
new file mode 100644
index 00000000..96d3f68a
--- /dev/null
+++ b/Thanks/COPYING
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/Thanks/FlowThanksFormatter.php b/Thanks/FlowThanksFormatter.php
new file mode 100644
index 00000000..feafed0a
--- /dev/null
+++ b/Thanks/FlowThanksFormatter.php
@@ -0,0 +1,55 @@
+<?php
+
+class EchoFlowThanksFormatter extends EchoBasicFormatter {
+
+ /**
+ * @param $event EchoEvent
+ * @param $param
+ * @param $message Message
+ * @param $user User
+ */
+ protected function processParam( $event, $param, $message, $user ) {
+ if ( $param === 'postlink' ) {
+ $this->setTitleLink(
+ $event,
+ $message,
+ array(
+ 'class' => 'mw-echo-diff',
+ 'linkText' => $this->getMessage( 'notification-flow-thanks-post-link' )->text(),
+ 'param' => array(
+ 'workflow' => $event->getExtraParam( 'workflow' ),
+ ),
+ 'fragment' => "flow-post-{$event->getExtraParam( 'post-id' )}",
+ )
+ );
+ } elseif ( $param === 'topictitle' ) {
+ $message->params( $event->getExtraParam( 'topic-title' ) );
+ } else {
+ parent::processParam( $event, $param, $message, $user );
+ }
+ }
+
+ /**
+ * Overriding implementation in EchoBasicFormatter to support Flow posts
+ *
+ * @param EchoEvent $event
+ * @param User $user The user receiving the notification
+ * @param String $destination The destination type for the link, e.g. 'agent'
+ * @return Array including target and query parameters
+ */
+ protected function getLinkParams( $event, $user, $destination ) {
+ $target = null;
+ $query = array();
+
+ if ( $destination === 'post' ) {
+ $target = $event->getTitle();
+ if ( $target ) {
+ $target->setFragment( '#flow-post-' . $event->getExtraParam( 'post-id' ) );
+ $query['workflow'] = $event->getExtraParam( 'workflow' );
+ }
+ return array( $target, $query );
+ } else {
+ return parent::getLinkParams( $event, $user, $destination );
+ }
+ }
+}
diff --git a/Thanks/SpecialThanks.php b/Thanks/SpecialThanks.php
new file mode 100644
index 00000000..96cd3ac9
--- /dev/null
+++ b/Thanks/SpecialThanks.php
@@ -0,0 +1,208 @@
+<?php
+
+class SpecialThanks extends FormSpecialPage {
+
+ /**
+ * API result
+ * @var array $result
+ */
+ protected $result;
+
+ /**
+ * 'rev' for revision or 'flow' for Flow comment, null if no ID is specified
+ * @var string $type
+ */
+ protected $type;
+
+ /**
+ * Revision ID ('0' = invalid) or Flow UUID
+ * @var string $id
+ */
+ protected $id;
+
+ public function __construct() {
+ parent::__construct( 'Thanks' );
+ }
+
+ /**
+ * Set the type and ID or UUID of the request.
+ * @param string $par
+ */
+ protected function setParameter( $par ) {
+ if ( $par === null || $par === '' ) {
+ $this->type = null;
+ return;
+ }
+
+ $tokens = explode( '/', $par );
+ if ( $tokens[0] === 'Flow' ) {
+ if ( count( $tokens ) === 1 || $tokens[1] === '' ) {
+ $this->type = null;
+ } else {
+ $this->type = 'flow';
+ $this->id = $tokens[1];
+ }
+ } else {
+ $this->type = 'rev';
+ if ( !( ctype_digit( $par ) ) ) { // Revision ID is not an integer.
+ $this->id = '0';
+ } else {
+ $this->id = $par;
+ }
+ }
+ }
+
+ /**
+ * HTMLForm fields
+ * @return Array
+ */
+ protected function getFormFields() {
+ return array(
+ 'revid' => array(
+ 'id' => 'mw-thanks-form-revid',
+ 'name' => 'revid',
+ 'type' => 'hidden',
+ 'label-message' => 'thanks-form-revid',
+ 'default' => $this->id,
+ )
+ );
+ }
+
+ /**
+ * Return the confirmation or error message.
+ * @return string
+ */
+ protected function preText() {
+ if ( $this->type === null ) {
+ $msgKey = 'thanks-error-no-id-specified';
+ } elseif ( $this->type === 'rev' && $this->id === '0' ) {
+ $msgKey = 'thanks-error-invalidrevision';
+ } elseif ( $this->type === 'flow' ) {
+ $msgKey = 'flow-thanks-confirmation-special';
+ } else {
+ $msgKey = 'thanks-confirmation-special';
+ }
+ return '<p>' . $this->msg( $msgKey )->escaped() . '</p>';
+ }
+
+ /**
+ * Format the submission form.
+ * @param HTMLForm $form
+ */
+ protected function alterForm( HTMLForm $form ) {
+ if ( $this->type === null || $this->type === 'rev' && $this->id === '0' ) {
+ $form->suppressDefaultSubmit( true );
+ } else {
+ $form->setSubmitText( $this->msg( 'thanks' )->escaped() );
+ }
+ }
+
+ /**
+ * @return string
+ */
+ protected function getDisplayFormat() {
+ return 'vform';
+ }
+
+ /**
+ * Call the API internally.
+ * @param array $data
+ * @return Status
+ */
+ public function onSubmit( array $data ) {
+ if ( !isset( $data['revid'] ) ) {
+ return Status::newFatal( 'thanks-error-invalidrevision' );
+ }
+
+ if ( $this->type === 'rev' ) {
+ $requestData = array(
+ 'action' => 'thank',
+ 'rev' => (int)$data['revid'],
+ 'source' => 'specialpage',
+ 'token' => $this->getUser()->getEditToken(),
+ );
+ } else {
+ $requestData = array(
+ 'action' => 'flowthank',
+ 'postid' => $data['revid'],
+ 'token' => $this->getUser()->getEditToken(),
+ );
+ }
+
+ $request = new DerivativeRequest(
+ $this->getRequest(),
+ $requestData,
+ true // posted
+ );
+
+ $api = new ApiMain(
+ $request,
+ true // enable write mode
+ );
+
+ try {
+ $api->execute();
+ } catch ( UsageException $e ) {
+ return $this->handleErrorCodes( $e->getCodeString() );
+ }
+
+ if ( defined( 'ApiResult::META_CONTENT' ) ) {
+ $this->result = $api->getResult()->getResultData( array( 'result' ) );
+ } else {
+ $result = $api->getResult()->getData();
+ $this->result = $result['result'];
+ }
+ return Status::newGood();
+ }
+
+ /**
+ * Handle error codes returned by the API.
+ *
+ * @param $code
+ * @return Status
+ */
+ protected function handleErrorCodes( $code ) {
+ $status = new Status;
+ switch ( $code ) {
+ case 'invalidrevision':
+ case 'invalidpostid':
+ case 'ratelimited':
+ // Message keys used here:
+ // * thanks-error-invalidrevision
+ // * thanks-error-invalidpostid
+ // * thanks-error-ratelimited
+ $status->fatal( 'thanks-error-' . $code );
+ break;
+ case 'notloggedin':
+ case 'blockedtext':
+ $status->fatal( $code );
+ break;
+ default:
+ $status->fatal( 'thanks-error-undefined' );
+ }
+ return $status;
+ }
+
+ /**
+ * Display a message to the user.
+ */
+ public function onSuccess() {
+ $recipient = User::newFromName( $this->result['recipient'] );
+ $link = Linker::userLink( $recipient->getId(), $recipient->getName() );
+
+ if ( $this->type === 'rev' ) {
+ $msgKey = 'thanks-thanked-notice';
+ } else {
+ $msgKey = 'flow-thanks-thanked-notice';
+ }
+
+ $this->getOutput()->addHTML( $this->msg( $msgKey )
+ ->rawParams( $link )
+ ->params( $recipient->getName() )->parse()
+ );
+ }
+
+ public function isListed() {
+ return false;
+ }
+}
diff --git a/Thanks/ThankYou.png b/Thanks/ThankYou.png
new file mode 100644
index 00000000..836147fe
--- /dev/null
+++ b/Thanks/ThankYou.png
Binary files differ
diff --git a/Thanks/Thanks.alias.php b/Thanks/Thanks.alias.php
new file mode 100644
index 00000000..bc6a5843
--- /dev/null
+++ b/Thanks/Thanks.alias.php
@@ -0,0 +1,160 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+// @codingStandardsIgnoreFile
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'Thanks' => array( 'Thanks' ),
+);
+
+/** Afrikaans (Afrikaans) */
+$specialPageAliases['af'] = array(
+ 'Thanks' => array( 'Dankie' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'Thanks' => array( 'شكرا' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'Thanks' => array( 'شكرا' ),
+);
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = array(
+ 'Thanks' => array( 'Danke' ),
+);
+
+/** Zazaki (Zazaki) */
+$specialPageAliases['diq'] = array(
+ 'Thanks' => array( 'Teşekuri' ),
+);
+
+/** Spanish (español) */
+$specialPageAliases['es'] = array(
+ 'Thanks' => array( 'Gracias' ),
+);
+
+/** Estonian (eesti) */
+$specialPageAliases['et'] = array(
+ 'Thanks' => array( 'Tänu' ),
+);
+
+/** Persian (فارسی) */
+$specialPageAliases['fa'] = array(
+ 'Thanks' => array( 'تشکر' ),
+);
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = array(
+ 'Thanks' => array( 'תודה', 'תודות' ),
+);
+
+/** Croatian (hrvatski) */
+$specialPageAliases['hr'] = array(
+ 'Thanks' => array( 'Zahvale' ),
+);
+
+/** Upper Sorbian (hornjoserbsce) */
+$specialPageAliases['hsb'] = array(
+ 'Thanks' => array( 'Dźak' ),
+);
+
+/** Italian (italiano) */
+$specialPageAliases['it'] = array(
+ 'Thanks' => array( 'Ringrazia' ),
+);
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = array(
+ 'Thanks' => array( '감사' ),
+);
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = array(
+ 'Thanks' => array( 'Merci' ),
+);
+
+/** Literary Chinese (文言) */
+$specialPageAliases['lzh'] = array(
+ 'Thanks' => array( '謝' ),
+);
+
+/** Macedonian (македонски) */
+$specialPageAliases['mk'] = array(
+ 'Thanks' => array( 'Благодарења' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'Thanks' => array( 'കൃത്ജ്ഞതകൾ' ),
+);
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = array(
+ 'Thanks' => array( 'धन्यवाद' ),
+);
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = array(
+ 'Thanks' => array( 'Berterima_kasih' ),
+);
+
+/** Norwegian Bokmål (norsk bokmål) */
+$specialPageAliases['nb'] = array(
+ 'Thanks' => array( 'Takk' ),
+);
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = array(
+ 'Thanks' => array( 'Bedanken' ),
+);
+
+/** Portuguese (português) */
+$specialPageAliases['pt'] = array(
+ 'Thanks' => array( 'Agradecer' ),
+);
+
+/** Quechua (Runa Simi) */
+$specialPageAliases['qu'] = array(
+ 'Thanks' => array( 'Uspalay' ),
+);
+
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$specialPageAliases['sr-ec'] = array(
+ 'Thanks' => array( 'Хвала' ),
+);
+
+/** Swedish (svenska) */
+$specialPageAliases['sv'] = array(
+ 'Thanks' => array( 'Tack' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = array(
+ 'Thanks' => array( 'Cảm_ơn', 'Cám_ơn' ),
+);
+
+/** Chinese (中文) */
+$specialPageAliases['zh'] = array(
+ 'Thanks' => array( '感谢', '感謝' ),
+);
+
+/** Simplified Chinese (中文(简体)‎) */
+$specialPageAliases['zh-hans'] = array(
+ 'Thanks' => array( '感谢' ),
+);
+
+/** Traditional Chinese (中文(繁體)‎) */
+$specialPageAliases['zh-hant'] = array(
+ 'Thanks' => array( '感謝' ),
+); \ No newline at end of file
diff --git a/Thanks/Thanks.hooks.php b/Thanks/Thanks.hooks.php
new file mode 100644
index 00000000..dd5ee8cc
--- /dev/null
+++ b/Thanks/Thanks.hooks.php
@@ -0,0 +1,302 @@
+<?php
+/**
+ * Hooks for Thanks extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class ThanksHooks {
+ /**
+ * ResourceLoaderTestModules hook handler
+ * @see https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderTestModules
+ *
+ * @param array $testModules
+ * @param ResourceLoader $resourceLoader
+ * @return bool
+ */
+ public static function onResourceLoaderTestModules( array &$testModules,
+ ResourceLoader &$resourceLoader
+ ) {
+ if ( class_exists( 'SpecialMobileDiff' ) ) {
+ $testModules['qunit']['tests.ext.thanks.mobilediff'] = array(
+ 'localBasePath' => __DIR__,
+ 'remoteExtPath' => 'Thanks',
+ 'dependencies' => array( 'ext.thanks.mobilediff' ),
+ 'scripts' => array(
+ 'tests/qunit/test_ext.thanks.mobilediff.js',
+ ),
+ 'targets' => array( 'desktop', 'mobile' ),
+ );
+ }
+ return true;
+ }
+
+ /**
+ * Handler for HistoryRevisionTools and DiffRevisionTools hooks.
+ * Inserts 'thank' link into revision interface
+ * @param $rev Revision object to add the thank link for
+ * @param &$links array Links to add to the revision interface
+ * @param $oldRev Revision object of the "old" revision when viewing a diff
+ * @return bool
+ */
+ public static function insertThankLink( $rev, &$links, $oldRev = null ) {
+ global $wgUser, $wgThanksSendToBots;
+ // Make sure Echo is turned on.
+ // Exclude anonymous users.
+ // Don't let users thank themselves.
+ // Exclude users who are blocked.
+ if ( class_exists( 'EchoNotifier' )
+ && !$wgUser->isAnon()
+ && $rev->getUser() !== $wgUser->getId()
+ && !$wgUser->isBlocked()
+ && !$rev->isDeleted( Revision::DELETED_TEXT )
+ && ( !$oldRev || $rev->getParentId() == $oldRev->getId() )
+ ) {
+ $recipient = User::newFromId( $rev->getUser() );
+ $recipientAllowed = true;
+ // If bots are not allowed, exclude them as recipients
+ if ( !$wgThanksSendToBots ) {
+ $recipientAllowed = !in_array( 'bot', $recipient->getGroups() );
+ }
+ if ( $recipientAllowed && !$recipient->isAnon() ) {
+ $links[] = self::generateThankElement( $rev, $recipient );
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Helper for self::insertThankLink
+ * Creates either a thank link or thanked span based on users session
+ * @param $rev Revision object to generate the thank element for
+ * @param $recipient User who receives thanks notification
+ * @return string
+ */
+ protected static function generateThankElement( $rev, $recipient ) {
+ global $wgUser;
+ // User has already thanked for revision
+ if ( $wgUser->getRequest()->getSessionData( "thanks-thanked-{$rev->getId()}" ) ) {
+ return Html::element(
+ 'span',
+ array( 'class' => 'mw-thanks-thanked' ),
+ wfMessage( 'thanks-thanked', $wgUser )->text()
+ );
+ }
+
+ // Add 'thank' link
+ $tooltip = wfMessage( 'thanks-thank-tooltip' )
+ ->params( $wgUser->getName(), $recipient->getName() )
+ ->text();
+
+ return Html::element(
+ 'a',
+ array(
+ 'class' => 'mw-thanks-thank-link',
+ 'href' => SpecialPage::getTitleFor( 'Thanks', $rev->getId() )->getFullURL(),
+ 'title' => $tooltip,
+ 'data-revision-id' => $rev->getId(),
+ ),
+ wfMessage( 'thanks-thank' )->plain()
+ );
+ }
+
+ /**
+ * Handler for PageHistoryBeforeList hook.
+ * @see http://www.mediawiki.org/wiki/Manual:Hooks/PageHistoryBeforeList
+ * @param &$page WikiPage|Article|ImagePage|CategoryPage|Page The page that the history is loading for.
+ * @param $context RequestContext object
+ * @return bool true in all cases
+ */
+ public static function onPageHistoryBeforeList( &$page, $context ) {
+ global $wgThanksConfirmationRequired;
+ if ( class_exists( 'EchoNotifier' )
+ && $context->getUser()->isLoggedIn()
+ ) {
+ // Load the module for the thank links
+ $context->getOutput()->addModules( array( 'ext.thanks.revthank' ) );
+ $context->getOutput()->addJsConfigVars( 'thanks-confirmation-required',
+ $wgThanksConfirmationRequired );
+ }
+ return true;
+ }
+
+ /**
+ * Handler for DiffViewHeader hook.
+ * @see http://www.mediawiki.org/wiki/Manual:Hooks/DiffViewHeader
+ * @param $diff DifferenceEngine
+ * @param $oldRev Revision object of the "old" revision (may be null/invalid)
+ * @param $newRev Revision object of the "new" revision
+ * @return bool true in all cases
+ */
+ public static function onDiffViewHeader( $diff, $oldRev, $newRev ) {
+ global $wgThanksConfirmationRequired;
+ if ( class_exists( 'EchoNotifier' )
+ && $diff->getUser()->isLoggedIn()
+ ) {
+ // Load the module for the thank link
+ $diff->getOutput()->addModules( array( 'ext.thanks.revthank' ) );
+ $diff->getOutput()->addJsConfigVars( 'thanks-confirmation-required',
+ $wgThanksConfirmationRequired );
+ }
+ return true;
+ }
+
+ /**
+ * Add Thanks events to Echo
+ *
+ * @param $notifications array of Echo notifications
+ * @param $notificationCategories array of Echo notification categories
+ * @param $icons array of icon details
+ * @return bool
+ */
+ public static function onBeforeCreateEchoEvent( &$notifications, &$notificationCategories, &$icons ) {
+ $notificationCategories['edit-thank'] = array(
+ 'priority' => 3,
+ 'tooltip' => 'echo-pref-tooltip-edit-thank',
+ );
+
+ $notifications['edit-thank'] = array(
+ 'primary-link' => array( 'message' => 'notification-link-text-view-edit', 'destination' => 'diff' ),
+ 'category' => 'edit-thank',
+ 'group' => 'positive',
+ 'formatter-class' => 'EchoThanksFormatter',
+ 'title-message' => 'notification-thanks',
+ 'title-params' => array( 'agent', 'difflink', 'title' ),
+ 'flyout-message' => 'notification-thanks-flyout2',
+ 'flyout-params' => array( 'agent', 'title' ),
+ 'payload' => array( 'summary' ),
+ 'email-subject-message' => 'notification-thanks-email-subject',
+ 'email-subject-params' => array( 'agent' ),
+ 'email-body-batch-message' => 'notification-thanks-email-batch-body',
+ 'email-body-batch-params' => array( 'agent', 'title' ),
+ 'icon' => 'thanks',
+ );
+
+ $notifications['flow-thank'] = array(
+ 'primary-link' => array ( 'message' => 'notification-link-text-view-post', 'destination' => 'post' ),
+ 'category' => 'edit-thank',
+ 'group' => 'positive',
+ 'formatter-class' => 'EchoFlowThanksFormatter',
+ 'title-message' => 'notification-flow-thanks',
+ 'title-params' => array( 'agent', 'postlink', 'topictitle', 'title', 'user' ),
+ 'flyout-message' => 'notification-flow-thanks-flyout',
+ 'flyout-params' => array( 'agent', 'topictitle', 'title', 'user' ),
+ 'email-subject-message' => 'notification-flow-thanks-email-subject',
+ 'email-subject-params' => array( 'agent', 'user' ),
+ 'email-body-batch-message' => 'notification-flow-thanks-email-batch-body',
+ 'email-body-batch-params' => array( 'agent', 'topictitle', 'title', 'user' ),
+ 'icon' => 'thanks',
+ );
+
+ $icons['thanks'] = array(
+ 'path' => 'Thanks/ThankYou.png',
+ );
+
+ return true;
+ }
+
+ /**
+ * Add user to be notified on echo event
+ * @param $event EchoEvent
+ * @param $users array
+ * @return bool
+ */
+ public static function onEchoGetDefaultNotifiedUsers( $event, &$users ) {
+ switch ( $event->getType() ) {
+ case 'edit-thank':
+ case 'flow-thank':
+ $extra = $event->getExtra();
+ if ( !$extra || !isset( $extra['thanked-user-id'] ) ) {
+ break;
+ }
+ $recipientId = $extra['thanked-user-id'];
+ $recipient = User::newFromId( $recipientId );
+ $users[$recipientId] = $recipient;
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * Handler for AddNewAccount hook
+ * @see http://www.mediawiki.org/wiki/Manual:Hooks/AddNewAccount
+ * @param $user User object that was created.
+ * @param $byEmail bool True when account was created "by email".
+ * @return bool
+ */
+ public static function onAccountCreated( $user, $byEmail ) {
+ // New users get echo preferences set that are not the default settings for existing users.
+ // Specifically, new users are opted into email notifications for thanks.
+ $user->setOption( 'echo-subscriptions-email-edit-thank', true );
+ $user->saveSettings();
+ return true;
+ }
+
+ /**
+ * Add thanks button to SpecialMobileDiff page
+ * @param &$output OutputPage object
+ * @param $ctx MobileContext object
+ * @param $revisions Array of the two revisions that are being compared in the diff
+ * @return bool true in all cases
+ */
+ public static function onBeforeSpecialMobileDiffDisplay( &$output, $ctx, $revisions ) {
+ // If the Echo and MobileFrontend extensions are installed and the user is
+ // logged in, show a 'Thank' link.
+ if ( class_exists( 'EchoNotifier' )
+ && class_exists( 'SpecialMobileDiff' )
+ && $output->getUser()->isLoggedIn()
+ ) {
+ $output->addModules( array( 'ext.thanks.mobilediff' ) );
+ $rev = $revisions[1];
+ if ( $rev ) {
+ if ( $output->getRequest()->getSessionData( 'thanks-thanked-' . $rev->getId() ) ) {
+ // User already sent thanks for this revision
+ $output->addJsConfigVars( 'wgThanksAlreadySent', true );
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Hook to add PHPUnit test cases.
+ * @see https://www.mediawiki.org/wiki/Manual:Hooks/UnitTestsList
+ *
+ * @param array &$files
+ *
+ * @return boolean
+ */
+ public static function registerUnitTests( array &$files ) {
+ // @codeCoverageIgnoreStart
+ $files[] = __DIR__ . '/tests/';
+ return true;
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * So users can just type in a username for target and it'll work
+ * @param array $types
+ * @return bool
+ */
+ public static function onGetLogTypesOnUser( array &$types ) {
+ $types[] = 'thanks';
+ return true;
+ }
+
+ /**
+ * Handler for FlowAddModules. Inserts javascript to enhance thank
+ * links from static urls to in-page dialogs along with reloading
+ * the previously thanked state.
+ *
+ * @param OutputPage $out OutputPage object
+ * @param mixed $skin
+ * @return bool
+ */
+ public static function onBeforePageDisplay( OutputPage $out, $skin ) {
+ if ( $out->getTitle()->hasContentModel( 'flow-board' ) ) {
+ $out->addModules( 'ext.thanks.flowthank' );
+ }
+ return true;
+ }
+}
diff --git a/Thanks/Thanks.i18n.php b/Thanks/Thanks.i18n.php
new file mode 100644
index 00000000..24cb1563
--- /dev/null
+++ b/Thanks/Thanks.i18n.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * This is a backwards-compatibility shim, generated by:
+ * https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
+ *
+ * Beginning with MediaWiki 1.23, translation strings are stored in json files,
+ * and the EXTENSION.i18n.php file only exists to provide compatibility with
+ * older releases of MediaWiki. For more information about this migration, see:
+ * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
+ *
+ * This shim maintains compatibility back to MediaWiki 1.17.
+ */
+$messages = array();
+if ( !function_exists( 'wfJsonI18nShimcbebcf7f4e8bfd36' ) ) {
+ function wfJsonI18nShimcbebcf7f4e8bfd36( $cache, $code, &$cachedData ) {
+ $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
+ foreach ( $codeSequence as $csCode ) {
+ $fileName = dirname( __FILE__ ) . "/i18n/$csCode.json";
+ if ( is_readable( $fileName ) ) {
+ $data = FormatJson::decode( file_get_contents( $fileName ), true );
+ foreach ( array_keys( $data ) as $key ) {
+ if ( $key === '' || $key[0] === '@' ) {
+ unset( $data[$key] );
+ }
+ }
+ $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
+ }
+
+ $cachedData['deps'][] = new FileDependency( $fileName );
+ }
+ return true;
+ }
+
+ $GLOBALS['wgHooks']['LocalisationCacheRecache'][] = 'wfJsonI18nShimcbebcf7f4e8bfd36';
+}
diff --git a/Thanks/Thanks.php b/Thanks/Thanks.php
new file mode 100644
index 00000000..cdd23826
--- /dev/null
+++ b/Thanks/Thanks.php
@@ -0,0 +1,178 @@
+<?php
+/**
+ * Thanks extension
+ *
+ * This extension adds 'thank' links that allow users to thank other users for
+ * specific revisions. It relies on the Echo extension to send the actual thanks.
+ * For more info see http://mediawiki.org/wiki/Extension:Thanks
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * This program is distributed WITHOUT ANY WARRANTY.
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Ryan Kaldari
+ * @license MIT License
+ */
+
+$wgExtensionCredits['other'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Thanks',
+ 'author' => array(
+ 'Ryan Kaldari',
+ 'Benjamin Chen',
+ 'Wctaiwan',
+ ),
+ 'version' => '1.2.0',
+ 'url' => 'https://www.mediawiki.org/wiki/Extension:Thanks',
+ 'descriptionmsg' => 'thanks-desc',
+ 'license-name' => 'MIT',
+);
+
+
+/* Setup */
+
+$dir = __DIR__;
+
+// Register files
+$wgAutoloadClasses['ThanksHooks'] = $dir . '/Thanks.hooks.php';
+$wgAutoloadClasses['EchoThanksFormatter'] = $dir . '/ThanksFormatter.php';
+$wgAutoloadClasses['EchoFlowThanksFormatter'] = $dir . '/FlowThanksFormatter.php';
+$wgAutoloadClasses['ApiThank'] = $dir . '/ApiThank.php';
+$wgAutoloadClasses['ApiRevThank'] = $dir . '/ApiRevThank.php';
+$wgAutoloadClasses['ApiFlowThank'] = $dir . '/ApiFlowThank.php';
+$wgAutoloadClasses['ThanksLogFormatter'] = $dir . '/ThanksLogFormatter.php';
+$wgAutoloadClasses['SpecialThanks'] = $dir . '/SpecialThanks.php';
+$wgMessagesDirs['Thanks'] = __DIR__ . '/i18n';
+$wgExtensionMessagesFiles['Thanks'] = $dir . '/Thanks.i18n.php';
+$wgExtensionMessagesFiles['ThanksAlias'] = $dir . '/Thanks.alias.php';
+
+// Register APIs
+$wgAPIModules['thank'] = 'ApiRevThank';
+/** @todo This should be conditional on Flow being installed on the wiki */
+$wgAPIModules['flowthank'] = 'ApiFlowThank';
+
+// Register special page
+$wgSpecialPages['Thanks'] = 'SpecialThanks';
+
+// Register hooks
+$wgHooks['HistoryRevisionTools'][] = 'ThanksHooks::insertThankLink';
+$wgHooks['DiffRevisionTools'][] = 'ThanksHooks::insertThankLink';
+$wgHooks['PageHistoryBeforeList'][] = 'ThanksHooks::onPageHistoryBeforeList';
+$wgHooks['DiffViewHeader'][] = 'ThanksHooks::onDiffViewHeader';
+$wgHooks['BeforeCreateEchoEvent'][] = 'ThanksHooks::onBeforeCreateEchoEvent';
+$wgHooks['EchoGetDefaultNotifiedUsers'][] = 'ThanksHooks::onEchoGetDefaultNotifiedUsers';
+$wgHooks['AddNewAccount'][] = 'ThanksHooks::onAccountCreated';
+$wgHooks['BeforeSpecialMobileDiffDisplay'][] = 'ThanksHooks::onBeforeSpecialMobileDiffDisplay';
+$wgHooks['UnitTestsList'][] = 'ThanksHooks::registerUnitTests';
+$wgHooks['GetLogTypesOnUser'][] = 'ThanksHooks::onGetLogTypesOnUser';
+$wgHooks['BeforePageDisplay'][] = 'ThanksHooks::onBeforePageDisplay';
+$wgHooks['ResourceLoaderTestModules'][] = 'ThanksHooks::onResourceLoaderTestModules';
+
+// Register modules
+$wgResourceModules['ext.thanks'] = array(
+ 'scripts' => array(
+ 'ext.thanks.thank.js',
+ ),
+ 'localBasePath' => $dir . '/modules',
+ 'remoteExtPath' => 'Thanks/modules',
+);
+$wgResourceModules['ext.thanks.revthank'] = array(
+ 'scripts' => array(
+ 'ext.thanks.revthank.js',
+ ),
+ 'messages' => array(
+ 'thanks-thanked',
+ 'thanks-error-undefined',
+ 'thanks-error-invalidrevision',
+ 'thanks-error-ratelimited',
+ 'thanks-confirmation2',
+ 'thanks-thank-tooltip-no',
+ 'thanks-thank-tooltip-yes',
+ 'ok',
+ 'cancel',
+ ),
+ 'dependencies' => array(
+ 'mediawiki.jqueryMsg',
+ 'mediawiki.api',
+ 'user.tokens',
+ 'jquery.confirmable',
+ 'ext.thanks',
+ ),
+ 'localBasePath' => $dir . '/modules',
+ 'remoteExtPath' => 'Thanks/modules',
+);
+$wgResourceModules['ext.thanks.mobilediff'] = array(
+ 'scripts' => array(
+ 'ext.thanks.mobilediff.js',
+ ),
+ 'messages' => array(
+ 'thanks-button-thank',
+ 'thanks-button-thanked',
+ 'thanks-error-invalidrevision',
+ 'thanks-error-ratelimited',
+ 'thanks-error-undefined',
+ 'thanks-thanked-notice',
+ ),
+ 'dependencies' => array(
+ // Module name changed in MobileFrontend on 2014-02-25
+ 'mobile.special.mobilediff.scripts',
+ 'mobile.toast',
+ ),
+ 'targets' => array( 'desktop', 'mobile' ),
+ 'localBasePath' => $dir . '/modules',
+ 'remoteExtPath' => 'Thanks/modules',
+);
+$wgResourceModules['ext.thanks.flowthank'] = array(
+ 'scripts' => array(
+ 'ext.thanks.flowthank.js',
+ ),
+ 'messages' => array(
+ 'thanks-button-thanked',
+ 'thanks-error-undefined',
+ 'thanks-error-ratelimited',
+ ),
+ 'dependencies' => array(
+ 'mediawiki.jqueryMsg',
+ 'mediawiki.api',
+ 'user.tokens',
+ 'ext.thanks',
+ ),
+ 'localBasePath' => $dir . '/modules',
+ 'remoteExtPath' => 'Thanks/modules',
+);
+
+// Logging
+$wgLogTypes[] = 'thanks';
+$wgLogActionsHandlers['thanks/*'] = 'ThanksLogFormatter';
+$wgFilterLogTypes['thanks'] = true;
+
+/* Configuration */
+
+// Enable sending thanks to bots
+$wgThanksSendToBots = false;
+
+// Whether or not thanks should be logged in Special:Log
+$wgThanksLogging = true;
+
+// Whether or not confirmation is required for sending thanks
+$wgThanksConfirmationRequired = true;
+
+// Set how many thanks can be sent per minute by a single user (default 10)
+$wgRateLimits += array(
+ 'thanks-notification' => array( 'user' => array( 10, 60 ) ),
+);
+
+// Set default user options
+$wgDefaultUserOptions['echo-subscriptions-web-edit-thank'] = true;
+// This is overriden for new users in ThanksHooks::onAccountCreated
+$wgDefaultUserOptions['echo-subscriptions-email-edit-thank'] = false;
diff --git a/Thanks/ThanksFormatter.php b/Thanks/ThanksFormatter.php
new file mode 100644
index 00000000..a7a2aa3a
--- /dev/null
+++ b/Thanks/ThanksFormatter.php
@@ -0,0 +1,35 @@
+<?php
+
+class EchoThanksFormatter extends EchoBasicFormatter {
+
+ /**
+ * @param $event EchoEvent
+ * @param $param
+ * @param $message Message
+ * @param $user User
+ */
+ protected function processParam( $event, $param, $message, $user ) {
+ if ( $param === 'difflink' ) {
+ $eventData = $event->getExtra();
+ if ( !isset( $eventData['revid'] ) ) {
+ $message->params( '' );
+ return;
+ }
+ $this->setTitleLink(
+ $event,
+ $message,
+ array(
+ 'class' => 'mw-echo-diff',
+ 'linkText' => wfMessage( 'notification-thanks-diff-link' )->text(),
+ 'param' => array(
+ 'oldid' => $eventData['revid'],
+ 'diff' => 'prev',
+ )
+ )
+ );
+
+ } else {
+ parent::processParam( $event, $param, $message, $user );
+ }
+ }
+}
diff --git a/Thanks/ThanksLogFormatter.php b/Thanks/ThanksLogFormatter.php
new file mode 100644
index 00000000..17d6b129
--- /dev/null
+++ b/Thanks/ThanksLogFormatter.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * This class formats log entries for thanks
+ */
+class ThanksLogFormatter extends LogFormatter {
+ protected function getMessageParameters() {
+ $params = parent::getMessageParameters();
+ // Convert target from a pageLink to a userLink since the target is
+ // actually a user, not a page.
+ $recipient = User::newFromName( $this->entry->getTarget()->getText(), false );
+ $params[2] = Message::rawParam( $this->makeUserLink( $recipient ) );
+ $params[3] = $recipient->getName();
+ return $params;
+ }
+
+ public function getPreloadTitles() {
+ // Add the recipient's user talk page to LinkBatch
+ return array( Title::makeTitle( NS_USER_TALK, $this->entry->getTarget()->getText() ) );
+ }
+}
diff --git a/Thanks/WhiteSmiley.png b/Thanks/WhiteSmiley.png
new file mode 100644
index 00000000..09fa5eb0
--- /dev/null
+++ b/Thanks/WhiteSmiley.png
Binary files differ
diff --git a/Thanks/i18n/af.json b/Thanks/i18n/af.json
new file mode 100644
index 00000000..2e3783d6
--- /dev/null
+++ b/Thanks/i18n/af.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Naudefj"
+ ]
+ },
+ "thanks-desc": "Voeg 'n \"Bedank\"-skakel by geskiedenis en weergawe-verskille",
+ "thanks-thank": "bedank",
+ "thanks-thanked": "{{GENDER:$1|is bedank}}",
+ "thanks-button-thank": "{{GENDER:$1|Bedank}}",
+ "thanks-button-thanked": "{{GENDER:$1|Is bedank}}",
+ "thanks-error-undefined": "Bedanking het gefaal. Probeer asseblief weer.",
+ "thanks-error-invalidrevision": "Die weergawenommer is nie geldig nie.",
+ "thanks-error-ratelimited": "{{GENDER:$1|U}} het u limiet vir bedankings oorskry. Wag eers en probeer dan weer.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Stuur}} die {{GENDER:$2|gebruiker}} 'n dankiesê-kennisgewing",
+ "thanks-confirmation2": "{{GENDER:$1|Sê}} dankie vir die wysiging?",
+ "thanks-thanked-notice": "$1 is in kennis gestel dat u van {{GENDER:$2|sy|haar|sy/haar}} wysiging hou.",
+ "thanks": "Stuur bedanking",
+ "thanks-form-revid": "Weergawe-ID vir wysiging",
+ "thanks-already-thanked": "{{GENDER:$1|U}} het al 'n bedanking vir hierdie wysiging gestuur.",
+ "echo-pref-subscription-edit-thank": "as iemand u vir 'n wysiging bedank",
+ "echo-pref-tooltip-edit-thank": "Laat my weet as iemand my vir 'n wysiging bedank.",
+ "echo-category-title-edit-thank": "Dankiesê-kennisgewings",
+ "notification-thanks-diff-link": "u wysiging",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|het}} u op [[:$3]] vir $2 bedank.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|het}} u vir u wysiging aan $2 bedank.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|het}} u vir u wysiging bewerking op {{SITENAME}} bedank",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|het}} u vir u wysiging aan $2 bedank.",
+ "notification-link-text-respond-to-user": "Reageer op bedanking",
+ "log-name-thanks": "Bedankingslogboek",
+ "log-description-thanks": "Hieronder is 'n lys van gebruikers wat deur ander gebruikers bedank is.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|het}} {{GENDER:$4|$3}} bedank",
+ "log-show-hide-thanks": "bedankingslogboek $1",
+ "thanks-error-no-id-specified": "U moet 'n WysigingID verskaf om iemand te bedank.",
+ "thanks-confirmation-special": "Wil u vir hierdie wysiging dankie sê?",
+ "notification-link-text-view-post": "Wys opmerking",
+ "thanks-error-invalidpostid": "PosID is ongeldig",
+ "flow-thanks-confirmation-special": "Wil u vir hierdie opmerking dankie sê?",
+ "flow-thanks-thanked-notice": "$1 is laat weet dat u {{GENDER:$2|hom|haar|hom/haar}} vir {{GENDER:$2|sy|haar|sy/haar}} opmerking bedank het.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|het}} {{GENDER:$5|u}} vir $2 in \"$3\" op [[:$4]] bedank.",
+ "notification-flow-thanks-post-link": "U opmerking",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|het}} {{GENDER:$4|u}} vir u opmerking in \"$2\" op $3 bedank.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|het}} {{GENDER:$2|u}} vir u opmerking op {{SITENAME}} bedank",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|het}} {{GENDER:$4|u}} voor u opmerking in \"$2\" op $3 bedank."
+}
diff --git a/Thanks/i18n/ar.json b/Thanks/i18n/ar.json
new file mode 100644
index 00000000..f378a8df
--- /dev/null
+++ b/Thanks/i18n/ar.json
@@ -0,0 +1,50 @@
+{
+ "@metadata": {
+ "authors": [
+ "Asaifm",
+ "ترجمان05",
+ "زكريا",
+ "مشعل الحربي",
+ "Abanima"
+ ]
+ },
+ "thanks-desc": "تضيف روابط للشكر على صفحات التاريخ والفرق",
+ "thanks-thank": "شكر",
+ "thanks-thanked": "{{GENDER:$1|تم إرسال الشكر}}",
+ "thanks-button-thank": "{{GENDER:$1|شكر}}",
+ "thanks-button-thanked": "{{GENDER:$1|تم إرسال الشكر}}",
+ "thanks-error-undefined": "فشل إرسال الشكر، الرجاء المحاولة مجددًا.",
+ "thanks-error-invalidrevision": "معرّف المراجعة غير صحيح.",
+ "thanks-error-ratelimited": "لقد {{GENDER:$1|تجاوزت}} حد التقييم، الرجاء الانتظار لبعض الوقت ثم المحاولة مجددًا.",
+ "thanks-thank-tooltip": "{{GENDER:$1|أرسل|أرسلي}} إشعار شكر ل{{GENDER:$2|هذا المستخدم|هذه المستخدمة}}",
+ "thanks-confirmation2": "أتود{{GENDER:$1||ين}} الشكر لهذا التعديل؟",
+ "thanks-thanked-notice": "{{GENDER:$2|تلقى|تلقت}} $1 شكرك على التعديل الذي {{GENDER:$2|قام|قامت}} به.",
+ "thanks": "إرسال شكر",
+ "thanks-form-revid": "رقم التعديل",
+ "thanks-already-thanked": "{{GENDER:$1|لقد قمت|لقد قمتِ}} بإرسال شكر على هذا التعديل من قبل.",
+ "echo-pref-subscription-edit-thank": "شكري على تعديلي",
+ "echo-pref-tooltip-edit-thank": "أشعرني عندما يشكرني أحد ما على تعديل قمت به.",
+ "echo-category-title-edit-thank": "شكر",
+ "notification-thanks-diff-link": "تعديلك",
+ "notification-thanks": "{{GENDER:$1|شكرك|شكرتك}} [[User:$1|$1]] على $2 في [[:$3]].",
+ "notification-thanks-flyout2": "{{GENDER:$1|شكرك|شكرتك}} [[User:$1|$1]] على تعديلك في $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|شكرك|شكرتك}} على تعديلك في {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|شكرك|شكرتك}} على تعديلك في $2.",
+ "notification-link-text-respond-to-user": "الرد على المستخدم",
+ "log-name-thanks": "سجل الشكر",
+ "log-description-thanks": "بالأسفل قائمة مستخدمين تلقوا شكرًا من مستخدمين آخرين.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|شكر|شكرت}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 سجل الشكر",
+ "thanks-error-no-id-specified": "يجب عليك تحديد معرِّف المراجعة لإرسال الشكر.",
+ "thanks-confirmation-special": "أتود إرسال شكرك لصاحب هذا التعديل؟",
+ "notification-link-text-view-post": "أظهر التعليق",
+ "flow-thanks-confirmation-special": "هل تريد إرسال شكر على هذا التعليق؟",
+ "flow-thanks-thanked-notice": "{{GENDER:$2|تلقى|تلقت}} $1 شكرك على {{GENDER:$2|تعليقه|تعليقها}}.",
+ "notification-flow-thanks": "{{GENDER:$1|أرسل|أرسلت}} [[User:$1|$1]] شكراً {{GENDER:$5|إليكَ|إليكِ}} على $2 في مقطع «$3» في [[:$4]].",
+ "notification-flow-thanks-post-link": "تعليقك",
+ "notification-flow-thanks-flyout": "{{GENDER:$1|شكر|شكرت}}{{GENDER:$4|كَ|كِ}} [[User:$1|$1]] على تعليق{{GENDER:$4|كَ|كِ}} في مقطع «$2» في $3.",
+ "notification-flow-thanks-email-subject": "{{GENDER:$1|شكر|شكرت}}{{GENDER:$2|كَ|كِ}} $1 على تعليقك في {{SITENAME}}.",
+ "notification-flow-thanks-email-batch-body": "{{GENDER:$1|شكر|شكرت}}{{GENDER:$4|كَ|كِ}} $1 على تعليق{{GENDER:$4|كَ|كِ}} في مقطع «$2» في $3.",
+ "apihelp-thank-description": "أرسل إخطاراً بالشكر إلى محرر.",
+ "apihelp-thank-param-rev": "معرِّف المراجعة التي تشكر الشخص عليها."
+}
diff --git a/Thanks/i18n/arq.json b/Thanks/i18n/arq.json
new file mode 100644
index 00000000..c7b53709
--- /dev/null
+++ b/Thanks/i18n/arq.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Oldstoneage"
+ ]
+ },
+ "thanks-thank": "صحّيت",
+ "thanks-thank-tooltip": "{{GENDER:$1|ابعت}} ستكتار الخير ل هاد {{GENDER:$2|المستعملي}}"
+}
diff --git a/Thanks/i18n/as.json b/Thanks/i18n/as.json
new file mode 100644
index 00000000..d706ec4c
--- /dev/null
+++ b/Thanks/i18n/as.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bishnu Saikia",
+ "Gitartha.bordoloi"
+ ]
+ },
+ "thanks-thank": "ধন্যবাদ",
+ "thanks-thank-tooltip": "এই {{GENDER:$2|সদস্যলৈ}} এটা ধন্যবাদ বাৰ্তা {{GENDER:$1|পঠিয়াওক}}",
+ "notification-link-text-view-post": "মন্তব্য দেখুৱাওক",
+ "notification-flow-thanks-post-link": "আপোনাৰ মন্তব্য"
+}
diff --git a/Thanks/i18n/ast.json b/Thanks/i18n/ast.json
new file mode 100644
index 00000000..0a72d428
--- /dev/null
+++ b/Thanks/i18n/ast.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "thanks-desc": "Amiesta enllaces d'agradecimientu a usuarios por ediciones, comentarios, etc.",
+ "thanks-thank": "agradecer",
+ "thanks-thanked": "{{GENDER:$1|agradecíu|agradecida}}",
+ "thanks-button-thank": "{{GENDER:$1|Agradecer}}",
+ "thanks-button-thanked": "{{GENDER:$1|Agradecíu|Agradecida}}",
+ "thanks-error-undefined": "Falló l'aición d'agradecimientu. Por favor, vuelva a probar.",
+ "thanks-error-invalidrevision": "La ID de la revisión nun ye válida.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Pasó}} la llende d'agradecimientos. Espere un tiempu y vuelva a intentalo.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Unviar}} una nota d'agradecimientu a {{GENDER:$2|esti usuariu|esta usuaria}}",
+ "thanks-confirmation2": "¿{{GENDER:$1|Unviar}} un agradecimientu por esta edición?",
+ "thanks-thanked-notice": "$1 recibió l'avisu de que-y gustó {{GENDER:$2|la so}} edición.",
+ "thanks": "Agradecer",
+ "thanks-form-revid": "ID de revisión pa la edición",
+ "thanks-already-thanked": "{{GENDER:$1|Yá}} agradeció esta edición.",
+ "echo-pref-subscription-edit-thank": "Agradecimientos pola mio edición",
+ "echo-pref-tooltip-edit-thank": "Avisame cuando alguién me de les gracies por una edición de mio.",
+ "echo-category-title-edit-thank": "Gracies",
+ "notification-thanks-diff-link": "la so edición",
+ "notification-thanks": "[[User:$1|$1]] ta {{GENDER:$1|agradecíu|agradecida}} por $2 en [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|agradeció}} la so edición de $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|agradeció}} la so edición en {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|agradeció}} la so edición en $2.",
+ "notification-link-text-respond-to-user": "Contestar al usuariu",
+ "log-name-thanks": "Rexistru d'agradecimientos",
+ "log-description-thanks": "Mas abaxo ta la llista d'usuarios a los qu'otros usuarios dieron les gracies.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|dio les gracies a}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 rexistru d'agradecimientos",
+ "thanks-error-no-id-specified": "Tienes d'especificar una ID de revisión pa unviar agradecimientos.",
+ "thanks-confirmation-special": "¿Quies agradecer esta edición?",
+ "notification-link-text-view-post": "Ver el comentariu",
+ "thanks-error-invalidpostid": "La ID de publicación nun ye válida.",
+ "flow-thanks-confirmation-special": "¿Quies agradecer esti comentariu?",
+ "flow-thanks-thanked-notice": "$1 recibió l'avisu de que te gustó {{GENDER:$2|el so}} comentariu.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|dióte}} les {{GENDER:$1|gracies}} por $2 en «$3» de [[:$4]].",
+ "notification-flow-thanks-post-link": "el so comentariu",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|dióte}} les {{GENDER:$1|gracies}} pol to comentariu en «$2» de $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|dióte}} les {{GENDER:$1|gracies}} pol to comentariu en {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|dióte}} les {{GENDER:$1|gracies}} pol to comentariu en «$2» de $3."
+}
diff --git a/Thanks/i18n/az.json b/Thanks/i18n/az.json
new file mode 100644
index 00000000..ed28dd14
--- /dev/null
+++ b/Thanks/i18n/az.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Interfase",
+ "Khan27",
+ "Dağlı95",
+ "Wertuose"
+ ]
+ },
+ "thanks-desc": "İstifadəçilərin redaktələrinə, şərhlərinə və s. görə minnətdarlıq üçün keçidləri əlavə edir",
+ "thanks-thank": "təşəkkür",
+ "thanks-thanked": "{{GENDER:$1|təşəkkür edildi}}",
+ "thanks-button-thank": "{{GENDER:$1|Təşəkkür}}",
+ "thanks-button-thanked": "{{GENDER:$1|Təşəkkür edildi}}",
+ "thanks-error-undefined": "Təşəkkür bildirişinin göndərilməsi alınmadı. Xahiş edirik, yenidən cəhd edin.",
+ "thanks-thank-tooltip": "Bu {{GENDER:$2|istifadəçiyə}} təşəkkür bildirişi {{GENDER:$1|göndər}}.",
+ "thanks-confirmation2": "Bu dəyişiklik üçün təşəkkür göndərilsin?",
+ "thanks-thanked-notice": "$1 etdiyi dəyişikliyə görə sizin təşəkkürünüzü aldı.",
+ "thanks": "Təşəkkür et",
+ "thanks-form-revid": "Redaktələr üçün dəyişiklik identifikatoru",
+ "thanks-already-thanked": "{{GENDER:$1|Siz}} artıq bu redaktəyə görə istifadəçiyə təşəkkür etmisiz.",
+ "notification-thanks-diff-link": "redaktəniz",
+ "notification-thanks": "[[User:$1|$1]] [[:$3]] səhifəsindəki $2 üçün {{GENDER:$1|təşəkkür}} etdi.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] \"$2\" səhifəsində etdiyiniz redaktəyə görə {{GENDER:$1|təşəkkür etdi}}.",
+ "notification-thanks-email-subject": "$1 \"{{SITENAME}}\" saytında etdiyiniz redaktəyə görə {{GENDER:$1|təşəkkür etdi}}.",
+ "notification-thanks-email-batch-body": "$1 \"$2\" səhifəsində etdiyiniz redaktəyə görə {{GENDER:$1|təşəkkür etdi}}.",
+ "thanks-confirmation-special": "Siz bu redaktəyə görə təşəkkür göndərmək istəyirsiz?"
+}
diff --git a/Thanks/i18n/azb.json b/Thanks/i18n/azb.json
new file mode 100644
index 00000000..0b536b1d
--- /dev/null
+++ b/Thanks/i18n/azb.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amir a57"
+ ]
+ },
+ "thanks-thank": "تشکور",
+ "thanks-thank-tooltip": "{{GENDER:$1|گوندرمک}} تشکور مئساژی بو {{GENDER:$2|ایشلدنه}}"
+}
diff --git a/Thanks/i18n/bcc.json b/Thanks/i18n/bcc.json
new file mode 100644
index 00000000..6ec69de3
--- /dev/null
+++ b/Thanks/i18n/bcc.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan"
+ ]
+ },
+ "thanks-thank": "تشکر/سپاسیبا",
+ "echo-category-title-edit-thank": "تشکرهان",
+ "notification-thanks-diff-link": "شمی ایڈ\tیٹ",
+ "log-name-thanks": "سیاه چالی تشکر",
+ "thanks-confirmation-special": "شمائه لوٹیت کی په ای ایڈیٹ هاتیرا تشکری دیم دهیت ؟",
+ "notification-link-text-view-post": "دیستین نظری",
+ "flow-thanks-confirmation-special": "شمائه لوٹیت کی په ای کامینٹی هاتیرا تشکری دیم دهیت ؟",
+ "flow-thanks-thanked-notice": "$1 په {{GENDER:$2|کامینٹی}} که شما دوست داشتیت سئی بوت.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|تشکر کورت}} شه {{GENDER:$5|شما}} $2 بی «$3» تا [[:$4]].",
+ "notification-flow-thanks-post-link": "شمی کامینٹ",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|تشکر کورت}} شه {{GENDER:$4|شما}} په شمی کامینٹی هایترا بی «$2» تا $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|تشکر کورت}} شه {{GENDER:$2|شما}} شه شمی کامینٹا بی {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|تشکر کورت}} شه {{GENDER:$4|شما}} په شمی کامینٹی هاتیرا بی «$2» تا $3."
+}
diff --git a/Thanks/i18n/be-tarask.json b/Thanks/i18n/be-tarask.json
new file mode 100644
index 00000000..3018793f
--- /dev/null
+++ b/Thanks/i18n/be-tarask.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Renessaince",
+ "Zedlik",
+ "Red Winged Duck"
+ ]
+ },
+ "thanks-desc": "Дадае спасылкі з падзякамі у гісторыю і параўнаньне вэрсыяў",
+ "thanks-thank": "дзякуй",
+ "thanks-thanked": "{{GENDER:$1|падзякаваў|падзякавала}}",
+ "thanks-button-thank": "Дзякуй",
+ "thanks-button-thanked": "{{GENDER:$1|Падзякаваў|Падзякавала}}",
+ "thanks-error-undefined": "Не атрымалася падзякаваць. Паспрабуйце яшчэ раз.",
+ "thanks-error-invalidrevision": "Няслушны ідэнтыфікатар вэрсіі",
+ "thanks-error-ratelimited": "Вы перавысілі абмежаваньне хуткасьці выкананьня. Пачакайце крыху і паўтарыце спробу.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Адаслаць}} {{GENDER:$2|гэтаму карыстальніку|гэтай карыстальніцы}} падзяку",
+ "thanks-confirmation2": "{{GENDER:$1|Падзякаваць}} за гэтую праўку?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|атрымаў|атрымала|атрымалі}} паведамленьне пра вашае ўпадабаньне {{GENDER:$2|ягонай|ейнай|іхняй}} праўкі.",
+ "thanks": "Даслаць падзяку",
+ "echo-pref-subscription-edit-thank": "Дзякуе мне за маю праўку",
+ "echo-pref-tooltip-edit-thank": "Паведаміць мне, калі нехта дзякуе за мае праўкі.",
+ "echo-category-title-edit-thank": "Дзякуй",
+ "notification-thanks-diff-link": "вашае рэдагаваньне",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|падзякаваў|падзякавала}} Вам за $2 на [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|падзякаваў|падзякавала}} Вам за Вашую праўку на $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|падзякаваў|падзякавала}} Вам за Вашую праўку на {{SITENAME}}.",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|падзякаваў|падзякавала}} Вам за Вашую праўку на $2.",
+ "notification-link-text-respond-to-user": "Адказаць удзельніку",
+ "log-name-thanks": "Журнал падзякаў",
+ "log-description-thanks": "Ніжэй знаходзіцца сьпіс удзельнікаў, якія атрымалі падзякі.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|падзякаваў|падзякавала}} {{GENDER:$4|удзельніку|удзельніцы}} $3",
+ "log-show-hide-thanks": "Журнал падзякаў $1",
+ "thanks-confirmation-special": "Вы хочаце даслаць падзяку за гэтую праўку?"
+}
diff --git a/Thanks/i18n/be.json b/Thanks/i18n/be.json
new file mode 100644
index 00000000..4b0c43a4
--- /dev/null
+++ b/Thanks/i18n/be.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Дзяніс Тутэйшы",
+ "Чаховіч Уладзіслаў"
+ ]
+ },
+ "thanks-desc": "Дадае падзячныя спасылкі на гісторыю і параўнанне версій",
+ "thanks-thank": "дзякуй",
+ "thanks-thanked": "{{GENDER:$1|падзякаваў|падзякавала}}",
+ "thanks-button-thank": "{{GENDER:$1|Дзякуй}}",
+ "thanks-error-undefined": "На атрымалася падзякаваць. Паспрабуйце зноў.",
+ "thanks-error-invalidrevision": "Некарэктны нумар версіі.",
+ "thanks-error-ratelimited": "Вы перавысілі абмежаванне хуткасці выканання такіх дзеянняў. Калі ласка, пачакайце некаторы час і паспрабуйце зноў.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Адправіць}} {{GENDER:$2|гэтаму ўдзельніку|гэтай удзельніцы}} паведамленне з падзякай",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|быў абвешчаны|была абвешчана|былі абвешчаны}}, што вам спадабалася {{GENDER:$2|яго|яе|іх}} праўка.",
+ "echo-pref-subscription-edit-thank": "Дзякуй мне за маю праўку",
+ "echo-pref-tooltip-edit-thank": "Паведамляць мне, калі хтосьці дзякуе мяне за зробленую мной праўку.",
+ "echo-category-title-edit-thank": "Дзякуй",
+ "notification-thanks-diff-link": "вашу праўку",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|падзякаваў|падзякавала}} вам за $2 на старонцы «[[:$3]]».",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|падзякаваў|падзякавала}} вам за вашу праўку на старонцы «$2».",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|падзякаваў|падзякавала}} вам за вашу праўку на сайце «{{SITENAME}}».",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|падзякаваў|падзякавала}} вам за вашу праўку на старонцы «$2».",
+ "notification-link-text-respond-to-user": "Адказаць удзельніку",
+ "log-name-thanks": "Часопіс падазяк",
+ "log-description-thanks": "Ніжэй прыведзены спіс удзельнікаў, якія атрымалі падзякі ад іншых удзельнікаў.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|падзякаваў|падзякавала}} {{GENDER:$4|удзельніку|ўдзельніцы}} $3",
+ "log-show-hide-thanks": "$1 журнал падзяк"
+}
diff --git a/Thanks/i18n/bg.json b/Thanks/i18n/bg.json
new file mode 100644
index 00000000..4b42bb67
--- /dev/null
+++ b/Thanks/i18n/bg.json
@@ -0,0 +1,23 @@
+{
+ "@metadata": {
+ "authors": [
+ "DCLXVI",
+ "Termininja",
+ "Spiritia",
+ "Borislav"
+ ]
+ },
+ "thanks-thank": "благодарност",
+ "thanks-thanked": "{{GENDER:$1|изказана благодарност}}",
+ "thanks-thank-tooltip": "С препратката „благодарност“ можете да изкажете на {{GENDER:$2|този потребител|тази потребителка|този потребител}} благодарност за редакцията.",
+ "thanks-confirmation2": "{{GENDER:$1|}}Искате ли да благодарите за тази редакция?",
+ "thanks-thanked-notice": "$1 получи Вашата благодарност за {{GENDER:$2|неговата|нейната|своята}} редакция.",
+ "echo-pref-tooltip-edit-thank": "Известяване, когато някой изкаже благодарност за моя редакция.",
+ "echo-category-title-edit-thank": "Благодарност",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|}} Ви благодари за редакцията в $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|изразява благодарност}} за редакциите ви в {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|изказа благодарност}} за редакцията, която сте направили в $2.",
+ "log-name-thanks": "Дневник на благодарностите",
+ "thanks-confirmation-special": "Искате ли да благодарите за тази редакция?",
+ "flow-thanks-confirmation-special": "Искате ли да благодарите за тази редакция?"
+}
diff --git a/Thanks/i18n/bgn.json b/Thanks/i18n/bgn.json
new file mode 100644
index 00000000..eafacd41
--- /dev/null
+++ b/Thanks/i18n/bgn.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Baloch Afghanistan"
+ ]
+ },
+ "thanks-thank": "منتوارن",
+ "thanks-thank-tooltip": "تشکری ئی پیام ئی {{GENDER:$1|دیم داتین}} په ای {{GENDER:$2|کار زوروکا}}"
+}
diff --git a/Thanks/i18n/bn.json b/Thanks/i18n/bn.json
new file mode 100644
index 00000000..efb9c9ad
--- /dev/null
+++ b/Thanks/i18n/bn.json
@@ -0,0 +1,49 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aftab1995",
+ "Bellayet",
+ "Nasir8891",
+ "Aftabuzzaman"
+ ]
+ },
+ "thanks-desc": "সম্পাদনা, মতামত, ইত্যাদি জন্য ব্যবহারকারীদের ধন্যবাদের লিংক সংযোজন করে",
+ "thanks-thank": "ধন্যবাদ",
+ "thanks-thanked": "{{GENDER:$1|ধন্যবাদ জানিয়েছেন}}",
+ "thanks-button-thank": "{{GENDER:$1|ধন্যবাদ}}",
+ "thanks-button-thanked": "{{GENDER:$1|ধন্যবাদ জানিয়েছেন}}",
+ "thanks-error-undefined": "ধন্যবাদ পদক্ষেপ ব্যর্থ। অনুগ্রহ করে আবার চেষ্টা করুন।",
+ "thanks-error-invalidrevision": "সংশোধনের আইডি বৈধ নয়।",
+ "thanks-error-ratelimited": "{{GENDER:$1|আপনি}} রেট করার সর্বোচ্চ সীমা অতিক্রম করেছেন। অনুগ্রহ করে অপেক্ষা করুন এবং পুনরায় চেষ্টা করুন।",
+ "thanks-thank-tooltip": "এই {{GENDER:$2|ব্যবহারকারীকে}} ধন্যবাদ বিজ্ঞপ্তি {{GENDER:$1|পাঠান}}",
+ "thanks-thank-tooltip-yes": "ধন্যবাদের বিজ্ঞপ্তি {{GENDER:$1|পাঠান}}",
+ "thanks-confirmation2": "এই সম্পাদনার জন্য ধন্যবাদ {{GENDER:$1|দিবেন}}?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|তার|তার|তাদের}} সম্পাদনার জন্য আপনার ধন্যবাদ পেয়েছেন।",
+ "thanks": "ধন্যবাদ পাঠান",
+ "thanks-form-revid": "সম্পাদনা জন্য সংশোধন আইডি",
+ "thanks-already-thanked": "{{GENDER:$1|আপনি}} ইতিমধ্যে এই সম্পাদনার জন্য ধন্যবাদ পাঠিয়েছেন।",
+ "echo-pref-subscription-edit-thank": "আমার সম্পাদনার জন্য আমার ধন্যবাদসমূহ",
+ "echo-pref-tooltip-edit-thank": "আমার কোনো সম্পাদনার জন্য কেউ আমাকে ধন্যবাদ দিলে তা আমাকে জানাও।",
+ "echo-category-title-edit-thank": "ধন্যবাদসমূহ",
+ "notification-thanks-diff-link": "আপনার সম্পাদনা",
+ "notification-thanks": "[[User:$1|$1]] আপনাকে [[:$3]] পাতায় $2-এর জন্য {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-thanks-flyout2": "$2 পাতায় সম্পাদনার জন্য [[User:$1|$1]] আপনাকে {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-thanks-email-subject": "{{SITENAME}} সম্পাদনার জন্য $1 আপনাকে {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-thanks-email-batch-body": "$2-এ সম্পাদনার জন্য $1 আপনাকে {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-link-text-respond-to-user": "ব্যবহারকারীর প্রতিক্রিয়া",
+ "log-name-thanks": "ধন্যবাদ লগ",
+ "log-description-thanks": "নিচে ব্যবহারকারীদের একটি তালিকা রয়েছে যারা অন্য ব্যবহারকারী হতে ধন্যবাদ পেয়েছেন।",
+ "logentry-thanks-thank": "$1 {{GENDER:$4|$3}}কে {{GENDER:$2|ধন্যবাদ জানিয়েছেন}}",
+ "log-show-hide-thanks": "ধন্যবাদ লগ $1",
+ "thanks-error-no-id-specified": "ধন্যবাদ পাঠাতে আপনাকে একটি সংস্করণ আইডি উল্লেখ করা আবশ্যক।",
+ "thanks-confirmation-special": "আপনি কি এই সম্পাদনার জন্য ধন্যবাদ পাঠাতে চান?",
+ "notification-link-text-view-post": "মন্তব্য দেখুন",
+ "thanks-error-invalidpostid": "পোস্ট আইডি বৈধ নয়।",
+ "flow-thanks-confirmation-special": "আপনি কি এই মন্তব্যের জন্য ধন্যবাদ পাঠাতে চান?",
+ "flow-thanks-thanked-notice": "$1 {{GENDER:$2|তার|তার|তাদের}} মন্তব্যের জন্য আপনার ধন্যবাদ পেয়েছেন।",
+ "notification-flow-thanks": "[[:$4]] পাতায় \"$3\"-এ $2-এর জন্য [[User:$1|$1]] {{GENDER:$5|আপনাকে}} {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-flow-thanks-post-link": "আপনার মন্তব্য",
+ "notification-flow-thanks-flyout": "$3 পাতায় \"$2\"-এ মন্তব্যের জন্য [[User:$1|$1]] {{GENDER:$4|আপনাকে}} {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-flow-thanks-email-subject": "{{SITENAME}} মন্তব্যের জন্য $1 {{GENDER:$2|আপনাকে}} {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।",
+ "notification-flow-thanks-email-batch-body": "$3 পাতায় \"$2\"-এ মন্তব্যের জন্য $1 {{GENDER:$4|আপনাকে}} {{GENDER:$1|ধন্যবাদ}} জানিয়েছেন।"
+}
diff --git a/Thanks/i18n/bo.json b/Thanks/i18n/bo.json
new file mode 100644
index 00000000..9e6682eb
--- /dev/null
+++ b/Thanks/i18n/bo.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Phurbutsering"
+ ]
+ },
+ "notification-link-text-view-post": "དཔྱད་གླེང་ལ་གཟིགས་རོགས།",
+ "notification-flow-thanks": "[[User:$1|$1]]ནས་ཁྱེད་ལ་\"$3\"ནང་གི་$2 ཐོག་ [[:$4]]{{GENDER:$1|ཐུགས་རྗེ་ཆེ།}}ཞུ།",
+ "notification-flow-thanks-post-link": "ཁྱེད་ཀྱི་དཔྱད་གླེང།",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] ནས་ཁྱེད་ཀྱི་\"$2\" ནང་གི་ $3 ཐོག་དཔྱད་གླེང་གནང་བར་ {{GENDER:$1|ཐུགས་རྗེ་ཆེ་}} ཞུ།",
+ "notification-flow-thanks-email-subject": "$1 ནས་ཁྱེད་ཀྱི་{{SITENAME}} ཐོག་དཔྱད་གླེང་གནང་བར་ {{GENDER:$1|ཐུགས་རྗེ་ཆེ་}} ཞུ།",
+ "notification-flow-thanks-email-batch-body": "$1 ནས་ཁྱེད་ཀྱི་\"$2\" ནང་གི་ $3 ཐོག་དཔྱད་གླེང་བྱས་པར་ {{GENDER:$1|ཐུགས་རྗེ་ཆེ་}} ཞུ།"
+}
diff --git a/Thanks/i18n/br.json b/Thanks/i18n/br.json
new file mode 100644
index 00000000..4fc10380
--- /dev/null
+++ b/Thanks/i18n/br.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "VIGNERON",
+ "Y-M D",
+ "Gwenn-Ael"
+ ]
+ },
+ "thanks-desc": "Ouzhpenn trugarez liammoù en istor ha dif.",
+ "thanks-thank": "trugarez",
+ "thanks-thanked": "{{GENDER:$1|trugarekaet}}",
+ "thanks-button-thank": "{{GENDER:$1|Trugarez}}",
+ "thanks-button-thanked": "{{GENDER:$1|Trugarekaet}}",
+ "thanks-thank-tooltip": "{{GENDER:$1|Kas}} ur c'hemenn trugarekaat d'an{{GENDER:$2|implijer-mañ|implijerez-mañ}}",
+ "echo-category-title-edit-thank": "Trugarez",
+ "notification-thanks-diff-link": "ho kemm",
+ "notification-link-text-respond-to-user": "Respont d'an implijer",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|en deus|he deus}} trugarekaet {{GENDER:$4|$3}}"
+}
diff --git a/Thanks/i18n/bs.json b/Thanks/i18n/bs.json
new file mode 100644
index 00000000..c55836a1
--- /dev/null
+++ b/Thanks/i18n/bs.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "DzWiki",
+ "Edinwiki",
+ "KWiki"
+ ]
+ },
+ "thanks-desc": "Dodaje mogućnost zahvaljivanja u pregledu historije i pregledu razlike između izmjena",
+ "thanks-thank": "zahvali se",
+ "thanks-thanked": "{{GENDER:$1|zahvalio se|zahvalila se}}",
+ "thanks-button-thank": "{{GENDER:$1|Zahvali se}}",
+ "thanks-error-undefined": "Nije bilo moguće zahvaliti se. Pokušajte ponovo.",
+ "thanks-error-invalidrevision": "Revizioni ID nije validan.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Prekoračili ste}} Vaše ograničenje za ocjenjivanje. Sačekajte neko vrijeme i zatim pokušajte ponovo.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Pošalji}} zahvalnicu {{GENDER:$2|ovom korisniku|оvoj korisnici}}",
+ "thanks-confirmation2": "Zahvaliti se za izmjenu?",
+ "thanks": "Zahvali se",
+ "echo-pref-subscription-edit-thank": "Neko mi se zahvali za moju izmjenu",
+ "echo-pref-tooltip-edit-thank": "Obavijesti me ako mi se neko zahvali za moju izmjenu.",
+ "echo-category-title-edit-thank": "Zahvale",
+ "notification-thanks-diff-link": "vašoj izmjeni",
+ "notification-thanks": "[[User:$1|$1]] vam se {{GENDER:$1|zahvaljuje}} na $2 stranice [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vam se {{GENDER:$1|zahvaljuje}} na vašoj izmjeni na stranici $2.",
+ "notification-thanks-email-subject": "$1 vam se {{GENDER:$1|zahvaljuje}} na vašoj izmjeni na {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 vam se {{GENDER:$1|zahvaljuje}} na vašoj izmjeni na stranici $2.",
+ "notification-link-text-respond-to-user": "Odgovori korisniku",
+ "log-name-thanks": "Zapis zahvalnica",
+ "log-description-thanks": "Ispod se nalazi spisak korisnika kojima su se drugi korisnici zahvalili.",
+ "logentry-thanks-thank": "$1 se {{GENDER:$2|zahvaljuje}} korisniku {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 evidencija zahvaljivanja"
+}
diff --git a/Thanks/i18n/ca.json b/Thanks/i18n/ca.json
new file mode 100644
index 00000000..cf96acf4
--- /dev/null
+++ b/Thanks/i18n/ca.json
@@ -0,0 +1,53 @@
+{
+ "@metadata": {
+ "authors": [
+ "QuimGil",
+ "Vriullop",
+ "Pere prlpz",
+ "KRLS",
+ "Paucabot",
+ "Macofe"
+ ]
+ },
+ "thanks-desc": "Afegeix enllaços per agrair els editors per les seves edicions, comentaris, etc.",
+ "thanks-thank": "agraeix",
+ "thanks-thanked": "{{GENDER:$1|agraït}}",
+ "thanks-button-thank": "{{GENDER:$1|Agraeix}}",
+ "thanks-button-thanked": "{{GENDER:$1|Agraït|Agraïda}}",
+ "thanks-error-undefined": "L'agraïment ha fallat. Si us plau torneu a intentar-ho.",
+ "thanks-error-invalidrevision": "L'identificador de revisió no és vàlid.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Heu}} excedit el límit d'agraïments. Si us plau espereu una mica abans de tornar-hi.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Envia}} una notificació d'agraïment a {{GENDER:$2|aquest usuari|aquesta usuària}}.",
+ "thanks-confirmation2": "{{GENDER:$1|Voleu}} agrair aquesta edició?",
+ "thanks-thanked-notice": "$1 ha rebut el vostre agraïment per {{GENDER:$2|la seva}} edició.",
+ "thanks": "Envia agraïments",
+ "thanks-form-revid": "ID de revisió per a l'edició",
+ "thanks-already-thanked": "Ja {{GENDER:$1|heu}} enviat un agraïment per aquesta edició.",
+ "echo-pref-subscription-edit-thank": "Agraeix la meva edició",
+ "echo-pref-tooltip-edit-thank": "Notifica'm quan algú agraeix una edició que he fet.",
+ "echo-category-title-edit-thank": "Agraïments",
+ "notification-thanks-diff-link": "l'edició",
+ "notification-thanks": "[[User:$1|$1]] us {{GENDER:$1|ha agraït}} $2 a [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|agraeix}} la vostra edició a $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|agraeix}} la vostra edició a {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|agraeix}} la teva edició a $2.",
+ "notification-link-text-respond-to-user": "Respondre a l'usuari",
+ "log-name-thanks": "Registre d'agraïments",
+ "log-description-thanks": "A continuació teniu una llista d'usuaris agraïts per part d'altres usuaris.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|ha agraït}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 el registre d'agraïments",
+ "thanks-error-no-id-specified": "Heu d'especificar una revisió ID per enviar les gràcies.",
+ "thanks-confirmation-special": "Voleu agrair públicament aquesta edició?",
+ "notification-link-text-view-post": "Mostra el comentari",
+ "thanks-error-invalidpostid": "Post ID no és vàlid.",
+ "flow-thanks-confirmation-special": "Voleu agrair públicament aquest comentari?",
+ "flow-thanks-thanked-notice": "$1 ha rebut el vostre agraïment pel {{GENDER:$2|seu|seu|seu}} comentari.",
+ "notification-flow-thanks": "[[User:$1|$1]] us {{GENDER:$1|agraeix}} per $2 a \"$3\" de [[:$4]].",
+ "notification-flow-thanks-post-link": "el vostre comentari",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] us {{GENDER:$1|agraeix}} el comentari a \"$2\" de $3.",
+ "notification-flow-thanks-email-subject": "$1 us {{GENDER:$1|ha agraït}} el vostre comentari en el projecte {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 us {{GENDER:$1|ha agraït}} el comentari a \"$2\" de $3.",
+ "apihelp-thank-description": "Envieu una notificació d'agraïment a un editor.",
+ "apihelp-thank-param-rev": "Revisió ID per agrair a algú.",
+ "apihelp-thank-example-1": "Doneu les gràcies per la revisió ID 456, i que la font sigui un diff de la pàgina"
+}
diff --git a/Thanks/i18n/cdo.json b/Thanks/i18n/cdo.json
new file mode 100644
index 00000000..36303974
--- /dev/null
+++ b/Thanks/i18n/cdo.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yejianfei"
+ ]
+ },
+ "thanks-desc": "添加鏈接來感謝編輯、評論其用戶",
+ "thanks-thank": "感謝",
+ "thanks-thanked": "{{GENDER:$1|感謝}}",
+ "thanks-button-thank": "{{GENDER:$1|感謝}}",
+ "thanks-button-thanked": "{{GENDER:$1|感謝}}",
+ "thanks-error-undefined": "感謝行動失敗了。起動再試蜀回。",
+ "thanks-error-invalidrevision": "校訂編號𣍐合法。",
+ "thanks-error-ratelimited": "{{GENDER:$1|汝}}已經超出汝其比率限制。起動等仂固再試蜀試。",
+ "thanks-thank-tooltip": "{{GENDER:$1|發出}}蜀萆感謝通知遘茲蜀萆{{GENDER:$2|用戶}}",
+ "thanks-thanked-notice": "$1收遘汝对{{GENDER:$2|伊其|伊其|伊各儂其}}編輯其感謝。",
+ "echo-pref-subscription-edit-thank": "感謝我其修改",
+ "echo-pref-tooltip-edit-thank": "有儂因為我其編輯感謝我辰候通知我。",
+ "echo-category-title-edit-thank": "謝謝",
+ "notification-thanks-diff-link": "汝其編輯",
+ "notification-thanks": "[[User:$1|$1]]{{GENDER:$1|感謝}}汝敆[[:$3]]其$2。",
+ "notification-thanks-flyout2": "[[User:$1|$1]]因為汝敆$2上其編輯{{GENDER:$1|感謝}}汝。",
+ "notification-thanks-email-subject": "$1因為汝敆{{SITENAME}}上其編輯{{GENDER:$1|感謝}}汝",
+ "notification-thanks-email-batch-body": "$1因為汝敆$2上其編輯{{GENDER:$1|感謝}}汝。",
+ "notification-link-text-respond-to-user": "回覆遘用戶",
+ "log-name-thanks": "感謝日誌",
+ "log-description-thanks": "下底是乞其他用戶感謝過其用戶其蜀萆單單。",
+ "logentry-thanks-thank": "$1{{GENDER:$2|感謝}}{{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1感謝日誌"
+}
diff --git a/Thanks/i18n/ce.json b/Thanks/i18n/ce.json
new file mode 100644
index 00000000..0a20e17c
--- /dev/null
+++ b/Thanks/i18n/ce.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Умар"
+ ]
+ },
+ "thanks-desc": "Истори чу а версин башхала хьожечухь а баркалла олу хьажоргаш тӀетуху",
+ "thanks-thank": "баркалла",
+ "thanks-thanked": "{{GENDER:$1|Баркалла аьлла}}",
+ "thanks-button-thank": "{{GENDER:$1|Баркалла}}",
+ "thanks-button-thanked": "{{GENDER:$1|Баркалла аьлла}}",
+ "thanks-error-undefined": "Баркалла ала тар цаделира. ЮхагӀорта.",
+ "thanks-error-invalidrevision": "Версин нийса йоцу номер.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Ахьа}} тӀех дукха и дийна. Дехар до, сабардина юхагӀорта.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Бахьийта}} {{GENDER:$2|хӀокху декъашхочунга}} баркаллин хаам",
+ "thanks-confirmation2": "ХӀара нисдар дарна баркалла {{GENDER:$1|дӀадохьуьйтий}}?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|хаам бина}}, {{GENDER:$2|цуна|цера}} нисдар хаза хетта аьлла.",
+ "thanks": "ДӀадахьийта баркалла",
+ "thanks-form-revid": "Нисдаран ID тадан",
+ "thanks-already-thanked": "{{GENDER:$1|Ахьа}} хӀара нисдар дарна хӀинцале баркалла аьлла.",
+ "echo-pref-subscription-edit-thank": "Баркалла суна сан нисдар дарна",
+ "echo-pref-tooltip-edit-thank": "Хаийта соьга, цхьам баркалла аьлча.",
+ "echo-category-title-edit-thank": "Баркалла",
+ "notification-thanks-diff-link": "нисдар",
+ "notification-thanks": "Ахьа «[[:$3]]» агӀонехь $2 дарна [[User:$1|$1]] {{GENDER:$1|баркалла аьла}}.",
+ "notification-thanks-flyout2": "Ахьа хӀара «$2» агӀо таярна [[User:$1|$1]] хьуна {{GENDER:$1|баркалла аьла}}.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|баркалла аьла}} «{{SITENAME}}» сайтехь тадар дарна.",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|баркалла аьла}} ахьа хӀара «$2» агӀо таярна.",
+ "notification-link-text-respond-to-user": "Жоп ло декъашхочун",
+ "log-name-thanks": "Баркаллин тептар",
+ "log-description-thanks": "Кхечу декъашхоша баркалла аьлла болу декъашхой чохь болу тептар.",
+ "logentry-thanks-thank": "{{GENDER:$4|декъашхочуна}} $3 $1 {{GENDER:$2|баркалла аьла}}",
+ "log-show-hide-thanks": "$1 баркаллин тептар",
+ "thanks-error-no-id-specified": "Баркалла дӀадахьийта нисдаран ID билгаляккха еза.",
+ "thanks-confirmation-special": "ХӀара нисдар дарна баркалла дахьийта лаьа хьуна?",
+ "notification-link-text-view-post": "Хьажа къамеле",
+ "thanks-error-invalidpostid": "Хааман магийна доцу ID.",
+ "flow-thanks-confirmation-special": "Лаьий хьуна баркалла ала?",
+ "flow-thanks-thanked-notice": "$1 {{GENDER:$2|хаам бина}}, хьуна {{GENDER:$2|цуна|цера}} къамел хаза хетта аьлла.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1||баркалла аьлла}} хьуна $2 хӀара дарна «$3» темехь [[:$4]] агӀонгахь.",
+ "notification-flow-thanks-post-link": "хьан къамел",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|баркалла аьла}} ахьа яздаран «$2» темехь $3 агӀонгахь.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|баркалла аьла}} «{{SITENAME}}» агӀонгахь къамел дитарна.",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|баркалла аьла}} «$2» $3 агӀонгахь къамел дитарна."
+}
diff --git a/Thanks/i18n/ckb.json b/Thanks/i18n/ckb.json
new file mode 100644
index 00000000..8af9eaea
--- /dev/null
+++ b/Thanks/i18n/ckb.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Calak",
+ "Asoxor"
+ ]
+ },
+ "thanks-desc": "بەستەرەکانی سپاس بە مێژوو و نیشاندانی جیاوزاییەکان زیاد دەکا",
+ "thanks-thank": "سپاس",
+ "thanks-thanked": "{{GENDER:$1|سپاس کرا}}",
+ "thanks-button-thank": "{{GENDER:$1|سپاس}}",
+ "thanks-button-thanked": "{{GENDER:$1|سپاس کرا}}",
+ "thanks-error-undefined": "سپاسکردن سەرکەوتوو نەبوو. تکایە دیسان ھەوڵ بدەوە.",
+ "thanks-error-invalidrevision": "پێداچوونەوەی پێناسە نادروستە.",
+ "thanks-error-ratelimited": "{{GENDER:$1|تۆ}} زیاتر لە سنووری خێرایی چووی. تکایە ھەندێک ڕاوەستە و دیسان ھەوڵ بدەوە.",
+ "thanks-thank-tooltip": "ئاگادارییەکی سپاس بۆ ئەم {{GENDER:$2|بەکارھێنەرە}} {{GENDER:$1|بنێرە}}",
+ "thanks-confirmation2": "سپاسی ئەم دەستکارییە {{GENDER:$1|دەکەی}}؟",
+ "thanks": "سپاس بکە",
+ "thanks-form-revid": "پێناسەی پێداچوونەوە بۆ دەستکاری",
+ "echo-pref-subscription-edit-thank": "بۆ دەستکارییەکم سپاسم بکە",
+ "echo-pref-tooltip-edit-thank": "کاتێک یەکێک بۆ دەستکارییەکی من کردوومە سپاسم دەکا، ئاگادارم بکە.",
+ "echo-category-title-edit-thank": "سپاس",
+ "notification-thanks-diff-link": "دەستکارییەکەت",
+ "notification-thanks": "[[User:$1|$1]] سپاسی {{GENDER:$1|کردی}} بۆ $2 لە [[:$3]]دا.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] سپاسی {{GENDER:$1|کردی}} بۆ دەستکارییەکەت لە $2دا.",
+ "notification-thanks-email-subject": "$1 سپاسی {{GENDER:$1|کردی}} بۆ دەستکارییەکەت لە {{SITENAME}}دا.",
+ "notification-thanks-email-batch-body": "$1 سپاسی {{GENDER:$1|کردی}} بۆ دەستکارییەکەت لە $2دا.",
+ "notification-link-text-respond-to-user": "وەڵام بۆ بەکارھێنەر",
+ "log-name-thanks": "لۆگی سپاس",
+ "log-description-thanks": "ژێرەوە پێرستێکی لەو بەکارھێنەرانەن کە لە لایەن بەکارھێنەرانی ترەوە سپاسیان لێ کراوە.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|سپاسی کرد}} لە {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "لۆگی سپاس $1",
+ "notification-link-text-view-post": "بۆچوون ببینە",
+ "notification-flow-thanks-post-link": "بۆچوونی تۆ",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|سپاسی}} {{GENDER:$4|تۆی کرد}} بۆ بۆچوونەکەت لە «$2» لە $3دا.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|سپاسی}} {{GENDER:$2|تۆی کرد}} بۆ بۆچوونەکەت لە {{SITENAME}}دا",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|سپاسی}} {{GENDER:$4|تۆی کرد}} بۆ بۆچوونەکەت لە «$2» لە $3دا."
+}
diff --git a/Thanks/i18n/cs.json b/Thanks/i18n/cs.json
new file mode 100644
index 00000000..ae53bc8e
--- /dev/null
+++ b/Thanks/i18n/cs.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Littledogboy",
+ "Mormegil"
+ ]
+ },
+ "thanks-desc": "Přidává odkazy pro poděkování uživatelům za editace, komentáře apod.",
+ "thanks-thank": "poděkovat",
+ "thanks-thanked": "{{GENDER:$1|poděkováno}}",
+ "thanks-button-thank": "{{GENDER:$1|Poděkovat}}",
+ "thanks-button-thanked": "{{GENDER:$1|Poděkováno}}",
+ "thanks-error-undefined": "Poděkování se nezdařilo. Zkuste to prosím znovu.",
+ "thanks-error-invalidrevision": "ID revize je neplatné.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Překročil|Překročila|Překročili}} jste rychlostní limit. Počkejte prosím chvíli a zkuste to znovu.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Poslat}} {{GENDER:$2|tomuto uživateli|této uživatelce}} poděkování",
+ "thanks-confirmation2": "{{GENDER:$1|Poděkovat}} za tuto editaci?",
+ "thanks-thanked-notice": "{{GENDER:$2|Uživatel|Uživatelka}} $1 {{GENDER:$2|obdržel|obdržela}} vaše poděkování za editaci.",
+ "thanks": "Poslat poděkování",
+ "thanks-form-revid": "ID revize",
+ "thanks-already-thanked": "Za tuto editaci jste již {{GENDER:$1|poděkoval|poděkovala|poděkovali}}.",
+ "echo-pref-subscription-edit-thank": "…mi někdo poděkuje za editaci",
+ "echo-pref-tooltip-edit-thank": "Upozorněte mě, když mi někdo poděkuje za editaci.",
+ "echo-category-title-edit-thank": "poděkování",
+ "notification-thanks-diff-link": "vaši úpravu",
+ "notification-thanks": "[[User:$1|$1]] vám {{GENDER:$1|poděkoval|poděkovala}} za $2 stránky [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vám {{GENDER:$1|poděkoval|poděkovala}} za editaci stránky $2.",
+ "notification-thanks-email-subject": "$1 vám {{GENDER:$1|poděkoval|poděkovala}} za vaši editaci na {{grammar:6sg|{{SITENAME}}}}",
+ "notification-thanks-email-batch-body": "$1 vám {{GENDER:$1|poděkoval|poděkovala}} za vaši úpravu stránky $2.",
+ "notification-link-text-respond-to-user": "Odpovědět uživateli",
+ "log-name-thanks": "Kniha poděkování",
+ "log-description-thanks": "Níže je seznam uživatelů, kterým ostatní uživatelé poděkovali.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|poděkoval|poděkovala}} {{GENDER:$4|uživateli|uživatelce}} $3",
+ "log-show-hide-thanks": "$1 knihu poděkování",
+ "thanks-error-no-id-specified": "Abyste {{GENDER:|mohl|mohla|mohli}} poděkovat, musíte zadat ID revize.",
+ "thanks-confirmation-special": "Chcete poděkovat za tuto editaci?",
+ "notification-link-text-view-post": "Zobrazit komentář",
+ "thanks-error-invalidpostid": "ID komentáře není platné.",
+ "flow-thanks-confirmation-special": "Chcete poděkovat za tento komentář?",
+ "flow-thanks-thanked-notice": "{{GENDER:$2|Uživatel|Uživatelka}} $1 {{GENDER:$2|obdržel|obdržela}} vaše poděkování za komentář.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|vám}} {{GENDER:$1|poděkoval|poděkovala}} za $2 k „$3“ na stránce [[:$4]].",
+ "notification-flow-thanks-post-link": "váš komentář",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|vám}} {{GENDER:$1|poděkoval|poděkovala}} za váš komentář k „$2“ na stránce $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|vám}} {{GENDER:$1|poděkoval|poděkovala}} za váš komentář na {{grammar:6sg|{{SITENAME}}}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|vám}} {{GENDER:$1|poděkoval|poděkovala}} za váš komentář k „$2“ na stránce $3."
+}
diff --git a/Thanks/i18n/cu.json b/Thanks/i18n/cu.json
new file mode 100644
index 00000000..e6f6b7ab
--- /dev/null
+++ b/Thanks/i18n/cu.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "ОйЛ"
+ ]
+ },
+ "thanks-thank": "благодарьствиѥ"
+}
diff --git a/Thanks/i18n/cv.json b/Thanks/i18n/cv.json
new file mode 100644
index 00000000..5a4a0be9
--- /dev/null
+++ b/Thanks/i18n/cv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "thanks-thank": "тав"
+}
diff --git a/Thanks/i18n/cy.json b/Thanks/i18n/cy.json
new file mode 100644
index 00000000..63cea535
--- /dev/null
+++ b/Thanks/i18n/cy.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr",
+ "Robin Owain"
+ ]
+ },
+ "thanks-desc": "Ychwanegu cysylltau er mwyn diolch i'r golygon",
+ "thanks-thank": "diolch",
+ "thanks-thanked": "{{GENDER:$1|diolchwyd}}",
+ "thanks-button-thank": "{{GENDER:$1|Diolcher}}",
+ "thanks-button-thanked": "{{GENDER:$1|Diolchwyd}}",
+ "thanks-error-undefined": "Methodd y weithred o ddiolch. Ceisiwch eto.",
+ "thanks-error-invalidrevision": "Nid yw ID y diwygiad yn ddilys.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Rydych}} wedi gwneud mwy o weithredoedd y funud na'r nifer a ganiateir. Arhoswch ennyd ac yna ceisiwch eto.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Anfon}} gair o ddiolch i'r {{GENDER:$2|defnyddiwr}} hwn",
+ "thanks-confirmation2": "{{GENDER:$1|Danfon}} gair o ddiolch am y golygiad?",
+ "thanks-thanked-notice": "Derbyniodd $1 eich diolch am ei {{GENDER:$2|adolygiad|hadolygiad|adolygiad}}.",
+ "thanks": "Anfon diolchiadau",
+ "thanks-form-revid": "ID y golygiad",
+ "thanks-already-thanked": "{{GENDER:$1|Rydych}} eisoes wedi anfon gair o ddiolch am y golygiad hwn.",
+ "echo-pref-subscription-edit-thank": "Fy niolch am fy ngolygiad",
+ "echo-pref-tooltip-edit-thank": "Hysbyser fi pan fo rhywun yn fy niolch am un o'm golygiadau.",
+ "echo-category-title-edit-thank": "Diolch",
+ "notification-thanks-diff-link": "eich golygiad",
+ "notification-thanks": "{{GENDER:$1|Anfonodd}} [[User:$1|$1]] air o ddiolch i chi am $2 ar [[:$3]].",
+ "notification-thanks-flyout2": "{{GENDER:$1|Anfonodd}} [[User:$1|$1]] air o ddiolch i chi am $2.",
+ "notification-thanks-email-subject": "{{GENDER:$1|Anfonodd}} $1 air o ddiolch i chi am eich golygiad ar {{SITENAME}}",
+ "notification-thanks-email-batch-body": "{{GENDER:$1|Anfonodd}} $1 air o ddiolch i chi am eich golygiad ar $2.",
+ "notification-link-text-respond-to-user": "Ateb y defnyddiwr",
+ "log-name-thanks": "Lòg diolchiadau",
+ "log-description-thanks": "Dyma restr o ddefnyddwyr yr anfonwyd gair o ddiolch atynt gan ddefnyddwyr eraill.",
+ "logentry-thanks-thank": "{{GENDER:$2|Anfonodd}} $1 air o ddiolch i {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 y lòg diolchiadau",
+ "thanks-error-no-id-specified": "Dylech ddewis adolygiad",
+ "thanks-confirmation-special": "Ydych chi'n dymuno danfon gair o ddiolch am y golygiad hwn?",
+ "notification-link-text-view-post": "Gweler y sylw",
+ "thanks-error-invalidpostid": "Dydy'r ID ddim yn ddilys.",
+ "flow-thanks-confirmation-special": "Ydych chi'n dymuno danfon gair o ddiolch am y sylw hwn?",
+ "flow-thanks-thanked-notice": "Derbyniodd $1 eich diolch am {{GENDER:$2|ei|ei|eu}} sylw.",
+ "notification-flow-thanks": "Diolchodd [[User:$1|$1]] {{GENDER:$1|i chi}} am $2 yn \"$3\" ar [[:$4]].",
+ "notification-flow-thanks-post-link": "eich sylw",
+ "notification-flow-thanks-flyout": "Diolchodd [[User:$1|$1]] {{GENDER:$1|}} {{GENDER:$4|i chi}} am eich sylw yn \"$2\" ar $3.",
+ "notification-flow-thanks-email-subject": "Diolchodd $1 {{GENDER:$1|}} am eich sylw ar {{SITENAME}}\n\nDiolchodd $1 {{GENDER:$1|}} {{GENDER:$2|i chi}} am eich sylw ar {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "Diolchodd $1 {{GENDER:$1|}} {{GENDER:$4|i chi}} am eich sylw \"$2\" ar $3.",
+ "apihelp-thank-description": "Danfonwch air o ddiolch at y golygydd."
+}
diff --git a/Thanks/i18n/da.json b/Thanks/i18n/da.json
new file mode 100644
index 00000000..020c8caa
--- /dev/null
+++ b/Thanks/i18n/da.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Christian List",
+ "Palnatoke",
+ "Thomsen"
+ ]
+ },
+ "thanks-desc": "Tilføjer links til at takke brugerne for ændringer, kommentarer, osv.",
+ "thanks-thank": "tak",
+ "thanks-thanked": "{{GENDER:$1|takkede}}",
+ "thanks-button-thank": "{{GENDER:$1|Tak}}",
+ "thanks-button-thanked": "{{GENDER:$1|Takkede}}",
+ "thanks-error-undefined": "Takkehandlingen mislykkedes. Prøv venligst igen.",
+ "thanks-error-invalidrevision": "Versions-ID er ikke gyldigt.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Du}} har overskredet din frekvensgrænse. Vent et stykke tid og prøv igen.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Send}} en takkemeddelelse til denne {{GENDER:$2| bruger}}",
+ "thanks-thanked-notice": "$1 fik at vide, at du kan lide {{GENDER:$2|hans|hendes|deres}} redigering.",
+ "thanks": "Send tak",
+ "thanks-form-revid": "Versions-ID for redigering",
+ "thanks-already-thanked": "{{GENDER:$1|Du}} har allerede sendt tak for denne redigering.",
+ "echo-pref-subscription-edit-thank": "Takker mig for min redigering",
+ "echo-pref-tooltip-edit-thank": "Giv mig besked, når nogen takker mig for en redigering jeg har lavet.",
+ "echo-category-title-edit-thank": "Tak!",
+ "notification-thanks-diff-link": "din redigering",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1| takkede}} dig for $2 på [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|takkede}} dig for din redigering på $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|takkede}} dig for din redigering på {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|takkede}} dig for din redigering på $2.",
+ "notification-link-text-respond-to-user": "Svar til bruger",
+ "log-name-thanks": "Takkelog",
+ "log-description-thanks": "Nedenfor er en liste over brugere, som er blevet takket af andre brugere.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|takkede}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 takkelog"
+}
diff --git a/Thanks/i18n/de-formal.json b/Thanks/i18n/de-formal.json
new file mode 100644
index 00000000..f851a485
--- /dev/null
+++ b/Thanks/i18n/de-formal.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln"
+ ]
+ },
+ "thanks-error-ratelimited": "{{GENDER:$1|Sie}} haben Ihr Aktionslimit überschritten. Bitte warten Sie etwas und versuchen Sie es erneut.",
+ "thanks-thanked-notice": "$1 wurde benachrichtigt, dass Ihnen {{GENDER:$2|seine|ihre|ihre}} Bearbeitung gefällt.",
+ "thanks-already-thanked": "{{GENDER:$1|Sie}} haben bereits ein Dankeschön für diese Bearbeitung gesendet.",
+ "notification-thanks-diff-link": "Ihre Bearbeitung",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|dankt}} Ihnen für $2 auf [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|dankt}} Ihnen für Ihre Bearbeitung auf „$2“.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|dankt}} Ihnen für Ihre Bearbeitung auf {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|dankt}} Ihnen für Ihre Bearbeitung auf „$2“.",
+ "thanks-confirmation-special": "Möchten Sie ein Dankeschön für diese Bearbeitung senden?",
+ "flow-thanks-confirmation-special": "Möchten Sie ein Dankeschön für diesen Kommentar senden?",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|dankte}} Ihnen für $2 in „$3“ auf [[:$4]].",
+ "notification-flow-thanks-post-link": "Ihren Kommentar",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|dankte}} Ihnen für Ihren Kommentar in „$2“ auf $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|dankte}} Ihnen für Ihren Kommentar auf {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|dankte}} Ihnen für Ihren Kommentar in „$2“ auf $3."
+}
diff --git a/Thanks/i18n/de.json b/Thanks/i18n/de.json
new file mode 100644
index 00000000..81d2ccbc
--- /dev/null
+++ b/Thanks/i18n/de.json
@@ -0,0 +1,57 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln",
+ "MF-Warburg",
+ "Metalhead64",
+ "Suriyaa Kudo",
+ "TMg",
+ "Wnme",
+ "Schniggendiller",
+ "Inkowik",
+ "Purodha"
+ ]
+ },
+ "thanks-desc": "Links zum Bedanken bei Benutzern für Bearbeitungen, Kommentare etc.",
+ "thanks-thank": "danken",
+ "thanks-thanked": "{{GENDER:$1|bereits bedankt}}",
+ "thanks-button-thank": "{{GENDER:$1|Danken}}",
+ "thanks-button-thanked": "{{GENDER:$1|Bedankt}}",
+ "thanks-error-undefined": "Bedanken fehlgeschlagen. Bitte erneut versuchen.",
+ "thanks-error-invalidrevision": "Die Versionskennung ist ungültig.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Du}} hast dein Aktionslimit überschritten. Bitte warte etwas und versuche es erneut.",
+ "thanks-thank-tooltip": "{{GENDER:$2|Diesem Benutzer|Dieser Benutzerin}} ein Dankeschön {{GENDER:$1|senden}}",
+ "thanks-thank-tooltip-no": "Die Dankeschön-Benachrichtigung {{GENDER:$1|abbrechen}}",
+ "thanks-thank-tooltip-yes": "Die Dankeschön-Benachrichtigung {{GENDER:$1|senden}}",
+ "thanks-confirmation2": "Dankeschön für diese Bearbeitung öffentlich {{GENDER:$1|senden}}?",
+ "thanks-thanked-notice": "$1 erhielt dein Dankeschön für {{GENDER:$2|seine|ihre|seine}} Bearbeitung.",
+ "thanks": "Für diese Bearbeitung danken",
+ "thanks-form-revid": "Versionskennung der Bearbeitung",
+ "thanks-already-thanked": "{{GENDER:$1|Du}} hast bereits ein Dankeschön für diese Bearbeitung gesendet.",
+ "echo-pref-subscription-edit-thank": "Dankeschöns für meine Bearbeitung",
+ "echo-pref-tooltip-edit-thank": "Benachrichtige mich, wenn mir jemand für eine Bearbeitung dankt, die ich gemacht habe.",
+ "echo-category-title-edit-thank": "Dankeschön",
+ "notification-thanks-diff-link": "deine Bearbeitung",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|dankt}} dir für $2 auf [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|dankt}} dir für deine Bearbeitung auf „$2“.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|dankt}} dir für deine Bearbeitung auf {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|dankt}} dir für deine Bearbeitung auf „$2“.",
+ "notification-link-text-respond-to-user": "Antwort an Benutzer",
+ "log-name-thanks": "Dankeschön-Logbuch",
+ "log-description-thanks": "Es folgt eine Liste von Benutzern, die anderen Benutzern dankten.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|dankte}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "Dankeschön-Logbuch $1",
+ "thanks-error-no-id-specified": "Du musst eine Versionskennung angeben, um ein Dankeschön zu senden.",
+ "thanks-confirmation-special": "Möchtest du öffentlich ein Dankeschön für diese Bearbeitung senden?",
+ "notification-link-text-view-post": "Kommentar anzeigen",
+ "thanks-error-invalidpostid": "Die Beitragskennung ist nicht gültig.",
+ "flow-thanks-confirmation-special": "Möchtest du öffentlich ein Dankeschön für diesen Kommentar senden?",
+ "flow-thanks-thanked-notice": "$1 erhielt deine Dankeschöns für {{GENDER:$2|seinen|ihren|seinen}} Kommentar.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|dankte}} {{GENDER:$5|dir}} für $2 in „$3“ auf [[:$4]].",
+ "notification-flow-thanks-post-link": "deinen Kommentar",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|dankte}} {{GENDER:$4|dir}} für deinen Kommentar in „$2“ auf $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|dankte}} {{GENDER:$2|dir}} für deinen Kommentar auf {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|dankte}} {{GENDER:$4|dir}} für deinen Kommentar in „$2“ auf $3.",
+ "apihelp-flowthank-description": "Ein öffentliches Dankeschön für einen Flow-Beitrag senden.",
+ "apihelp-thank-param-rev": "Versionskennung, für die gedankt werden soll."
+}
diff --git a/Thanks/i18n/diq.json b/Thanks/i18n/diq.json
new file mode 100644
index 00000000..10cdfe9e
--- /dev/null
+++ b/Thanks/i18n/diq.json
@@ -0,0 +1,20 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gorizon",
+ "Marmase",
+ "Mirzali"
+ ]
+ },
+ "thanks-thank": "teşekur kena",
+ "thanks-thanked": "{{GENDER:$1|teşekur ke}}",
+ "thanks-button-thank": "{{GENDER:$1|Teşekur kena}}",
+ "thanks-button-thanked": "{{GENDER:$1|teşekur ke}}",
+ "thanks": "Teşekur bırışe",
+ "echo-category-title-edit-thank": "Teşekuri",
+ "notification-thanks-diff-link": "vırnayışa to",
+ "log-name-thanks": "Qeydé tşekuran",
+ "logentry-thanks-thank": "$1'i {{GENDER:$4|$3}}'ré {{GENDER:$2|teşekur ke}}",
+ "log-show-hide-thanks": "Qeydé teşekuré $1",
+ "notification-link-text-view-post": "Tefsiri bıvêne"
+}
diff --git a/Thanks/i18n/dsb.json b/Thanks/i18n/dsb.json
new file mode 100644
index 00000000..d2e3304d
--- /dev/null
+++ b/Thanks/i18n/dsb.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Derbeth",
+ "Michawiki"
+ ]
+ },
+ "thanks-desc": "Pśidawa źěkowe wótkaze historiji a wersijowym rozdźělam",
+ "thanks-thank": "źěkowaś se",
+ "thanks-thanked": "{{GENDER:$1|jo se źěkował|jo se źěkowała}}",
+ "thanks-button-thank": "{{GENDER:$1|Źěkowaś se}}",
+ "thanks-button-thanked": "{{GENDER:$1|Jo se źěkował|Jo se źěkowała}}",
+ "thanks-error-undefined": "Źěkowanje njejo se raźiło. Pšosym wopytaj hyšći raz.",
+ "thanks-error-invalidrevision": "Wersijowy ID njejo płaśiwy.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Ty}} sy swój akciski limit {{GENDER:$1|pśekšocył|pśekšocyła}}. Pšosym cakaj chylku a wopytaj hyšći raz.",
+ "thanks-thank-tooltip": "Źěkowu powěźeńku toś {{GENDER:$2|wužywarjeju|wužywarce}} {{GENDER:$1|pósłaś}}",
+ "thanks-thanked-notice": "$1 jo se {{GENDER:$1|informěrował|informěrowała}}, až {{GENDER:$2|jogo|jeje}} změna jo śi spódobała.",
+ "thanks": "Źěk pósłaś",
+ "thanks-form-revid": "Wersijowy ID za změnu",
+ "thanks-already-thanked": "Sy južo źěk za toś tu změnu {{GENDER:$1|pósłał|pósłała}}.",
+ "echo-pref-subscription-edit-thank": "Źěkujo se mě za móju změnu.",
+ "echo-pref-tooltip-edit-thank": "Informěruj mě, gaž něchten źěkujo se mě za změnu, kótaruž som cynił.",
+ "echo-category-title-edit-thank": "Wjeliki źěk",
+ "notification-thanks-diff-link": "twója změna",
+ "notification-thanks": "[[User:$1|$1]] jo se śi za $2 na [[:$3]] {{GENDER:$1|źěkował|źěkowała}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] jo se śi za změnu na $2 {{GENDER:$1|źěkował|źěkowała}}.",
+ "notification-thanks-email-subject": "$1 jo se śi za twóju změnu na {{GRAMMAR:lokatiw|{{SITENAME}}}} {{GENDER:$1|źěkował|źěkowała}}",
+ "notification-thanks-email-batch-body": "$1 jo se śi za twóju změnu na $2 {{GENDER:$1|źěkował|źěkowała}}.",
+ "notification-link-text-respond-to-user": "Wótegrono wužywarjeju",
+ "log-name-thanks": "Źěkowy protokol",
+ "log-description-thanks": "Dołojce jo lisćina wužywarjow, kótarymž druge wužywarje su se źěkowali.",
+ "logentry-thanks-thank": "$1 jo {{GENDER:$4|$3}} {{GENDER:$2|źěkował|źěkowała}}",
+ "log-show-hide-thanks": "Źěkowy protokol $1"
+}
diff --git a/Thanks/i18n/el.json b/Thanks/i18n/el.json
new file mode 100644
index 00000000..4ef89796
--- /dev/null
+++ b/Thanks/i18n/el.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geraki",
+ "Glavkos",
+ "Protnet"
+ ]
+ },
+ "thanks-desc": "Προσθέτει συνδέσμους για να ευχαριστείτε χρήστες για επεξεργασίες, σχόλια, κλπ.",
+ "thanks-thank": "ευχαριστία",
+ "thanks-thanked": "{{GENDER:$1|δέχθηκε ευχαριστίες}}",
+ "thanks-button-thank": "{{GENDER:$1|Ευχαριστώ}}",
+ "thanks-button-thanked": "{{GENDER:$1|δέχθηκε ευχαριστίες}}",
+ "thanks-error-undefined": "Η ενέργεια ευχαριστίας απέτυχε. Παρακαλούμε δοκιμάστε ξανά.",
+ "thanks-error-invalidrevision": "Το ID αναθεώρησης δεν είναι έγκυρο.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Έχετε}} υπερβεί το όριό σας. Παρακαλούμε περιμένετε κάποιο χρονικό διάστημα και προσπαθήστε ξανά.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Έστειλε}} μια ειδοποίηση ευχαριστίας σε {{GENDER:$2|αυτόν τον χρήστη|αυτή την χρήστη}}",
+ "thanks-confirmation2": "{{GENDER:$1|Αποστολή}} ευχαριστίας για αυτή την επεξεργασία;",
+ "thanks-thanked-notice": "{{GENDER:$2|Ο|Η}} $1 έλαβε τις ευχαριστίες σας για την επεξεργασία {{GENDER:$2|του|της}}.",
+ "thanks": "Αποστολή ευχαριστίας",
+ "thanks-form-revid": "Αναγνωριστικό αλλαγής για την επεξεργασία",
+ "thanks-already-thanked": "{{GENDER:$1|Έχετε}} ήδη αποσταλεί ευχαριστώ για αυτή την επεξεργασία.",
+ "echo-pref-subscription-edit-thank": "Με ευχαριστεί για την επεξεργασία μου",
+ "echo-pref-tooltip-edit-thank": "Να ειδοποιούμαι όταν κάποιος με ευχαριστεί για μια επεξεργασία που έκανα.",
+ "echo-category-title-edit-thank": "Ευχαριστίες",
+ "notification-thanks-diff-link": "την επεξεργασία σου",
+ "notification-thanks": "{{GENDER:$1|Ο|Η}} [[User:$1|$1]] σε ευχαρίστησε για $2 στο [[:$3]].",
+ "notification-thanks-flyout2": "{{GENDER:$1|Ο|Η}} [[User:$1|$1]] σε ευχαρίστησε για την επεξεργασία σου στη $2.",
+ "notification-thanks-email-subject": "{{GENDER:$1|Ο|Η}} $1 σε ευχαρίστησε για την επεξεργασία σου στο {{SITENAME}}.",
+ "notification-thanks-email-batch-body": "{{GENDER:$1|Ο|Η}} $1 σε ευχαρίστησε για την επεξεργασία σου στο $2.",
+ "notification-link-text-respond-to-user": "Απάντηση στο χρήστη",
+ "log-name-thanks": "Καταγραφή ευχαριστηρίων",
+ "log-description-thanks": "Παρακάτω είναι μια λίστα των χρηστών που ευχαριστήθηκαν από άλλους χρήστες.",
+ "logentry-thanks-thank": "{{GENDER:$2|Ο|Η}} $1 ευχαρίστησε {{GENDER:$4|τον|την}} $3",
+ "log-show-hide-thanks": "$1 καταγραφής ευχαριστηρίων",
+ "thanks-error-no-id-specified": "Πρέπει να καθορίσετε ένα ID αναθεώρησης για να στείλετε ευχαριστία.",
+ "thanks-confirmation-special": "Θέλετε να στείλετε ευχαριστία για αυτή την επεξεργασία;",
+ "notification-link-text-view-post": "Προβολή σχολίου",
+ "flow-thanks-confirmation-special": "Θέλετε να στείλετε ευχαριστία για αυτό το σχόλιο;",
+ "flow-thanks-thanked-notice": "{{GENDER:$2|Ο|Η}} $1 έλαβε τις ευχαριστίες σας για το σχόλιό {{GENDER:$2|του|της}}.",
+ "notification-flow-thanks": "{{GENDER:$1|Ο|Η}} [[User:$1|$1]] {{GENDER:$5|σας}} ευχαρίστησε για το $2 στο «$3» στην [[:$4]].",
+ "notification-flow-thanks-post-link": "σχόλιό σας",
+ "notification-flow-thanks-flyout": "{{GENDER:$1|Ο|Η}} [[User:$1|$1]] {{GENDER:$4|σας}} ευχαρίστησε για το σχόλιό σας στο \"$2\" στην $3.",
+ "notification-flow-thanks-email-subject": "{{GENDER:$1|Ο|Η}} $1 {{GENDER:$2|σας}} ευχαρίστησε για το σχόλιό σας στο {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "{{GENDER:$1|Ο|Η}} $1 {{GENDER:$4|σας}} ευχαρίστησε για το σχόλιό σας στο \"$2\" στην $3."
+}
diff --git a/Thanks/i18n/en.json b/Thanks/i18n/en.json
new file mode 100644
index 00000000..2a1dd5a1
--- /dev/null
+++ b/Thanks/i18n/en.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shirayuki"
+ ]
+ },
+ "thanks-desc": "Adds links for thanking users for edits, comments, etc.",
+ "thanks-thank": "thank",
+ "thanks-thanked": "{{GENDER:$1|thanked}}",
+ "thanks-button-thank": "{{GENDER:$1|Thank}}",
+ "thanks-button-thanked": "{{GENDER:$1|Thanked}}",
+ "thanks-error-undefined": "Thank action failed. Please try again.",
+ "thanks-error-invalidrevision": "Revision ID is not valid.",
+ "thanks-error-ratelimited": "{{GENDER:$1|You}}'ve exceeded your rate limit. Please wait some time and try again.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Send}} a thank you notification to this {{GENDER:$2|user}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Cancel}} the thank you notification",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Send}} the thank you notification",
+ "thanks-confirmation2": "{{GENDER:$1|Send}} public thanks for this edit?",
+ "thanks-thanked-notice": "$1 received your thanks for {{GENDER:$2|his|her|their}} edit.",
+ "thanks": "Send thanks",
+ "thanks-form-revid": "Revision ID for edit",
+ "thanks-already-thanked": "{{GENDER:$1|You}} have already sent thanks for this edit.",
+ "echo-pref-subscription-edit-thank": "Thanks me for my edit",
+ "echo-pref-tooltip-edit-thank": "Notify me when someone thanks me for an edit I made.",
+ "echo-category-title-edit-thank": "Thanks",
+ "notification-thanks-diff-link": "your edit",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|thanked}} you for $2 on [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|thanked}} you for your edit on $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|thanked}} you for your edit on {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|thanked}} you for your edit on $2.",
+ "notification-link-text-respond-to-user": "Respond to user",
+ "log-name-thanks": "Thanks log",
+ "log-description-thanks": "Below is a list of users thanked by other users.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|thanked}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 thanks log",
+ "thanks-error-no-id-specified": "You must specify a revision ID to send thanks.",
+ "thanks-confirmation-special": "Do you want to publicly send thanks for this edit?",
+ "notification-link-text-view-post": "View comment",
+ "thanks-error-invalidpostid": "Post ID is not valid.",
+ "flow-thanks-confirmation-special": "Do you want to publicly send thanks for this comment?",
+ "flow-thanks-thanked-notice": "$1 received your thanks for {{GENDER:$2|his|her|their}} comment.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|thanked}} {{GENDER:$5|you}} for $2 in \"$3\" on [[:$4]].",
+ "notification-flow-thanks-post-link": "your comment",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|thanked}} {{GENDER:$4|you}} for your comment in \"$2\" on $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|thanked}} {{GENDER:$2|you}} for your comment on {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|thanked}} {{GENDER:$4|you}} for your comment in \"$2\" on $3.",
+ "apihelp-flowthank-description": "Send a public thank-you notification for a Flow comment.",
+ "apihelp-flowthank-param-postid": "The UUID of the post to thank for.",
+ "apihelp-flowthank-example-1": "Send thanks for the comment with UUID xyz789",
+ "apihelp-thank-description": "Send a thank-you notification to an editor.",
+ "apihelp-thank-param-rev": "Revision ID to thank someone for.",
+ "apihelp-thank-param-source": "A short string describing the source of the request, for example, \"diff\" or \"history\".",
+ "apihelp-thank-example-1": "Send thanks for revision ID 456, with the source being a diff page"
+}
diff --git a/Thanks/i18n/eo.json b/Thanks/i18n/eo.json
new file mode 100644
index 00000000..dd7fab27
--- /dev/null
+++ b/Thanks/i18n/eo.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "KuboF"
+ ]
+ },
+ "thanks-desc": "Aldoni ligilon por danki al uzantoj pro ties redaktoj, komentoj ks.",
+ "thanks-thank": "danki",
+ "thanks-thanked": "{{GENDER:$1|dankita}}",
+ "thanks-button-thank": "{{GENDER:$1|Danki}}",
+ "thanks-button-thanked": "{{GENDER:$1|Dankis}}",
+ "thanks-error-undefined": "Danko malsukcesis. Reprovu poste.",
+ "thanks-error-invalidrevision": "Identigilo de revizio estas nevalida.",
+ "thanks-error-ratelimited": "Vi superis vian laŭtempan limon. Atendu kelkan tempon kaj reprovu.",
+ "thanks-confirmation2": "{{GENDER:$1|Ĉu sendi}} dankon pro tiu ĉi redakto?",
+ "thanks-thanked-notice": "$1 ricevis vian dankon pro {{GENDER:$2|lia|ŝia|lia}} redakto.",
+ "thanks": "Sendi dankon",
+ "thanks-already-thanked": "{{GENDER:$1|Vi}} jam sendis dankon pro tiu ĉi redakto.",
+ "echo-pref-subscription-edit-thank": "Danki al mi pro miaj redaktoj",
+ "echo-pref-tooltip-edit-thank": "Sciigu min kiam iu dankas al mi pro mia redakto.",
+ "echo-category-title-edit-thank": "Dankoj",
+ "notification-thanks-diff-link": "via redakto",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|dankis}} al vi pro $2 en [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|dankis}} al vi pro via redakto en $2.",
+ "notification-thanks-email-subject": "$1 dankis al vi pro via redakto en {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 dankis al vi pro via redakto en $2.",
+ "notification-link-text-respond-to-user": "Respondi al uzanto",
+ "log-name-thanks": "Protokolo de dankoj",
+ "log-description-thanks": "Sube estas listo de uzantoj al kiuj aliaj uzantoj dankis.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|dankis}} al {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 protokolon de dankoj",
+ "thanks-confirmation-special": "Ĉu vi volas sendi dankon pro tiu ĉi redakto?",
+ "notification-link-text-view-post": "Montri komenton",
+ "flow-thanks-confirmation-special": "Ĉu vi volas sendi dankon pro tiu ĉi komento?",
+ "flow-thanks-thanked-notice": "$1 ricevis vian dankon pro {{GENDER:$2|lia|ŝia|lia}} komento.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|dankis}} al {{GENDER:$5|vi}} pro $2 ĉe \"$3\" en la paĝo [[:$4]].",
+ "notification-flow-thanks-post-link": "via komento"
+}
diff --git a/Thanks/i18n/es.json b/Thanks/i18n/es.json
new file mode 100644
index 00000000..d5347488
--- /dev/null
+++ b/Thanks/i18n/es.json
@@ -0,0 +1,51 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alan",
+ "Fitoschido",
+ "Hahc21",
+ "Julian leonardo paez",
+ "PoLuX124",
+ "Sethladan",
+ "Themasterriot",
+ "Macofe"
+ ]
+ },
+ "thanks-desc": "Añade enlaces para agradecer a los usuarios por ediciones, comentarios, etc.",
+ "thanks-thank": "agradecer",
+ "thanks-thanked": "{{GENDER:$1|agradeció}}",
+ "thanks-button-thank": "{{GENDER:$1|Gracias}}",
+ "thanks-button-thanked": "agradecid{{GENDER:$1|o|a}}",
+ "thanks-error-undefined": "La acción de agradecimiento falló. Inténtalo de nuevo.",
+ "thanks-error-invalidrevision": "El id. de revisión no es válido.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Has}} excedido tu límite. Por favor, espera un tiempo e intenta de nuevo.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Enviar}} una notificación de agradecimiento a {{GENDER:$2|este usuario|esta usuaria}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Cancelar}} la notificación de agradecimiento",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Enviar}} la notificación de agradecimiento",
+ "thanks-confirmation2": "¿{{GENDER:$1|Agradecer}} públicamente esta edición?",
+ "thanks-thanked-notice": "$1 recibió tu agradecimiento por {{GENDER:$2|su}} edición.",
+ "thanks": "Enviar agradecimiento",
+ "thanks-form-revid": "Id. de revisión",
+ "thanks-already-thanked": "Ya has {{GENDER:$1|enviado}} un agradecimiento por esta edición.",
+ "echo-pref-subscription-edit-thank": "Agradecerme por mi edición",
+ "echo-pref-tooltip-edit-thank": "Notificarme cuando alguien me agradezca por una edición que haya realizado.",
+ "echo-category-title-edit-thank": "Gracias",
+ "notification-thanks-diff-link": "tu edición",
+ "notification-thanks": "[[User:$1|$1]] te ha agradecido por $2 en [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] te ha agradecido por tu edición en $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|agradeció}} tu edición en {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 te ha agradecido por tu edición en $2.",
+ "notification-link-text-respond-to-user": "Responder al usuario",
+ "log-name-thanks": "Registro de agradecimientos",
+ "log-description-thanks": "A continuación, una lista de usuarios que han sido agradecidos por otros usuarios.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|agradeció}} a {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 registro de agradecimientos",
+ "thanks-confirmation-special": "¿Deseas agradecer públicamente esta edición?",
+ "notification-link-text-view-post": "Ver comentario",
+ "thanks-error-invalidpostid": "El identificador de publicación no es válido.",
+ "flow-thanks-confirmation-special": "¿Deseas agradecer públicamente este comentario?",
+ "flow-thanks-thanked-notice": "$1 recibió tu agradecimiento por {{GENDER:$2|su}} comentario.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|te}} {{GENDER:$1|agradeció}} por $2 en \"$3\" de [[:$4]].",
+ "notification-flow-thanks-post-link": "tu comentario",
+ "apihelp-flowthank-description": "Enviar una notificación pública de agradecimiento por un comentario en Flow."
+}
diff --git a/Thanks/i18n/et.json b/Thanks/i18n/et.json
new file mode 100644
index 00000000..8c488406
--- /dev/null
+++ b/Thanks/i18n/et.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kyng",
+ "Pikne"
+ ]
+ },
+ "thanks-desc": "Lisab lingid kasutajate tänamiseks muudatuste, kommentaaride ja muu eest.",
+ "thanks-thank": "täna",
+ "thanks-thanked": "{{GENDER:$1|tänatud}}",
+ "thanks-button-thank": "{{GENDER:$1|Täna}}",
+ "thanks-button-thanked": "{{GENDER:$1|Tänatud}}",
+ "thanks-error-undefined": "Tänamine ebaõnnestus. Palun proovi uuesti.",
+ "thanks-error-invalidrevision": "Redaktsiooni identifikaator ei sobi.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Oled}} ületanud piirangumäära. Palun oota natuke ja proovi uuesti.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Saada}} sellele {{GENDER:$2|kasutajale}} tänuteavitus",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Loobu}} tänuteavitusest",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Saada}} tänuteavitus",
+ "thanks-confirmation2": "Kas {{GENDER:$1|saadad}} selle muudatuse eest avaliku tänuavalduse?",
+ "thanks-thanked-notice": "Kasutaja $1 {{GENDER:$2|sai}} kätte sinu tänusõnad muudatuse eest.",
+ "thanks": "Tänu avaldamine",
+ "thanks-form-revid": "Muudatuse redaktsiooni identifikaator",
+ "thanks-already-thanked": "{{GENDER:$1|Oled}} selle muudatuse eest juba tänu avaldanud.",
+ "echo-pref-subscription-edit-thank": "Mind tänatakse minu muudatuse eest",
+ "echo-pref-tooltip-edit-thank": "Teavita mind, kui keegi tänab mind tehtud muudatuse eest.",
+ "echo-category-title-edit-thank": "Tänamine",
+ "notification-thanks-diff-link": "muudatuse",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|tänas}} sind $2 eest leheküljel [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] tänas sind muudatuse eest leheküljel $2.",
+ "notification-thanks-email-subject": "$1 tänas sind {{GRAMMAR:inessive|{{SITENAME}}}} muudatuse eest",
+ "notification-thanks-email-batch-body": "$1 tänas sind muudatuse eest leheküljel $2.",
+ "notification-link-text-respond-to-user": "Vasta kasutajale",
+ "log-name-thanks": "Tänulogi",
+ "log-description-thanks": "Allpool on nimekiri kasutajatest, keda teised kasutajad on tänanud.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|tänas}} kasutajat {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 tänulogi",
+ "thanks-error-no-id-specified": "Pead määrama redaktsiooni identifikaatori, et tänu avaldada.",
+ "thanks-confirmation-special": "Kas tahad selle muudatuse eest avalikult tänu avaldada?",
+ "notification-link-text-view-post": "Vaata kommentaari",
+ "thanks-error-invalidpostid": "Postituse identifikaator on vigane.",
+ "flow-thanks-confirmation-special": "Kas tahad selle kommentaari eest avalikult tänu avaldada?",
+ "flow-thanks-thanked-notice": "Kasutaja $1 {{GENDER:$2|sai}} kätte sinu tänusõnad kommentaari eest.",
+ "notification-flow-thanks": "[[User:$1|$1]] tänas {{GENDER:$5|sind}} $2 eest teemal \"$3\" leheküljel \"[[:$4]]\".",
+ "notification-flow-thanks-post-link": "kommentaari",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] tänas {{GENDER:$4|sind}} kommentaari eest teemal \"$2\" leheküljel \"$3\".",
+ "notification-flow-thanks-email-subject": "$1 tänas {{GENDER:$2|sind}} kommentaari eest {{GRAMMAR:inessive|{{SITENAME}}}}",
+ "notification-flow-thanks-email-batch-body": "$1 tänas {{GENDER:$4|sind}} kommentaari eest teemal \"$2\" leheküljel \"$3\"."
+}
diff --git a/Thanks/i18n/eu.json b/Thanks/i18n/eu.json
new file mode 100644
index 00000000..357ea292
--- /dev/null
+++ b/Thanks/i18n/eu.json
@@ -0,0 +1,22 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xabier Armendaritz"
+ ]
+ },
+ "thanks-thank": "eskertu",
+ "thanks-thanked": "{{GENDER:$1|eskertuta}}",
+ "thanks-button-thank": "{{GENDER:$1|Eskertu}}",
+ "thanks-button-thanked": "{{GENDER:$1|Eskertuta}}",
+ "thanks-confirmation2": "Eskerrak {{GENDER:$1|eman}} edizio honengatik?",
+ "thanks-thanked-notice": "$1 wikilariari {{GENDER:$2|bere}} edizioa atsegin duzula jakinarazi zaio.",
+ "thanks": "Eman eskerrak",
+ "notification-thanks-diff-link": "edizioa",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|wikilariak}} «[[:$3]]» orrian egin duzun $2 eskertu dizu.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] wikilariak «$2» orrian egin duzun edizioa eskertu dizu.",
+ "notification-thanks-email-subject": "{{SITENAME}} gunean egin duzun edizioa eskertu dizu $1 {{GENDER:$1|wikilariak}}",
+ "notification-thanks-email-batch-body": "«$2» orrian egin duzun edizioa eskertu dizu $1 {{GENDER:$1|wikilariak}}.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|wikilariak}} eskerrak eman dizkio {{GENDER:$4|$3}} wikilariari",
+ "thanks-confirmation-special": "Edizio hau eskertu nahi duzu?",
+ "flow-thanks-confirmation-special": "Iruzkin hau eskertu nahi duzu?"
+}
diff --git a/Thanks/i18n/fa.json b/Thanks/i18n/fa.json
new file mode 100644
index 00000000..a55e1127
--- /dev/null
+++ b/Thanks/i18n/fa.json
@@ -0,0 +1,60 @@
+{
+ "@metadata": {
+ "authors": [
+ "A.R.Rostamzade",
+ "Armin1392",
+ "Dalba",
+ "Ebraminio",
+ "Ladsgroup",
+ "Omidh",
+ "Reza1615",
+ "ZxxZxxZ",
+ "درفش کاویانی",
+ "Alirezaaa",
+ "Mjbmr"
+ ]
+ },
+ "thanks-desc": "پیوندی برای تشکر کاربران برای ویرایش‌ها، توضیحات و ... اضافه می‌کند.",
+ "thanks-thank": "تشکر",
+ "thanks-thanked": "{{GENDER:$1|تشکر شد}}",
+ "thanks-button-thank": "{{GENDER:$1|تشکر}}",
+ "thanks-button-thanked": "{{GENDER:$1|تشکر شد}}",
+ "thanks-error-undefined": "عمل تشکر ناموفق بود. لطفاً دوباره امتحان کنید.",
+ "thanks-error-invalidrevision": "شناسهٔ نسخه معتبر نیست.",
+ "thanks-error-ratelimited": "{{GENDER:$1|شما}} از محدودهٔ سرعت مجاز فراتر رفته‌اید. لطفاً کمی صبر کنید و دوباره امتحان کنید.",
+ "thanks-thank-tooltip": "{{GENDER:$1|فرستادن}} پیام تشکر به این {{GENDER:$2|کاربر}}",
+ "thanks-thank-tooltip-no": "آگاه‌سازی تشکر از شما را {{GENDER:$1|لغو کنید}}",
+ "thanks-thank-tooltip-yes": "آگاه‌سازی تشکر از شما را {{GENDER:$1|بفرستید}}",
+ "thanks-confirmation2": "{{GENDER:$1|فرستادن}} تشکر برای این ویرایش؟",
+ "thanks-thanked-notice": "$1 تشکر شما را برای ویرایش {{GENDER:$2|او|او|آنها}} دریافت کرد.",
+ "thanks": "ارسال تشکر",
+ "thanks-form-revid": "شناسهٔ نسخه برای ویرایش",
+ "thanks-already-thanked": "{{GENDER:$1|شما}} تشکر را برای این ویرایش فرستادید.",
+ "echo-pref-subscription-edit-thank": "برای ویرایش‌هایم از من سپاسگزاری کن",
+ "echo-pref-tooltip-edit-thank": "وقتی کسی از ویرایش‌های من تشکر می‌کند مرا آگاه کن.",
+ "echo-category-title-edit-thank": "تشکرها",
+ "notification-thanks-diff-link": "ویرایش‌تان",
+ "notification-thanks": "[[User:$1|$1]] از شما بابت $2 در [[:$3]] {{GENDER:$1|تشکر کرد}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] از ویرایش شما در $2 {{GENDER:$1|تشکر کرد}}.",
+ "notification-thanks-email-subject": "$1 از شما بابت ویرایش‌تان در {{SITENAME}} {{GENDER:$1|تشکر کرد}}",
+ "notification-thanks-email-batch-body": "$1 از شما بابت ویرایش‌تان در $2 {{GENDER:$1|تشکر کرد}}.",
+ "notification-link-text-respond-to-user": "پاسخ به کاربر",
+ "log-name-thanks": "سیاههٔ تشکرها",
+ "log-description-thanks": "این فهرستی است از کاربرانی که کاربران دیگر از آن‌ها تشکر کرده‌اند.",
+ "logentry-thanks-thank": "$1 از {{GENDER:$4|$3}} {{GENDER:$2|تشکر کرد}}",
+ "log-show-hide-thanks": "$1 سیاههٔ تشکرها",
+ "thanks-error-no-id-specified": "شناسهٔ نسخه برای فرستادن تشکر را مشخص کنید.",
+ "thanks-confirmation-special": "می‌خواهید برای این ویرایش تشکر بفرستید؟",
+ "notification-link-text-view-post": "مشاهده نظر",
+ "thanks-error-invalidpostid": "شناسهٔ پست معتبر نیست.",
+ "flow-thanks-confirmation-special": "می‌خواهید برای این توضیح تشکر بفرستید؟",
+ "flow-thanks-thanked-notice": "$1 تشکر شما را برای دیدگاه {{GENDER:$2|او|او|آنها}} دریافت کرد.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|سپاس}} از {{GENDER:$5|شما}} $2 در «$3» بر [[:$4]].",
+ "notification-flow-thanks-post-link": "نظر شما",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|سپاس}} از {{GENDER:$4|شما}} برای نظرتان در «$2» بر $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|سپاس}} از {{GENDER:$2|شما}} برای نظرتان در {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|سپاس}} از {{GENDER:$4|شما}} برای نظرتان در «$2» بر $3.",
+ "apihelp-thank-description": "فرستادن یک اعلان تشکر به یک ویراستار.",
+ "apihelp-thank-param-rev": "شناسه نسخه برای تشکر از شخصی برای آن.",
+ "apihelp-thank-param-source": "رشته متنی کوتاه برای شرخ مبدأ درخواست، برای مثال «diff» یا «history»."
+}
diff --git a/Thanks/i18n/fi.json b/Thanks/i18n/fi.json
new file mode 100644
index 00000000..7c9b5c70
--- /dev/null
+++ b/Thanks/i18n/fi.json
@@ -0,0 +1,58 @@
+{
+ "@metadata": {
+ "authors": [
+ "Crt",
+ "Nike",
+ "Pxos",
+ "Samoasambia",
+ "Silvonen",
+ "Stryn"
+ ]
+ },
+ "thanks-desc": "Lisää linkkejä käyttäjien kiittämistä varten heidän muokkauksistaan, kommenteistaan ynnä muusta.",
+ "thanks-thank": "kiitä",
+ "thanks-thanked": "{{GENDER:$1|kiitetty}}",
+ "thanks-button-thank": "{{GENDER:$1|Kiitä}}",
+ "thanks-button-thanked": "{{GENDER:$1|Kiitetty}}",
+ "thanks-error-undefined": "Kiittäminen epäonnistui. Yritä uudelleen.",
+ "thanks-error-invalidrevision": "Version tunniste ei kelpaa.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Olet}} ylittänyt toimintorajasi. Odota hetki ja yritä uudelleen.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Lähetä}} kiitoksesi tälle {{GENDER:$2|käyttäjälle}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Älä lähetä}} kiitoksia",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Lähetä}} kiitokset käyttäjälle",
+ "thanks-confirmation2": "{{GENDER:$1|Lähetätkö}} kiitoksen tästä muokkauksesta?",
+ "thanks-thanked-notice": "$1 on saanut lähettämäsi kiitokset {{GENDER:$2|tekemästään}} muokkauksesta.",
+ "thanks": "Lähetä kiitokset",
+ "thanks-form-revid": "Muokatun version tunniste",
+ "thanks-already-thanked": "{{GENDER:$1|Olet}} jo lähettänyt kiitoksesi tästä muokkauksesta.",
+ "echo-pref-subscription-edit-thank": "Minulle annetut kiitokset tekemistäni muokkauksista",
+ "echo-pref-tooltip-edit-thank": "Ilmoita minulle, kun joku kiittää minua tekemästäni muokkauksesta.",
+ "echo-category-title-edit-thank": "Kiitokset",
+ "notification-thanks-diff-link": "muokkauksestasi",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|kiitti}} sinua $2 sivulla [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|kiitti}} sinua muokkauksestasi sivulla $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|kiitti}} sinua muokkauksestasi sivustolla {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|kiitti}} sinua muokkauksestasi sivulla $2.",
+ "notification-link-text-respond-to-user": "Vastaa käyttäjälle",
+ "log-name-thanks": "Kiitosloki",
+ "log-description-thanks": "Alla on luettelo niistä käyttäjistä, jotka ovat saaneet kiitoksia toisilta käyttäjiltä.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|kiitti}} käyttäjää {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 kiitosloki",
+ "thanks-error-no-id-specified": "Sinun on määritettävä version tunnistenumero, jotta voit lähettää kiitoksia.",
+ "thanks-confirmation-special": "Haluatko lähettää kiitokset tästä muokkauksesta?",
+ "notification-link-text-view-post": "Näytä kommentti",
+ "thanks-error-invalidpostid": "Viestin tunnistenumero ei ole kelvollinen.",
+ "flow-thanks-confirmation-special": "Haluatko lähettää kiitokset tästä kommentista?",
+ "flow-thanks-thanked-notice": "$1 on saanut lähettämäsi kiitokset {{GENDER:$2|kirjoittamastaan}} kommentista.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|kiitti}} {{GENDER:$5|sinua}} $2 aiheesta ”$3” sivulla [[:$4]].",
+ "notification-flow-thanks-post-link": "kommentistasi",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|kiitti}} {{GENDER:$4|sinua}} kommentistasi aiheessa ”$2” sivulla $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|kiitti}} {{GENDER:$2|sinua}} kommentistasi {{GRAMMAR:inessive|{{SITENAME}}}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|kitti}} {{GENDER:$4|sinua}} kommentistasi aiheessa ”$2” sivulla $3.",
+ "apihelp-flowthank-description": "Lähetä kiitoksesi kommentista Flow'ssa.",
+ "apihelp-flowthank-param-postid": "Viestin UUID, josta kiitetään.",
+ "apihelp-flowthank-example-1": "Lähetä kiitokset kommentista, jonka UUID on xyz789",
+ "apihelp-thank-description": "Lähetä kiitokset jollekulle muokkaajalle.",
+ "apihelp-thank-param-rev": "Sivuversion tunnistenumero, josta kiitetään.",
+ "apihelp-thank-example-1": "Lähetä kiitoksesi sivuversiosta ID 456 niin, että lähteenä on vertailusivu"
+}
diff --git a/Thanks/i18n/fr.json b/Thanks/i18n/fr.json
new file mode 100644
index 00000000..9726e21b
--- /dev/null
+++ b/Thanks/i18n/fr.json
@@ -0,0 +1,58 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arkanosis",
+ "Automatik",
+ "Boniface",
+ "Gomoko",
+ "Jean-Frédéric",
+ "Ltrlg",
+ "Maxim21",
+ "Metroitendo",
+ "Rmunn",
+ "Urhixidur",
+ "Wyz",
+ "McDutchie",
+ "Dereckson",
+ "Macofe"
+ ]
+ },
+ "thanks-desc": "Ajoute des liens pour remercier les utilisateurs pour des modifications, des commentaires, etc.",
+ "thanks-thank": "remercier",
+ "thanks-thanked": "{{GENDER:$1|remercié|remerciée}}",
+ "thanks-button-thank": "{{GENDER:$1|Merci}}",
+ "thanks-button-thanked": "{{GENDER:$1|Remercié}}",
+ "thanks-error-undefined": "Échec de l’action de remerciement. Veuillez réessayer.",
+ "thanks-error-invalidrevision": "L’ID de révision n’est pas valide.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Vous}} avez dépassé votre limite de débit. Veuillez attendre un peu et réessayer.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Envoyer}} une notification de remerciement à {{GENDER:$2|cet utilisateur|cette utilisatrice}}",
+ "thanks-confirmation2": "{{GENDER:$1|Envoyer}} des remerciements pour cette modification ?",
+ "thanks-thanked-notice": "$1 a été notifié que vous avez aimé {{GENDER:$2|sa}} modification.",
+ "thanks": "Envoyer des remerciements",
+ "thanks-form-revid": "ID de révision de la modification",
+ "thanks-already-thanked": "{{GENDER:$1|Vous}} avez déjà envoyé des remerciements pour cette modification.",
+ "echo-pref-subscription-edit-thank": "Me remercier pour ma modification",
+ "echo-pref-tooltip-edit-thank": "Me prévenir quand quelqu’un me remercie pour une modification que j’ai faite.",
+ "echo-category-title-edit-thank": "Merci",
+ "notification-thanks-diff-link": "votre modification",
+ "notification-thanks": "[[User:$1|$1]] vous a remercié pour $2 sur [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vous a remercié pour votre modification sur $2.",
+ "notification-thanks-email-subject": "$1 vous a remercié pour votre modification sur {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 vous a remercié pour votre modification sur $2.",
+ "notification-link-text-respond-to-user": "Répondre à l’utilisateur",
+ "log-name-thanks": "Journal des remerciements",
+ "log-description-thanks": "Ci-dessous se trouve une liste d'utilisateurs qui ont été remerciés par d'autres.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|a remercié}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 le journal des remerciements",
+ "thanks-error-no-id-specified": "Vous devez spécifier un ID de révision pour envoyer des remerciements.",
+ "thanks-confirmation-special": "Voulez-vous envoyer publiquement des remerciements pour cette modification ?",
+ "notification-link-text-view-post": "Afficher commentaire",
+ "thanks-error-invalidpostid": "L’ID de la note n’est pas valide.",
+ "flow-thanks-confirmation-special": "Voulez-vous envoyer publiquement des remerciements pour ce commentaire ?",
+ "flow-thanks-thanked-notice": "$1 a été {{GENDER:$2|notifié|notifiée}} que vous aimez son commentaire.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|vous}} a remercié pour $2 dans « $3 » sur [[:$4]].",
+ "notification-flow-thanks-post-link": "votre commentaire",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|vous}} a remercié pour votre commentaire dans « $2 » sur $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|vous}} a remercié pour votre commentaire sur {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|vous}} a remercié pour votre commentaire dans « $2 » sur $3."
+}
diff --git a/Thanks/i18n/frr.json b/Thanks/i18n/frr.json
new file mode 100644
index 00000000..b7184317
--- /dev/null
+++ b/Thanks/i18n/frr.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Murma174"
+ ]
+ },
+ "thanks-desc": "Saat ferwisangen, am brükern tu soonkin för hör bidracher",
+ "thanks-thank": "soonke",
+ "thanks-thanked": "{{GENDER:$1|besoonket}}",
+ "thanks-button-thank": "{{GENDER:$1|Besoonke}}",
+ "thanks-button-thanked": "{{GENDER:$1|Besoonket}}",
+ "thanks-error-undefined": "\"Soonk\" hää ei loket. Ferschük det man noch ans.",
+ "thanks-error-invalidrevision": "Det werjuun jaft at ei.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Dü}} heest tuföl aktjuunen onernimen. Teew en uugenblak an ferschük det noch ans weder.",
+ "thanks-thank-tooltip": "{{Gender:$1|Schüür}} {{Gender:$2|didiar brüker}} en \"soonk\".",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Breeg}} det soonkin uf",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Schüür}} det soonk-bööd",
+ "thanks-confirmation2": "Diar en öfentelken soonk för {{GENDER:$1|schüür}}?",
+ "thanks-thanked-notice": "$1 hää bööd füngen, dat dü {{GENDER:$2|sin|hör|hör}} feranrang gud fanjst.",
+ "thanks": "Soonk schüür",
+ "thanks-form-revid": "Werjuunskäänang för't bewerkin",
+ "thanks-already-thanked": "{{GENDER:$1|Dü}} heest di al för det feranrang besoonket.",
+ "echo-pref-subscription-edit-thank": "\"Soonk\" saien för man bidrach",
+ "echo-pref-tooltip-edit-thank": "Du mi bööd, wan mi hoker en \"soonk\" schüürt för man bidrach.",
+ "echo-category-title-edit-thank": "Föl soonk",
+ "notification-thanks-diff-link": "dan bidrach",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|soonket}} di för $2 üüb [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|soonket}} di för dan bidrach üüb $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|soonket}} di för dan bidrach üüb {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|soonket}} di för dan bidrach üüb $2.",
+ "notification-link-text-respond-to-user": "Di brüker swaare",
+ "log-name-thanks": "Soonk-logbuk",
+ "log-description-thanks": "Oner stäänt en list faan brükern, diar faan ööder brükern soonk saad wurden as.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|besoonket}} ham bi {{Gender:$4|$3}}",
+ "log-show-hide-thanks": "Föl-soonk-logbuk $1",
+ "thanks-error-no-id-specified": "Dü skel en werjuuns-ID uundu, am en soonk tu schüüren.",
+ "thanks-confirmation-special": "Maadst dü en soonk för didiar bidrach schüür?",
+ "notification-link-text-view-post": "Komentaar uunwise",
+ "thanks-error-invalidpostid": "Det ID faan di bidrach as ferkiard.",
+ "flow-thanks-confirmation-special": "Maadst dü en soonk för didiar komentaar schüür?",
+ "flow-thanks-thanked-notice": "$1 hää bööd füngen, dat dü {{GENDER:$2|sin|hör|hör}} komentaar gud fanjst.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|soonket}} {{GENDER:$5|di}} för $2 uun \"$3\" üüb [[:$4]].",
+ "notification-flow-thanks-post-link": "dan komentaar",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|soonket}} {{GENDER:$4|di}} för dan komentaar uun \"$2\" üüb $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|soonket}} {{GENDER:$2|di}} för dan komentaar üüb {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|soonket}} {{GENDER:$4|di}} för dan komentaar uun \"$2\" üüb $3.",
+ "apihelp-flowthank-description": "En öfentelk soonk-bööd för en komentaar schüür.",
+ "apihelp-flowthank-param-postid": "Det UUID faan det besoonket nooracht.",
+ "apihelp-flowthank-example-1": "Schüür en soonk för di komentaar mä det UUID xyz789",
+ "apihelp-thank-description": "Schüür en soonk-bööd tu en skriiwer.",
+ "apihelp-thank-param-rev": "Werjuuns-ID huar hoker för soonket woort.",
+ "apihelp-thank-param-source": "En kurten beskriiwangs-tekst, t.b. \"ferskeel\" of \"histoore\".",
+ "apihelp-thank-example-1": "Schüür en soonk för det werjuuns-ID 456, wan det am en ferskeel gongt."
+}
diff --git a/Thanks/i18n/gd.json b/Thanks/i18n/gd.json
new file mode 100644
index 00000000..716f25ac
--- /dev/null
+++ b/Thanks/i18n/gd.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sionnach"
+ ]
+ },
+ "thanks-thank-tooltip": "{{GENDER:$1|Cuir}} taing don {{GENDER:$2|chleachdaiche}} seo"
+}
diff --git a/Thanks/i18n/gl.json b/Thanks/i18n/gl.json
new file mode 100644
index 00000000..a142ba83
--- /dev/null
+++ b/Thanks/i18n/gl.json
@@ -0,0 +1,57 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño",
+ "Agremon",
+ "Elisardojm",
+ "Banjo"
+ ]
+ },
+ "thanks-desc": "Engade ligazóns para agradecer aos usuarios as súas edicións, comentarios etc.",
+ "thanks-thank": "agradecer",
+ "thanks-thanked": "{{GENDER:$1|agradecido|agradecida}}",
+ "thanks-button-thank": "{{GENDER:$1|Agradecer}}",
+ "thanks-button-thanked": "{{GENDER:$1|Agradecido|Agradecida}}",
+ "thanks-error-undefined": "Houbo un erro ao realizar o agradecemento. Inténteo de novo.",
+ "thanks-error-invalidrevision": "O ID da revisión non é válido.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Superou}} o seu límite de velocidade. Agarde uns minutos e inténteo de novo.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Envía}} unha notificación de agradecemento a {{GENDER:$2|este usuario|esta usuaria}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Cancelar}} a notificación de agradecemento",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Enviar}} a notificación de agradecemento",
+ "thanks-confirmation2": "Quere {{GENDER:$1|enviar}} un agradecemento público por esta edición?",
+ "thanks-thanked-notice": "$1 recibiu o agradecemento que lle enviou pola {{GENDER:$2|súa}} edición.",
+ "thanks": "Enviar un agradecemento",
+ "thanks-form-revid": "ID de revisión da edición",
+ "thanks-already-thanked": "Xa {{GENDER:$1|enviou}} un agradecemento por esta edición.",
+ "echo-pref-subscription-edit-thank": "Me agradeza unha edición feita por min",
+ "echo-pref-tooltip-edit-thank": "Notificádeme cando alguén me agradeza unha edición feita por min.",
+ "echo-category-title-edit-thank": "Agradecemento",
+ "notification-thanks-diff-link": "a súa edición",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu}} $2 en \"[[:$3]]\".",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|agradeceu}} a súa edición en \"$2\".",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|agradeceu}} a súa edición en {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|agradeceu}} a súa edición en \"$2\".",
+ "notification-link-text-respond-to-user": "Responder ao usuario",
+ "log-name-thanks": "Rexistro de agradecementos",
+ "log-description-thanks": "A continuación hai unha lista dos usuarios que recibiron agradecementos doutros usuarios.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|deu as grazas a}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 o rexistro de agradecementos",
+ "thanks-error-no-id-specified": "Cómpre especificar un identificador de revisión para enviar o agradecemento.",
+ "thanks-confirmation-special": "Quere agradecer esta edición de xeito público?",
+ "notification-link-text-view-post": "Mostrar o comentario",
+ "thanks-error-invalidpostid": "O identificador de publicación non é válido.",
+ "flow-thanks-confirmation-special": "Quere agradecer publicamente este comentario?",
+ "flow-thanks-thanked-notice": "$1 recibiu o agradecemento que lle enviou pola {{GENDER:$2|seu}} comentario.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu}} {{GENDER:$5|$2}} en \"$3\" na páxina \"[[:$4]]\".",
+ "notification-flow-thanks-post-link": "o seu comentario",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|agradeceu}} {{GENDER:$4|o seu comentario}} en \"$2\" na páxina \"$3\".",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|agradeceu}} {{GENDER:$2|o seu comentario}} en {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|agradeceu}} {{GENDER:$4|o seu comentario}} en \"$2\" na páxina \"$3\".",
+ "apihelp-flowthank-description": "Enviar unha notificación pública de agradecemento por un comentario en Flow.",
+ "apihelp-flowthank-param-postid": "O UUID da publicación que agradecer.",
+ "apihelp-flowthank-example-1": "Enviar un agradecemento ao comentario co UUID xyz789",
+ "apihelp-thank-description": "Enviar unha notificación de agradecemento a un editor.",
+ "apihelp-thank-param-rev": "Identificador da revisión que agradecerlle a alguén.",
+ "apihelp-thank-param-source": "Un texto breve que describa a orixe da solicitude. Por exemplo, \"dif\" ou \"historial\".",
+ "apihelp-thank-example-1": "Enviar un agradecemento pola revisión con identificador 456, cuxa orixe sexa unha páxina de diferenzas"
+}
diff --git a/Thanks/i18n/gom-deva.json b/Thanks/i18n/gom-deva.json
new file mode 100644
index 00000000..638508b1
--- /dev/null
+++ b/Thanks/i18n/gom-deva.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Supriya kankumbikar"
+ ]
+ },
+ "thanks-thank": "बरें जावं"
+}
diff --git a/Thanks/i18n/gu.json b/Thanks/i18n/gu.json
new file mode 100644
index 00000000..a5b54d96
--- /dev/null
+++ b/Thanks/i18n/gu.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ashok modhvadia",
+ "Dsvyas"
+ ]
+ },
+ "thanks-desc": "ઇતિહાસ અને તફાવત બતાવતી વખતે આભાર માટેની કડી ઉમેરે છે",
+ "thanks-thank": "આભાર માનો",
+ "thanks-thanked": "{{GENDER:$1|આભાર માન્યો}}",
+ "thanks-button-thank": "{{GENDER:$1|આભાર માનો}}",
+ "thanks-button-thanked": "{{GENDER:$1|આભાર માન્યો}}",
+ "thanks-error-undefined": "આભારની ક્રિયા નિષ્ફળ ગઈ છે. ફરી પ્રયત્ન કરો.",
+ "thanks-error-invalidrevision": "પુનરાવર્તન આઇ.ડી. માન્ય નથી.",
+ "thanks-error-ratelimited": "{{GENDER:$1|તમે}} તમારી ગુણાંકન સીમા વટાવી ચૂક્યા છો. કૃપા કરી થોડો સમય રાહ જુઓ અને પછી પ્રયત્ન કરો.",
+ "thanks-thank-tooltip": "{{GENDER:$2|આ સભ્યને}} આભાર સંદેશો {{GENDER:$1|મોકલો}}",
+ "thanks-thanked-notice": "$1ને માહિતગાર કરવામાં આવ્યા છે કે તમને {{GENDER:$2|તેમણે}} કરેલો ફેરફાર ગમ્યો છે.",
+ "echo-pref-subscription-edit-thank": "મેં કરેલા ફેરફાર માટે મારો આભાર માને છે",
+ "echo-pref-tooltip-edit-thank": "મેં કરેલા ફેરફાર માટે કોઈ મારો આભાર માને ત્યારે મને જણાવો.",
+ "echo-category-title-edit-thank": "આભાર",
+ "notification-thanks-diff-link": "તમે કરેલો ફેરફાર",
+ "notification-thanks": "[[:$3]]માંના $2 માટે [[User:$1|$1]]એ તમારો {{GENDER:$1|આભાર માન્યો}}.",
+ "notification-thanks-flyout2": "$2 પરના તમારા ફેરફાર માટે [[User:$1|$1]]એ તમારો {{GENDER:$1|આભાર માન્યો}}.",
+ "notification-thanks-email-subject": "{{SITENAME}} પરના તમારા ફેરફાર માટે $1એ તમારો {{GENDER:$1|આભાર માન્યો}}.",
+ "notification-thanks-email-batch-body": "$2 પરના તમારા ફેરફાર માટે $1એ તમારો {{GENDER:$1|આભાર માન્યો}}.",
+ "notification-link-text-respond-to-user": "સભ્યને પ્રત્યુત્તર પાઠવો",
+ "log-name-thanks": "આભાર નોંધ",
+ "log-description-thanks": "નીચે એવા સભ્યોની યાદિ આપી છે જેમનો અન્ય સભ્યોએ આભાર માન્યો હોય.",
+ "logentry-thanks-thank": "$1એ {{GENDER:$4|$3}}નો {{GENDER:$2|આભાર માન્યો}}",
+ "log-show-hide-thanks": "$1 આભાર નોંધ"
+}
diff --git a/Thanks/i18n/haw.json b/Thanks/i18n/haw.json
new file mode 100644
index 00000000..0792e35c
--- /dev/null
+++ b/Thanks/i18n/haw.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kolonahe"
+ ]
+ },
+ "echo-category-title-edit-thank": "Mahalo",
+ "notification-thanks-diff-link": "kāu ho‘ololi"
+}
diff --git a/Thanks/i18n/he.json b/Thanks/i18n/he.json
new file mode 100644
index 00000000..2e88dad3
--- /dev/null
+++ b/Thanks/i18n/he.json
@@ -0,0 +1,58 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Guycn1",
+ "Guycn2",
+ "Rotemliss",
+ "ערן"
+ ]
+ },
+ "thanks-desc": "הוספת קישורים לאמירת \"תודה\" למשתמשים על עריכות, הערות, וכו'.",
+ "thanks-thank": "תודה",
+ "thanks-thanked": "{{GENDER:$1|אמרת תודה}}",
+ "thanks-button-thank": "{{GENDER:$1|תודה}}",
+ "thanks-button-thanked": "{{GENDER:$1|אמרת תודה}}",
+ "thanks-error-undefined": "פעולת תודה נכשלה. נא לנסות שוב.",
+ "thanks-error-invalidrevision": "מזהה גרסה אינו תקין.",
+ "thanks-error-ratelimited": "{{GENDER:$1|עברת}} את מגבלת הקצב שלך. נא להמתין ולנסות שוב.",
+ "thanks-thank-tooltip": "{{GENDER:$1|שלח|שלחי}} הודעת תודה {{GENDER:$2|למשתמש זה|למשתמשת זו}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|ביטול}} הודעת התודה",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|שליחת}} הודעת תודה",
+ "thanks-confirmation2": "{{GENDER:$1|לשלוח}} תודה פומבית על העריכה הזאת?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|קיבל|קיבלה}} את התודה שלך על עריכה {{GENDER:$2|שלו|שלה}}",
+ "thanks": "שליחת תודה",
+ "thanks-form-revid": "מזהה גרסה עבור עריכה",
+ "thanks-already-thanked": "כבר {{GENDER:$1|שלחת}} תודה על העריכה הזאת.",
+ "echo-pref-subscription-edit-thank": "מודה לי על עריכה שלי",
+ "echo-pref-tooltip-edit-thank": "להודיע לי כשמישהו מודה לי על עריכה שעשיתי.",
+ "echo-category-title-edit-thank": "תודות",
+ "notification-thanks-diff-link": "עריכה שלך",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|הודה|הודתה}} לך על $2 בדף [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|הודה|הודתה}} לך על עריכתך בדף $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|הודה|הודתה}} לך על עריכה שלך באתר {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|הודה|הודתה}} לך על עריכה שלך בדף $2.",
+ "notification-link-text-respond-to-user": "להשיב",
+ "log-name-thanks": "יומן תודות",
+ "log-description-thanks": "להלן רשימת משתמשים שאנשים אחרים הודו להם.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|הודה|הודתה}} ל{{GRAMMAR:תחילית|{{GENDER:$4|$3}}}}",
+ "log-show-hide-thanks": "$1 יומן תודות",
+ "thanks-error-no-id-specified": "יש לציין מזהה גרסה בשביל שליחת תודה.",
+ "thanks-confirmation-special": "האם לשלוח תודה פומבית על העריכה הזאת?",
+ "notification-link-text-view-post": "הצגת תגובה",
+ "thanks-error-invalidpostid": "מזהה הרשומה אינו תקין.",
+ "flow-thanks-confirmation-special": "האם לשלוח תודה פומבית על ההערה הזאת?",
+ "flow-thanks-thanked-notice": "$1 {{GENDER:$2|קיבל|קיבלה}} את התודה שלך על ההערה {{GENDER:$2|שלו|שלה}}.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|הודה|הודתה}} {{GENDER:$5|לך}} על $2 בנושא \"$3\" בדף [[:$4]].",
+ "notification-flow-thanks-post-link": "התגובה שלך",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|הודה|הודתה}} {{GENDER:$4|לך}} על התגובה שלך בנושא \"$2\" בדף $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|הודה|הודתה}} {{GENDER:$2|לך}} על התגובה שלך באתר {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|הודה|הודתה}} {{GENDER:$4|לך}} על התגובה שלך בנושא \"$2\" בדף $3.",
+ "apihelp-flowthank-description": "לשלוח הודעת תודה פומבית על הערת זרימה.",
+ "apihelp-flowthank-param-postid": "ה־UUID של הרשומהש עליה תישלח תודה.",
+ "apihelp-flowthank-example-1": "לשלוח תודה על הערה ש־xyz789 הוא ה־UUID שלה",
+ "apihelp-thank-description": "שליחת הודעת תודה לעורך.",
+ "apihelp-thank-param-rev": "מזהה גרסה להודות עליה.",
+ "apihelp-thank-param-source": "מחרוזת קצרה שמתארת את מקור הבקשה, למשל \"diff\" או \"history\".",
+ "apihelp-thank-example-1": "שליחת תודה עבור מזהה גרסה 456, שהמקור שלה הוא דף diff."
+}
diff --git a/Thanks/i18n/hi.json b/Thanks/i18n/hi.json
new file mode 100644
index 00000000..6b3beb94
--- /dev/null
+++ b/Thanks/i18n/hi.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shubhamkanodia",
+ "Siddhartha Ghai",
+ "संजीव कुमार"
+ ]
+ },
+ "thanks-desc": "सदस्यों को उनके सम्पादनों, टिप्पणियों आदि के लिए धन्यवाद देने कड़ियाँ जोड़ें।",
+ "thanks-thank": "धन्यवाद दें",
+ "thanks-thanked": "{{GENDER:$1|धन्यवाद दिया}}",
+ "thanks-button-thank": "{{GENDER:$1|धन्यवाद}}",
+ "thanks-button-thanked": "{{GENDER:$1|धन्यवाद दिया}}",
+ "thanks-error-undefined": "धन्यवाद देने का कार्य विफल रहा। कृपया पुनः प्रयास करें।",
+ "thanks-error-invalidrevision": "अवतरण आई॰डी॰ मान्य नहीं है।",
+ "thanks-error-ratelimited": "{{GENDER:$1|आप}} अपनी दर सीमा पार कर चुके हैं। कृपया थोड़ी देर बाद पुनः प्रयास करें।",
+ "thanks-thank-tooltip": "इस {{GENDER:$2|सदस्य}} को धन्यवाद अधिसूचना {{GENDER:$1|भेजें}}।",
+ "thanks-confirmation2": "इस सम्पादन के लिए धन्यवाद {{GENDER:$1|भेजें}}?",
+ "thanks-thanked-notice": "$1 को अधिसूचित किया गया है कि आपको {{GENDER:$2|उनका}} सम्पादन अच्छा लगा।",
+ "thanks": "धन्यवाद दें",
+ "thanks-form-revid": "सम्पादन के लिए अवतरण आई॰डी॰",
+ "thanks-already-thanked": "आप इस सम्पादन के लिये पहले ही धन्यवाद दे {{GENDER:$1|चुके|चुकी|चुके}} हैं।",
+ "echo-pref-subscription-edit-thank": "मेरे सम्पादन के लिए मुझे धन्यवाद दे।",
+ "echo-pref-tooltip-edit-thank": "जब कोई मेरे सम्पादन के लिये मुझे धन्यवाद कहे, मुझे सूचित करें।",
+ "echo-category-title-edit-thank": "धन्यवाद",
+ "notification-thanks-diff-link": "आपके सम्पादन",
+ "notification-thanks": "[[User:$1|$1]] ने [[:$3]] पर $2 के लिये {{GENDER:$1|धन्यवाद कहा है}}।",
+ "notification-thanks-flyout2": "[[User:$1|$1]] ने आपको $2 पर आपके सम्पादन के लिए {{GENDER:$1|धन्यवाद कहा है}}।",
+ "notification-thanks-email-subject": "$1 ने आपको {{SITENAME}} पर आपके सम्पादन के लिये आपको {{GENDER:$1|धन्यवाद कहा है}}।",
+ "notification-thanks-email-batch-body": "$1 ने $2 पर आपके सम्पादन के लिये आपको {{GENDER:$1|धन्यवाद कहा है}}।",
+ "notification-link-text-respond-to-user": "सदस्य को जवाब दें",
+ "log-name-thanks": "धन्यवाद लॉग",
+ "log-description-thanks": "अन्य सदस्यों द्वारा धन्यवाद पाने वाले सदस्यों की सूची निम्न है।",
+ "logentry-thanks-thank": "$1 ने {{GENDER:$4|$3}} को {{GENDER:$2|धन्यवाद कहा है}}",
+ "log-show-hide-thanks": "$1 धन्यवाद लॉग",
+ "thanks-error-no-id-specified": "धन्यवाद कहने के लिए आपको कोई एक पुनरीक्षण पता निर्दिष्ट करना चाहिए।",
+ "thanks-confirmation-special": "क्या आप इस सम्पादन के लिए धन्यवाद देना चाहते हो?",
+ "notification-link-text-view-post": "टिप्पणी देखें",
+ "thanks-error-invalidpostid": "पोस्ट पता वैध नहीं है।",
+ "flow-thanks-confirmation-special": "क्या आप इस टिप्पणी के लिए धन्यवाद भेजना चाहते हो?",
+ "flow-thanks-thanked-notice": "$1 को अधिसूचित किया गया है कि आपको {{GENDER:$2|उनकी|उनकी|उनकी}} टिप्पणियाँ पसन्द आयीं।",
+ "notification-flow-thanks": "[[User:$1|$1]] ने [[:$4]] पर $3 में $2 के लिए {{GENDER:$5|आपको}} {{GENDER:$1|धन्यवाद}} दिया है।",
+ "notification-flow-thanks-post-link": "आपकी टिप्पणी",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] ने $3 पर $2 में आपकी टिप्पणी के लिए {{GENDER:$4|आपको}}{{GENDER:$1|धन्यवाद}} दिया है।",
+ "notification-flow-thanks-email-subject": "$1 ने {{SITENAME}} पर आपकी टिप्पणी के लिए {{GENDER:$2|आपको}} {{GENDER:$1|धन्यवाद}} दिया है।",
+ "notification-flow-thanks-email-batch-body": "$1 ने $3 पर $2 में आपकी टिप्पणी के लिए {{GENDER:$4|आपको}} {{GENDER:$1|धन्यवाद दिया है।}}"
+}
diff --git a/Thanks/i18n/hr.json b/Thanks/i18n/hr.json
new file mode 100644
index 00000000..fe737123
--- /dev/null
+++ b/Thanks/i18n/hr.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "MaGa",
+ "Roberta F."
+ ]
+ },
+ "thanks-thank": "zahvala",
+ "thanks-thanked": "{{GENDER:$1|zahvala je objavljena}}",
+ "thanks-button-thank": "{{GENDER:$1|Zahvala je objavljena|Zahvala je objavljena}}",
+ "thanks-button-thanked": "{{GENDER:$1|Zahvala je objavljena|Zahvala je objavljena}}",
+ "thanks-thank-tooltip": "{{GENDER:$1|Pošalji}} zahvalu {{GENDER:$2|ovom suradniku|ovoj suradnici}}",
+ "thanks-confirmation2": "Želite zahvaliti za ovo uređivanje?",
+ "thanks": "Pošalji zahvalu",
+ "thanks-already-thanked": "Već {{GENDER:$1|ste}} zahvalili za ovo uređivanje.",
+ "echo-pref-tooltip-edit-thank": "Obavijesti me kad mi netko zahvali za moju izmjenu.",
+ "echo-category-title-edit-thank": "Hvala",
+ "notification-thanks-diff-link": "vaše uređivanje",
+ "notification-thanks": "[[User:$1|$1]] vam je {{GENDER:$1|zahvalio|zahvalila}} za $2 na stranici [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] Vam je {{GENDER:$1|zahvalio|zahvalila}} za Vašu izmjenu na stranici $2.",
+ "notification-thanks-email-subject": "$1 Vam {{GENDER:$1|zahvaljuje|zahvaljuje}} za uređivanje na projektu {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 vam {{GENDER:$1|zahvaljuje}} za Vaše uređivanje na stranici $2.",
+ "notification-link-text-respond-to-user": "Odgovor suradniku",
+ "log-name-thanks": "Evidencija zahvala",
+ "log-description-thanks": "Slijedi popis suradnika koji su drugim suradnicima objavili zahvalu.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|zahvalio|zahvalila}} je {{GENDER:$4|suradniku|suradnici}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 evidenciju zahvala",
+ "thanks-confirmation-special": "Želite li poslati zahvalu za ovo uređivanje?"
+}
diff --git a/Thanks/i18n/hsb.json b/Thanks/i18n/hsb.json
new file mode 100644
index 00000000..f9f448ea
--- /dev/null
+++ b/Thanks/i18n/hsb.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "thanks-desc": "Přidawa dźakne wotkazy historiji a wersijowym rozdźělam",
+ "thanks-thank": "dźakować so",
+ "thanks-thanked": "{{GENDER:$1|je so dźakował|je so dźakowała}}",
+ "thanks-button-thank": "{{GENDER:$1|Dźakować so}}",
+ "thanks-button-thanked": "{{GENDER:$1|Je so dźakował|Je so dźakowała}}",
+ "thanks-error-undefined": "Dźakowanje je so njeporadźiło. Prošu spytaj hišće raz.",
+ "thanks-error-invalidrevision": "Wersijowy ID njeje płaćiwy.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Ty}} sy swój akciski limit {{GENDER:$1|překročił|překročiła}}. Prošu čakaj chwilku a spytaj hišće raz.",
+ "thanks-thank-tooltip": "Dźaknu źdźělenku {{GENDER:$2|tutomu wužiwarjej|wužiwarce}} {{GENDER:$1|pósłać}}",
+ "thanks-thanked-notice": "$1 je so {{GENDER:$1|informował|informowała}}, zo {{GENDER:$2|jeho|jeje}} změna je ći spodobała.",
+ "thanks": "Dźak pósłać",
+ "thanks-form-revid": "Wersijowy ID za změnu",
+ "thanks-already-thanked": "Sy hižo dźak za tutu změnu {{GENDER:$1|pósłał|pósłała}}.",
+ "echo-pref-subscription-edit-thank": "Dźakuje so mi za moju změnu",
+ "echo-pref-tooltip-edit-thank": "Informuj mje, hdyž něchtó dźakuje so mje za změnu, kotruž sym činił.",
+ "echo-category-title-edit-thank": "Wulki dźak",
+ "notification-thanks-diff-link": "twoja změna",
+ "notification-thanks": "[[User:$1|$1]] je so ći za $2 na [[:$3]] {{GENDER:$1|dźakował|dźakowała}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] je so ći za změnu na $2 {{GENDER:$1|dźakował|dźakowała}}.",
+ "notification-thanks-email-subject": "$1 je so ći za twoju změnu na {{GRAMMAR:lokatiw|{{SITENAME}}}} {{GENDER:$1|dźakował|dźakowała}}",
+ "notification-thanks-email-batch-body": "$1 je so ći za twoju změnu na $2 {{GENDER:$1|dźakował|dźakowała}}.",
+ "notification-link-text-respond-to-user": "Wotmołwa wužiwarjej",
+ "log-name-thanks": "Dźakny protokol",
+ "log-description-thanks": "Deleka je lisćina wužiwarjow, kotrymž su so druzy wužiwarjo dźakowali.",
+ "logentry-thanks-thank": "$1 je {{GENDER:$4|$3}} {{GENDER:$2|dźakował|dźakowała}}",
+ "log-show-hide-thanks": "Dźakny protokol $1"
+}
diff --git a/Thanks/i18n/hu.json b/Thanks/i18n/hu.json
new file mode 100644
index 00000000..6a62ae1f
--- /dev/null
+++ b/Thanks/i18n/hu.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Misibacsi",
+ "Samat",
+ "Southparkfan",
+ "Teemeah",
+ "William915",
+ "Tacsipacsi",
+ "Csega"
+ ]
+ },
+ "thanks-desc": "Köszönőlinket helyez el a laptörténetben és a diffváltozatokban",
+ "thanks-thank": "köszönet",
+ "thanks-thanked": "{{GENDER:$1|megköszönve}}",
+ "thanks-error-undefined": "A megköszönés sikertelen. Kérlek, próbáld meg újra!",
+ "thanks-error-invalidrevision": "A lapváltozat azonosítója érvénytelen.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Túllépted}} a meghatározott limitet. Kérlek várj egy kicsit, és próbáld újra.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Küldj}} köszönetet ennek a {{GENDER:$2|szerkesztőnek}}",
+ "thanks-confirmation2": "{{GENDER:$1|Küldesz}} köszönetet ezért a szerkesztésért?",
+ "thanks-thanked-notice": "$1 was notified that you liked {{GENDER:$2|his|her|their}} edit.",
+ "echo-pref-subscription-edit-thank": "Megköszöni a szerkesztésem",
+ "echo-pref-tooltip-edit-thank": "Értesítést kérek, ha valaki megköszöni egy szerkesztésemet.",
+ "echo-category-title-edit-thank": "köszönet",
+ "notification-thanks-diff-link": "a szerkesztésed",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|megköszönte}} $2 a(z) [[:$3]] szócikkben.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|megköszönte}} a szerkesztésed a(z) $2 szócikkben.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|megköszönte}} a(z) {{SITENAME}} oldalon tett szerkesztésedet.",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|megköszönte}} a(z) $2 lapon tett szerkesztésedet.",
+ "notification-link-text-respond-to-user": "Válaszolok a szerkesztőnek.",
+ "log-name-thanks": "Köszönési napló",
+ "log-description-thanks": "Az alábbi szerkesztők köszönetet mondtak egy másik szerkesztőnek.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|köszönetet mondott}} {{GENDER:$4|$3}} szerkesztőnek",
+ "log-show-hide-thanks": "Köszönetnapló $1"
+}
diff --git a/Thanks/i18n/hy.json b/Thanks/i18n/hy.json
new file mode 100644
index 00000000..2ba0824d
--- /dev/null
+++ b/Thanks/i18n/hy.json
@@ -0,0 +1,39 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arman musikyan",
+ "Vacio",
+ "Xelgen",
+ "Դավիթ Սարոյան"
+ ]
+ },
+ "thanks-desc": "Ավելացնում է «Շնորհակալ եմ» հղումը էջի պատմության և խմբագրումների տարբերությունների մեջ",
+ "thanks-thank": "շնորհակալ եմ",
+ "thanks-thanked": "{{GENDER:$1| մասնակցին շնորհակալություն է հայտնված}}",
+ "thanks-button-thank": "{{GENDER:$1|Շնորհակալություն հայտնել}}",
+ "thanks-button-thanked": "{{GENDER:$1|մասնակցին շնորհակալություն է հայտնված:}}",
+ "thanks-error-undefined": "Չստացվեց շնորհակալություն հայտնել։ Փորձեք կրկին։",
+ "thanks-error-invalidrevision": "Խմբագրման համարանիշը վավեր չէ։",
+ "thanks-error-ratelimited": "{{GENDER:$1|Դուք}} շատ եք շնորհակալություն հայտնել։ Սպասեք որոշ ժամանակ և նորից փորձեք։",
+ "thanks-thank-tooltip": "{{GENDER:$1|Ուղարկեք}} շնորհակալական ուղերձ այս {{GENDER:$2|մասնակցին}}",
+ "thanks-confirmation2": "{{GENDER:$1|Շնորհակալություն հայտնե՞լ}} այս խմբագրման համար:",
+ "thanks-thanked-notice": "$1 մասնակիցը ծանուցում է ստացել, որ դուք հավանել եք {{GENDER:$2|իր}} խմբագրումը։",
+ "thanks": "Շնորհակալություն հայտնել:",
+ "echo-pref-subscription-edit-thank": "Շնորհակալ է իմ խմբագրման համար:",
+ "echo-pref-tooltip-edit-thank": "Տեղեկացնել, երբ ինչ–որ մեկը շնորհակալ է իմ կատարած խմբագրման համար։",
+ "echo-category-title-edit-thank": "Շնորհակալ է",
+ "notification-thanks-diff-link": "Ձեր խմբագրման",
+ "notification-thanks": "[[User:$1|$1]] մասնակիցը {{GENDER:$1|շնորհակալ է}} Ձեզ [[:$3]] էջում $2 համար։",
+ "notification-thanks-flyout2": "[[User:$1|$1]] մասնակիցը {{GENDER:$1|շնորհակալ է}} $2 էջում Ձեր արած խմբագրման համար։",
+ "notification-thanks-email-subject": "$1 մասնակիցը շնորհակալ է Ձեզ «{{SITENAME}}»–ում Ձեր խմբագրման համար։",
+ "notification-thanks-email-batch-body": "$1 մասնակիցը {{GENDER:$1|շնորհակալ է Ձեզ}} $2 էջում Ձեր խմբագրման համար։",
+ "notification-link-text-respond-to-user": "Պատասխանել մասնակցին",
+ "log-name-thanks": "Շնորհակալությունների գրանցամատյան",
+ "log-description-thanks": "Ստորև «շնորհակալություներ» ստացած մասնակիցների ցանկն է։",
+ "logentry-thanks-thank": "$1 մասնակիցը {{GENDER:$2|շնորհակալություն է}} հայտնել {{GENDER:$4|$3}} մասնակցին",
+ "log-show-hide-thanks": "$1 շնորհակալությունների գրանցամատյան",
+ "thanks-confirmation-special": "Ուզո՞ւմ եք շնորհակալություն հայտնել այս խմբագրման համար:",
+ "notification-link-text-view-post": "Դիտել մեկնաբանությունը",
+ "flow-thanks-confirmation-special": "Ուզո՞ւմ եք շնորհակալություն հայտնել այս մեկնաբանման համար:",
+ "notification-flow-thanks-post-link": "Ձեր մեկնաբանությունը"
+}
diff --git a/Thanks/i18n/ia.json b/Thanks/i18n/ia.json
new file mode 100644
index 00000000..5732f64a
--- /dev/null
+++ b/Thanks/i18n/ia.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "thanks-desc": "Adde ligamines pro regratiar le autores de modificationes, commentos, etc.",
+ "thanks-thank": "regratiar",
+ "thanks-thanked": "{{GENDER:$1|regratiate}}",
+ "thanks-button-thank": "{{GENDER:$1|Regratiar}}",
+ "thanks-button-thanked": "{{GENDER:$1|Regratiate}}",
+ "thanks-error-undefined": "Le action de regratiamento ha fallite. Per favor reproba.",
+ "thanks-error-invalidrevision": "Le ID de version es invalide.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Tu}} ha excedite tu limite de frequentia. Per favor attende un poco e reproba.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Inviar}} un nota de regratiamento a iste {{GENDER:$2|usator}}",
+ "thanks-thanked-notice": "$1 ha essite notificate que {{GENDER:$2|su}} modification te placeva.",
+ "thanks": "Inviar regratiamento",
+ "thanks-form-revid": "ID de version del modification",
+ "thanks-already-thanked": "{{GENDER:$1|Tu}} ha jam inviate un regratiamento pro iste modification.",
+ "echo-pref-subscription-edit-thank": "Me regratia pro mi modification",
+ "echo-pref-tooltip-edit-thank": "Notificar me quando un persona me regratia pro un modification que io ha facite.",
+ "echo-category-title-edit-thank": "Regratiamentos",
+ "notification-thanks-diff-link": "tu modification",
+ "notification-thanks": "[[User:$1|$1]] te {{GENDER:$1|regratiava}} pro $2 in [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] te {{GENDER:$1|regratiava}} pro tu modification in $2.",
+ "notification-thanks-email-subject": "$1 te {{GENDER:$1|regratiava}} pro tu modification in {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 te {{GENDER:$1|regratiava}} pro tu modification in $2.",
+ "notification-link-text-respond-to-user": "Responder al usator",
+ "log-name-thanks": "Registro de regratiamentos",
+ "log-description-thanks": "Ecce un lista de usatores regratiate per altere usatores.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|regratiava}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 registro de regratiamentos",
+ "thanks-error-no-id-specified": "Tu debe specificar le ID de un version pro inviar un regratiamento.",
+ "thanks-confirmation-special": "Vole tu regratiar le autor de iste modification?",
+ "thanks-error-invalidpostid": "Le ID del message non es valide.",
+ "flow-thanks-confirmation-special": "Vole tu regratiar le autor de iste commento?",
+ "flow-thanks-thanked-notice": "$1 ha essite notificate que {{GENDER:$2|su}} commento te placeva."
+}
diff --git a/Thanks/i18n/id.json b/Thanks/i18n/id.json
new file mode 100644
index 00000000..81d55d66
--- /dev/null
+++ b/Thanks/i18n/id.json
@@ -0,0 +1,55 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iwan Novirion",
+ "William Surya Permana",
+ "Raynasution",
+ "Bennylin"
+ ]
+ },
+ "thanks-desc": "Menambahkan pranala untuk berterima kasih kepada pengguna atas suntingan, komentar, dll.",
+ "thanks-thank": "trims",
+ "thanks-thanked": "{{GENDER:$1|sudah berterima kasih}}",
+ "thanks-button-thank": "{{GENDER:$1|Berterima kasih}}",
+ "thanks-button-thanked": "{{GENDER:$1|Sudah berterima kasih}}",
+ "thanks-error-undefined": "Tindakan berterima kasih gagal. Silakan coba lagi.",
+ "thanks-error-invalidrevision": "ID revisi tidak sah.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Anda}} telah melampaui batas Anda. Silakan tunggu beberapa saat dan coba lagi.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Kirim}} sebuah pemberitahuan terima kasih kepada {{GENDER:$2|pengguna}} ini",
+ "thanks-confirmation2": "{{GENDER:$1|Kirimkan}} ucapan terima kasih atas suntingan ini?",
+ "thanks-thanked-notice": "$1 telah menerima ucapan terima kasih dari Anda atas {{GENDER:$2|suntingannya}}.",
+ "thanks": "Kirim ucapan terima kasih",
+ "thanks-form-revid": "ID revisi suntingan",
+ "thanks-already-thanked": "{{GENDER:$1|Anda}} sudah pernah mengirimkan ucapan terima kasih atas suntingan ini.",
+ "echo-pref-subscription-edit-thank": "Berterima kasih kepada saya atas suntingan saya",
+ "echo-pref-tooltip-edit-thank": "Beritahu saya saat seseorang berterima kasih kepada saya atas suntingan yang saya buat.",
+ "echo-category-title-edit-thank": "Terima kasih",
+ "notification-thanks-diff-link": "suntingan Anda",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|berterima kasih}} kepada Anda atas $2 pada halaman [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|berterima kasih}} kepada Anda atas suntingan Anda pada halaman $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|berterima kasih}} kepada Anda atas suntingan Anda di {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|berterima kasih}} kepada Anda atas suntingan Anda pada halaman $2.",
+ "notification-link-text-respond-to-user": "Tanggapi pengguna",
+ "log-name-thanks": "Log terima kasih",
+ "log-description-thanks": "Di bawah ini adalah daftar pengguna yang menerima terima kasih dari pengguna lain.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|berterima kasih}} kepada {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 log terima kasih",
+ "thanks-error-no-id-specified": "Anda harus menentukan perubahan ID untuk mengirimkan ucapan terima kasih.",
+ "thanks-confirmation-special": "Apakah Anda ingin mengirimkan ucapan terima kasih atas suntingan ini?",
+ "notification-link-text-view-post": "Tampilkan komentar",
+ "thanks-error-invalidpostid": "ID posting tidak sah.",
+ "flow-thanks-confirmation-special": "Apakah Anda ingin mengirimkan ucapan terima kasih atas komentar ini?",
+ "flow-thanks-thanked-notice": "$1 telah menerima ucapan terima kasih dari Anda atas {{GENDER:$2|komentarnya}}.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|berterima kasih}} kepada {{GENDER:$5|Anda}} atas $2 di \"$3\" pada halaman [[:$4]].",
+ "notification-flow-thanks-post-link": "komentar Anda",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|berterima kasih}} kepada {{GENDER:$4|Anda}} atas komentar Anda di \"$2\" pada halaman $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|berterima kasih}} kepada {{GENDER:$2|Anda}} atas komentar Anda di {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|berterima kasih}} kepada {{GENDER:$4|Anda}} atas komentar Anda di \"$2\" pada halaman $3.",
+ "apihelp-flowthank-description": "Kirim pemberitahuan berterima kasih untuk komentar alur utas.",
+ "apihelp-flowthank-param-postid": "UUID dari kiriman yang ingin diberikan ucapan terima kasih.",
+ "apihelp-flowthank-example-1": "Kirim ucapan terima kasih atas komentar dengan UUID xyz789",
+ "apihelp-thank-description": "Kirim pemberitahuan ucapan terima kasih kepada penyunting.",
+ "apihelp-thank-param-rev": "ID Revisi yang ingin diberikan ucapan terima kasih.",
+ "apihelp-thank-param-source": "Sebuah kata singkat yang menjelaskan sumber permintaan, misalnya \"diff\" (beda) arau \"history\" (riwayat).",
+ "apihelp-thank-example-1": "Kirim ucapan terima kasih atas ID revisi 456, dengan sumber sebagai halaman diff (beda)"
+}
diff --git a/Thanks/i18n/ilo.json b/Thanks/i18n/ilo.json
new file mode 100644
index 00000000..0c4dbbc4
--- /dev/null
+++ b/Thanks/i18n/ilo.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lam-ang"
+ ]
+ },
+ "thanks-desc": "Agnayon kadagiti silpo para iti panagyaman kadagiti agar-aramat para kadagiti panag-urnos, komentario, kdpy.",
+ "thanks-thank": "yamanan",
+ "thanks-thanked": "{{GENDER:$1|nayamanan}}",
+ "thanks-button-thank": "{{GENDER:$1|Yamanan}}",
+ "thanks-button-thanked": "{{GENDER:$1|Nayamanan}}",
+ "thanks-error-undefined": "Napaay ti tignay a panagyaman. Pangngaasi a padasen manen.",
+ "thanks-error-invalidrevision": "Saan nga umiso ti ID ti panagbaliw.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Sika}} ket nalabesamon ti patingga ti gatadmo. Pangngaasi nga agurayka bassit ken padasem manen.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Agipatulod}} ti pakaammo a panagyaman iti daytoy nga {{GENDER:$2|agar-aramat}}",
+ "thanks-thanked-notice": "Naipaammo idi kenni $1 a kinayatmo {{GENDER:$2|ti inurnosna|dagiti inurnosda}}.",
+ "thanks": "Agipatulod ti panag-yaman",
+ "thanks-form-revid": "Panagbaliw nga ID para iti panag-urnos",
+ "thanks-already-thanked": "{{GENDER:$1|Nakaipatulodkan}} ti panag-yaman para iti daytoy a panag-urnos.",
+ "echo-pref-subscription-edit-thank": "Pagyamanennak para iti inurnosko",
+ "echo-pref-tooltip-edit-thank": "Pakaammuannak no adda agyaman kaniak para iti maysa nga inaramidko nga inurnos.",
+ "echo-category-title-edit-thank": "Dagiti panagyaman",
+ "notification-thanks-diff-link": "ti inurnosmo",
+ "notification-thanks": "Ni [[User:$1|$1]] ket {{GENDER:$1|nagyaman}} kenka para iti $2 iti [[:$3]].",
+ "notification-thanks-flyout2": "Ni [[User:$1|$1]] ket {{GENDER:$1|nagyaman}} kenka para iti inurnosmo iti $2.",
+ "notification-thanks-email-subject": "Ni $1 ket {{GENDER:$1|nagyaman}} kenka para it inurnosmo idiay {{SITENAME}}",
+ "notification-thanks-email-batch-body": "Ni $1 ket {{GENDER:$1n|agyaman}} kenka para iti inurnosmo iti $2.",
+ "notification-link-text-respond-to-user": "Sumungbat iti agar-aramat",
+ "log-name-thanks": "Listaan kadagiti panagyaman",
+ "log-description-thanks": "Dita baba ket listaan dagiti agar-aramat a nayamanan babaen dagiti dadduma nga agar-aramat.",
+ "logentry-thanks-thank": "Ni $1 ket {{GENDER:$2|nagyaman}} kenni {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 ti listaan dagiti panagyaman",
+ "thanks-error-no-id-specified": "Nasken a mainaganan ti ID ti panagbaliw tapno makaipatulod kadagiti panagyaman.",
+ "thanks-confirmation-special": "Kayatmo kadi ti agipatulod kadagiti panagyaman para iti daytoy a panag-urnos?",
+ "notification-link-text-view-post": "Kitaen ti komentario",
+ "thanks-error-invalidpostid": "Ti ID ti pablaak ket saan nga umiso.",
+ "flow-thanks-confirmation-special": "Kayatmo kadi ti agipatulod kadagiti panagyaman para iti daytoy a komentario?",
+ "flow-thanks-thanked-notice": "Naipaammo idi kenni $1 a kinayatmo ti {{GENDER:$2|komentariona|komentariona|komentarioda}}.",
+ "notification-flow-thanks": "Ni [[User:$1|$1]] ket {{GENDER:$1|nagyaman}} kenka para iti $2 iti \"$3\" iti [[:$4]].",
+ "notification-flow-thanks-post-link": "ti komentariom",
+ "notification-flow-thanks-flyout": "Ni [[User:$1|$1]] ket {{GENDER:$1|nagyaman}} kenka para iti komentariom iti \"$2\" iti $3.",
+ "notification-flow-thanks-email-subject": "Ni $1 ket {{GENDER:$1|agyaman}} kenka para iti komentariom idiay {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "Ni $1 ket {{GENDER:$1|nagyaman}} kenka para iti komentarion iti \"$2\" iti $3."
+}
diff --git a/Thanks/i18n/is.json b/Thanks/i18n/is.json
new file mode 100644
index 00000000..d34aab71
--- /dev/null
+++ b/Thanks/i18n/is.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Maxí"
+ ]
+ },
+ "thanks-thank": "þakka"
+}
diff --git a/Thanks/i18n/it.json b/Thanks/i18n/it.json
new file mode 100644
index 00000000..577ebb06
--- /dev/null
+++ b/Thanks/i18n/it.json
@@ -0,0 +1,48 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Elitre",
+ "FRacco",
+ "Macofe"
+ ]
+ },
+ "thanks-desc": "Aggiunge un collegamento per ringraziare gli utenti per modifiche, commenti, ecc.",
+ "thanks-thank": "ringrazia",
+ "thanks-thanked": "{{GENDER:$1|ringraziato|ringraziata|ringraziato/a}}",
+ "thanks-button-thank": "{{GENDER:$1|Ringrazia}}",
+ "thanks-button-thanked": "{{GENDER:$1|Ringraziato|Ringraziata|Ringraziato/a}}",
+ "thanks-error-undefined": "Errore durante ringraziamento. Riprova ancora.",
+ "thanks-error-invalidrevision": "L'ID versione non è valido.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Hai superato}} il limite massimo di ringraziamenti. Aspetta un po' di tempo e riprova.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Invia}} una notifica di ringraziamento a {{GENDER:$2|questo|questa}} utente",
+ "thanks-confirmation2": "{{GENDER:$1|Inviare}} un ringraziamento pubblico per questa modifica?",
+ "thanks-thanked-notice": "$1 ha ricevuto il tuo ringraziamento per {{GENDER:$2|la sua}} modifica.",
+ "thanks": "Invia ringraziamento",
+ "thanks-form-revid": "ID versione per modifica",
+ "thanks-already-thanked": "{{GENDER:$1|Hai}} già inviato un ringraziamento per questa modifica.",
+ "echo-pref-subscription-edit-thank": "Mi ringrazia per una mia modifica",
+ "echo-pref-tooltip-edit-thank": "Avvisami quando qualcuno mi ringrazia per una modifica che ho fatto.",
+ "echo-category-title-edit-thank": "Ringraziamenti",
+ "notification-thanks-diff-link": "la tua modifica",
+ "notification-thanks": "[[User:$1|$1]] ti {{GENDER:$1|ha ringraziato}} per $2 su [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] ti {{GENDER:$1|ha ringraziato}} per la tua modifica su $2.",
+ "notification-thanks-email-subject": "$1 ti {{GENDER:$1|ha ringraziato}} per la tua modifica su {{SITENAME}}.",
+ "notification-thanks-email-batch-body": "$1 ti {{GENDER:$1|ha ringraziato}} per la tua modifica su $2.",
+ "notification-link-text-respond-to-user": "Rispondi all'utente",
+ "log-name-thanks": "Ringraziamenti",
+ "log-description-thanks": "Di seguito è riportato un elenco di utenti ringraziati da altri utenti.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|ha ringraziato}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 registro dei ringraziamenti",
+ "thanks-error-no-id-specified": "È necessario specificare un ID versione per ringraziare.",
+ "thanks-confirmation-special": "Vuoi ringraziare pubblicamente per questa modifica?",
+ "notification-link-text-view-post": "Vedi commento",
+ "thanks-error-invalidpostid": "ID messaggio non è valido.",
+ "flow-thanks-confirmation-special": "Vuoi ringraziare pubblicamente per questo commento?",
+ "flow-thanks-thanked-notice": "$1 ha ricevuto il tuo ringraziamento per {{GENDER:$2|il suo}} commento.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|ti}} {{GENDER:$1|ha ringraziato}} per $2 in \"$3\" su [[:$4]].",
+ "notification-flow-thanks-post-link": "il tuo commento",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|ti}} {{GENDER:$1|ha ringraziato}} per il tuo commento in \"$2\" su $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|ti}} {{GENDER:$1|ha ringraziato}} per il tuo commento su {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|ti}} {{GENDER:$1|ha ringraziato}} per il tuo commento in \"$2\" su $3."
+}
diff --git a/Thanks/i18n/ja.json b/Thanks/i18n/ja.json
new file mode 100644
index 00000000..36c59d74
--- /dev/null
+++ b/Thanks/i18n/ja.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fryed-peach",
+ "Penn Station",
+ "Shirayuki"
+ ]
+ },
+ "thanks-desc": "利用者の編集やコメントなどに感謝を示すリンクを追加する",
+ "thanks-thank": "感謝",
+ "thanks-thanked": "{{GENDER:$1|感謝を示しました}}",
+ "thanks-button-thank": "{{GENDER:$1|感謝}}",
+ "thanks-button-thanked": "{{GENDER:$1|感謝を示しました}}",
+ "thanks-error-undefined": "感謝の操作に失敗しました。もう一度やり直してください。",
+ "thanks-error-invalidrevision": "版 ID が無効です。",
+ "thanks-error-ratelimited": "{{GENDER:$1|}}速度制限を超えました。しばらくしてからもう一度やり直してください。",
+ "thanks-thank-tooltip": "この{{GENDER:$2|利用者}}に感謝の通知を{{GENDER:$1|送信する}}",
+ "thanks-confirmation2": "この編集に感謝を{{GENDER:$1|示しますか}}?",
+ "thanks-thanked-notice": "あなたが $1 の編集に感謝を示したことを{{GENDER:$2|本人}}に通知しました。",
+ "thanks": "感謝を示す",
+ "thanks-form-revid": "編集の版 ID",
+ "thanks-already-thanked": "{{GENDER:$1|}}この編集には既に感謝を示しました。",
+ "echo-pref-subscription-edit-thank": "自分の編集に誰かが感謝を示したとき",
+ "echo-pref-tooltip-edit-thank": "自分の編集に誰かが感謝を示したときに通知する。",
+ "echo-category-title-edit-thank": "感謝",
+ "notification-thanks-diff-link": "あなたの編集",
+ "notification-thanks": "[[User:$1|$1]] が [[:$3]] での$2に{{GENDER:$1|感謝を示しました}}",
+ "notification-thanks-flyout2": "[[User:$1|$1]] が $2 でのあなたの編集に{{GENDER:$1|感謝を示しました}}。",
+ "notification-thanks-email-subject": "$1 が{{SITENAME}}でのあなたの編集に{{GENDER:$1|感謝を示しました}}",
+ "notification-thanks-email-batch-body": "$1 が $2 でのあなたの編集に{{GENDER:$1|感謝を示しました}}",
+ "notification-link-text-respond-to-user": "利用者に返信",
+ "log-name-thanks": "感謝記録",
+ "log-description-thanks": "以下に、他の利用者から感謝を示された利用者を列挙します。",
+ "logentry-thanks-thank": "$1 が {{GENDER:$4|$3}} に{{GENDER:$2|感謝を示しました}}",
+ "log-show-hide-thanks": "感謝記録を$1",
+ "thanks-error-no-id-specified": "感謝を示す版の ID を指定してください。",
+ "thanks-confirmation-special": "この編集に感謝を示しますか?",
+ "notification-link-text-view-post": "コメントを閲覧",
+ "thanks-error-invalidpostid": "投稿 ID が無効です。",
+ "flow-thanks-confirmation-special": "このコメントに感謝を示しますか?",
+ "flow-thanks-thanked-notice": "あなたが $1 のコメントに感謝を示したことを{{GENDER:$2|本人}}に通知しました。",
+ "notification-flow-thanks": "[[User:$1|$1]] が [[:$4]] の「$3」での{{GENDER:$5|あなた}}の$2に{{GENDER:$1|感謝を示しました}}。",
+ "notification-flow-thanks-post-link": "あなたのコメント",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] が $3 の「$2」での{{GENDER:$4|あなた}}のコメントに{{GENDER:$1|感謝を示しました}}。",
+ "notification-flow-thanks-email-subject": "$1 が{{SITENAME}}での{{GENDER:$2|あなた}}のコメントに{{GENDER:$1|感謝を示しました}}",
+ "notification-flow-thanks-email-batch-body": "$1 が $3 の「$2」での{{GENDER:$4|あなた}}のコメントに{{GENDER:$1|感謝を示しました}}。"
+}
diff --git a/Thanks/i18n/ka.json b/Thanks/i18n/ka.json
new file mode 100644
index 00000000..03ce3302
--- /dev/null
+++ b/Thanks/i18n/ka.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "BRUTE",
+ "David1010",
+ "Tokoko",
+ "Nodar Kherkheulidze",
+ "Otogi"
+ ]
+ },
+ "thanks-thank": "მადლობა",
+ "thanks-thanked": "{{GENDER:$1|მადლობა გადახდილია}}",
+ "thanks-button-thank": "{{GENDER:$1|მადლობა}}",
+ "thanks-button-thanked": "{{GENDER:$1|მადლობა გადახდილია}}",
+ "thanks-error-undefined": "მადლობის გადახდა ვერ მოხერხდა. გთხოვ სცადეთ კიდევ.",
+ "thanks-confirmation2": "გინდათ მადლობის გადახდა ამ რედაქტირებისთვის ?",
+ "thanks-thanked-notice": "მომხმარებელს/მომხმარებლებს $1 გაეგზავნა(თ) შეტყობინება, რომ თქვენ მოიწონეთ {{GENDER:$2|მისი|მისი|მათი}} რედაქტირება.",
+ "thanks": "გადაუხადე მადლობა",
+ "echo-pref-subscription-edit-thank": "მადლობა ჩემი რედაქტირებისათვის",
+ "echo-pref-tooltip-edit-thank": "შემატყობინე, როდესაც ვინმე მადლობას გადამიხდის ჩემი რედაქტირებისათვის",
+ "echo-category-title-edit-thank": "გმადლობ",
+ "notification-thanks-diff-link": "რედაქტირებისათვის",
+ "notification-thanks": "მომხმარებელმა [[User:$1|$1]] {{GENDER:$1|მადლობა გადაგიხადათ}} თქვენი $2 გვერდზე [[:$3]].",
+ "notification-thanks-flyout2": "მომხმარებელმა [[User:$1|$1]] {{GENDER:$1|მადლობა გადაგიხადათ}} თქვენი რედაქტირებისათვის გვერდზე $2.",
+ "notification-thanks-email-subject": "მომხმარებელმა $1 {{GENDER:$1|მადლობა გადაგიხადათ}} თქვენი რედაქტირებისათვის საიტზე {{SITENAME}}",
+ "notification-thanks-email-batch-body": "მომხმარებელმა $1 {{GENDER:$1|მადლობა გადაგიხადათ}} თქვენი რედაქტირებისათვის $2.",
+ "notification-link-text-respond-to-user": "უპასუხე მომხმარებელს",
+ "log-name-thanks": "„მადლობის“ ჟურნალი",
+ "log-description-thanks": "ქვემოთ მოცემულია მომხმარებელთა სია, რომელთაც სხვა მომხმარებლებმა გადაუხადეს მადლობა",
+ "log-show-hide-thanks": "$1 „მადლობის“ ჟურნალი"
+}
diff --git a/Thanks/i18n/kk-cyrl.json b/Thanks/i18n/kk-cyrl.json
new file mode 100644
index 00000000..a2ef4112
--- /dev/null
+++ b/Thanks/i18n/kk-cyrl.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arystanbek"
+ ]
+ },
+ "thanks-desc": "Қатысушылардың өңдемелеріне, пікірлеріне және тағы басқаларға рахмет айту үшін сілтемелерді қосу",
+ "thanks-thank": "рахмет",
+ "thanks-thanked": "{{GENDER:$1|рахмет айттыңыз}}",
+ "thanks-button-thank": "{{GENDER:$1|Рахметіңізді білдіру}}",
+ "thanks-button-thanked": "{{GENDER:$1|Рахмет білдірілді}}",
+ "thanks-error-undefined": "Рахмет білдіру әрекеті орындалмады. Тағы қайталап көріңіз.",
+ "thanks-error-invalidrevision": "Нұсқа ID-і жарамсыз.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Сіз}} шекті жылдамдықтан асырдыңыз. Біраз уақыт күте тұрып қайталап көріңіз.",
+ "thanks-thank-tooltip": "Бұл {{GENDER:$2|қатысушыға}} рахмет айту ескертпесін {{GENDER:$1|жіберу}}",
+ "thanks-confirmation2": "Бұл өңдеме үшін рахмет {{GENDER:$1|айтасыз ба?}}",
+ "thanks-thanked-notice": "$1 есімді қатысушыға {{GENDER:$2|оның|оның}} өңдемесін ұнатқаныңыз білдірілді.",
+ "thanks": "Рахметті жөнелту",
+ "thanks-form-revid": "Өңдеме үшін нұсқа ID-і",
+ "thanks-already-thanked": "{{GENDER:$1|Сіз}} бұл өңдемеге әлдеқашан рахметіңізді білдірдіңіз.",
+ "echo-pref-subscription-edit-thank": "Менің өңдемем үшін маған рахмет айту",
+ "echo-pref-tooltip-edit-thank": "Мен жасаған өңдеме үшін әлдебіреу рахмет айтқанда маған білдір.",
+ "echo-category-title-edit-thank": "Рахмет",
+ "notification-thanks-diff-link": "өңдемеңізге",
+ "notification-thanks": "[[User:$1|$1]] [[:$3]] бетіндегі $2 {{GENDER:$1|рахметін}} білдірді.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] $2 бетіндегі өңдемеңізге {{GENDER:$1|рахметін}} білдірді.",
+ "notification-thanks-email-subject": "$1 {{SITENAME}} сайтындағы өңдемеңіз үшін сізге {{GENDER:$1|рахметін}} білдірді.",
+ "notification-thanks-email-batch-body": "$1 $2 бетіндегі өңдемеңіз үшін сізге {{GENDER:$1|рахметін}} білдірді.",
+ "notification-link-text-respond-to-user": "Қатысушыға жауап қайтару",
+ "log-name-thanks": "Рахмет білдіру журналы",
+ "log-description-thanks": "Төменде басқа қатысушылардан рахмет айтылған қатысушылар тізімі берілген.",
+ "logentry-thanks-thank": "$1 {{GENDER:$4|$3}} есімді қатысушыға {{GENDER:$2|рахметін}} білдірді.",
+ "log-show-hide-thanks": "рахметін білдіру журналын $1",
+ "thanks-error-no-id-specified": "Рахметті жөнелту үшін нұсқа ID-ін көрсетуіңіз керек.",
+ "thanks-confirmation-special": "Бұл өңдемеге рахмет айтқыңыз келе ме?",
+ "notification-link-text-view-post": "Пікірді көру",
+ "thanks-error-invalidpostid": "Жазба ID-і жарамсыз",
+ "flow-thanks-confirmation-special": "Бұл пікірге рахмет айтқыңыз келе ме?",
+ "flow-thanks-thanked-notice": "$1 есімді қатысушыға {{GENDER:$2|оның|оның}} пікірін ұнатқаныңыз білдірілді.",
+ "notification-flow-thanks": "{{GENDER:$5|Сізге}} [[User:$1|$1]] [[:$4]] беті «$3» бөліміндегі $2 {{GENDER:$1|рахметін}} білдірді.",
+ "notification-flow-thanks-post-link": "пікіріңізге",
+ "notification-flow-thanks-flyout": "{{GENDER:$5|Сізге}} [[User:$1|$1]] $3 беті «$2» бөліміндегі пікіріңізге {{GENDER:$1|рахметін}} білдірді.",
+ "notification-flow-thanks-email-subject": "{{GENDER:$2|Сізге}} $1 {{SITENAME}} сайтындағы пікіріңізге {{GENDER:$1|рахметін}} білдірді.",
+ "notification-flow-thanks-email-batch-body": "{{GENDER:$4|you}} $1 $3 беті «$2» бөліміндегі пікіріңізге {{GENDER:$1|рахметін}} білдірді."
+}
diff --git a/Thanks/i18n/kn.json b/Thanks/i18n/kn.json
new file mode 100644
index 00000000..12080e9d
--- /dev/null
+++ b/Thanks/i18n/kn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Pavanaja"
+ ]
+ },
+ "thanks-thank": "ಧನ್ಯವಾದ ಹೇಳಿ",
+ "thanks-error-undefined": "ಧನ್ಯವಾದ ಪ್ರಕ್ರಿಯ ನಡೆಯಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ",
+ "echo-category-title-edit-thank": "ಧನ್ಯವಾದಗಳು",
+ "notification-thanks-diff-link": "ನಿಮ್ಮ ಸಂಪಾದನೆ"
+}
diff --git a/Thanks/i18n/ko.json b/Thanks/i18n/ko.json
new file mode 100644
index 00000000..352b7dd3
--- /dev/null
+++ b/Thanks/i18n/ko.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hym411",
+ "Priviet",
+ "관인생략",
+ "아라",
+ "Miri-Nae",
+ "Bluemersen",
+ "Revi",
+ "IRTC1015"
+ ]
+ },
+ "thanks-desc": "편집, 덧글 등등에 사용자에게 감사 링크를 표시합니다.",
+ "thanks-thank": "감사",
+ "thanks-thanked": "{{GENDER:$1|감사합니다}}",
+ "thanks-button-thank": "{{GENDER:$1|감사}}",
+ "thanks-button-thanked": "{{GENDER:$1|감사를 표합니다}}",
+ "thanks-error-undefined": "감사 표시 작업을 실패했습니다. 다시 시도하세요.",
+ "thanks-error-invalidrevision": "판 ID가 올바르지 않습니다.",
+ "thanks-error-ratelimited": "{{GENDER:$1|당신은}} 속도 제한을 초과했습니다. 잠시 기다리고 나서 다시 시도하세요.",
+ "thanks-thank-tooltip": "이 {{GENDER:$2|사용자}}에게 감사의 알림을 {{GENDER:$1|보냅니다}}",
+ "thanks-confirmation2": "이 편집에 감사를 표현하시겠습니까?",
+ "thanks-thanked-notice": "$1님이 당신이 {{GENDER:$2|그|그녀|그들}}의 편집에 감사했다는 것을 들었습니다.",
+ "thanks": "감사 보내기",
+ "thanks-form-revid": "편집의 판 번호",
+ "thanks-already-thanked": "{{GENDER:$1|당신은}} 이 편집에 대해 이미 감사를 표했습니다.",
+ "echo-pref-subscription-edit-thank": "내 편집에 대해 다른 사용자가 감사를 표했습니다",
+ "echo-pref-tooltip-edit-thank": "내게 내 편집에 대해 누군가가 감사를 표했을 때 알립니다.",
+ "echo-category-title-edit-thank": "감사",
+ "notification-thanks-diff-link": "내 편집",
+ "notification-thanks": "[[User:$1|$1]]님이 [[:$3]]에 대한 $2에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]]님이 $2에 대한 내 편집에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-thanks-email-subject": "$1님이 {{SITENAME}}에 대한 내 편집에 {{GENDER:$1|감사를 표했습니다}}",
+ "notification-thanks-email-batch-body": "$1님이 $2에 대한 내 편집에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-link-text-respond-to-user": "사용자에게 응답",
+ "log-name-thanks": "감사 기록",
+ "log-description-thanks": "아래에는 다른 사용자가 감사를 표한 사용자의 목록입니다.",
+ "logentry-thanks-thank": "$1 사용자가 {{GENDER:$4|$3}} 사용자에게 {{GENDER:$2|감사를 표했습니다}}",
+ "log-show-hide-thanks": "감사 기록을 $1",
+ "thanks-error-no-id-specified": "감사를 표할 판 ID를 지정해야 합니다.",
+ "thanks-confirmation-special": "이 편집에 감사를 표하겠습니까?",
+ "notification-link-text-view-post": "의견 보기",
+ "thanks-error-invalidpostid": "게시물 ID가 올바르지 않습니다.",
+ "flow-thanks-confirmation-special": "이 덧글에 감사를 표하겠습니까?",
+ "flow-thanks-thanked-notice": "$1 사용자가 당신이 {{{{GENDER:$2|그의|그녀의|그의}} 편집에 감사했다는 것을 들었습니다.",
+ "notification-flow-thanks": "[[User:$1|$1]]이 [[:$4]]의 \"$3\"에 대한 $2 에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-flow-thanks-post-link": "당신의 의견",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] 님이 $3의 \"$2\"에 대한 당신의 의견에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-flow-thanks-email-subject": "$1님이 {{SITENAME}}에 대한 당신의 의견에 {{GENDER:$1|감사를 표했습니다}}.",
+ "notification-flow-thanks-email-batch-body": "$1 님이 $3의 \"$2\" 에 대한 당신의 의견에 {{GENDER:$1|감사를 표했습니다}}."
+}
diff --git a/Thanks/i18n/krc.json b/Thanks/i18n/krc.json
new file mode 100644
index 00000000..97e45c2d
--- /dev/null
+++ b/Thanks/i18n/krc.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Iltever"
+ ]
+ },
+ "thanks-thank": "сау бол де",
+ "thanks-thanked": "{{GENDER:$1|сау бол деди}}",
+ "thanks-button-thank": "{{GENDER:$1|Сау бол де}}",
+ "thanks-button-thanked": "{{GENDER:$1|Сау бол айтылды}}",
+ "thanks-error-undefined": "Сау бол айтылалмады. Джангыдан кёрюгюз.",
+ "thanks-error-invalidrevision": "Версияны номери тюз тюлдю.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Сиз}}, терклик чекни оздугъуз. Бираз сакълаб, джангыдан кёрюгюз.",
+ "thanks-thank-tooltip": "Бу {{GENDER:$2|къошулуучугъа}} {{GENDER:$1|ыспас билдириу джибер}}",
+ "thanks-thanked-notice": "$1 къошулуучугъа {{GENDER:$2|аны|аны|аланы}} тюрлендириуюн джаратханыгъыз билдирилди.",
+ "echo-pref-subscription-edit-thank": "Тюрлендириуюм ючюн меннге ыспас",
+ "echo-pref-tooltip-edit-thank": "Ким болса да, этген тюрлендириуюм ючюн сау бол десе, меннге билдир.",
+ "echo-category-title-edit-thank": "Сау бол",
+ "notification-thanks-diff-link": "тюрлендириуюгюз",
+ "notification-thanks": "[[User:$1|$1]], «[[:$3]]» бетдеги $2 тюрлендириуюгюз ючюн сизге сау бол {{GENDER:$1|айтды}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]], «$2» бетдеги тюрлендириуюгюз ючюн сизге {{GENDER:$1|поблагодарил|сай бол айтды}}.",
+ "notification-thanks-email-subject": "$1, «{{SITENAME}}» сайтдагъы тюрлендириуюгюз ючюн {{GENDER:$1|сау бол айтды}}.",
+ "notification-thanks-email-batch-body": "$1, «$2» бетдеги тюрлендириуюгюз ючюн {{GENDER:$1|сау бол айтды}}.",
+ "notification-link-text-respond-to-user": "Къошулуучугъа джууаб бер",
+ "log-name-thanks": "Сау бол айтыу журнал",
+ "log-description-thanks": "Тюбюрекде, башха къошулуучуладан ыспас алгъан къошулуучуланы тизмесиди.",
+ "logentry-thanks-thank": "$1, $3 {{GENDER:$4|къошулуучугъа}} {{GENDER:$2|сау бол айтды}}",
+ "log-show-hide-thanks": "$1 сай бол айтыу журнал"
+}
diff --git a/Thanks/i18n/ksh.json b/Thanks/i18n/ksh.json
new file mode 100644
index 00000000..3e408e19
--- /dev/null
+++ b/Thanks/i18n/ksh.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "thanks-desc": "Määd lengks en et Wikki för sesch bei Metmaacher för jät ze bedangke.",
+ "thanks-thank": "Dank",
+ "thanks-thanked": "{{GENDER:$1|bedank}}",
+ "thanks-button-thank": "Bedangke{{GENDER:$1|}}",
+ "thanks-button-thanked": "Bedangk.{{GENDER:$1|}}",
+ "thanks-error-undefined": "Et Bedangke hät nit jeflupp. Versöhg_et norr_ens.",
+ "thanks-error-invalidrevision": "Di Kännong för di Väsjohn es nit jöltesch.",
+ "thanks-thank-tooltip": "Scheck {{GENDER:$2|däm|däm|däm Metmaacher|dä|däm}} $2 Dinge Dank.{{GENDER:$1}}",
+ "thanks-thank-tooltip-no": "Donn keine Meddeilong zom Bedanke verschecke.{{GENDER:$1|}}",
+ "thanks-thank-tooltip-yes": "Donn de Meddeilong zom Bedanke verschecke.{{GENDER:$1|}}",
+ "thanks-confirmation2": "Wells De Desch öffentlesch för heh di Änderoong bedanke?{{GENDER:$1|}}",
+ "thanks": "Bedanke",
+ "thanks-form-revid": "De Kännong fun dä Väsjohn met dä Änderong",
+ "echo-pref-subscription-edit-thank": "Dank mer för ming Änderong",
+ "echo-category-title-edit-thank": "Dank",
+ "notification-thanks-diff-link": "Ding Änderong",
+ "notification-thanks": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} [[User:$1|$1]] bedangk sesch bei Der för $2 op dä Sigg „[[:$3]]“",
+ "notification-thanks-flyout2": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} [[User:$1|$1]] bedangk sesch bei Der för Ding Änderong op dä Sigg „$2“",
+ "notification-thanks-email-subject": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} $1 bedangk sesch för Ding Änderong {{ucfirst:{{GRAMMAR:em|{{ucfirst:{{SITENAME}}}}}}}}",
+ "notification-thanks-email-batch-body": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} $1 bedangk sesch för Ding Änderong op $2",
+ "notification-link-text-respond-to-user": "Donn dämm Metmaacher antwoote",
+ "log-name-thanks": "Et Logbohch vum Bedangke",
+ "log-description-thanks": "Heh küdd en Leß met de Metmaacher, di Dangk vun andere krääje han.",
+ "log-show-hide-thanks": "Et Logbohch vum Bedangke {{lcfirst:$1}}",
+ "thanks-confirmation-special": "Wells De Desch öffentlesch för heh di Änderoong bedanke?",
+ "flow-thanks-confirmation-special": "Wells De Desch öffentlesch för heh dä Kommäntaa bedanke?",
+ "flow-thanks-thanked-notice": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät Dinge Dangk krähje för wat {{GENDER:$2|hä|et|hä|sei|et}} jeschrevve hät.",
+ "notification-flow-thanks": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} \n[[User:$1|$1]] hät sesch bei Der bedangk för $2 dä Övverschreff „$3“ op dä Sigg „[[:$4]]“.{{GENDER:$5|}}",
+ "notification-flow-thanks-post-link": "wat de jeschrevve häs",
+ "notification-flow-thanks-flyout": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} \n[[User:$1|$1]] hät sesch bei Der bedangk för wat de em Affschnedd „$2“ op di Sigg „$3“ jeschrevve häs.{{GENDER:$4|}}",
+ "notification-flow-thanks-email-subject": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät sesch bei Der bedangk för wat de {{GRAMMAR:em|{{ucfirst:{{SITENAME}}}}}} jeschrevve häs.{{GENDER:$2|}}",
+ "notification-flow-thanks-email-batch-body": "{{GENDER:$1|Dä|Dat|Dä Metmaacher|De|Dat}} \n$1 hät sesch bei Der bedangk för wat de em Affschnedd „$2“ op di Sigg „$3“ jeschrevve häs.{{GENDER:$4|}}",
+ "apihelp-flowthank-description": "Schegg en öffentlesche Nohreesch zom Bedanke för ene Flow Kommäntaa.",
+ "apihelp-thank-description": "Schegg ene Dangk aan ene Schrihver.",
+ "apihelp-thank-param-rev": "De Kännong vun ene Väsjohn för sesch bei einem för ze bedangke.",
+ "apihelp-thank-param-source": "Ene koote Täx öm ze sahre, woh di Frohch hehr küdd, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">diff</code>“ uddder „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">history</code>“ för e Beijschpell.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-thank-param-source/en\n-->",
+ "apihelp-thank-example-1": "Scheck ene Dangk för de Väsjohn met dä Kännong 456, woh de Quäll en Sigg met Ongerscheide es."
+}
diff --git a/Thanks/i18n/ky.json b/Thanks/i18n/ky.json
new file mode 100644
index 00000000..9c83c42e
--- /dev/null
+++ b/Thanks/i18n/ky.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Викиней"
+ ]
+ },
+ "notification-thanks-diff-link": "сиздин оңдооңуз"
+}
diff --git a/Thanks/i18n/la.json b/Thanks/i18n/la.json
new file mode 100644
index 00000000..a2cb8ce9
--- /dev/null
+++ b/Thanks/i18n/la.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Autokrator",
+ "UV"
+ ]
+ },
+ "thanks-thank": "gratias agere",
+ "thanks-thanked": "{{GENDER:$1|gratiae actae sunt}}",
+ "thanks-button-thank": "{{GENDER:$1|Gratias agere}}",
+ "thanks-button-thanked": "{{GENDER:$1|Gratiae actae sunt}}",
+ "thanks-error-undefined": "Gratias agere non contigit.",
+ "thanks-error-invalidrevision": "ID emendationis falsa est.",
+ "thanks-error-ratelimited": "Excessisti concessum numerum aestimationum.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Mitte}} nuntium gratiarum habendarum ad istum {{GENDER:$2|usorem}}",
+ "thanks-thanked-notice": "$1 nuntiatum est recensionem {{GENDER:$2|eius}} tibi placuisse.",
+ "echo-pref-subscription-edit-thank": "Gratias egit recensionis meae causa",
+ "echo-pref-tooltip-edit-thank": "Me certiorem facere si quis mihi gratias egerit",
+ "echo-category-title-edit-thank": "Gratias agere",
+ "notification-thanks-diff-link": "recensione tua",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|gratias egit}} tibi pro $2 in pagina [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|gratias egit}} tibi recensionis in pagina $2 factae causa.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|gratias egit}} recensionis apud {{grammar:accusative|{{SITENAME}}}} factae causa",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|gratias egit}} recensionis tuae in $2 factae causa.",
+ "notification-link-text-respond-to-user": "Usori respondere",
+ "log-name-thanks": "Index gratiarum",
+ "log-description-thanks": "Infra est index usorum quibus gratiae ab aliis usoribus actae sunt.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|gratias egit}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 indicem gratiarum"
+}
diff --git a/Thanks/i18n/lb.json b/Thanks/i18n/lb.json
new file mode 100644
index 00000000..b2c6e244
--- /dev/null
+++ b/Thanks/i18n/lb.json
@@ -0,0 +1,37 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby",
+ "Soued031"
+ ]
+ },
+ "thanks-desc": "Setzt Linken derbäi fir Benotzer fir Ännerungen, Bemierkungen, asw. 'Merci' ze soen",
+ "thanks-thank": "merci",
+ "thanks-thanked": "{{GENDER:$1|Merci gesot}}",
+ "thanks-button-thank": "{{GENDER:$1|Merci soen}}",
+ "thanks-error-undefined": "'Merci soen' huet net funktionéiert. Probéiert w.e.g. nach eng Kéier.",
+ "thanks-error-invalidrevision": "Versiounsnummer (ID) ass net valabel.",
+ "thanks-thank-tooltip": "{{GENDER:$2|Dësem Benotzer|Dëser Benotzerin}} ee \"Merci\" {{GENDER:$1|schécken}}",
+ "thanks-confirmation2": "Merci fir dës Ännerung ëffentlech {{GENDER:$1|schécken}}?",
+ "thanks": "Merci soen",
+ "thanks-already-thanked": "{{GENDER:$1|Dir}} hutt scho fir dës Ännerung Merci gesot.",
+ "echo-pref-subscription-edit-thank": "'Mercie' fir meng Ännerung",
+ "echo-pref-tooltip-edit-thank": "Mech Informéieren wann ee mir fir eng Ännerung déi ech gemaach hu Merci seet.",
+ "echo-category-title-edit-thank": "Merci",
+ "notification-thanks-diff-link": "Är Ännerung",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|huet}} Iech Merci gesot fir $2 op [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|huet}} Iech Merci gesot fir Är Ännerung op $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|seet}} Iech merci fir Är Ännerung op {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|seet}} Iech merci fir Är Ännerung op $2.",
+ "notification-link-text-respond-to-user": "Dem Benotzer äntwerten",
+ "log-name-thanks": "Logbuch vum Merci-soen",
+ "log-description-thanks": "Hei drënner ass eng Lëscht vu Benotzer déi anere Benotzer 'Merci' gesot hunn.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|huet dem}} {{GENDER:$4|$3}} Merci gesot",
+ "log-show-hide-thanks": "Logbuch vum 'Merci' $1",
+ "thanks-confirmation-special": "Wëllt Dir ëffentlech fir dës Ännerung e 'Merci' schécken?",
+ "notification-link-text-view-post": "Bemierkung weisen",
+ "flow-thanks-confirmation-special": "Wëllt Dir ëffentlech fir dës Bemierkung e 'Merci' schécken?",
+ "notification-flow-thanks-post-link": "Är Bemierkung",
+ "notification-flow-thanks-email-subject": "{{GENDER:$1|D'|De(n)}} $1 seet {{GENDER:$2|Iech}} Merci fir Är Bemierkung op {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "{{GENDER:$1|D'|De(n)}} $1 seet {{GENDER:$4|Iech}} Merci fir Är Bemierkung iwwer \"$2\" betreffend $3."
+}
diff --git a/Thanks/i18n/lrc.json b/Thanks/i18n/lrc.json
new file mode 100644
index 00000000..3966f9de
--- /dev/null
+++ b/Thanks/i18n/lrc.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bonevarluri",
+ "Mogoeilor"
+ ]
+ },
+ "thanks-thank": "منمون",
+ "thanks-thanked": "{{GENDER:$1|منموندار بیه}}",
+ "thanks-button-thank": "{{GENDER:$1|منمون}}",
+ "thanks-button-thanked": "{{GENDER:$1|منموندار بیه}}",
+ "thanks-thank-tooltip": "{{جنس:$1|کل کرد}} یه گل منمونداری وارسیارکن سی ای {{جنس:$2|کارور}}",
+ "thanks": "فرسنئن منمونداری",
+ "thanks-form-revid": "وانئری نوم دیارکن سی یه که ویرایشت با",
+ "echo-pref-subscription-edit-thank": "منموندار مه سی ویرایشتم",
+ "echo-category-title-edit-thank": "منمون",
+ "notification-thanks-diff-link": "ویرایشت شما",
+ "notification-thanks-email-subject": "$1 {{جنس:$1|تشکر کرده}} د شما سی ویرایشتتو د {{نوم سیلجا}}",
+ "notification-link-text-respond-to-user": "جواو دئن د کاریار",
+ "log-name-thanks": "پهرستنومه منمون بیئنی یا",
+ "log-description-thanks": "د هار یه گل نوم که کاروریایی هئ که کاروریا هنی دشو تشکر کردنه",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|منموندار بیه}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "پهرستنومه منمون بیئنی یا$1",
+ "thanks-confirmation-special": "آیا میهایت سی ای ویرایشت یه گل تشکر کل بکیت؟",
+ "notification-link-text-view-post": "دیئن ویر و باور",
+ "flow-thanks-confirmation-special": "آیا میهایت سی ای ویر و باور یه گل تشکر کل بکیت؟",
+ "notification-flow-thanks-post-link": "ویر و باور شما",
+ "apihelp-flowthank-example-1": "سی ای ویر و باور واUUID xyz789 یه گل منمونداری کل بکیت"
+}
diff --git a/Thanks/i18n/lt.json b/Thanks/i18n/lt.json
new file mode 100644
index 00000000..7138e828
--- /dev/null
+++ b/Thanks/i18n/lt.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Garas",
+ "Hugo.arg",
+ "Pofka"
+ ]
+ },
+ "thanks-thank": "padėkoti",
+ "thanks-thanked": "{{GENDER:$1|padėkota}}",
+ "thanks-button-thank": "{{GENDER:$1|Padėkoti}}",
+ "thanks-thank-tooltip": "{{GENDER:$1|Nusiųskite}} padėkos žinutę šiam {{GENDER:$2|naudotojui}}",
+ "echo-pref-tooltip-edit-thank": "Tebūnie pranešta, kai kas nors padėkoja už mano atliktą keitimą.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] padėkojo jums už jūsų keitimą puslapyje $2.",
+ "thanks-confirmation-special": "Ar norite viešai išsiųsti padėką už šį pakeitimą?",
+ "notification-link-text-view-post": "Rodyti komentarą",
+ "flow-thanks-confirmation-special": "Ar norite viešai išsiųsti padėką už šį komentarą?",
+ "notification-flow-thanks-post-link": "jūsų komentaras"
+}
diff --git a/Thanks/i18n/lv.json b/Thanks/i18n/lv.json
new file mode 100644
index 00000000..2a9f7fc4
--- /dev/null
+++ b/Thanks/i18n/lv.json
@@ -0,0 +1,28 @@
+{
+ "@metadata": {
+ "authors": [
+ "Edgars2007",
+ "Papuass"
+ ]
+ },
+ "thanks-desc": "Pievieno pateicības saiti vēstures un atšķirību skatiem",
+ "thanks-thank": "pateikties",
+ "thanks-thanked": "{{GENDER:$1|pateicās}}",
+ "thanks-error-undefined": "Pateicības darbība neizdevās. Lūdzu, mēģiniet vēlreiz.",
+ "thanks-error-invalidrevision": "Versijas ID ir nederīgs.",
+ "thanks-error-ratelimited": "Jūsu ierobežojums ir pārsniegts. Lūdzu, uzgaidiet un mēģiniet vēlreiz.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Nosūtīt}} pateicības ziņojumu {{GENDER:$2|šim lietotājam|šai lietotājai}}",
+ "echo-pref-subscription-edit-thank": "Pateicība par manu labojumu",
+ "echo-pref-tooltip-edit-thank": "Paziņot man, kad kāds man izsaka pateicību par labojumu.",
+ "echo-category-title-edit-thank": "Paldies",
+ "notification-thanks-diff-link": "tavu labojumu",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|pateicās}} tev par $2 [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|pateicās}} jums par jūsu labojumu $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|pateicās}} jums par jūsu labojumu {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|pateicās}} jums par jūsu labojumu $2.",
+ "notification-link-text-respond-to-user": "Atbildēt lietotājam",
+ "log-name-thanks": "Pateicību žurnāls",
+ "log-description-thanks": "Zemāk ir saraksts ar lietotājiem, kuriem citi lietotāji ir pateikušies.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|pateicās}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 pateicību žurnāls"
+}
diff --git a/Thanks/i18n/mai.json b/Thanks/i18n/mai.json
new file mode 100644
index 00000000..ca543af1
--- /dev/null
+++ b/Thanks/i18n/mai.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tulsi Bhagat",
+ "बिप्लब आनन्द"
+ ]
+ },
+ "thanks-thank": "धन्यवाद देल जाए"
+}
diff --git a/Thanks/i18n/mg.json b/Thanks/i18n/mg.json
new file mode 100644
index 00000000..49804801
--- /dev/null
+++ b/Thanks/i18n/mg.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jagwar"
+ ]
+ },
+ "log-name-thanks": "Laogim-pisaorana"
+}
diff --git a/Thanks/i18n/mk.json b/Thanks/i18n/mk.json
new file mode 100644
index 00000000..8f2c33dc
--- /dev/null
+++ b/Thanks/i18n/mk.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "thanks-desc": "Додава врски за заблагодарувања кон корисници за уредувања, коментари и тн.",
+ "thanks-thank": "заблагодари се",
+ "thanks-thanked": "{{GENDER:$1|заблагодарено}}",
+ "thanks-button-thank": "{{GENDER:$1|Заблагодари се}}",
+ "thanks-button-thanked": "{{GENDER:$1|Заблагодарено}}",
+ "thanks-error-undefined": "Заблагодарувањето не успеа. Обидете се повторно.",
+ "thanks-error-invalidrevision": "Преработката има неважечка назнака.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Ја надминавте}} границата на заблагодарувања. Почекајте некое време, па обидете се подоцна",
+ "thanks-thank-tooltip": "{{GENDER:$1|Испратете}} му благодарност (во порака) на {{GENDER:$2|корисников}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Откажи}} го известувањето за благодарница",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Испрати}} известување за благодарница",
+ "thanks-confirmation2": "{{GENDER:$1|Да испратам}} јавна благодарница за уредувањево?",
+ "thanks-thanked-notice": "$1 ја прими вашата благорадница за {{GENDER:$2|неговото уредување|нејзиното уредување|направеното уредување}}.",
+ "thanks": "Заблагодари се",
+ "thanks-form-revid": "Назнака на преработката на уредувањето",
+ "thanks-already-thanked": "{{GENDER:$1|Веќе}} се заблагодаривте за ова уредување.",
+ "echo-pref-subscription-edit-thank": "Ќе ми се заблагодари за мое уредување",
+ "echo-pref-tooltip-edit-thank": "Извести ме кога некој ќе ми заблагодари за напарвено уредување.",
+ "echo-category-title-edit-thank": "Благодарност",
+ "notification-thanks-diff-link": "вашето уредување",
+ "notification-thanks": "[[User:$1|$1]] ви {{GENDER:$1|благодари}} за $2 на [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|Ви заблагодари}} за вашето уредување на $2.",
+ "notification-thanks-email-subject": "$1 ви {{GENDER:$1|благодари}} за вашето уредување на {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|Ви заблагодари}} за вашето уредување на $2.",
+ "notification-link-text-respond-to-user": "Одговори му на корисникот",
+ "log-name-thanks": "Дневник на благодарности",
+ "log-description-thanks": "Следи список на корисници на кои други им искажале благодарност.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|му се заблагодари на|ѝ се заблагодари на|се заблагодари на}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 го дневникот на благодарења",
+ "thanks-error-no-id-specified": "Мора да укажете назнака на преработката за да испратите благодарница.",
+ "thanks-confirmation-special": "Дали би сакале јавно да испратите благодарница за уредувањево?",
+ "notification-link-text-view-post": "Погл. коментар",
+ "thanks-error-invalidpostid": "Назнаката на објавата е неважечка.",
+ "flow-thanks-confirmation-special": "Дали би сакале да испратите јавна благодарница за коментаров?",
+ "flow-thanks-thanked-notice": "$1 ја прими вашата благорадница за {{GENDER:$2|неговиот коментар|нејзиниот коментар|дадениот коментар}}.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|ви}} {{GENDER:$1|благодари}} за $2 на „$3“ во [[:$4]].",
+ "notification-flow-thanks-post-link": "вашиот коментар",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|ви}} {{GENDER:$1|благодари}} за вашиот коментар на „$2“ во $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|ви}} {{GENDER:$1|благодари}} за вашиот коментар на {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|ви}} {{GENDER:$1|благодари}} за вашиот коментар на „$2“ во $3.",
+ "apihelp-flowthank-description": "Испратете јавна благодарница за коментар во Тек.",
+ "apihelp-flowthank-param-postid": "UUID на објавата за која се заблагодарувате.",
+ "apihelp-flowthank-example-1": "Испрати благодарница за коментарот со UUID xyz789",
+ "apihelp-thank-description": "Испрати благодарница на уредник.",
+ "apihelp-thank-param-rev": "Назнака на преработката за која се заблагодарувате.",
+ "apihelp-thank-param-source": "Кратка низа во која го опишувате изворот на барањето. На пр. „разл.“ или „историја“.",
+ "apihelp-thank-example-1": "Испрати благодарница за праработката со назнака 456, при што изворот е страница со разлика"
+}
diff --git a/Thanks/i18n/ml.json b/Thanks/i18n/ml.json
new file mode 100644
index 00000000..3fa56783
--- /dev/null
+++ b/Thanks/i18n/ml.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Praveenp"
+ ]
+ },
+ "thanks-desc": "തിരുത്തുകൾ, കുറിപ്പുകൾ തുടങ്ങിയവയ്ക്ക് നന്ദി രേഖപ്പെടുത്തുവാനുള്ള കണ്ണികൾ ചേർക്കുന്നു.",
+ "thanks-thank": "നന്ദി രേഖപ്പെടുത്തുക",
+ "thanks-thanked": "{{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "thanks-button-thank": "{{GENDER:$1|നന്ദി രേഖപ്പെടുത്തുക}}",
+ "thanks-button-thanked": "{{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "thanks-error-undefined": "നന്ദി രേഖപ്പെടുത്തൽ പരാജയപ്പെട്ടു. ദയവായി വീണ്ടും ശ്രമിക്കുക.",
+ "thanks-error-invalidrevision": "നാൾപ്പതിപ്പിന്റെ ഐ.ഡി. അസാധുവാണ്.",
+ "thanks-error-ratelimited": "{{GENDER:$1|താങ്കളുടെ}} പരിധി അധികരിച്ചിരിക്കുന്നു. ദയവായി അല്പസമയം കാത്തിരുന്ന ശേഷം വീണ്ടും ശ്രമിക്കുക.",
+ "thanks-thank-tooltip": "ഈ {{GENDER:$2|ഉപയോക്താവിന്}} താങ്കളുടെ കൃതജ്ഞത {{GENDER:$1|അയയ്ക്കുക}}",
+ "thanks-confirmation2": "ഈ തിരുത്തിന് നന്ദി {{GENDER:$1|അയയ്ക്കുക}}?",
+ "thanks-thanked-notice": "$1 എന്ന ഉപയോക്താവിന്, താങ്കൾ {{GENDER:$2|അദ്ദേഹത്തിന്റെ|അവരുടെ|അവരുടെ}} തിരുത്തിനു രേഖപ്പെടുത്തിയ നന്ദി ലഭിച്ചു.",
+ "thanks": "കൃതജ്ഞത അറിയിക്കുക",
+ "thanks-form-revid": "തിരുത്തിന്റെ നാൾപ്പതിപ്പിന്റെ ഐ.ഡി.",
+ "thanks-already-thanked": "ഈ തിരുത്തിന് {{GENDER:$1|താങ്കൾ}} നന്ദി അറിയിച്ചിട്ടുണ്ട്.",
+ "echo-pref-subscription-edit-thank": "എന്റെ തിരുത്തിന് എനിക്ക് കൃതജ്ഞത രേഖപ്പെടുത്തുക",
+ "echo-pref-tooltip-edit-thank": "ഞാൻ ചെയ്ത തിരുത്തിന് ആരെങ്കിലും നന്ദി രേഖപ്പെടുത്തിയാൽ എന്നെ അറിയിക്കുക.",
+ "echo-category-title-edit-thank": "നന്ദി",
+ "notification-thanks-diff-link": "താങ്കൾ ചെയ്ത തിരുത്തിന്",
+ "notification-thanks": "[[:$3]] എന്ന താളിൽ $2, [[User:$1|$1]] {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}.",
+ "notification-thanks-flyout2": "$2 എന്ന താളിൽ താങ്കൾ ചെയ്ത തിരുത്തിന് [[User:$1|$1]] {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "notification-thanks-email-subject": "{{SITENAME}} സംരംഭത്തിൽ താങ്കൾ ചെയ്ത തിരുത്തിന് $1 {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "notification-thanks-email-batch-body": "$2 എന്ന താളിൽ താങ്കൾ ചെയ്ത തിരുത്തിന് $1 {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "notification-link-text-respond-to-user": "ഉപയോക്താവിനെ ബന്ധപ്പെടുക",
+ "log-name-thanks": "കൃതജ്ഞതാരേഖ",
+ "log-description-thanks": "മറ്റ് ഉപയോക്താക്കളുടെ കൃതജ്ഞത ലഭിച്ച ഉപയോക്താക്കളുടെ പട്ടിക താഴെ കാണാം.",
+ "logentry-thanks-thank": "{{GENDER:$4|$3}} എന്ന ഉപയോക്താവിന് $1 {{GENDER:$2|നന്ദി രേഖപ്പെടുത്തി}}",
+ "log-show-hide-thanks": "കൃതജ്ഞതാരേഖ $1",
+ "thanks-error-no-id-specified": "നന്ദി രേഖപ്പെടുത്താൻ താങ്കൾ റിവിഷൻ ഐ.ഡി. വ്യക്തമാക്കിയിരിക്കണം.",
+ "thanks-confirmation-special": "ഈ തിരുത്തിനു താങ്കൾക്ക് നന്ദി രേഖപ്പെടുത്തണോ?",
+ "notification-link-text-view-post": "അഭിപ്രായം കാണുക",
+ "thanks-error-invalidpostid": "കുറിപ്പിന്റെ ഐ.ഡി. സാധുവല്ല.",
+ "flow-thanks-confirmation-special": "ഈ കുറിപ്പിന് താങ്കളുടെ നന്ദി അറിയിക്കുക?",
+ "flow-thanks-thanked-notice": "താങ്കൾ {{GENDER:$2|അദ്ദേഹത്തിന്റെ}} അഭിപ്രായത്തിന് നൽകിയ നന്ദി $1 എന്ന ഉപയോക്താവിനെ അറിയിച്ചു.",
+ "notification-flow-thanks": "[[:$4]] എന്ന താളിലെ \"$3\" എന്നതിലെ $2-ന്, [[User:$1|$1]] {{GENDER:$5|താങ്കൾക്ക്}} {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}.",
+ "notification-flow-thanks-post-link": "താങ്കളുടെ അഭിപ്രായം",
+ "notification-flow-thanks-flyout": "$3 എന്ന താളിലെ \"$2\" എന്ന ഭാഗത്ത് താങ്കൾ ഇട്ട കുറിപ്പിന് [[User:$1|$1]] {{GENDER:$4|താങ്കൾക്ക്}} {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "notification-flow-thanks-email-subject": "{{SITENAME}} സംരംഭത്തിൽ താങ്കൾ ഇട്ട കുറിപ്പിന് $1 {{GENDER:$2|താങ്കൾക്ക്}} {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}",
+ "notification-flow-thanks-email-batch-body": "$3 എന്ന താളിലെ \"$2\" എന്ന ഭാഗത്ത് താങ്കൾ ഇട്ട കുറിപ്പിന് $1 {{GENDER:$4|താങ്കൾക്ക്}} {{GENDER:$1|നന്ദി രേഖപ്പെടുത്തി}}"
+}
diff --git a/Thanks/i18n/mni.json b/Thanks/i18n/mni.json
new file mode 100644
index 00000000..c55c7bd8
--- /dev/null
+++ b/Thanks/i18n/mni.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Laishram Lokendro"
+ ]
+ },
+ "thanks-confirmation2": "{{GENDER:$1|Send}} public thanks for this edit?",
+ "thanks-confirmation-special": "nahak semdok-semjinsigidamak mayamda thagat-waheising piningbra?",
+ "flow-thanks-confirmation-special": "nahak waphamsigidamak mayamda thagat-waheising piningbra?",
+ "apihelp-flowthank-description": "Flow comment-gidamak mayamda thagat-wahei khanghanwa thao"
+}
diff --git a/Thanks/i18n/mr.json b/Thanks/i18n/mr.json
new file mode 100644
index 00000000..2dd1af9d
--- /dev/null
+++ b/Thanks/i18n/mr.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "V.narsikar"
+ ]
+ },
+ "thanks-desc": "एखाद्या सदस्यास,त्याच्या संपादनासाठी किंवा शेऱ्यासाठी धन्यवाद देण्यास दुवा जोडते",
+ "thanks-thank": "धन्यवाद",
+ "thanks-thanked": "{{GENDER:$1|नी धन्यवाद दिले}}",
+ "thanks-button-thank": "{{GENDER:$1|चे धन्यवाद}}",
+ "thanks-button-thanked": "{{GENDER:$1|नी धन्यवाद दिलेत}}",
+ "thanks-error-undefined": "धन्यवाद देण्याची क्रिया अयशस्वी झाली.कृपया पुन्हा प्रयत्न करा.",
+ "thanks-error-invalidrevision": "आवृत्तीचा आयडी वैध नाही.",
+ "thanks-error-ratelimited": "{{GENDER:$1|आपण}} दर मर्यादा पार केली आहे.कृपया थोडा वेळ थांबून पुन्हा प्रयत्न करा.",
+ "thanks-thank-tooltip": "{{GENDER:$2|या सदस्याला}} एक धन्यवादाची अधिसूचना {{GENDER:$1|पाठवा}}",
+ "thanks-thanked-notice": "$1 ने नोंदविले आहे कि आपणास {{GENDER:$2|त्याचे|तिचे|त्यांचे}} संपादन आवडले आहे.",
+ "echo-pref-subscription-edit-thank": "माझ्या संपादनाबद्दल मलाच धन्यवाद द्या",
+ "echo-pref-tooltip-edit-thank": "मी केलेल्या संपादनाबद्दल जर कोणी मला धन्यवाद देत असेल तर मला सूचना द्या.",
+ "echo-category-title-edit-thank": "धन्यवाद",
+ "notification-thanks-diff-link": "आपले संपादन",
+ "notification-thanks": "[[User:$1|$1]] ने $2 करीता [[:$3]]वर {{GENDER:$1|धन्यवाद दिलेत.}}",
+ "notification-thanks-flyout2": "[[User:$1|$1]] ने आपणास {{GENDER:$1|धन्यवाद दिलेत}}$2 वर केलेल्या संपादनाबद्दल.",
+ "notification-thanks-email-subject": "$1 ने {{SITENAME}}वर {{GENDER:$1|धन्यवाद दिलेत}}आपण केलेल्या संपादनाबाबत",
+ "notification-thanks-email-batch-body": "$1 ने आपण $2वर केलेल्या संपादनाबाबत आपणास {{GENDER:$1|धन्यवाद दिलेत.}}",
+ "notification-link-text-respond-to-user": "सदस्यास उत्तर द्या",
+ "log-name-thanks": "धन्यवादाच्या नोंदी",
+ "log-description-thanks": "खाली त्या सदस्यांची यादी आहे ज्यांना इतर सदस्यांनी धन्यवाद दिलेत.",
+ "logentry-thanks-thank": "$1 ने {{GENDER:$4|$3}} ला {{GENDER:$2|धन्यवाद दिलेत}}",
+ "log-show-hide-thanks": "$1 धन्यवादाच्या नोंदी",
+ "thanks-confirmation-special": "या संपादनासाठी आपणास धन्यवाद द्यायचे आहेत काय?",
+ "flow-thanks-confirmation-special": "या शेऱ्यास आपणास धन्यवाद द्यायचे आहेत काय?"
+}
diff --git a/Thanks/i18n/ms.json b/Thanks/i18n/ms.json
new file mode 100644
index 00000000..6e63a07e
--- /dev/null
+++ b/Thanks/i18n/ms.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Aurora",
+ "Aviator"
+ ]
+ },
+ "thanks-desc": "Menambah pautan yang membolehkan pengguna mengirim ucapan terima kasih atas suntingan, ulasan, dan sebagainya.",
+ "thanks-thank": "terima kasih",
+ "thanks-thanked": "{{GENDER:$1|telah berterima kasih}}",
+ "thanks-button-thank": "Terima kasih",
+ "thanks-button-thanked": "Kasih diterima",
+ "thanks-error-undefined": "Tindakan terima kasih gagal. Sila cuba lagi.",
+ "thanks-error-invalidrevision": "ID semakan tidak sah.",
+ "thanks-error-ratelimited": "Anda telah melampaui had kadar anda. Sila tunggu seketika, kemudian cuba lagi.",
+ "thanks-thank-tooltip": "Hantar ucapan terima kasih kepada pengguna ini",
+ "thanks-thanked-notice": "$1 telah diberitahu bahawa anda menyukai suntingan beliau.",
+ "thanks": "Ucap terima kasih",
+ "thanks-already-thanked": "Anda telah pun mengirim ucapan terima kasih atas suntingan ini.",
+ "echo-pref-subscription-edit-thank": "Berterima kasih pada saya atas suntingan saya",
+ "echo-pref-tooltip-edit-thank": "Beritahu saya apabila seseorang berterima kasih kepada saya atas suntingan saya.",
+ "echo-category-title-edit-thank": "Terima kasih",
+ "notification-thanks-diff-link": "suntingan anda",
+ "notification-thanks": "[[User:$1|$1]] telah {{GENDER:$1|berterima kasih}} kepada anda atas $2 di [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|berterima kasih}} kepada anda kerana menyunting $2.",
+ "notification-thanks-email-subject": "$1 mengucapkan terima kasih kepada anda atas suntingan anda di {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 telah {{GENDER:$1|berterima kasih}} kepada anda atas suntingan anda di $2.",
+ "notification-link-text-respond-to-user": "Balas",
+ "log-name-thanks": "Log ucapan terima kasih",
+ "log-description-thanks": "Yang berikut adalah senarai pengguna yang menerima ucapan terima kasih daripada pengguna lain.",
+ "logentry-thanks-thank": "$1 ucap terima kasih kepada $3",
+ "log-show-hide-thanks": "$1 log ucapan terima kasih",
+ "thanks-error-no-id-specified": "Anda hendaklah menyatakan ID semakan untuk mengirim ucapan terima kasih.",
+ "thanks-confirmation-special": "Adakah anda mahu mengirim ucapan terima kasih atas suntingan ini?",
+ "notification-link-text-view-post": "Lihat ulasan",
+ "thanks-error-invalidpostid": "ID kiriam tak sah.",
+ "flow-thanks-confirmation-special": "Adakah anda mahu mengirim ucapan terima kasih atas ulasan ini?",
+ "flow-thanks-thanked-notice": "$1 telah diberitahu bahawa anda menyukai ulasan beliau.",
+ "notification-flow-thanks": "[[User:$1|$1]] mengucapkan terima kasih kepada anda atas $2 pada \"$3\" dalam [[:$4]].",
+ "notification-flow-thanks-post-link": "ulasan anda",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] mengucapkan terima kasih kepada anda atas ulasan anda pada \"$2\" dalam $3.",
+ "notification-flow-thanks-email-subject": "$1 mengucapkan terima kasih kepada anda atas ulasan anda di {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 mengucapkan terima kasih kepada anda atas ulasan anda pada \"$2\" dalam $3."
+}
diff --git a/Thanks/i18n/mt.json b/Thanks/i18n/mt.json
new file mode 100644
index 00000000..9311010a
--- /dev/null
+++ b/Thanks/i18n/mt.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli",
+ "Leli Forte",
+ "MTSap"
+ ]
+ },
+ "thanks-desc": "Iżżid ħoloq ta' ringrazzjament fil-kronoloġija u fid-differenzi bejn il-verżjonijiet",
+ "thanks-thank": "irringrazzja",
+ "thanks-thanked": "{{GENDER:$1|irringrazzjat|irringrazzjata}}",
+ "thanks-button-thank": "{{GENDER:$1|Irringrazzja}}",
+ "thanks-button-thanked": "{{GENDER:$1|Irringrazzjat|Irringrazzjata}}",
+ "thanks-error-undefined": "Ir-ringrazzjament ma ħadimx. Erġa' pprova.",
+ "thanks-error-invalidrevision": "L-ID tar-reviżjoni mhuwiex validu.",
+ "thanks-error-ratelimited": "Qbiżt il-limitu massimu tar-ringrazzjamenti. Jekk jogħġbok stenna ftit u erġa' pprova.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Ibgħat}} notifika ta' ringrazzjament lil {{GENDER:$2|dan|din}} l-utent",
+ "thanks-confirmation2": "{{GENDER:$1|Trid}} tibgħat tgħid grazzi għal din il-modifika?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|ġie mgħarraf|ġiet mgħarrfa|ġew mgħarrfin}} li għoġbitek il-modifika {{GENDER:$2|tiegħu|tagħha|tagħhom}}.",
+ "echo-pref-subscription-edit-thank": "Jirringrazzjani għall-modifika li għamilt",
+ "echo-pref-tooltip-edit-thank": "Agħrrafni meta xi ħadd jirringrazzjani għal xi modifika li nkun għamilt.",
+ "echo-category-title-edit-thank": "Ringrazzjamenti",
+ "notification-thanks-diff-link": "il-modifika tiegħek",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|irringrazzjak|irringrazzjatek}} għal $2 fuq [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|irringrazzjak|irringrazzjatek}} għall-modifika li għamilt fuq $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|irringrazzjak|irringrazzjatek}} għall-modifika li għamilt fuq {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|irringrazzjak|irringrazjatek}} għall-modifika li għamilt fuq $2.",
+ "notification-link-text-respond-to-user": "Wieġeb l-utent",
+ "log-name-thanks": "Reġistru ta' ringrazzjamenti",
+ "log-description-thanks": "Taħt hawn lista ta' utenti irringrazzjati minn utenti oħra.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|irringrazzja|irringrazzjat}} lil {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 reġistru ta' ringrazzjamenti"
+}
diff --git a/Thanks/i18n/nap.json b/Thanks/i18n/nap.json
new file mode 100644
index 00000000..7912a83f
--- /dev/null
+++ b/Thanks/i18n/nap.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "C.R."
+ ]
+ },
+ "thanks-thank": "grazie",
+ "thanks-thank-tooltip": "{{GENDER:$1|Manna}} na notifeca 'e rengraziamiente a st'{{GENDER:$2|utente}}"
+}
diff --git a/Thanks/i18n/nb.json b/Thanks/i18n/nb.json
new file mode 100644
index 00000000..2b2ada80
--- /dev/null
+++ b/Thanks/i18n/nb.json
@@ -0,0 +1,56 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danmichaelo",
+ "Jeblad",
+ "Njardarlogar"
+ ]
+ },
+ "thanks-desc": "Legger til lenker for å takke brukere for redigeringer, kommentarer, etc.",
+ "thanks-thank": "takk",
+ "thanks-thanked": "{{GENDER:$1|takket}}",
+ "thanks-button-thank": "{{GENDER:$1|Takk}}",
+ "thanks-button-thanked": "{{GENDER:$1|Takket}}",
+ "thanks-error-undefined": "Takking feilet. Forsøk igjen.",
+ "thanks-error-invalidrevision": "Revisjons-ID er ikke gyldig.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Du}} har overskredet frekvensbegrensingen din. Vent litt og prøv igjen.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Send}} en takkemelding til denne {{GENDER:$2|brukeren}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Avbryt}} takkemeldingen",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Send}} takkemeldingen",
+ "thanks-confirmation2": "{{GENDER:$1|Send}} offentlig takk for denne redigeringen?",
+ "thanks-thanked-notice": "$1 har mottatt din takk for {{GENDER:$2|redigeringen hans|redigeringen hennes|redigeringen sin}}.",
+ "thanks": "Send takk",
+ "thanks-form-revid": "Revisjons-ID for redigeringen",
+ "thanks-already-thanked": "{{GENDER:$1|Du}} har allerede takket for denne redigeringen.",
+ "echo-pref-subscription-edit-thank": "Takker meg for en redigering",
+ "echo-pref-tooltip-edit-thank": "Varsle meg når noen takker meg for en redgering jeg har gjort.",
+ "echo-category-title-edit-thank": "Takk",
+ "notification-thanks-diff-link": "redigeringen din",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|takket}} deg for $2 på [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|takket}} deg for redigeringen din på $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|takket}} deg for redigeringen din på {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|takket}} deg for redigeringen din på $2.",
+ "notification-link-text-respond-to-user": "Svar til bruker",
+ "log-name-thanks": "Takkelogg",
+ "log-description-thanks": "Under er en liste over brukere som har blitt takket av andre brukere.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|takket}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 takkelogg",
+ "thanks-error-no-id-specified": "Du må angi en revisjons-ID for å takke.",
+ "thanks-confirmation-special": "Vil du offentlig takke for denne redigeringen?",
+ "notification-link-text-view-post": "Vis kommentar",
+ "thanks-error-invalidpostid": "Post-ID er ugyldig.",
+ "flow-thanks-confirmation-special": "Vil du offentlig takke for denne kommentaren?",
+ "flow-thanks-thanked-notice": "$1 har mottatt din takk for {{GENDER:$2|kommentaren hans|kommentaren hennes|kommentaren sin}}.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|takket}} {{GENDER:$5|deg}} for $2 i «$3» på [[:$4]].",
+ "notification-flow-thanks-post-link": "din kommentar",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|takket}} {{GENDER:$4|deg}} for din kommentar til «$2» på $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|takket}} {{GENDER:$2|deg}} for din kommentar på {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|takket}} {{GENDER:$4|deg}} for din kommentar til «$2» på $3.",
+ "apihelp-flowthank-description": "Send en offentlig takk for en Flow-kommentar.",
+ "apihelp-flowthank-param-postid": "UUID-en til posten det skal takkes for.",
+ "apihelp-flowthank-example-1": "Send takk for kommentaren med UUID xyz789",
+ "apihelp-thank-description": "Send en takk til en skribent.",
+ "apihelp-thank-param-rev": "Revisjons-ID å takke noen for.",
+ "apihelp-thank-param-source": "En kort streng som beskriver kilden for forespørselen, for eksempel «diff» eller «historikk».",
+ "apihelp-thank-example-1": "Send takk for revisjonen med ID 456, der referansen blir en diff-side"
+}
diff --git a/Thanks/i18n/nds-nl.json b/Thanks/i18n/nds-nl.json
new file mode 100644
index 00000000..dcf05da9
--- /dev/null
+++ b/Thanks/i18n/nds-nl.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "thanks-desc": "Voegt verwiezingen toe um gebrukers te bedanken veur bewarkingen, kommentaar, enz.",
+ "thanks-thank": "bedanken",
+ "thanks-thanked": "{{GENDER:$1|is bedankt}}",
+ "thanks-button-thank": "{{GENDER:$1|Bedanken}}",
+ "thanks-button-thanked": "{{GENDER:$1|Is bedankt}}",
+ "thanks-error-undefined": "Bedanken is mislokt. Probeer t weer.",
+ "thanks-error-invalidrevision": "t Versienummer is niet geldig.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Je}} hebben joew limiet veur bedankjes overschrejen. Wacht effen veurda'j verdan gaon.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Stuur}} n melding mit n bedankjen naor disse {{GENDER:$2|gebruker}}",
+ "thanks-confirmation2": "n Bedankjen veur disse bewarking {{GENDER:$1|sturen}}?",
+ "thanks-thanked-notice": "$1 hef joew bedankjen ontvangen veur {{GENDER:$2|zien|heur|zien}} bewarking.",
+ "thanks": "Bedanken",
+ "thanks-form-revid": "Versienummer van de bewarking",
+ "thanks-already-thanked": "{{GENDER:$1|Je}} hebben al bedankt veur disse bewarking.",
+ "echo-pref-subscription-edit-thank": "Bedank m'n veur mien bewarking",
+ "echo-pref-tooltip-edit-thank": "Stuur m'n n melding as der ene mien bedankt veur n bewarking die'k an-ebröcht hebbe.",
+ "echo-category-title-edit-thank": "Bedankt",
+ "notification-thanks-diff-link": "joew bewarking",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|hef}} joe bedankt veur $2 op [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|hef}} joe bedankt veur joew bewarking op $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|hef}} joe bedankt veur joew bewarking op {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|hef}} joe bedankt veur joew bewarking op $2.",
+ "notification-link-text-respond-to-user": "Gebruker beantwoorden",
+ "log-name-thanks": "Bedankjeslogboek",
+ "log-description-thanks": "Hieronder zie'j n lieste mit gebrukers die deur aandere gebrukers bedankt bin.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|hef}} {{GENDER:$4|$3}} bedankt",
+ "log-show-hide-thanks": "bedankjeslogboek $1",
+ "thanks-error-no-id-specified": "Je mutten n versienummer opgeven um n bedankjen te sturen.",
+ "thanks-confirmation-special": "Wi'j n bedankjen sturen veur disse bewarking?",
+ "notification-link-text-view-post": "Reaksie bekieken",
+ "thanks-error-invalidpostid": "Berichtnummer is niet geldig.",
+ "flow-thanks-confirmation-special": "Wi'j n bedankjen sturen veur disse reaksie?",
+ "flow-thanks-thanked-notice": "$1 hef joew bedankjen ontvangen veur {{GENDER:$2|zien|heur|zien}} reaksie.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|hef}} {{GENDER:$5|joe}} bedankt veur $2 in \"$3\" op [[:$4]].",
+ "notification-flow-thanks-post-link": "joew reaksie",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|hef}} {{GENDER:$4|joe}} bedankt veur joew reaksie in \"$2\" op $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|hef}} {{GENDER:$2|joe}} bedankt veur joew reaksie op {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|hef}} {{GENDER:$4|joe}} bedankt veur joew reaksie in \"$2\" op $3.",
+ "apihelp-flowthank-description": "Stuur n bedankjen veur n Flow-reaksie.",
+ "apihelp-flowthank-param-postid": "De UUID van t bericht um veur te bedanken.",
+ "apihelp-flowthank-example-1": "Stuur n bedankjen veur de reaksie mit UUID xyz789",
+ "apihelp-thank-description": "Stuur n bedankjen naor n bewarker.",
+ "apihelp-thank-param-rev": "Versienummer um ene veur te bedanken.",
+ "apihelp-thank-param-source": "n Korte tekste waormee je de bron veur t verzeuk beschrieven, bieveurbeeld, \"wiezig\" of \"gesch\".",
+ "apihelp-thank-example-1": "Stuur n bedankjen veur versienummer 456, mit n 'wiezig'-zied as bron"
+}
diff --git a/Thanks/i18n/ne.json b/Thanks/i18n/ne.json
new file mode 100644
index 00000000..6d809fdb
--- /dev/null
+++ b/Thanks/i18n/ne.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "बिप्लब आनन्द"
+ ]
+ },
+ "thanks-thank": "धन्यवाद"
+}
diff --git a/Thanks/i18n/nl.json b/Thanks/i18n/nl.json
new file mode 100644
index 00000000..1ccf48ec
--- /dev/null
+++ b/Thanks/i18n/nl.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hansmuller",
+ "JurgenNL",
+ "Konovalov",
+ "SPQRobin",
+ "Siebrand",
+ "Sjoerddebruin",
+ "Southparkfan",
+ "Mar(c)"
+ ]
+ },
+ "thanks-desc": "Voegt koppelingen toe voor het bedanken van gebruikers voor bewerkingen, reacties, enzovoort.",
+ "thanks-thank": "bedanken",
+ "thanks-thanked": "{{GENDER:$1|is bedankt}}",
+ "thanks-button-thank": "{{GENDER:$1|Bedanken}}",
+ "thanks-button-thanked": "{{GENDER:$1|Bedankt}}",
+ "thanks-error-undefined": "Bedanken is mislukt. Probeer het opnieuw.",
+ "thanks-error-invalidrevision": "Het revisienummer is niet geldig.",
+ "thanks-error-ratelimited": "{{GENDER:$1|U}} hebt uw limiet voor bedankjes overschreden. Wacht even en probeer het dan opnieuw.",
+ "thanks-thank-tooltip": "Deze {{GENDER:$2|gebruiker}} een bedankje {{GENDER:$1|sturen}}",
+ "thanks-confirmation2": "Een bedankje voor deze bewerking {{GENDER:$1|sturen}}?",
+ "thanks-thanked-notice": "$1 is geïnformeerd dat u {{GENDER:$2|hem|haar|hem/haar}} hebt bedankt voor {{GENDER:$2|zijn|haar|zijn/haar}} bewerking.",
+ "thanks": "Bedanken",
+ "thanks-form-revid": "Revisienummer van de bewerking",
+ "thanks-already-thanked": "{{GENDER:$1|U}} hebt al bedankt voor deze bewerking.",
+ "echo-pref-subscription-edit-thank": "als iemand u bedankt voor een bewerking",
+ "echo-pref-tooltip-edit-thank": "Informeer mij wanneer iemand mij bedankt voor een bewerking die ik heb gemaakt.",
+ "echo-category-title-edit-thank": "Bedankt",
+ "notification-thanks-diff-link": "uw bewerking",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|heeft}} u bedankt voor $2 op [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|heeft}} u bedankt voor uw bewerking op $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|heeft}} u bedankt voor uw bewerking op {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|heeft}} u bedankt voor uw bewerking op $2.",
+ "notification-link-text-respond-to-user": "Op gebruiker reageren",
+ "log-name-thanks": "Bedankjeslogboek",
+ "log-description-thanks": "Hieronder staat een lijst van gebruikers die door andere gebruikers zijn bedankt.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|heeft}} {{GENDER:$4|$3}} bedankt",
+ "log-show-hide-thanks": "bedankjeslogboek $1",
+ "thanks-error-no-id-specified": "U dient een revisienummer op te geven om een bedankje te sturen.",
+ "thanks-confirmation-special": "Wilt u een bedankje sturen voor deze bewerking?",
+ "notification-link-text-view-post": "Reactie weergeven",
+ "thanks-error-invalidpostid": "Berichtnummer is niet geldig.",
+ "flow-thanks-confirmation-special": "Wilt u een bedankje sturen voor deze reactie?",
+ "flow-thanks-thanked-notice": "$1 is geïnformeerd dat u {{GENDER:$2|hem|haar|hem/haar}} hebt bedankt voor {{GENDER:$2|zijn|haar|zijn/haar}} reactie.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|heeft}} {{GENDER:$5|u}} bedankt voor $2 in \"$3\" op [[:$4]].",
+ "notification-flow-thanks-post-link": "uw reactie",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|heeft}} {{GENDER:$4|u}} bedankt voor uw reactie in \"$2\" op $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|heeft}} {{GENDER:$2|u}} bedankt voor uw reactie op {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|heeft}} {{GENDER:$4|u}} bedankt voor uw reactie in \"$2\" op $3."
+}
diff --git a/Thanks/i18n/nn.json b/Thanks/i18n/nn.json
new file mode 100644
index 00000000..cbf62d32
--- /dev/null
+++ b/Thanks/i18n/nn.json
@@ -0,0 +1,30 @@
+{
+ "@metadata": {
+ "authors": [
+ "Njardarlogar"
+ ]
+ },
+ "thanks-desc": "Legg til takkelenkjer til historikk og skilnadsvising",
+ "thanks-thank": "takk",
+ "thanks-thanked": "{{GENDER:$1|takka}}",
+ "thanks-button-thank": "Takk",
+ "thanks-button-thanked": "{{GENDER:$1|Takka}}",
+ "thanks-error-undefined": "Takkehandlinga gjekk ikkje. Freist om att.",
+ "thanks-error-invalidrevision": "Versjons-ID-en er ikkje gild",
+ "thanks-error-ratelimited": "Du har overskride frekvensgrensa di. Vent litt og freist om att.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Send}} ei takkemelding til {{GENDER:$2|brukaren}}",
+ "thanks-thanked-notice": "$1 vart fortald at du lika endringa {{GENDER:$2|hans|hennar|hans/hennar}}.",
+ "echo-pref-subscription-edit-thank": "Takkar meg for endringa mi",
+ "echo-pref-tooltip-edit-thank": "Meld meg når nokon takkar meg for ei endring eg har gjort.",
+ "echo-category-title-edit-thank": "Takk",
+ "notification-thanks-diff-link": "endringa di",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|takka}} deg for $2 på [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|takka}} deg for endringa di på $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|takka}} deg for endringa di på {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|takka}} deg for endringa di på $2.",
+ "notification-link-text-respond-to-user": "Svar brukar",
+ "log-name-thanks": "Takkelogg",
+ "log-description-thanks": "Under er ei liste over brukarar som har vorte takka av andre brukarar.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|takka}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 takkelogg"
+}
diff --git a/Thanks/i18n/oc.json b/Thanks/i18n/oc.json
new file mode 100644
index 00000000..81a601de
--- /dev/null
+++ b/Thanks/i18n/oc.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "thanks-desc": "Apond de ligams de mercejament a las vistas istoric e de diferéncia",
+ "thanks-thank": "mercé",
+ "thanks-thanked": "{{GENDER:$1|mercejat|mercejada}}",
+ "thanks-button-thank": "{{GENDER:$1|Mercé}}",
+ "thanks-button-thanked": "{{GENDER:$1|Mercejat}}",
+ "thanks-error-undefined": "Fracàs de l’accion de mercejament. Tornatz ensajar.",
+ "thanks-error-invalidrevision": "L’ID de revision es invalid.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Avètz}} depassat vòstre limit de debit. Esperatz un pauc e tornatz ensajar.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Mandar}} una notificacion de mercejament a {{GENDER:$2|aqueste utilizaire|aquesta utilizaira}}",
+ "thanks-thanked-notice": "$1 es estat notificat que vos a agradat {{GENDER:$2|sa}} modificacion.",
+ "echo-pref-subscription-edit-thank": "Me mercejar per ma modificacion",
+ "echo-pref-tooltip-edit-thank": "M'avisar quand qualqu’un me merceja per una modificacion qu’ai facha.",
+ "echo-category-title-edit-thank": "Mercé",
+ "notification-thanks-diff-link": "vòstra modificacion",
+ "notification-thanks": "[[User:$1|$1]] vos {{GENDER:$1|a mercejat}} per $2 sus [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vos {{GENDER:$1|a mercejat}} per vòstra modificacion sus $2.",
+ "notification-thanks-email-subject": "$1 vos {{GENDER:$1|a mercejat}} per vòstra modificacion sus {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 vos {{GENDER:$1|a mercejat}} per vòstra modificacion sus $2.",
+ "notification-link-text-respond-to-user": "Respondre a l’utilizaire",
+ "log-name-thanks": "Entrada mercejaments",
+ "log-description-thanks": "Trobaretz çaijós una lista d'utilizaires que son estats mercejats per d'autres.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|a mercejat}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 lo jornal dels mercejaments",
+ "notification-flow-thanks": "[[User:$1|$1]] vos a mercejat per $2 dins \"$3\" sus [[:$4]].",
+ "notification-flow-thanks-email-batch-body": "$1 vos {{GENDER:$1|a mercejat}} per vòstre comentari dins \"$2\" sus $3."
+}
diff --git a/Thanks/i18n/pa.json b/Thanks/i18n/pa.json
new file mode 100644
index 00000000..98e1e1ac
--- /dev/null
+++ b/Thanks/i18n/pa.json
@@ -0,0 +1,35 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aalam",
+ "Babanwalia",
+ "Satdeep gill",
+ "TariButtar"
+ ]
+ },
+ "thanks-desc": "ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਸੋਧਾਂ, ਟਿੱਪਣੀਆਂ ਆਦਿ ਲਈ ਧੰਨਵਾਦ ਕਰਨ ਲਈ ਧੰਨਵਾਦੀ ਲਿੰਕ ਜੋੜਦਾ ਹੈ",
+ "thanks-thank": "ਧੰਨਵਾਦ ਆਖੋ",
+ "thanks-thanked": "{{GENDER:$1|ਧੰਨਵਾਦ ਕੀਤਾ ਗਿਆ}}",
+ "thanks-button-thank": "ਧੰਨਵਾਦ",
+ "thanks-button-thanked": "{{GENDER:$1|ਧੰਨਵਾਦ ਕੀਤਾ ਗਿਆ}}",
+ "thanks-error-undefined": "ਧੰਨਵਾਦ ਕਾਰਜ ਫੇਲ ਹੋਇਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।",
+ "thanks-error-invalidrevision": "ਸੁਧਾਈ ਪਛਾਣ ਉਚਿਤ ਨਹੀਂ ਹੈ।",
+ "thanks-error-ratelimited": "ਤੁਸੀਂ ਗਤੀ ਹੱਦ ਪਾਰ ਕਰ ਗਏ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਕੁਝ ਸਮਾਂ ਇੰਤਜ਼ਾਰ ਕਰੇ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
+ "thanks-thank-tooltip": "ਇਸ {{GENDER:$2|ਵਰਤੋਂਕਾਰ}} ਨੂੰ ਇੱਕ ਧੰਨਵਾਦੀ ਸੂਚਨਾ {{GENDER:$1|ਭੇਜੋ}}",
+ "thanks-thanked-notice": "$1 ਨੂੰ ਦੱਸ ਦਿੱਤਾ ਗਿਆ ਕਿ ਤੁਹਾਨੂੰ {{GENDER:$2|ਉਹਨਾਂ ਦੀ}} ਸੋਧ ਪਸੰਦ ਆਈ।",
+ "echo-pref-subscription-edit-thank": "ਮੇਰੀ ਸੋਧ ਲਈ ਮੈਨੂੰ ਧੰਨਵਾਦ",
+ "echo-pref-tooltip-edit-thank": "ਜਦੋਂ ਕੋਈ ਮੇਰੀ ਸੋਧ ਦਾ ਧੰਨਵਾਦ ਕਰਦਾ ਹੈ ਤਾਂ ਮੈਨੂੰ ਇਤਲਾਹ ਦਿਓ",
+ "echo-category-title-edit-thank": "ਮਿਹਰਬਾਨੀ",
+ "notification-thanks-diff-link": "ਤੁਹਾਡੀ ਸੋਧ",
+ "notification-thanks": "[[User:$1|$1]] ਨੇ [[:$3]] ਉੱਤੇ $2 ਲਈ ਤੁਹਾਡਾ {{GENDER:$1|ਧੰਨਵਾਦ ਕੀਤਾ}}।",
+ "notification-thanks-flyout2": "[[User:$1|$1]] ਨੇ $2 ਉੱਤੇ ਤੁਹਾਡੀ ਸੋਧ ਲਈ ਤੁਹਾਡਾ {{GENDER:$1|ਧੰਨਵਾਦ}} ਕੀਤਾ",
+ "notification-thanks-email-subject": "$1 ਨੇ {{SITENAME}} ਉੱਤੇ ਤੁਹਾਡੀ ਸੋਧ ਲਈ ਤੁਹਾਡਾ {{GENDER:$1|ਧੰਨਵਾਦ ਕੀਤਾ}}",
+ "notification-thanks-email-batch-body": "$1 ਨੇ $2 ਉੱਤੇ ਤੁਹਾਡੀ ਸੋਧ ਲਈ ਤੁਹਾਡਾ {{GENDER:$1|ਧੰਨਵਾਦ ਕੀਤਾ}}।",
+ "notification-link-text-respond-to-user": "ਵਰਤੋਂਕਾਰ ਨੂੰ ਜੁਆਬ ਦਿਓ",
+ "log-name-thanks": "ਮਿਹਰਬਾਨੀਆਂ ਦਾ ਇੰਦਰਾਜ",
+ "log-description-thanks": "ਹੇਠਾਂ ਦੂਜੇ ਵਰਤੋਂਕਾਰਾਂ ਦੁਆਰਾ ਧੰਨਵਾਦ ਕੀਤੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਇੱਕ ਲਿਸਟ ਹੈ।",
+ "logentry-thanks-thank": "$1 ਨੇ {{GENDER:$4|$3}} ਦਾ {{GENDER:$2|ਧੰਨਵਾਦ}} ਕੀਤਾ ਹੈ",
+ "log-show-hide-thanks": "ਧੰਨਵਾਦੀ ਇੰਦਰਾਜ $1",
+ "notification-link-text-view-post": "ਟਿੱਪਣੀ ਵੇਖੋ",
+ "notification-flow-thanks-post-link": "ਤੁਹਾਡੀ ਟਿੱਪਣੀ"
+}
diff --git a/Thanks/i18n/pfl.json b/Thanks/i18n/pfl.json
new file mode 100644
index 00000000..14385f16
--- /dev/null
+++ b/Thanks/i18n/pfl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Manuae"
+ ]
+ },
+ "thanks-thank": "dong'ge",
+ "thanks-thank-tooltip": "{{GENDER:$1|Schigg}} ä Dong'gschä onde {{GENDER:$2|Middawwaida}}"
+}
diff --git a/Thanks/i18n/pl.json b/Thanks/i18n/pl.json
new file mode 100644
index 00000000..0842bf8b
--- /dev/null
+++ b/Thanks/i18n/pl.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrumps",
+ "Matma Rex",
+ "Tar Lócesilion",
+ "Ty221",
+ "WTM"
+ ]
+ },
+ "thanks-desc": "Dodaje link umożliwiający podziękowanie użytkownikowi za edycję, komentarz itp.",
+ "thanks-thank": "podziękuj",
+ "thanks-thanked": "{{GENDER:$1|podziękowałeś|podziękowałaś}}",
+ "thanks-button-thank": "{{GENDER:$1|Podziękuj}}",
+ "thanks-button-thanked": "{{GENDER:$1|Podziękowałeś|Podziękowałaś}}",
+ "thanks-error-undefined": "Operacja podziękowania nie powiodła się. Proszę spróbować ponownie.",
+ "thanks-error-invalidrevision": "Nieprawidłowy identyfikator wersji.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Przekroczyłeś|Przekroczyłaś}} limit podziękowań. Poczekaj chwilę i spróbuj ponownie.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Wyślij}} podziękowanie do {{GENDER:$2|tego użytkownika|tej użytkowniczki}}",
+ "thanks-confirmation2": "{{GENDER:$1|Wysłać}} podziękowanie za tę edycję?",
+ "thanks-thanked-notice": "$1 {{GENDER:$2|dostał|dostała}} twoje podziękowanie za {{GENDER:$2|jego|jej}} edycję.",
+ "thanks": "Wyślij podziękowanie",
+ "thanks-form-revid": "ID wersji",
+ "thanks-already-thanked": "Już {{GENDER:$1|podziękowałeś|podziękowałaś}} za tę edycję.",
+ "echo-pref-subscription-edit-thank": "podziękuje mi za edycję, którą wykonałem",
+ "echo-pref-tooltip-edit-thank": "Powiadom mnie, kiedy ktoś podziękuje mi za edycję, którą wykonałem.",
+ "echo-category-title-edit-thank": "Podziękowania",
+ "notification-thanks-diff-link": "edycję",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|podziękował|podziękowała}} Ci za $2 na stronie [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|podziękował|podziękowała}} Ci za edycję na stronie $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|podziękował|podziękowała}} Ci za edycję w {{GRAMMAR:MS.lp|{{SITENAME}}}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|podziękował|podziękowała}} Ci za edycję na stronie $2.",
+ "notification-link-text-respond-to-user": "Odpowiedz",
+ "log-name-thanks": "Rejestr podziękowań",
+ "log-description-thanks": "Poniżej znajduje się lista użytkowników, którym podziękowali inni użytkownicy.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|podziękował|podziękowała}} {{GENDER:$4|użytkownikowi|użytkowniczce}} $3",
+ "log-show-hide-thanks": "$1 rejestr podziękowań",
+ "thanks-confirmation-special": "Czy chcesz wysłać podziękowanie za tę edycję?",
+ "notification-link-text-view-post": "Zobacz komentarz",
+ "flow-thanks-confirmation-special": "Czy chcesz wysłać podziękowanie za ten komentarz?",
+ "flow-thanks-thanked-notice": "$1 {{GENDER:$2|dostał|dostała}} twoje podziękowanie za {{GENDER:$2|jego|jej}} komentarz.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|podziękował|podziękowała}} {{GENDER:$5|ci}} za $2 w „$3” na stronie [[:$4]].",
+ "notification-flow-thanks-post-link": "twój komentarz",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|podziękował|podziękowała}} {{GENDER:$4|ci}} za twój komentarz w „$2” na stronie $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|podziękował|podziękowała}} {{GENDER:$2|ci}} za twój komentarz w {{GRAMMAR:MS.lp|{{SITENAME}}}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|podziękował|podziękowała}} {{GENDER:$4|ci}} za twój komentarz w „$2” na stronie $3."
+}
diff --git a/Thanks/i18n/pms.json b/Thanks/i18n/pms.json
new file mode 100644
index 00000000..bfb8909a
--- /dev/null
+++ b/Thanks/i18n/pms.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt"
+ ]
+ },
+ "thanks-desc": "A gionta dle liure d'aringrassiament a le viste dë stòria e ëd diferensa",
+ "thanks-thank": "aringrassié",
+ "thanks-thanked": "{{GENDER:$1|aringrassià}}",
+ "thanks-button-thank": "{{GENDER:$1|Mersì}}",
+ "thanks-button-thanked": "{{GENDER:$1|Aringrassià}}",
+ "thanks-error-undefined": "Falì a aringrassié. Për piasì, ch'a preuva torna.",
+ "thanks-error-invalidrevision": "L'ID ëd revision a l'é nen bon.",
+ "thanks-error-ratelimited": "{{GENDER:$1|A}} l'ha sorpassà sò lìmit ëd frequensa. Për piasì, ch'a speta un pòch e ch'a preuva torna.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Mandé}} na notìfica d'aringrassiament a cost {{GENDER:$2|utent}}",
+ "thanks-thanked-notice": "A l'é stàit notificà a $1 che a chiel a l'é piasuje {{GENDER:$2|soa}} modìfica.",
+ "thanks": "mandé dj'aringrassiament",
+ "thanks-form-revid": "Identificatin ëd revision për la modìfica",
+ "thanks-already-thanked": "{{GENDER:$1|Chiel|Chila}} a l'ha già mandà n'aringrassiament për costa modìfica.",
+ "echo-pref-subscription-edit-thank": "Aringrassieme për mia modìfica",
+ "echo-pref-tooltip-edit-thank": "Aviseme cand cheidun a m'aringrassia për na modìfica ch'i l'hai fàit.",
+ "echo-category-title-edit-thank": "Mersì",
+ "notification-thanks-diff-link": "soa modìfica",
+ "notification-thanks": "[[User:$1|$1]] a l'ha {{GENDER:$1|aringrassialo|aringrassiala}} për $2 su [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] a l'ha {{GENDER:$1|aringrassialo|aringrassiala}} për soa modìfica su $2.",
+ "notification-thanks-email-subject": "$1 a l'ha {{GENDER:$1|aringrassialo|aringrassiala}} për soa modìfica su {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 a l'ha {{GENDER:$1|aringrassialo|aringrassiala}} për soa modìfica su $2.",
+ "notification-link-text-respond-to-user": "Rësponde a l'utent",
+ "log-name-thanks": "Argistr dj'aringrassiament",
+ "log-description-thanks": "Sì-sota a-i é na lista d'utent aringrassià da d'àutri utent.",
+ "logentry-thanks-thank": "$1 a l'ha {{GENDER:$2|aringrassià}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 l'argistr ëd j'aringrassiament"
+}
diff --git a/Thanks/i18n/ps.json b/Thanks/i18n/ps.json
new file mode 100644
index 00000000..68e72b81
--- /dev/null
+++ b/Thanks/i18n/ps.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ahmed-Najib-Biabani-Ibrahimkhel"
+ ]
+ },
+ "thanks-desc": "د پېښليک او توپيرونو کتنو کې د مننې تړنې ورگډوي",
+ "thanks-thank": "مننه",
+ "thanks-thanked": "{{GENDER:$1|منندوی شو}}",
+ "thanks-button-thank": "{{GENDER:$1|مننه}}",
+ "thanks-button-thanked": "{{GENDER:$1|منندوی شو}}",
+ "thanks-error-undefined": "د مننې چاره پاتې راغله. بيا مو هڅه وکړۍ.",
+ "thanks-error-invalidrevision": "د کره کتنې پېژند سم نه دی.",
+ "thanks-error-ratelimited": "{{GENDER:$1|تاسې}} د خپل ټاکلي بريد نه واوښتلئ. مهرباني وکړۍ لږ څه تم شۍ او بيا يې وآزمويۍ.",
+ "thanks-thank-tooltip": "دې {{GENDER:$2|کارن}} ته د مننې يو پيغام {{GENDER:$1|ورلېږل}}",
+ "thanks-thanked-notice": "$1 ته ووييل شول چې تاسې د {{GENDER:$2|هغه|هغې|هغوی}} سمونونه خوښ کړل.",
+ "echo-pref-subscription-edit-thank": "زه د سمون پخاطر زما منندوی شه",
+ "echo-pref-tooltip-edit-thank": "خبر مې کړه کله چې يو څوک زما د يو سمون په خاطر له ما څخه مننه کوي.",
+ "echo-category-title-edit-thank": "مننه",
+ "notification-thanks-diff-link": "ستاسې سمون",
+ "notification-thanks": "[[User:$1|$1]] له تاسې څخه په [[:$3]] باندې د $2 پخاطر {{GENDER:$1|مننه وکړه}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] له تاسې څخه په $2 باندې ستاسې د سمون پخاطر {{GENDER:$1|مننه وکړه}}.",
+ "notification-thanks-email-subject": "$1 په {{SITENAME}} باندې ستاسې د سمون په خاطر {{GENDER:$1|مننه وکړه}}",
+ "notification-thanks-email-batch-body": "$1 په $2 باندې ستاسې د سمون په خاطر {{GENDER:$1|مننه وکړه}}.",
+ "notification-link-text-respond-to-user": "کارن ته ځواب",
+ "log-name-thanks": "د مننې يادښت",
+ "log-description-thanks": "دا لاندې د هغو کارنانو يو لړليک دی چې نور کارنان ترې منندوی دي.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|منندوی شو}} له {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "د مننې يادښت $1",
+ "notification-link-text-view-post": "تبصره کتل",
+ "notification-flow-thanks-post-link": "ستاسې تبصره"
+}
diff --git a/Thanks/i18n/pt-br.json b/Thanks/i18n/pt-br.json
new file mode 100644
index 00000000..0fcd1ec9
--- /dev/null
+++ b/Thanks/i18n/pt-br.json
@@ -0,0 +1,43 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cainamarques",
+ "Dianakc",
+ "HenriqueCrang",
+ "OTAVIO1981",
+ "Opraco",
+ "Teles"
+ ]
+ },
+ "thanks-desc": "Adiciona link de agradecimento às páginas de histórico e de diferença entre edições",
+ "thanks-thank": "agradecer",
+ "thanks-thanked": "{{GENDER:$1|agradecido|agradecida}}",
+ "thanks-button-thank": "{{GENDER:$1|Agradecer}}",
+ "thanks-button-thanked": "{{GENDER:$1|Agradecimento enviado}}",
+ "thanks-error-undefined": "O agradecer falhou. Por favor tente de novo.",
+ "thanks-error-invalidrevision": "ID de revisão inválido.",
+ "thanks-error-ratelimited": "Você excedeu seu limite. Por favor aguarde um pouco e tente novamente.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Envie}} uma nota de agradecimento para este {{GENDER:$2|usuário}}",
+ "thanks-thanked-notice": "$1 foi {{GENDER:$2|notificado|notificada}} de que você apreciou {{GENDER:$2|sua}} edição.",
+ "thanks": "Enviar agradecimento",
+ "thanks-form-revid": "ID de revisão da edição",
+ "thanks-already-thanked": "{{GENDER:$1|Você}} já enviou um agradecimento por esta edição.",
+ "echo-pref-subscription-edit-thank": "Agradeça-me pela minha edição",
+ "echo-pref-tooltip-edit-thank": "Notifique-me quando alguém agradecer por uma edição que fiz.",
+ "echo-category-title-edit-thank": "Agradecimento",
+ "notification-thanks-diff-link": "sua edição",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} pela $2 em [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} pela sua edição em $2.",
+ "notification-thanks-email-subject": "$1 agradeceu por sua edição na {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 agradeceu por sua edição em $2.",
+ "notification-link-text-respond-to-user": "Responder ao usuário",
+ "log-name-thanks": "Registro de agradecimentos",
+ "log-description-thanks": "Abaixo está uma lista de usuários que receberam agradecimentos de outros usuários.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|agradeceu}} {{GENDER:$4|$3}}",
+ "notification-link-text-view-post": "Ver comentário",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} por $2 em \"$3\" na página [[:$4]].",
+ "notification-flow-thanks-post-link": "seu comentário",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} pelo seu comentário em \"$2\" na página $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|agradeceu-lhe}} pelo seu comentário em {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|agradeceu-lhe}} pelo seu comentário em \"$2\" na página $3."
+}
diff --git a/Thanks/i18n/pt.json b/Thanks/i18n/pt.json
new file mode 100644
index 00000000..e2df44b2
--- /dev/null
+++ b/Thanks/i18n/pt.json
@@ -0,0 +1,57 @@
+{
+ "@metadata": {
+ "authors": [
+ "GoEThe",
+ "Helder.wiki",
+ "Imperadeiro98",
+ "Malafaya",
+ "OTAVIO1981",
+ "Oona",
+ "Opraco",
+ "Titoncio",
+ "Vitorvicentevalente",
+ "He7d3r"
+ ]
+ },
+ "thanks-desc": "Adiciona ligações para agradecer a utilizadores por edições, comentários, etc.",
+ "thanks-thank": "agradecer",
+ "thanks-thanked": "{{GENDER:$1|agradecimento enviado}}",
+ "thanks-button-thank": "{{GENDER:$1|Agradecer}}",
+ "thanks-button-thanked": "{{GENDER:$1|Agradecimento enviado}}",
+ "thanks-error-undefined": "Acção de agradecimento falhou. Por favor, tente novamente.",
+ "thanks-error-invalidrevision": "O ID de revisão não é válido.",
+ "thanks-error-ratelimited": "Excedeu o limite de agradecimentos. Por favor, espere algum tempo e tente novamente.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Envie}} um agradecimento para {{GENDER:$2|este utilizador|esta utilizadora}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Cancelar}} a notificação de agradecimento",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Enviar}} a notificação de agradecimento",
+ "thanks-confirmation2": "{{GENDER:$1|Enviar}} publicamente um agradecimento por esta edição?",
+ "thanks-thanked-notice": "$1 foi {{GENDER:$2|informado|informada|informado(a)}} de que gostou da sua edição.",
+ "thanks": "Enviar agradecimento",
+ "thanks-form-revid": "ID de revisão para editar",
+ "thanks-already-thanked": "{{GENDER:$1|Você}} já agradeceu por esta edição.",
+ "echo-pref-subscription-edit-thank": "Agradece-me pela minha edição",
+ "echo-pref-tooltip-edit-thank": "Notificar-me quando alguém me agradecer por uma edição que eu fiz.",
+ "echo-category-title-edit-thank": "Agradecimentos",
+ "notification-thanks-diff-link": "sua edição",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} pela $2 em [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|agradeceu-lhe}} pela sua edição em $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|agradeceu-lhe}} pela sua edição em {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|agradeceu-lhe}} pela sua edição em $2.",
+ "notification-link-text-respond-to-user": "Responder ao utilizador",
+ "log-name-thanks": "Registo de agradecimentos",
+ "log-description-thanks": "Abaixo está uma lista de utilizadores que receberam agradecimentos de outros utilizadores.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|agradeceu}} a {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 registo de agradecimentos",
+ "thanks-error-no-id-specified": "Deve especificar um ID de revisão para enviar um agradecimento.",
+ "thanks-confirmation-special": "Deseja agradecer publicamente por esta edição?",
+ "notification-link-text-view-post": "Ver comentário",
+ "thanks-error-invalidpostid": "ID de mensagem inválido.",
+ "flow-thanks-confirmation-special": "Deseja agradecer publicamente por este comentário?",
+ "flow-thanks-thanked-notice": "$1 foi {{GENDER:$2|informado|informada}} de que você gostou do seu comentário.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|agradeceu}}{{GENDER:$5|-lhe}} por $2 em \"$3\" ([[:$4]]).",
+ "notification-flow-thanks-post-link": "o seu comentário",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|agradeceu}}{{GENDER:$4|-lhe}} pelo seu comentário em \"$2\" ($3).",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|agradeceu}}{{GENDER:$2|-lhe}} pelo seu comentário em {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|agradeceu}}{{GENDER:$4|-lhe}} pelo seu comentário em \"$2\" ($3).",
+ "apihelp-flowthank-description": "Enviar notificação de agradecimento público por um comentário no Flow."
+}
diff --git a/Thanks/i18n/qqq.json b/Thanks/i18n/qqq.json
new file mode 100644
index 00000000..1c48d283
--- /dev/null
+++ b/Thanks/i18n/qqq.json
@@ -0,0 +1,60 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Nike",
+ "Pxos",
+ "Raymond",
+ "Shirayuki",
+ "Siebrand",
+ "Umherirrender"
+ ]
+ },
+ "thanks-desc": "{{desc|name=Thanks|url=https://www.mediawiki.org/wiki/Extension:Thanks}}",
+ "thanks-thank": "{{Doc-actionlink}}\nA link to thank another user. This appears next to messages such as {{msg-mw|editundo}} and {{msg-mw|rollbacklink}} and should be translated in a similar fashion.\n{{Identical|Thank}}",
+ "thanks-thanked": "This message immediately replaces the message {{msg-mw|Thanks-thank}} after it's pressed. It means that the thanking operation has been completed.\n\nIt can be translated as \"''thanked''\" in \"You thanked the user\" or \"The user has just been ''thanked''\" - whatever is appropriate to your language.\n\nParameters:\n* $1 - the current user, for GENDER support",
+ "thanks-button-thank": "Text of a button to thank another user. Same as {{msg-mw|Thanks-thank}}, but the context is in a button.\n\nParameters:\n* $1 - user object for GENDER support\n{{Identical|Thank}}",
+ "thanks-button-thanked": "This message immediately replaces the message {{msg-mw|Thanks-button-thank}} after it's pressed. It means that the thanking operation has been completed.\n\nSame as {{msg-mw|Thanks-thanked}}, but the context is in a button.\n\nParameters:\n* $1 - the current user, for GENDER support",
+ "thanks-error-undefined": "Error message that is displayed when the thank action fails.\n{{Identical|Please try again}}",
+ "thanks-error-invalidrevision": "Error message that is displayed when the revision ID is not valid",
+ "thanks-error-ratelimited": "Error message that is displayed when user exceeds rate limit. Parameters:\n* $1 - gender",
+ "thanks-thank-tooltip": "Tooltip that appears when a user hovers over the \"thank\" link. Parameters:\n* $1 - The user sending the thanks. Can be used for GENDER support.\n* $2 - The user receiving the thanks. Can be used for GENDER support",
+ "thanks-thank-tooltip-no": "Tooltip that appears when a user hovers over the \"No\" confirmation link (which cancels the thank action). Parameters:\n* $1 - The user sending the thanks. Can be used for GENDER support.",
+ "thanks-thank-tooltip-yes": "Tooltip that appears when a user hovers over the \"Yes\" confirmation link (which confirms the thank action). Parameters:\n* $1 - The user sending the thanks. Can be used for GENDER support.",
+ "thanks-confirmation2": "A confirmation message to make sure the user actually wants to send thanks to another user.\n\nParameters:\n* $1 - The user sending the thanks. Can be used for GENDER.\nSee also:\n* {{msg-mw|Thanks-confirmation-special}}",
+ "thanks-thanked-notice": "{{doc-singularthey}}\nPop-up message that is displayed after a user has thanked another user for their edit.\n\nParameters:\n* $1 - the username of the user that was thanked\n* $2 - the gender of the user that was thanked\nSee also:\n* {{msg-mw|Flow-thanks-thanked-notice}}",
+ "thanks": "{{doc-special|Thanks|unlisted=1}}\nThe special page contains the form to thank for the edit.",
+ "thanks-form-revid": "Label for form field where the user inputs the revision ID.",
+ "thanks-already-thanked": "Message shown to user if they have already sent thanks for this edit. Parameters:\n* $1 - the user's username",
+ "echo-pref-subscription-edit-thank": "Option for getting notifications when someone thanks the user for their edit.\n\nThis is the conclusion of the sentence begun by the header: {{msg-mw|Prefs-echosubscriptions}}.",
+ "echo-pref-tooltip-edit-thank": "This is a short description of the edit-thank notification category.\n{{Related|Echo-pref-tooltip}}",
+ "echo-category-title-edit-thank": "This is a short title for the notification category.\n\nUsed as <code>$1</code> in {{msg-mw|Echo-dismiss-message}} and as <code>$2</code> in {{msg-mw|Echo-email-batch-category-header}}\n{{Related|Echo-category-title}}\n{{Identical|Thank}}",
+ "notification-thanks-diff-link": "The text of a link to the user's edit.\n\nUsed for <code>$2</code> in {{msg-mw|Notification-thanks}}. Should have capitalization appropriate for the middle of a sentence.\n\nThis is an object in a sentence so it should be in object case in languages where there is a special object form for words.",
+ "notification-thanks": "Format for displaying notifications when a user is thanked for their edit. Parameters:\n* $1 is the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 is a link to the user's edit. The text of the link is {{msg-mw|Notification-thanks-diff-link}}.\n* $3 is the title of the page the user edited.",
+ "notification-thanks-flyout2": "Format for displaying notifications in the flyout when a user is thanked for their edit. Parameters:\n* $1 is the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 is the title of the page the user edited.",
+ "notification-thanks-email-subject": "E-mail subject. Parameters:\n* $1 is the username of the person sending the thanks, as plain text. Can be used for GENDER.",
+ "notification-thanks-email-batch-body": "E-mail notification. Parameters:\n* $1 is the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 the title of the page the user edited.",
+ "notification-link-text-respond-to-user": "Label for button that links to a user page.",
+ "log-name-thanks": "Name of log that appears on [[Special:Log]].",
+ "log-description-thanks": "Description of thanks log",
+ "logentry-thanks-thank": "Log entry that is created when a user thanks another user for an edit. Parameters:\n* $1 is a user link, for example \"Jane Doe (Talk | contribs)\"\n* $2 is a username. Can be used for GENDER.\n* $3 is a user link, for example \"John Doe (Talk | contribs)\n* $4 is the username of the recipient. Can be used for GENDER.",
+ "log-show-hide-thanks": "Shown on [[Special:Log]] as a link to show/hide thanks log entries. (Hidden by default)\n* $1 - one of {{msg-mw|Show}} or {{msg-mw|Hide}}\n{{Related|Log-show-hide}}",
+ "thanks-error-no-id-specified": "Error message shown to the user when they visit Special:Thanks without specifying a revision ID",
+ "thanks-confirmation-special": "A confirmation message shown on [[Special:Thanks]] to make sure the user wants to send thanks for an edit.\n\nSee also:\n* {{msg-mw|Flow-thanks-confirmation-special}}\n* {{msg-mw|Thanks-confirmation2}}",
+ "notification-link-text-view-post": "Label for button that links to a comment on a Flow board",
+ "thanks-error-invalidpostid": "Error message that is displayed when the Flow post UUID is not valid",
+ "flow-thanks-confirmation-special": "A confirmation message shown on [[Special:Thanks]] to make sure the user wants to send thanks for a comment.\n\nSee also:\n* {{msg-mw|Thanks-confirmation-special}}",
+ "flow-thanks-thanked-notice": "{{doc-singularthey}}\nMessage displayed after a user has thanked another user for their comment.\n\nParameters:\n* $1 - the username of the user that was thanked\n* $2 - the gender of the user that was thanked\nSee also:\n* {{msg-mw|Thanks-thanked-notice}}",
+ "notification-flow-thanks": "Format for displaying notifications when a user is thanked for their comment on a Flow board.\n\nParameters:\n* $1 - the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 - a link to the comment. The text of the link is {{msg-mw|Notification-flow-thanks-post-link}}.\n* $3 - the title of the topic the comment belongs to\n* $4 - the title of the page where the comment is located\n* $5 - the username. Can be used for GENDER.",
+ "notification-flow-thanks-post-link": "The text of a link to the comment made by the user.\n\nUsed for <code>$2</code> in {{msg-mw|notification-flow-thanks}}. Should have capitalization appropriate for the middle of a sentence.\n\nThis is an object in a sentence so it should be in object case in languages where there is a special object form for words.",
+ "notification-flow-thanks-flyout": "Format for displaying notifications in the flyout when a user is thanked for their comment on a Flow board. Parameters:\n* $1 - the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 - the title of the topic the comment belongs to\n* $3 - the title of the page where the comment is located\n* $4 - the username. Can be used for GENDER.",
+ "notification-flow-thanks-email-subject": "Email subject when a user is thanked for a comment on a Flow board. Parameters:\n* $1 - the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 - the username. Can be used for GENDER.",
+ "notification-flow-thanks-email-batch-body": "Email notification. Parameters:\n* $1 - the username of the person sending the thanks, as plain text. Can be used for GENDER.\n* $2 - the title of the topic the comment belongs to\n* $3 - the title of the page where the comment is located\n* $4 - the username. Can be used for GENDER.",
+ "apihelp-flowthank-description": "{{doc-apihelp-description|flowthank}}",
+ "apihelp-flowthank-param-postid": "{{doc-apihelp-param|flowthank|postid}}",
+ "apihelp-flowthank-example-1": "{{doc-apihelp-example|flowthank}}",
+ "apihelp-thank-description": "{{doc-apihelp-description|thank}}",
+ "apihelp-thank-param-rev": "{{doc-apihelp-param|thank|rev}}",
+ "apihelp-thank-param-source": "{{doc-apihelp-param|thank|source}}",
+ "apihelp-thank-example-1": "{{doc-apihelp-example|thank}}"
+}
diff --git a/Thanks/i18n/qu.json b/Thanks/i18n/qu.json
new file mode 100644
index 00000000..0a56edb0
--- /dev/null
+++ b/Thanks/i18n/qu.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "AlimanRuna"
+ ]
+ },
+ "thanks-thank": "añaychay",
+ "thanks-button-thank": "{{GENDER:$1|Añaychay}}",
+ "thanks": "Añaychayta kachamuy"
+}
diff --git a/Thanks/i18n/rm.json b/Thanks/i18n/rm.json
new file mode 100644
index 00000000..2df6e57a
--- /dev/null
+++ b/Thanks/i18n/rm.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kazu89"
+ ]
+ },
+ "log-name-thanks": "Protocol d'engraziaments",
+ "log-show-hide-thanks": "$1 il protocol d'engraziaments"
+}
diff --git a/Thanks/i18n/ro.json b/Thanks/i18n/ro.json
new file mode 100644
index 00000000..890d32f5
--- /dev/null
+++ b/Thanks/i18n/ro.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minisarm"
+ ]
+ },
+ "thanks-desc": "Adaugă legături pentru a putea mulțumi utilizatorilor pentru modificări, comentarii etc.",
+ "thanks-thank": "mulțumire",
+ "thanks-thanked": "{{GENDER:$1|ați mulțumit}}",
+ "thanks-button-thank": "{{GENDER:$1|Mulțumesc}}",
+ "thanks-button-thanked": "{{GENDER:$1|Ați mulțumit}}",
+ "thanks-error-undefined": "Încercarea de a mulțumi a eșuat. Încercați din nou.",
+ "thanks-error-invalidrevision": "Codul versiunii nu este valid.",
+ "thanks-error-ratelimited": "{{GENDER:$1|V}}-ați depășit limita de evaluare. Așteptați un timp și reîncercați.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Trimite}} o notificare de mulțumire {{GENDER:$2|acestui utilizator|acestei utilizatoare}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Revocă}} notificarea de mulțumire",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Trimite}} notificarea de mulțumire",
+ "thanks-confirmation2": "{{GENDER:$1|Trimiteți}} în mod public mulțumiri pentru această modificare?",
+ "thanks-thanked-notice": "$1 a primit mulțumirea dumneavoastră pentru modificarea {{GENDER:$2|sa}}.",
+ "thanks": "Trimitere mulțumiri",
+ "thanks-form-revid": "ID-ul versiunii pentru modificare",
+ "thanks-already-thanked": "{{GENDER:$1|Ați}} trimis deja mulțumiri pentru această modificare.",
+ "echo-pref-subscription-edit-thank": "Mi se mulțumește pentru modificarea mea",
+ "echo-pref-tooltip-edit-thank": "Notifică-mă când cineva îmi mulțumește pentru o modificare pe care am efectuat-o.",
+ "echo-category-title-edit-thank": "Mulțumiri",
+ "notification-thanks-diff-link": "modificarea dumneavoastră",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|v-a mulțumit}} pentru $2 asupra paginii [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|v-a mulțumit}} pentru modificarea dumnevoastră asupra paginii $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|v-a mulțumit}} pentru modificarea dumneavoastră de la {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|v-a mulțumit}} pentru modificarea dumneavoastră asupra paginii $2.",
+ "notification-link-text-respond-to-user": "Răspuns către utilizator",
+ "log-name-thanks": "Jurnal mulțumiri",
+ "log-description-thanks": "Mai jos se află o listă a utilizatorilor cărora li s-a mulțumit de către alți utilizatori.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|i-a mulțumit}} {{GENDER:$4|utilizatorului $3|utilizatoarei $3}}",
+ "log-show-hide-thanks": "$1 jurnalul de mulțumiri",
+ "thanks-error-no-id-specified": "Trebuie să precizați un ID de versiune pentru a trimite mulțumiri.",
+ "thanks-confirmation-special": "Doriți să trimiteți în mod public mulțumiri pentru această modificare?",
+ "notification-link-text-view-post": "Vezi comentariul",
+ "thanks-error-invalidpostid": "ID-ul mesajului nu este valid.",
+ "flow-thanks-confirmation-special": "Doriți să trimiteți în mod public mulțumiri pentru acest comentariu?",
+ "flow-thanks-thanked-notice": "$1 a primit mulțumirea dumneavoastră pentru comentariul {{GENDER:$2|său}}.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|v-}}{{GENDER:$1|a mulțumit}} pentru $2 din secțiunea „$3” a paginii [[:$4]].",
+ "notification-flow-thanks-post-link": "comentariul dumneavoastră",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|v-}}{{GENDER:$1|a mulțumit}} pentru comentariul dumnevoastră din secțiunea „$2” a paginii $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|v-}}{{GENDER:$1|a mulțumit}} pentru comentariul dumneavoastră de la {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|v-}}{{GENDER:$1|a mulțumit}} pentru comentariul dumnevoastră din secțiunea „$2” a paginii $3."
+}
diff --git a/Thanks/i18n/roa-tara.json b/Thanks/i18n/roa-tara.json
new file mode 100644
index 00000000..fd8ddec7
--- /dev/null
+++ b/Thanks/i18n/roa-tara.json
@@ -0,0 +1,38 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "thanks-desc": "Aggiunge le collegaminde de rengraziamende a l'utinde pe le cangiaminde, le commende, etc.",
+ "thanks-thank": "grazie",
+ "thanks-thanked": "{{GENDER:$1|ringraziate}}",
+ "thanks-button-thank": "{{GENDER:$1|Grazie}}",
+ "thanks-button-thanked": "{{GENDER:$1|Ringraziate}}",
+ "thanks-error-undefined": "Azione de ringraziamende fallite. Pe piacere pruéve arrete.",
+ "thanks-error-invalidrevision": "ID d'a revisione non g'è valide.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Tu}} è sbunnate le limite de valutazione tune. Pe piacere aspitte 'nu picche e pruève arrete.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Manne}} 'na notifiche de rengraziamende a stu {{GENDER:$2|utende}}",
+ "thanks-confirmation2": "{{GENDER:$1|Manne}} le rengraziaminde pe stu cangiamende?",
+ "thanks-thanked-notice": "$1 ha state notificate ca a te t'ha piaciute 'u cangiamende {{GENDER:$2|sue|sue|lore}}",
+ "thanks": "Manne le rengraziaminde",
+ "thanks-form-revid": "ID d'a revisione pu cangiamende",
+ "thanks-already-thanked": "{{GENDER:$1|tu}} è ggià mannate le rengraziaminde pe stu cangiamende.",
+ "echo-pref-subscription-edit-thank": "Ringraziame pu cangiamende mije",
+ "echo-pref-tooltip-edit-thank": "Notificame quanne quacchedune me ringrazie pe 'nu cangiamende ca agghie fatte.",
+ "echo-category-title-edit-thank": "Grazie!",
+ "notification-thanks-diff-link": "le cangiaminde tune",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|te rengrazie}} pe $2 sus a [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|te rengrazie}} pu cangiamende tune sus a $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|te rengrazie}} pu cangiamende tune sus a {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|te rengrazie}} pu cangiamende tune sus a $2.",
+ "notification-link-text-respond-to-user": "Respunne a l'utende",
+ "log-name-thanks": "Archivije de le rengraziaminde",
+ "log-description-thanks": "Sotte stè 'n'elenghe de utinde ca onne rengraziate otre utinde.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|ave ringraziate}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 archivije de le rengraziaminde",
+ "notification-link-text-view-post": "'Ndruche 'u commende",
+ "thanks-error-invalidpostid": "ID d'u messàgge jè invalide.",
+ "flow-thanks-confirmation-special": "Vuè ccu manne 'nu grazie pe stu commende?",
+ "notification-flow-thanks-post-link": "'u commende tune"
+}
diff --git a/Thanks/i18n/ru.json b/Thanks/i18n/ru.json
new file mode 100644
index 00000000..a2068181
--- /dev/null
+++ b/Thanks/i18n/ru.json
@@ -0,0 +1,50 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaganer",
+ "Lockal",
+ "Okras",
+ "Чаховіч Уладзіслаў",
+ "Kopcap94"
+ ]
+ },
+ "thanks-desc": "Добавляет ссылки для благодарности участников за правки, комментарии и т.д.",
+ "thanks-thank": "спасибо",
+ "thanks-thanked": "{{GENDER:$1|поблагодарил|поблагодарила}}",
+ "thanks-button-thank": "{{GENDER:$1|Спасибо}}",
+ "thanks-button-thanked": "{{GENDER:$1|Был поблагодарён|Была поблагодарена}}",
+ "thanks-error-undefined": "Попытка поблагодарить не удалась. Попробуйте снова.",
+ "thanks-error-invalidrevision": "Некорректный номер версии.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Вы}} превысили ограничение скорости выполнения таких действий. Пожалуйста, подождите некоторое время и попробуйте снова.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Отправить}} {{GENDER:$2|этому участнику|этой участнице}} благодарственное сообщение",
+ "thanks-confirmation2": "{{GENDER:$1|Отправить}} публичную благодарность за эту правку?",
+ "thanks-thanked-notice": "$1 получил{{GENDER:$2||а|}} вашу благодарность за {{GENDER:$2|свою}} правку.",
+ "thanks": "Отправить благодарность",
+ "thanks-form-revid": "Идентификатор правки для редактирования",
+ "thanks-already-thanked": "{{GENDER:$1|Вы}} уже отправили благодарность за эту правку.",
+ "echo-pref-subscription-edit-thank": "Спасибо мне за мою правку",
+ "echo-pref-tooltip-edit-thank": "Сообщать мне, когда кто-то благодарит меня за сделанную мной правку.",
+ "echo-category-title-edit-thank": "Спасибо",
+ "notification-thanks-diff-link": "вашу правку",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|поблагодарил|поблагодарила}} вас за $2 на странице «[[:$3]]».",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|поблагодарил|поблагодарила}} вас за вашу правку на странице «$2».",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|поблагодарил|поблагодарила}} вас за вашу правку на сайте «{{SITENAME}}».",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|поблагодарил|поблагодарила}} вас за вашу правку на странице «$2».",
+ "notification-link-text-respond-to-user": "Ответить участнику",
+ "log-name-thanks": "Журнал благодарностей",
+ "log-description-thanks": "Ниже находится список участников, получивших благодарности от других участников.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|поблагодарил|поблагодарила}} {{GENDER:$4|участника|участницу}} $3",
+ "log-show-hide-thanks": "$1 журнал благодарностей",
+ "thanks-error-no-id-specified": "Необходимо указать идентификатор правки для отправки благодарности.",
+ "thanks-confirmation-special": "Вы хотите отправить публичную благодарность за эту правку?",
+ "notification-link-text-view-post": "Посмотреть комментарий",
+ "thanks-error-invalidpostid": "Недопустимый идентификатор сообщения.",
+ "flow-thanks-confirmation-special": "Вы хотите отправить публичную благодарность за этот комментарий?",
+ "flow-thanks-thanked-notice": "$1 получил{{GENDER:$2||а|}} вашу благодарность за {{GENDER:$2|свой}} комментарий.",
+ "notification-flow-thanks": "[[User:$1|$1]] поблагодарил{{GENDER:$5||а}} вас за $2 в теме «$3» на странице [[:$4]].",
+ "notification-flow-thanks-post-link": "ваш комментарий",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] поблагодарил{{GENDER:$1||а}} {{GENDER:$4|вас}} за ваш комментарий в теме «$2» на странице $3.",
+ "notification-flow-thanks-email-subject": "$1 поблагодарил{{GENDER:$1||а}} {{GENDER:$2|вас}} за комментарий на сайте «{{SITENAME}}».",
+ "notification-flow-thanks-email-batch-body": "$1 поблагодарил{{GENDER:$1||а}} {{GENDER:$4|вас}} за комментарий в теме на сайте «$2» на странице $3.",
+ "apihelp-flowthank-example-1": "Отправить благодарность за комментарий с UUID xyz789"
+}
diff --git a/Thanks/i18n/sah.json b/Thanks/i18n/sah.json
new file mode 100644
index 00000000..e1b79c3c
--- /dev/null
+++ b/Thanks/i18n/sah.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kaganer",
+ "HalanTul"
+ ]
+ },
+ "thanks-thank": "махтал",
+ "thanks-button-thank": "{{GENDER:$1|Махтал}}",
+ "thanks-thank-tooltip": "Бу {{GENDER:$2|кыттааччыга}} махтал сурук {{GENDER:$1|ыытарга}}",
+ "echo-category-title-edit-thank": "Махтал",
+ "notification-thanks-diff-link": "көннөрүүҥ иһин",
+ "notification-thanks": "[[User:$1|$1]] эйиэхэ {{GENDER:$1|махтаммыт}} «[[:$3]]» сирэйгэ $2 иһин.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] эйиэхэ {{GENDER:$1|махтаммыт}} «$2» сирэйгэ көннөрүүҥ иһин.",
+ "notification-thanks-email-subject": "$1 эйиэхэ {{GENDER:$1|махтаммыт}} «{{SITENAME}}» ситим-сиргэ көннөрүүҥ иһин.",
+ "notification-thanks-email-batch-body": "$1 эйиэхэ {{GENDER:$1|махтаммыт}} «$2» сирэйгэ көннөрүүҥ иһин.",
+ "notification-flow-thanks": "[[User:$1|$1]] эйиэхэ {{GENDER:$5|махтаммыт}} [[:$4]] сирэйгэ «$3» тиэмэҕэ $2 иһин.",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|эйиэхэ}} {{GENDER:$1|махтаммыт}} $3 сирэйгэ «$2» тиэмэҕэ быһаарыыҥ иһин.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|эйиэхэ}} махтаммыт «{{SITENAME}}» ситим-сиргэ быһаарыыҥ иһин.",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|эйиэхэ}} {{GENDER:$1|махтаммыт}} «$2» ситим-сир $3 сирэйигэр тиэмэҕэ быһаарыыҥ иһин."
+}
diff --git a/Thanks/i18n/sc.json b/Thanks/i18n/sc.json
new file mode 100644
index 00000000..c6889637
--- /dev/null
+++ b/Thanks/i18n/sc.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Via maxima"
+ ]
+ },
+ "thanks-error-no-id-specified": "Depis ponni su revision ID po torrai gràtzias.",
+ "flow-thanks-confirmation-special": "Bolis torrai gràtzias po custu cumentu?"
+}
diff --git a/Thanks/i18n/scn.json b/Thanks/i18n/scn.json
new file mode 100644
index 00000000..c6c52eaa
--- /dev/null
+++ b/Thanks/i18n/scn.json
@@ -0,0 +1,53 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gmelfi",
+ "Pippinu"
+ ]
+ },
+ "thanks-desc": "Agghiunci culligamenti pi' ringrazziari a' l'utenti pî canciamenti, pî cummenti, etc.",
+ "thanks-thank": "ringrazzia",
+ "thanks-thanked": "{{GENDER:$1|fu ringrazziatu|fu ringrazziata}}",
+ "thanks-button-thank": "{{GENDER:$1|Ringrazzia}}",
+ "thanks-button-thanked": "{{GENDER:$1|Fu ringrazziatu|Fu ringrazziata}}",
+ "thanks-error-undefined": "Lu ringrazziamentu nun riniscìu. Pi' favuri prova n'autra vota.",
+ "thanks-error-invalidrevision": "L'ID dâ virsioni nun è vàlidu.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Hai passatu}} lu to lìmiti màssimu di ringrazziamenti. Pi' favuri aspetta na picca e ppoi prova n'autra vota.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Manna}} na nutìfica di ringrazziamentu a' {{GENDER:$2|stu utenti|sta utenti}}",
+ "thanks-confirmation2": "{{GENDER:$1|Mannari}} arringrazziamenti pi' stu canciamentu?",
+ "thanks-thanked-notice": "$1 ricivìu lu to ringrazziamentu pû {{GENDER:$2|so}} canciamentu.",
+ "thanks": "Manna ringrazziamenti",
+ "thanks-form-revid": "ID di virsioni dû canciamentu",
+ "thanks-already-thanked": "Già {{GENDER:$1|hai}} mannatu ringrazziamenti pi' stu canciamentu.",
+ "echo-pref-subscription-edit-thank": "Mi ringràzzia pi nu me canciamentu",
+ "echo-pref-tooltip-edit-thank": "Avvìsami quannu quarchidunu mi ringrazzia pi nu canciamentu ca fici.",
+ "echo-category-title-edit-thank": "Ringrazziamenti",
+ "notification-thanks-diff-link": "lu to canciamentu",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|ti ringrazziau}} pi $2 nta [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|ti ringrazziau}} pû to canciamentu nta $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|ti ringrazziau}} pû to canciamentu nta {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|ti ringrazziau}} pû to canciamentu nta $2.",
+ "notification-link-text-respond-to-user": "Rispunni a' l'utenti",
+ "log-name-thanks": "Riggistru dî ringrazziamenti",
+ "log-description-thanks": "Ccassutta cc'è na lista di l'utenti chi' furu ringrazziati di autri utenti.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|ringrazziau}} a' {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 lu riggistru dî ringrazziamenti",
+ "thanks-error-no-id-specified": "Hâ' spicificari n'ID di virsioni pi' ringrazziari.",
+ "thanks-confirmation-special": "Voi ringrazziari pi' stu canciamentu?",
+ "notification-link-text-view-post": "Talìa lu cummentu",
+ "thanks-error-invalidpostid": "L'ID dû missaggiu nun è vàlidu.",
+ "flow-thanks-confirmation-special": "Voi ringrazziari pi' stu cummentu?",
+ "flow-thanks-thanked-notice": "$1 ricivìu lu to ringrazziamentu pû {{GENDER:$2|so}} cummentu.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$5|ti}} {{GENDER:$1|ringrazziau}} pi $2 nta \"$3\" supra a' [[:$4]].",
+ "notification-flow-thanks-post-link": "lu to cummentu",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$4|ti}} {{GENDER:$1|ringrazziau}} pû to cummentu supra a' \"$2\" nta $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$2|ti}} {{GENDER:$1|ringrazziau}} pû to cummentu supra a' {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$4|ti}} {{GENDER:$1|ringrazziau}} pû to cummentu supra a' \"$2\" nta $3.",
+ "apihelp-flowthank-description": "Manna na nutìfica di ringrazziamentu pûn cummentu Flow.",
+ "apihelp-flowthank-param-postid": "L'UUID dû missaggiu pû quali si ringrazzia.",
+ "apihelp-flowthank-example-1": "Manna ringrazziamenti pû cummentu cu' UUID xyz789",
+ "apihelp-thank-description": "Manna na nutìfica di ringrazziamentu pûn cuntribbuturi.",
+ "apihelp-thank-param-rev": "L'ID dâ virsioni pâ quali si ringrazzia a' quarchidunu.",
+ "apihelp-thank-param-source": "Na stringa curta chi' discrivi la fonti dâ richiesta, ad esempiu \"diff\" o \"history\".",
+ "apihelp-thank-example-1": "Manna ringrazziamenti pâ virsioni di ID 456, unni la fonti è na pàggina di cunfrontu tra virsioni"
+}
diff --git a/Thanks/i18n/sco.json b/Thanks/i18n/sco.json
new file mode 100644
index 00000000..699b3c7d
--- /dev/null
+++ b/Thanks/i18n/sco.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "John Reid"
+ ]
+ },
+ "notification-link-text-view-post": "See comment",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|thankt}} {{GENDER:$5|ye}} fer $2 in \"$3\" oan [[:$4]].",
+ "notification-flow-thanks-post-link": "yer comment",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|thankt}} {{GENDER:$4|ye}} fer yer comment in \"$2\" oan $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|thankt}} {{GENDER:$2|ye}} fer yer comment oan {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|thankt}} {{GENDER:$4|ye}} fer yer comment in \"$2\" oan $3."
+}
diff --git a/Thanks/i18n/sdh.json b/Thanks/i18n/sdh.json
new file mode 100644
index 00000000..5636ee10
--- /dev/null
+++ b/Thanks/i18n/sdh.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kurdbuddha"
+ ]
+ },
+ "echo-category-title-edit-thank": "سپاس"
+}
diff --git a/Thanks/i18n/sgs.json b/Thanks/i18n/sgs.json
new file mode 100644
index 00000000..3f2df29f
--- /dev/null
+++ b/Thanks/i18n/sgs.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hugo.arg"
+ ]
+ },
+ "thanks-thank": "padiekvuotė",
+ "thanks-button-thank": "Padiekavuotė",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|padiekavuojė}} Tamstā ož Tamstas pakeitėma poslapī $2."
+}
diff --git a/Thanks/i18n/sh.json b/Thanks/i18n/sh.json
new file mode 100644
index 00000000..2f447bac
--- /dev/null
+++ b/Thanks/i18n/sh.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kolega2357"
+ ]
+ },
+ "thanks-desc": "Dodaje mogućnost zahvaljivanja u pregledu historije i pregledu razlika između izmena",
+ "thanks-thank": "zahvali se",
+ "thanks-thanked": "{{GENDER:$1|zahvalio se|zahvalila se}}",
+ "notification-link-text-respond-to-user": "Odgovori korisniku",
+ "log-name-thanks": "Evidencija zahvaljivanja",
+ "log-description-thanks": "Ispod se nalazi spisak korisnika kojima su se drugi korisnici zahvalili.",
+ "logentry-thanks-thank": "$1 se {{GENDER:$2|zahvalio|zahvalila}} {{GENDER:$4|korisniku|korisnici}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 evidencija zahvaljivanja"
+}
diff --git a/Thanks/i18n/shn.json b/Thanks/i18n/shn.json
new file mode 100644
index 00000000..ec1fa7db
--- /dev/null
+++ b/Thanks/i18n/shn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saimawnkham"
+ ]
+ },
+ "thanks-thank": "ၶွပ်ႈၸႂ်ထိုင်"
+}
diff --git a/Thanks/i18n/sk.json b/Thanks/i18n/sk.json
new file mode 100644
index 00000000..93e39d66
--- /dev/null
+++ b/Thanks/i18n/sk.json
@@ -0,0 +1,34 @@
+{
+ "@metadata": {
+ "authors": [
+ "Sudo77(new)",
+ "Teslaton"
+ ]
+ },
+ "thanks-desc": "Pridáva odkazy na poďakovanie do histórie a zobrazenia rozdielov",
+ "thanks-thank": "poďakovať",
+ "thanks-thanked": "{{GENDER:$1|poďakoval}}",
+ "thanks-button-thank": "{{GENDER:$1|Ďakujem}}",
+ "thanks-button-thanked": "{{GENDER:$1|Poďakoval}}",
+ "thanks-error-undefined": "Poďakovanie sa nepodarilo. Skúste to prosím znova.",
+ "thanks-error-invalidrevision": "ID revízie je neplatné.",
+ "thanks-error-ratelimited": "Prekročili ste rýchlostný limit. Prosím počkajte chvíľu a skúste to znova.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Poslať}} {{GENDER:$2|tomuto redaktorovi|tejto redaktorke}} poďakovanie",
+ "thanks-confirmation2": "{{GENDER:$1|Poďakovať}} za túto úpravu?",
+ "thanks-thanked-notice": "$1 bol upozornený, že sa vám páčila {{GENDER:$2| jeho|jej|ich}} úprava.",
+ "echo-pref-subscription-edit-thank": "poďakuje mi niekto za moje úpravy",
+ "echo-pref-tooltip-edit-thank": "Upozornite ma, ak mi niekto poďakuje za moju úpravu.",
+ "echo-category-title-edit-thank": "poďakovanie",
+ "notification-thanks-diff-link": "vašu úpravu",
+ "notification-thanks": "[[User:$1|$1]] vám {{GENDER:$1|poďakoval|poďakovala}} za $2 stránky [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vám {{GENDER:$1|poďakoval|poďakovala}} za úpravu stránky $2.",
+ "notification-thanks-email-subject": "$1 vám {{GENDER:$1|poďakoval|poďakovala}} za vašu úpravu na {{grammar:6sg|{{SITENAME}}}}",
+ "notification-thanks-email-batch-body": "$1 vám {{GENDER:$1|poďakoval|poďakovala}} za úpravu stránky $2.",
+ "notification-link-text-respond-to-user": "Reagovať na redaktora",
+ "log-name-thanks": "Záznam poďakovaní",
+ "log-description-thanks": "Nižšie je uvedený zoznam redaktorov, ktorým ostatný redaktori poďakovali.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|poďakoval|poďakovala}} {{GENDER:$4|redaktorovi|redaktorke}} $3",
+ "log-show-hide-thanks": "$1 záznam poďakovaní",
+ "thanks-confirmation-special": "Chcete poďakovať za túto úpravu?",
+ "flow-thanks-confirmation-special": "Chcete poďakovať za tento komentár?"
+}
diff --git a/Thanks/i18n/sl.json b/Thanks/i18n/sl.json
new file mode 100644
index 00000000..f628df47
--- /dev/null
+++ b/Thanks/i18n/sl.json
@@ -0,0 +1,47 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dbc334",
+ "Eleassar",
+ "Matej1234",
+ "Yerpo"
+ ]
+ },
+ "thanks-desc": "Doda povezave za zahvalo uporabnikom za urejanja, pripombe itn.",
+ "thanks-thank": "zahvala",
+ "thanks-thanked": "{{GENDER:$1|zahvala je objavljena}}",
+ "thanks-button-thank": "{{GENDER:$1|Zahvala}}",
+ "thanks-button-thanked": "{{GENDER:$1|Zahvala je objavljena|Zahvala je objavljena}}",
+ "thanks-error-undefined": "Zahvala ni uspela. Prosimo, poskusite znova.",
+ "thanks-error-invalidrevision": "ID-številka redakcije ni veljavna.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Presegli}} ste omejitev hitrosti. Prosimo, počakajte nekaj časa in nato poskusite znova.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Pošljite}} {{GENDER:$2|temu uporabniku|tej uporabnici}} zahvalo",
+ "thanks-thanked-notice": "$1 je {{GENDER:$2|prejel|prejela}} vašo zahvalo za {{GENDER:$2|njegovo|njeno}} urejanje.",
+ "thanks": "Pošljite zahvalo",
+ "thanks-form-revid": "ID redakcije za urejanje",
+ "thanks-already-thanked": "Za to urejanje {{GENDER:$1|ste}} že poslali zahvalo.",
+ "echo-pref-subscription-edit-thank": "Se mi zahvali za urejanje",
+ "echo-pref-tooltip-edit-thank": "Obvesti me, kadar se mi kdo zahvali za katero od mojih urejanj.",
+ "echo-category-title-edit-thank": "Zahvala",
+ "notification-thanks-diff-link": "vaše urejanje",
+ "notification-thanks": "[[User:$1|$1]] se vam je {{GENDER:$1|zahvalil|zahvalila}} za $2 strani »[[:$3]]«.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] se vam je {{GENDER:$1|zahvalil|zahvalila}} za urejanje strani »$2«.",
+ "notification-thanks-email-subject": "$1 se vam je {{GENDER:$1|zahvalil|zahvalila}} za urejanje {{GRAMMAR:rodilnik|{{SITENAME}}}}",
+ "notification-thanks-email-batch-body": "$1 se vam je {{GENDER:$1|zahvalil|zahvalila}} za urejanje strani »$2«.",
+ "notification-link-text-respond-to-user": "Odgovor uporabniku",
+ "log-name-thanks": "Dnevnik zahval",
+ "log-description-thanks": "Prikazan je dnevnik uporabnikov, ki se jim je kdo zahvalil.",
+ "logentry-thanks-thank": "$1 se je {{GENDER:$2|zahvalil|zahvalila}} {{GENDER:$4|uporabniku|uporabnici}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 dnevnik zahval",
+ "thanks-error-no-id-specified": "Določiti morate ID redakcije, da se lahko zahvalite.",
+ "thanks-confirmation-special": "Se želite zahvaliti za to urejanje?",
+ "notification-link-text-view-post": "Ogled pripombe",
+ "thanks-error-invalidpostid": "ID objave ni veljaven.",
+ "flow-thanks-confirmation-special": "Se želite zahvaliti za to pripombo?",
+ "flow-thanks-thanked-notice": "$1 je {{GENDER:$2|prejel|prejela}} vašo zahvalo za {{GENDER:$2|njegovo|njeno}} pripombo.",
+ "notification-flow-thanks": "[[User:$1|$1]] se {{GENDER:$5|vam}} je {{GENDER:$1|zahvalil|zahvalila|zahvalil(-a)}} za $2 v »$3« na [[:$4]].",
+ "notification-flow-thanks-post-link": "vašo pripombo",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] se {{GENDER:$4|vam}} je {{GENDER:$1|zahvalil|zahvalila|zahvalil(-a)}} za vašo pripombo v »$2« na $3.",
+ "notification-flow-thanks-email-subject": "$1 se {{GENDER:$2|vam}} je {{GENDER:$1|zahvalil|zahvalila|zahvalil(-a)}} za vašo pripombo na {{GRAMMAR:mestnik|{{SITENAME}}}}",
+ "notification-flow-thanks-email-batch-body": "$1 se {{GENDER:$4|vam}} je {{GENDER:$1|zahvalil|zahvalila|zahvalil(-a)}} za vašo pripombo v »$2« na $3."
+}
diff --git a/Thanks/i18n/sr-ec.json b/Thanks/i18n/sr-ec.json
new file mode 100644
index 00000000..1c4472fd
--- /dev/null
+++ b/Thanks/i18n/sr-ec.json
@@ -0,0 +1,46 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01",
+ "Милан Јелисавчић"
+ ]
+ },
+ "thanks-desc": "Додаје везе за захваљивање корисницима за њихове измене, коментаре итд.",
+ "thanks-thank": "захвали се",
+ "thanks-thanked": "{{GENDER:$1|захваљено}}",
+ "thanks-button-thank": "{{GENDER:$1|Захвали се}}",
+ "thanks-button-thanked": "{{GENDER:$1|Захвалили сте се}}",
+ "thanks-error-undefined": "Захваљивање није успело. Покушајте поново.",
+ "thanks-error-invalidrevision": "ID измене је погрешан.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Прекорачили сте}} ваше ограничење за оцењивање. Сачекајте неко време и затим покушајте поново.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Пошаљите}} захвалницу {{GENDER:$2|овом кориснику|овој корисници}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Откажи}} захваљивање",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Пошаљи}} захвалницу",
+ "thanks-confirmation2": "Желите ли да се {{GENDER:$1|захвалите}} за ову измену?",
+ "thanks-thanked-notice": "$1 је {{GENDER:$2|обавештен да сте му се захвалили|обавештена да сте јој се захвалили}}.",
+ "thanks": "Захвали се",
+ "thanks-form-revid": "ID (број) измене",
+ "thanks-already-thanked": "{{GENDER:$1|Већ}} сте се захвалили за ову измену.",
+ "echo-pref-tooltip-edit-thank": "Обавештава вас када вам се неко захвали за измену коју сте начинили.",
+ "echo-category-title-edit-thank": "Захвалнице",
+ "notification-thanks-diff-link": "вашој измени",
+ "notification-thanks": "[[User:$1|$1]] вам се {{GENDER:$1|захваљује}} на $2 странице [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] вам се {{GENDER:$1|захваљује}} за вашу измену на страници $2.",
+ "notification-thanks-email-subject": "$1 вам се {{GENDER:$1|захваљује}} за вашу измену на {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 вам се {{GENDER:$1|захваљује}} за вашу измену на страници $2.",
+ "notification-link-text-respond-to-user": "Одговори кориснику",
+ "log-name-thanks": "Дневник захваљивања",
+ "log-description-thanks": "Испод се налази списак корисника којима су се други корисници захвалили.",
+ "logentry-thanks-thank": "$1 се {{GENDER:$2|захвалио|захвалила}} {{GENDER:$4|кориснику|корисници}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 дневник захваљивања",
+ "thanks-error-no-id-specified": "Морате навести број измене да би сте се захвалили.",
+ "thanks-confirmation-special": "Желите ли да се захвалите за ову измену?",
+ "notification-link-text-view-post": "Види коментар",
+ "flow-thanks-confirmation-special": "Желите ли да се захвалите за овај коментар?",
+ "flow-thanks-thanked-notice": "$1 је {{GENDER:$2|обавештен да вам се свиђа његов|обавештена да вам се свиђа њен}} коментар.",
+ "notification-flow-thanks": "[[User:$1|$1]] вам {{GENDER:$5|се}} {{GENDER:$1|захваљује}} на $2 у теми „$3“ на страници [[:$4]].",
+ "notification-flow-thanks-post-link": "вашем коментару",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] вам {{GENDER:$4|се}} {{GENDER:$1|захваљује}} на вашем коментару у теми „$2“ на страници $3.",
+ "notification-flow-thanks-email-subject": "$1 вам се {{GENDER:$1|захваљује}} {{GENDER:$2|на}} вашем коментару на сајту {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 вам се {{GENDER:$1|захваљује}} {{GENDER:$4|на}} вашем коментару у теми „$2“ на страници $3."
+}
diff --git a/Thanks/i18n/sr-el.json b/Thanks/i18n/sr-el.json
new file mode 100644
index 00000000..a6339d9d
--- /dev/null
+++ b/Thanks/i18n/sr-el.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Milicevic01"
+ ]
+ },
+ "thanks-desc": "Dodaje veze za zahvaljivanje korisnicima za njihove izmene, komentare itd.",
+ "thanks-thank": "zahvali se",
+ "thanks-thanked": "{{GENDER:$1|zahvaljeno}}",
+ "thanks-button-thank": "{{GENDER:$1|Zahvali se}}",
+ "thanks-button-thanked": "{{GENDER:$1|Zahvalili ste se}}",
+ "thanks-error-undefined": "Zahvaljivanje nije uspelo. Pokušajte ponovo.",
+ "thanks-error-invalidrevision": "ID izmene je pogrešan.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Prekoračili ste}} vaše ograničenje za ocenjivanje. Sačekajte neko vreme i zatim pokušajte ponovo.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Pošaljite}} zahvalnicu {{GENDER:$2|ovom korisniku|ovoj korisnici}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Otkaži}} zahvaljivanje",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Pošalji}} zahvalnicu",
+ "thanks-confirmation2": "Želite li da se {{GENDER:$1|zahvalite}} za ovu izmenu?",
+ "thanks-thanked-notice": "$1 je {{GENDER:$2|obavešten da ste mu|obaveštena da ste joj}} se zahvalili.",
+ "thanks": "Zahvali se",
+ "thanks-form-revid": "ID (broj) izmene",
+ "thanks-already-thanked": "{{GENDER:$1|Već}} ste se zahvalili za ovu izmenu.",
+ "echo-pref-tooltip-edit-thank": "Obaveštava vas kada vam se neko zahvali za izmenu koju ste načinili.",
+ "echo-category-title-edit-thank": "Zahvalnice",
+ "notification-thanks-diff-link": "vašoj izmeni",
+ "notification-thanks": "[[User:$1|$1]] vam se {{GENDER:$1|zahvaljuje}} na $2 stranice [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] vam se {{GENDER:$1|zahvaljuje}} za vašu izmenu na stranici $2.",
+ "notification-thanks-email-subject": "$1 vam se {{GENDER:$1|zahvaljuje}} za vašu izmenu na {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 vam se {{GENDER:$1|zahvaljuje}} za vašu izmenu na stranici $2.",
+ "notification-link-text-respond-to-user": "Odgovori korisniku",
+ "log-name-thanks": "Dnevnik zahvaljivanja",
+ "log-description-thanks": "Ispod se nalazi spisak korisnika kojima su se drugi korisnici zahvalili.",
+ "logentry-thanks-thank": "$1 se {{GENDER:$2|zahvalio|zahvalila}} {{GENDER:$4|korisniku|korisnici}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 dnevnik zahvaljivanja",
+ "thanks-error-no-id-specified": "Morate navesti broj izmene da bi ste se zahvalili.",
+ "thanks-confirmation-special": "Želite li da se zahvalite za ovu izmenu?",
+ "notification-link-text-view-post": "Vidi komentar",
+ "flow-thanks-confirmation-special": "Želite li da se zahvalite za ovaj komentar?",
+ "flow-thanks-thanked-notice": "$1 je {{GENDER:$2|obavešten da vam se sviđa njegov|obaveštena da vam se sviđa njen}} komentar.",
+ "notification-flow-thanks": "[[User:$1|$1]] vam {{GENDER:$5|se}} {{GENDER:$1|zahvaljuje}} na $2 u temi „$3“ na stranici [[:$4]].",
+ "notification-flow-thanks-post-link": "vašem komentaru",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] vam {{GENDER:$4|se}} {{GENDER:$1|zahvaljuje}} na vašem komentaru u temi „$2“ na stranici $3.",
+ "notification-flow-thanks-email-subject": "$1 vam se {{GENDER:$1|zahvaljuje}} {{GENDER:$2|na}} vašem komentaru na sajtu {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 vam se {{GENDER:$1|zahvaljuje}} {{GENDER:$4|na}} vašem komentaru u temi „$2“ na stranici $3."
+}
diff --git a/Thanks/i18n/sv.json b/Thanks/i18n/sv.json
new file mode 100644
index 00000000..18b005b2
--- /dev/null
+++ b/Thanks/i18n/sv.json
@@ -0,0 +1,61 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ainali",
+ "Jopparn",
+ "MagnusA",
+ "Skalman",
+ "WikiPhoenix",
+ "Lokal Profil",
+ "Dan Koehl",
+ "Hannibal-reserv"
+ ]
+ },
+ "thanks-desc": "Lägger till länkar för att tacka användare för redigeringar, kommentarer, etc.",
+ "thanks-thank": "tacka",
+ "thanks-thanked": "{{GENDER:$1|tackat}}",
+ "thanks-button-thank": "{{GENDER:$1|Tacka}}",
+ "thanks-button-thanked": "{{GENDER:$1|Tackat}}",
+ "thanks-error-undefined": "Tackåtgärden misslyckades. Var god försök igen.",
+ "thanks-error-invalidrevision": "Versions-ID är inte giltigt.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Du}} har överskridit din frekvensgräns. Var god vänta en stund och försök igen.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Skicka}} ett tackmeddelande till denna {{GENDER:$2|användare}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|Avbryt}} tackmeddelandet",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|Skicka}} tackmeddelandet",
+ "thanks-confirmation2": "{{GENDER:$1|Skicka}} tack för denna redigering?",
+ "thanks-thanked-notice": "$1 meddelades att du gillade {{GENDER:$2|hans|hennes|dennes}} redigering.",
+ "thanks": "Skicka tack",
+ "thanks-form-revid": "Versions-ID för redigering",
+ "thanks-already-thanked": "{{GENDER:$1|Du}} har redan tackat för denna redigering.",
+ "echo-pref-subscription-edit-thank": "Tackar mig för min redigering",
+ "echo-pref-tooltip-edit-thank": "Meddela mig när någon tackar mig för en redigering jag har gjort.",
+ "echo-category-title-edit-thank": "Tack",
+ "notification-thanks-diff-link": "din redigering",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|tackade}} dig för $2 på [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|tackade}} dig för din redigering på $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|tackade}} dig för din redigering på {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|tackade}} dig för din redigering på $2.",
+ "notification-link-text-respond-to-user": "Svara användare",
+ "log-name-thanks": "Tacklogg",
+ "log-description-thanks": "Nedan är en lista med användare som fått tack från andra användare.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|tackade}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 tacklogg",
+ "thanks-error-no-id-specified": "Du måste ange ett versions-ID om du vill skicka tack.",
+ "thanks-confirmation-special": "Vill du skicka ett offentligt tack för denna redigering?",
+ "notification-link-text-view-post": "Visa kommentar",
+ "thanks-error-invalidpostid": "Inläggs-ID är inte giltigt.",
+ "flow-thanks-confirmation-special": "Vill du att offentligt skicka tack för denna kommentar?",
+ "flow-thanks-thanked-notice": "$1 meddelades att du gillade {{GENDER:$2|hans|hennes|dennes}} kommentar.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|tackade}} {{GENDER:$5|dig}} för $2 i \"$3\" på [[:$4]].",
+ "notification-flow-thanks-post-link": "din kommentar",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|tackade}} {{GENDER:$4|dig}} för din kommentar i \"$2\" på $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|tackade}} {{GENDER:$2|dig}} för din kommentar på {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|tackade}} {{GENDER:$4|dig}} för din kommentar i \"$2\" på $3.",
+ "apihelp-flowthank-description": "Skicka ett tack-meddelande för en Flow-kommentar.",
+ "apihelp-flowthank-param-postid": "UUID:et för det inlägg du vill tacka för.",
+ "apihelp-flowthank-example-1": "Skicka tack för kommentaren med UUID xyz789",
+ "apihelp-thank-description": "Skicka ett tack till en redigerare.",
+ "apihelp-thank-param-rev": "Sidversionens ID att tacka någon för.",
+ "apihelp-thank-param-source": "En kort sträng som beskriver källan för begäran, till exempel, \"diff\" eller \"history\".",
+ "apihelp-thank-example-1": "Skicka tack för version med ID 456, med en diff-sida som källa"
+}
diff --git a/Thanks/i18n/ta.json b/Thanks/i18n/ta.json
new file mode 100644
index 00000000..b3d956c1
--- /dev/null
+++ b/Thanks/i18n/ta.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jayarathina",
+ "Kalyanasundar",
+ "Shanmugamp7"
+ ]
+ },
+ "thanks-desc": "பயனர்களின் திருத்தங்கள், கருத்துகள் முதலியவற்றிற்கு நன்றி தெரிவிக்கும் இணைப்பை சேர்க்கும்.",
+ "thanks-thank": "நன்றியுரை",
+ "thanks-thanked": "{{GENDER:$1|நன்றியுரைக்கப்பட்டது}}",
+ "thanks-button-thank": "நன்றி!",
+ "thanks-button-thanked": "{{GENDER:$1|நன்றியுரைக்கப்பட்டது}}",
+ "thanks-error-undefined": "நன்றி தெரிவிப்பது தோல்வியடைந்தது. மீண்டும் முயற்சிக்கவும்.",
+ "thanks-error-invalidrevision": "திருத்த எண் தவறானது.",
+ "echo-pref-subscription-edit-thank": "என் தொகுப்புக்கு எனக்கு நன்றி கூறுகிறார்",
+ "echo-pref-tooltip-edit-thank": "நான் செய்த ஒரு தொகுப்புக்கு எனக்கு யாரேனும் நன்றி சொன்னால் எனக்கு தெரிவி.",
+ "echo-category-title-edit-thank": "நன்றி!",
+ "notification-thanks-diff-link": "உங்கள் தொகுப்பு",
+ "notification-thanks": "நீங்கள் $2 [[:$3]]இல் செய்த தொகுப்புக்கு [[User:$1|$1]] நன்றி தெரிவித்தார்.",
+ "notification-thanks-flyout2": "நீங்கள் $2இல் செய்த தொகுப்புக்கு [[User:$1|$1]] நன்றி தெரிவித்தார்.",
+ "notification-thanks-email-subject": "நீங்கள் {{SITENAME}}இல் செய்த தொகுப்புக்கு $1 நன்றி தெரிவித்தார்.",
+ "notification-thanks-email-batch-body": "நீங்கள் $2இல் செய்த தொகுப்புக்கு $1 நன்றி தெரிவித்தார்.",
+ "notification-link-text-respond-to-user": "பயனருக்கு பதிலளிக்க",
+ "log-name-thanks": "நன்றிகள் பதிவு",
+ "log-description-thanks": "பிற பயனர்களால் நன்றி தெரிவிக்கப்பட்ட பயனர்களின் பட்டியல் கீழே உள்ளது.",
+ "logentry-thanks-thank": "$1, $4க்கு நன்றி தெரிவித்தார்.",
+ "log-show-hide-thanks": "$1 நன்றிகள் பதிவு",
+ "thanks-error-no-id-specified": "நன்றி தெரிவிக்க உங்களது திருத்தியமைத்த அடையாள விவரத்தை தெரிவிக்கவும்",
+ "flow-thanks-confirmation-special": "இந்த கருத்துக்கு நன்றி தெரிவிக்க விரும்புகிறீர்களா ?"
+}
diff --git a/Thanks/i18n/tcy.json b/Thanks/i18n/tcy.json
new file mode 100644
index 00000000..8d7e2649
--- /dev/null
+++ b/Thanks/i18n/tcy.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "VASANTH S.N."
+ ]
+ },
+ "thanks-thank": "ಧನ್ಯವಾದೊಲು"
+}
diff --git a/Thanks/i18n/te.json b/Thanks/i18n/te.json
new file mode 100644
index 00000000..b4d7a3c6
--- /dev/null
+++ b/Thanks/i18n/te.json
@@ -0,0 +1,33 @@
+{
+ "@metadata": {
+ "authors": [
+ "Arjunaraoc",
+ "Veeven",
+ "Visdaviva",
+ "రహ్మానుద్దీన్",
+ "Kiranmayee"
+ ]
+ },
+ "thanks-desc": "చరిత్ర మరియు తేడా వీక్షణాలకు వాడుకరులకు ధన్యవాదములు తెలుపు లంకెలను జత చేస్తుంది",
+ "thanks-thank": "కృతజ్ఞత తెలుపు",
+ "thanks-thanked": "{{GENDER:$1|అభినందించారు}}",
+ "thanks-error-undefined": "కృతజ్ఞతల చర్య విఫలమైంది. దయచేసి మళ్ళీ ప్రయత్నించండి.",
+ "thanks-error-invalidrevision": "కూర్పుల ID చెల్లదు",
+ "thanks-error-ratelimited": "మీరు మీ రేట్ హద్దును దాటారు. దయచేసి కాసేపాగి తిరిగి ప్రయత్నించండి.",
+ "thanks-thank-tooltip": "{{GENDER:$2|వాడుకరి}}కి ఒక ధన్యవాద సూచన {{GENDER:$1|పంపండి}}",
+ "echo-pref-subscription-edit-thank": "నా మార్పుకు ధన్యవాదాలు",
+ "echo-pref-tooltip-edit-thank": "నేను చేసిన మార్పుకు ఎవరైనా ధన్యవాదాలు చెపితే నాకు తెలియజేయి",
+ "echo-category-title-edit-thank": "ధన్యవాదాలు",
+ "notification-thanks-diff-link": "మీ మార్పు",
+ "notification-thanks": "[[వాడుకరి:$1|$1]] ఇక్కడ [[:$3]] మీరు $2 కు {{GENDER:$1|ధన్యవాదాలు పంపారు}}.",
+ "notification-thanks-flyout2": "$2 పై మీరు చేసిన మార్పు కై మీకు [[User:$1|$1]] {{GENDER:$1|ధన్యవాదాలు పంపారు}}.",
+ "notification-thanks-email-subject": "{{SITENAME}} పై మీరు చేసిన మార్పుకు $1 {{GENDER:$1|ధన్యవాదాలు పంపారు}}",
+ "notification-thanks-email-batch-body": "$2 పై మీ మార్పుకు $1 మీకు {{GENDER:$1|ధన్యవాదాలు పంపారు}}.",
+ "notification-link-text-respond-to-user": "వాడుకరికి ప్రతిస్పందించండి",
+ "log-name-thanks": "ధన్యవాదాల చిట్టా",
+ "log-description-thanks": "క్రింది వాడుకరులు ఇతర వాడుకరుల నుండి ధన్యవాదాలు పొందారు.",
+ "logentry-thanks-thank": "$1 {{GENDER:$4|$3}} కు {{GENDER:$2|ధన్యవాదాలు పంపారు}}",
+ "log-show-hide-thanks": "$1 ధన్యవాదాల చిట్టా",
+ "thanks-confirmation-special": "ఈ మార్పునకు ధన్యవాదములు తెలుపుతారా?",
+ "flow-thanks-confirmation-special": "ఈ వ్యాఖ్యానానికి ధన్యవాదములు తెలుపుతారా?"
+}
diff --git a/Thanks/i18n/th.json b/Thanks/i18n/th.json
new file mode 100644
index 00000000..0f74ad2f
--- /dev/null
+++ b/Thanks/i18n/th.json
@@ -0,0 +1,45 @@
+{
+ "@metadata": {
+ "authors": [
+ "Horus",
+ "Octahedron80"
+ ]
+ },
+ "thanks-desc": "เพิ่มลิงก์ขอบคุณไปยังประวัติและการดูผลต่าง",
+ "thanks-thank": "ขอบคุณ",
+ "thanks-thanked": "กล่าวขอบคุณ",
+ "thanks-button-thank": "ขอบคุณ",
+ "thanks-button-thanked": "กล่าวขอบคุณแล้ว",
+ "thanks-error-undefined": "ปฏิบัติการขอบคุณล้มเหลว โปรดลองอีกครั้ง",
+ "thanks-error-invalidrevision": "หมายเลขประจำรุ่นไม่ถูกต้อง",
+ "thanks-error-ratelimited": "ึคุณได้กระทำเกินขีดจำกัดอัตราของคุณ โปรดรอสักครู่แล้วลองอีกครั้ง",
+ "thanks-thank-tooltip": "{{GENDER:$1|ส่ง}}การแจ้งขอบคุณไปยัง{{GENDER:$2|ผู้ใช้}}นี้",
+ "thanks-thanked-notice": "$1 ได้รับแจ้งว่าคุณถูกใจการแก้ไขของ{{GENDER:$2|เขา|เธอ|พวกเขา}}",
+ "thanks": "ส่งคำขอบคุณ",
+ "thanks-form-revid": "หมายเลขประจำรุ่นสำหรับแก้ไข",
+ "thanks-already-thanked": "คุณส่งคำขอบคุณสำหรับการแก้ไขนี้แล้ว",
+ "echo-pref-subscription-edit-thank": "กล่าวขอบคุณฉันสำหรับการแก้ไขของฉัน",
+ "echo-pref-tooltip-edit-thank": "แจ้งฉันเมื่อบางคนกล่าวขอบคุณฉันสำหรับการแก้ไขที่ฉันกระทำ",
+ "echo-category-title-edit-thank": "ขอบคุณ",
+ "notification-thanks-diff-link": "การแก้ไขของคุณ",
+ "notification-thanks": "[[ผู้ใช้:$1|$1]] กล่าวขอบคุณคุณสำหรับ $2 ใน [[:$3]]",
+ "notification-thanks-flyout2": "[[ผู้ใช้:$1|$1]] กล่าวขอบคุณคุณสำหรับการแก้ไขของคุณใน $2",
+ "notification-thanks-email-subject": "$1 กล่าวขอบคุณคุณสำหรับการแก้ไขของคุณใน{{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 กล่าวขอบคุณคุณสำหรับการแก้ไขของคุณใน $2",
+ "notification-link-text-respond-to-user": "สนองตอบผู้ใช้",
+ "log-name-thanks": "ปูมการขอบคุณ",
+ "log-description-thanks": "ด้านล่างนี้เป็นรายการผู้ใช้ที่ผู้ใช้อื่นกล่าวขอบคุณ",
+ "logentry-thanks-thank": "$1 กล่าวขอบคุณ {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1ปูมการขอบคุณ",
+ "thanks-error-no-id-specified": "คุณต้องเจาะจงเลขประจำรุ่นเพื่อส่งคำขอบคุณ",
+ "thanks-confirmation-special": "คุณต้องการส่งคำขอบคุณสำหรับการแก้ไขนี้หรือไม่",
+ "notification-link-text-view-post": "ดูความเห็น",
+ "thanks-error-invalidpostid": "เลขประจำโพสต์ไม่ถูกต้อง",
+ "flow-thanks-confirmation-special": "คุณต้องการส่งคำขอบคุณสำหรับความเห็นนี้หรือไม่",
+ "flow-thanks-thanked-notice": "$1 ได้รับแจ้งว่าคุณชอบความเห็นของ{{GENDER:$2|เขา|เธอ|พวกเขา}}แล้ว",
+ "notification-flow-thanks": "[[ผู้ใช้:$1|$1]] กล่าวขอบคุณคุณสำหรับ $2 ใน \"$3\" ในหน้า [[:$4]]",
+ "notification-flow-thanks-post-link": "ความเห็นของคุณ",
+ "notification-flow-thanks-flyout": "[[ผู้ใช้:$1|$1]] กล่าวขอบคุณคุณสำหรับความเห็นของคุณในหัวข้อ \"$2\" ในหน้า $3",
+ "notification-flow-thanks-email-subject": "$1 กล่าวขอบคุณคุณสำหรับความเห้นของคุณใน{{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 กล่าวขอบคุณคุณสำหรับความเห็นของคุณในหัวข้อ \"$2\" ในหน้า $3"
+}
diff --git a/Thanks/i18n/tl.json b/Thanks/i18n/tl.json
new file mode 100644
index 00000000..c1ef07a4
--- /dev/null
+++ b/Thanks/i18n/tl.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw",
+ "Sky Harbor"
+ ]
+ },
+ "thanks-desc": "Nagdaragdag ng mga kawing ng pasasalamat sa pagtanaw ng kasaysayan at pagkakaiba",
+ "thanks-thank": "pasalamatan",
+ "thanks-thanked": "{{GENDER:$1|pinasalamatan na}}",
+ "thanks-button-thank": "Pasalamatan",
+ "thanks-button-thanked": "{{GENDER:$1|Pinasalamatan na}}",
+ "thanks-error-undefined": "Nabigo ang kilos ng pagpapasalamat. Mangyaring subukan muli.",
+ "thanks-error-invalidrevision": "Walang saysay ang ID ng rebisyon.",
+ "thanks-error-ratelimited": "Nilampasan mo ang iyong hangganan ng antas. Mangyaring maghintay ng ilang sandali at subukan muli.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Magpadala}} ng isang pabatid ng pasasalamat sa {{GENDER:$2|tagagamit}} na ito",
+ "thanks-thanked-notice": "Sinabihan si $1 na ginusto mo ang {{GENDER:$2|kaniyang|kanilang}} pagbabago.",
+ "echo-pref-subscription-edit-thank": "Pinasalamatan ako para sa aking pagbabago",
+ "echo-pref-tooltip-edit-thank": "Ipabatid sa akin kapag may nagpasalamat sa akin para sa isang pagbabagong naigawa ko.",
+ "echo-category-title-edit-thank": "Pasasalamat",
+ "notification-thanks-diff-link": "ang pagbabago mo",
+ "notification-thanks": "{{GENDER:$1|Pinasalamatan}} ka ni [[User:$1|$1]] para sa $2 sa [[:$3]].",
+ "notification-thanks-flyout2": "{{GENDER:$1|Pinasalamatan}} ka ni [[User:$1|$1]] para sa pagbabago mo sa $2.",
+ "notification-thanks-email-subject": "{{GENDER:$1|Pinasalamatan}} ka ni $1 para sa pagbabago mo sa {{SITENAME}}",
+ "notification-thanks-email-batch-body": "{{GENDER:$1|Pinasalamatan}} ka ni $1 para sa pagbabago mo sa $2.",
+ "notification-link-text-respond-to-user": "Tumugon sa tagagamit",
+ "log-name-thanks": "Tala ng pasasalamat",
+ "log-description-thanks": "Nasa ibaba ang isang tala ng mga tagagamit na pinasalamatan ng ibang tagagamit.",
+ "logentry-thanks-thank": "{{GENDER:$2|Pinasalamatan}} ni $1 si {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 ang tala ng pasasalamat"
+}
diff --git a/Thanks/i18n/tr.json b/Thanks/i18n/tr.json
new file mode 100644
index 00000000..92f26a6f
--- /dev/null
+++ b/Thanks/i18n/tr.json
@@ -0,0 +1,32 @@
+{
+ "@metadata": {
+ "authors": [
+ "Incelemeelemani",
+ "Rapsar"
+ ]
+ },
+ "thanks-desc": "Tarih ve fark görünümüne teşekkür bağlantısı ekler",
+ "thanks-thank": "teşekkür et",
+ "thanks-thanked": "{{GENDER:$1|teşekkür edildi}}",
+ "thanks-button-thank": "{{GENDER:$1|Teşekkür et}}",
+ "thanks-button-thanked": "{{GENDER:$1|Teşekkür}}",
+ "thanks-error-undefined": "Teşekkür iletilemedi. Lütfen tekrar deneyin.",
+ "thanks-error-invalidrevision": "Revizyon numarası geçerli değil.",
+ "thanks-error-ratelimited": "Gönderme limitini aştınız. Lütfen bekleyin ve tekrar deneyin.",
+ "thanks-thank-tooltip": "Bu {{GENDER:$2|kullanıcıya}} {{GENDER:$1|teşekkürlerini}} ilet",
+ "thanks-confirmation2": "Bu değişiklik için {{GENDER:$1|teşekkür etmek}} istiyor musunuz?",
+ "thanks-thanked-notice": "$1 kullanıcısına {{GENDER:$2|onu|onu|onları}} beğendiğiniz iletildi.",
+ "echo-pref-subscription-edit-thank": "Katkım için bana teşekkür edildi",
+ "echo-pref-tooltip-edit-thank": "Yaptığım katkılar için yapılan teşekkürleri bana bildir.",
+ "echo-category-title-edit-thank": "Teşekkürler",
+ "notification-thanks-diff-link": "değişikliğiniz",
+ "notification-thanks": "[[User:$1|$1]], [[:$3]] sayfasındaki $2 için size {{GENDER:$1|teşekkür}} etti.",
+ "notification-thanks-flyout2": "[[User:$1|$1]], $2 sayfasındaki değişikliğiniz için size {{GENDER:$1|teşekkür}} etti.",
+ "notification-thanks-email-subject": "$1 {{SITENAME}} değişikliği için {{GENDER:$1|teşekkür}} ediyor",
+ "notification-thanks-email-batch-body": "$1, $2 sayfasındaki değişikliğiniz için size {{GENDER:$1|teşekkür etti}}.",
+ "notification-link-text-respond-to-user": "Kullanıcıyı yanıtla",
+ "log-name-thanks": "Teşekkürler kayıtları",
+ "log-description-thanks": "Diğer teşekkür eden kullanıcılar aşağıda listelenmektedir.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|teşekkür}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 teşekkür kayıtları"
+}
diff --git a/Thanks/i18n/tt-cyrl.json b/Thanks/i18n/tt-cyrl.json
new file mode 100644
index 00000000..d7b73e19
--- /dev/null
+++ b/Thanks/i18n/tt-cyrl.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ilnur efende",
+ "Derslek"
+ ]
+ },
+ "thanks-thank": "рәхмәт",
+ "notification-thanks-flyout2": "$1 сезгә «$2» битендә ясаган кертемегез өчен рәхмәт әйтте.",
+ "notification-thanks-email-batch-body": "$1 сезгә «$2» битендә ясаган кертемегез өчен рәхмәт әйтте."
+}
diff --git a/Thanks/i18n/uk.json b/Thanks/i18n/uk.json
new file mode 100644
index 00000000..629c558f
--- /dev/null
+++ b/Thanks/i18n/uk.json
@@ -0,0 +1,49 @@
+{
+ "@metadata": {
+ "authors": [
+ "Aced",
+ "Andriykopanytsia",
+ "Base",
+ "Ата",
+ "Olion"
+ ]
+ },
+ "thanks-desc": "Додає посилання для дякування користувачам за редагування, коментарі тощо.",
+ "thanks-thank": "дякую",
+ "thanks-thanked": "{{GENDER:$1|подякував|подякувала}}",
+ "thanks-button-thank": "{{GENDER:$1|Подякувати}}",
+ "thanks-button-thanked": "{{GENDER:$1|Подякував|Подякувала}}",
+ "thanks-error-undefined": "Не вдалось подякувати. Спробуйте знову.",
+ "thanks-error-invalidrevision": "Неправильний ідентифікатор версії.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Ви}} перевищили свій ліміт частоти. Будь ласка, зачекайте деякий час, і спробуйте знову.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Надіслати}} сповіщення вдячності {{GENDER:$2|цьому користувачу|цій користувачці}}",
+ "thanks-confirmation2": "{{GENDER:$1|Подякувати}} за це редагування?",
+ "thanks-thanked-notice": "$1 {{GENDER:$1|був повідомлений|була повідомлена|були повідомлені}}, що вам сподобалися {{GENDER:$2|його|її|їхні}} зміни.",
+ "thanks": "Надіслати подяку",
+ "thanks-form-revid": "ІД редакції для редагування",
+ "thanks-already-thanked": "{{GENDER:$1|Ви}} вже надіслали подяки за це редагування.",
+ "echo-pref-subscription-edit-thank": "Дякує мені за мої редагування",
+ "echo-pref-tooltip-edit-thank": "Повідомляти, коли хтось дякує мені за редагування, зроблені мною.",
+ "echo-category-title-edit-thank": "вдячність",
+ "notification-thanks-diff-link": "Ваше редагування",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|подякував|подякувала}} Вам за $2 на [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|подякував|подякувала}} Вам за Ваше редагування на $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|подякував|подякувала}} Вам за Ваше редагування на {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|подякував|подякувала}} Вам за Ваше редагування на $2.",
+ "notification-link-text-respond-to-user": "Відгукнутися на користувача",
+ "log-name-thanks": "Журнал вдячностей",
+ "log-description-thanks": "Нижче наведено перелік користувачів, які подякували іншими користувачами.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|подякував|подякувала}} {{GENDER:$4|користувачу|користувачці}} $3",
+ "log-show-hide-thanks": "журнал подяк $1",
+ "thanks-error-no-id-specified": "Слід указати ID версії, щоб відправити подяку.",
+ "thanks-confirmation-special": "Ви хочете надіслати подяку за це редагування?",
+ "notification-link-text-view-post": "Перегляд коментаря",
+ "thanks-error-invalidpostid": "Неприпустимий ідентифікатор допису.",
+ "flow-thanks-confirmation-special": "Ви хочете надіслати подяку за цей коментар?",
+ "flow-thanks-thanked-notice": "$1 було сповіщено, що вам подобається {{GENDER:$2|його|її|їх}} коментар.",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|подякував|подякувала}} {{GENDER:$5|Вам}} за $2 у \"$3\" на [[:$4]].",
+ "notification-flow-thanks-post-link": "ваш коментар",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|подякував|подякувала}} {{GENDER:$4|Вам}} за Ваш коментар у \"$2\" на $3.",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|подякував|подякувала}} {{GENDER:$2|Вам}} за Ваш коментар на {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|подякував|подякувала}} {{GENDER:$4|Вам}} за Ваш коментар у \"$2\" на $3."
+}
diff --git a/Thanks/i18n/ur.json b/Thanks/i18n/ur.json
new file mode 100644
index 00000000..a3958ff7
--- /dev/null
+++ b/Thanks/i18n/ur.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Noor2020",
+ "عثمان خان شاہ"
+ ]
+ },
+ "thanks-thank": "شکریہ",
+ "thanks-thanked": "{{GENDER:$1|کا شکریہ ادا کیا}}"
+}
diff --git a/Thanks/i18n/uz.json b/Thanks/i18n/uz.json
new file mode 100644
index 00000000..48a5c7fc
--- /dev/null
+++ b/Thanks/i18n/uz.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "Abdulla",
+ "Nataev",
+ "Sociologist"
+ ]
+ },
+ "thanks-thank": "rahmat",
+ "thanks-thanked": "{{GENDER:$1|rahmat aytildi}}",
+ "thanks-button-thank": "{{GENDER:$1|Rahmat}}",
+ "thanks-button-thanked": "{{GENDER:$1|Rahmat aytildi}}",
+ "thanks-error-undefined": "Rahmat yetkazilmadi. Iltimos takrorlang.",
+ "thanks-error-invalidrevision": "Versiya raqami notoʻgʻri.",
+ "thanks-error-ratelimited": "{{GENDER:$1|Siz}} bu amallarni haddan oshiq tez bajaryapsiz. Iltimos bir oz kuting va takrorlang.",
+ "thanks-thank-tooltip": "Bu {{GENDER:$2|foydalanuvchiga}} rahmat {{GENDER:$1|ayt}}",
+ "thanks-thanked-notice": "$1ga {{GENDER:$2|uning|uning|ularning}} tahririni yoqtirganingiz haqida bildirildi.",
+ "echo-pref-subscription-edit-thank": "Tahririm uchun menga rahmat aytildi",
+ "echo-pref-tooltip-edit-thank": "Tahririm uchun rahmat aytilsa menga bildir.",
+ "echo-category-title-edit-thank": "Rahmat",
+ "notification-thanks-diff-link": "tahriringiz",
+ "notification-thanks": "[[User:$1|$1]] [[:$3]] sahifasidagi $2 uchun sizga {{GENDER:$1|rahmat aytdi}}.",
+ "notification-thanks-flyout2": "[[User:$1|$1]] $2 sahifasidagi tahriringiz uchun sizga {{GENDER:$1|rahmat}} aytdi.",
+ "notification-thanks-email-subject": "$1 {{SITENAME}} tahriri uchun sizga {{GENDER:$1|rahmat}} aytdi",
+ "notification-thanks-email-batch-body": "$1 $2 sahifasidagi tahriringiz uchun sizga {{GENDER:$1|rahmat aytdi}}.",
+ "notification-link-text-respond-to-user": "Foydalanuvchiga javob qil",
+ "log-name-thanks": "Rahmatlar qaydi",
+ "log-description-thanks": "Quyida rahmat aytilgan foydalanuvchilar roʻyxati keltirilgan.",
+ "logentry-thanks-thank": "$1 {{GENDER:$4|$3}}ga {{GENDER:$2|rahmat aytdi}}",
+ "log-show-hide-thanks": "Rahmatlar qaydini $1"
+}
diff --git a/Thanks/i18n/vec.json b/Thanks/i18n/vec.json
new file mode 100644
index 00000000..8213a876
--- /dev/null
+++ b/Thanks/i18n/vec.json
@@ -0,0 +1,29 @@
+{
+ "@metadata": {
+ "authors": [
+ "Candalua"
+ ]
+ },
+ "thanks-thank": "ringrassia",
+ "thanks-thanked": "{{GENDER:$1|ringrassià}}",
+ "thanks-button-thank": "Ringrassia",
+ "thanks-button-thanked": "{{GENDER:$1|Ringrassià}}",
+ "thanks-error-undefined": "Eror durante el ringrassiamento. Próa da novo.",
+ "thanks-error-invalidrevision": "L'ID de la version no'l xe mia valido.",
+ "thanks-error-ratelimited": "Te ghè superà el limite massimo de ringrassiamenti. Speta un fià e ripróa.",
+ "thanks-thank-tooltip": "{{GENDER:$1|Màndeghe}} na notifica de ringrassiamento a {{GENDER:$2|sto|sta}} utente qua",
+ "thanks-thanked-notice": "Te ghè dito a $1 che te piase {{GENDER:$2|la so}} modifica.",
+ "echo-pref-subscription-edit-thank": "I me ringrassia par na me modifica",
+ "echo-pref-tooltip-edit-thank": "Avìseme co che qualcheduni me ringrassia par na modifica che gò fato.",
+ "echo-category-title-edit-thank": "Ringrassiamenti",
+ "notification-thanks-diff-link": "la to modifica",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|el|la}} te gà ringrassià par $2 su [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|el|la}} te gà ringrassià par la to modifica su $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|el|la}} te gà ringrassià par la to modifica su {{SITENAME}}.",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|el|la}} te gà ringrassià par la to modifica su $2.",
+ "notification-link-text-respond-to-user": "Rispóndighe a l'utente",
+ "log-name-thanks": "Registro dei ringrassiamenti",
+ "log-description-thanks": "Sta qua xe na lista dei utenti ringrassià da altri utenti.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|el|la}} gà ringrassià {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 registro dei ringrassiamenti"
+}
diff --git a/Thanks/i18n/vi.json b/Thanks/i18n/vi.json
new file mode 100644
index 00000000..74b8e891
--- /dev/null
+++ b/Thanks/i18n/vi.json
@@ -0,0 +1,52 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen",
+ "Prenn",
+ "Trần Nguyễn Minh Huy",
+ "Max20091",
+ "Dinhxuanduyet"
+ ]
+ },
+ "thanks-desc": "Thêm các liên kết để cảm ơn người dùng vì sửa đổi, bình luận, v.v.",
+ "thanks-thank": "cảm ơn",
+ "thanks-thanked": "{{GENDER:$1}}đã cảm ơn",
+ "thanks-button-thank": "{{GENDER:$1}}Cảm ơn",
+ "thanks-button-thanked": "{{GENDER:$1}}Đã cảm ơn",
+ "thanks-error-undefined": "Cảm ơn thất bại. Xin vui lòng thử lại.",
+ "thanks-error-invalidrevision": "Số phiên bản không hợp lệ.",
+ "thanks-error-ratelimited": "{{GENDER:$1}}Bạn đã vượt quá giới hạn tốc độ. Xin vui lòng thử lại lát nữa.",
+ "thanks-thank-tooltip": "{{GENDER:$1}}Gửi thông báo cảm ơn cho {{GENDER:$2}}người dùng này",
+ "thanks-thank-tooltip-no": "{{GENDER:$1}}Hủy bỏ lời cảm ơn",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1}}Gửi lời cảm ơn",
+ "thanks-confirmation2": "{{GENDER:$1}}Gửi lời cảm ơn vì sửa đổi này?",
+ "thanks-thanked-notice": "$1 đã nhận lời cảm ơn của bạn vì sửa đổi của {{GENDER:$2}}họ.",
+ "thanks": "Gửi lời cảm ơn",
+ "thanks-form-revid": "ID phiên bản sửa đổi",
+ "thanks-already-thanked": "{{GENDER:$1}}Bạn đã gửi lời cảm ơn về sửa đổi này rồi.",
+ "echo-pref-subscription-edit-thank": "Cảm ơn tôi vì một sửa đổi của tôi",
+ "echo-pref-tooltip-edit-thank": "Báo cho tôi biết khi nào người ta cảm ơn tôi vì một sửa đổi của tôi.",
+ "echo-category-title-edit-thank": "Cảm ơn",
+ "notification-thanks-diff-link": "sửa đổi của bạn",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1}}cảm ơn bạn vì $2 tại [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1}}cảm ơn bạn vì sửa đổi của bạn tại $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1}}cảm ơn bạn vì sửa đổi của bạn tại {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1}}cảm ơn bạn vì sửa đổi của bạn tại $2.",
+ "notification-link-text-respond-to-user": "Trả lời cho người dùng",
+ "log-name-thanks": "Nhật trình cảm ơn",
+ "log-description-thanks": "Dưới đây có danh sách những người dùng được người khác cảm ơn.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2}}đã cảm ơn {{GENDER:$4}}$3",
+ "log-show-hide-thanks": "$1 nhật trình cảm ơn",
+ "thanks-error-no-id-specified": "Bạn phải định rõ số phiên bản để gửi cảm ơn.",
+ "thanks-confirmation-special": "Bạn có muốn gửi lời cảm ơn vì sửa đổi này?",
+ "notification-link-text-view-post": "Xem bình luận",
+ "thanks-error-invalidpostid": "Số bài đăng không hợp lệ.",
+ "flow-thanks-confirmation-special": "Bạn có muốn gửi lời cảm ơn cho lời bình luận này?",
+ "flow-thanks-thanked-notice": "$1 đã nhận lời cảm ơn của bạn vì lời bình luận của {{GENDER:$2}}họ.",
+ "notification-flow-thanks": "[[User:$1|$1]] cảm ơn {{GENDER:$5}}bạn $2 về “$3” tại [[:$4]].",
+ "notification-flow-thanks-post-link": "đã bình luận",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] cảm ơn {{GENDER:$4}}bạn đã bình luận về “$2” tại $3.",
+ "notification-flow-thanks-email-subject": "$1 cảm ơn {{GENDER:$2}}bạn đã bình luận trên {{SITENAME}}",
+ "notification-flow-thanks-email-batch-body": "$1 cảm ơn {{GENDER:$4}}bạn đã bình luận về “$2” tại $3.",
+ "apihelp-thank-param-rev": "Số thay đổi để cảm ơn ai đó."
+}
diff --git a/Thanks/i18n/vo.json b/Thanks/i18n/vo.json
new file mode 100644
index 00000000..196380f2
--- /dev/null
+++ b/Thanks/i18n/vo.json
@@ -0,0 +1,24 @@
+{
+ "@metadata": {
+ "authors": [
+ "Malafaya"
+ ]
+ },
+ "thanks-thank": "danön",
+ "thanks-thanked": "{{GENDER:$1|pedanon}}",
+ "thanks-button-thank": "{{GENDER:$1|Danön}}",
+ "thanks-button-thanked": "{{GENDER:$1|Pedanon}}",
+ "thanks-thank-tooltip": "{{GENDER:$1|Sedön}} nunädi dana {{GENDER:$2|gebane}} at",
+ "echo-pref-subscription-edit-thank": "Danon obi pro redakam oba",
+ "echo-category-title-edit-thank": "Dans",
+ "notification-thanks-diff-link": "redakam olik",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|edanon}} oli pro $2 su [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|edanon}} oli pro redakam olik su $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|edanon}} oli pro redakam olik su {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|edanon}} oli pro redakam olik su $2.",
+ "notification-link-text-respond-to-user": "Gespikön gebane",
+ "log-name-thanks": "Jenotalised danas",
+ "log-description-thanks": "Dono binon lised gebanas fa gebans votik pedanöls.",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|edanon}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 jenotalisedi danas"
+}
diff --git a/Thanks/i18n/yi.json b/Thanks/i18n/yi.json
new file mode 100644
index 00000000..5ac791c5
--- /dev/null
+++ b/Thanks/i18n/yi.json
@@ -0,0 +1,31 @@
+{
+ "@metadata": {
+ "authors": [
+ "פוילישער"
+ ]
+ },
+ "thanks-desc": "שטעלט צו לינקען צו באדאנקען באניצער פאר רעדאקטירונגען, הערות, אא\"וו.",
+ "thanks-thank": "דאַנק",
+ "thanks-thanked": "{{GENDER:$1|געדאַנקט}}",
+ "thanks-button-thank": "{{GENDER:$1|דאַנקען}}",
+ "thanks-button-thanked": "{{GENDER:$1|געדאַנקט}}",
+ "thanks-error-undefined": "דאנק אקציע אדורכגעפאלן. זייט אזוי גוט פרובירט נאכאמאל.",
+ "thanks-error-invalidrevision": "רעוויסיע אידענטיפיצורונג נישט גילטיק.",
+ "thanks-thank-tooltip": "{{GENDER:$1|שיקן}} א דאנק מודעה צו {{GENDER:$2|דעם באניצער}}",
+ "thanks-confirmation2": "{{GENDER:$1|שיקן}} אן עפנטלעכער ייש\"כ פאר דער רעדאקטירונג?",
+ "thanks": "שיקן א דאנק",
+ "thanks-already-thanked": "{{GENDER:$1|איר}} האט שוין געשיקט א דאנק פאר דער רעדאקטירונג.",
+ "echo-pref-subscription-edit-thank": "דאנקט מיך פאר מיין רעדאקטירונג",
+ "echo-pref-tooltip-edit-thank": "זיי מיך מודיע ווען איינער דאנקט מיך פאר א רעדאקטירונג מיינע.",
+ "echo-category-title-edit-thank": "אַ דאַנק",
+ "notification-thanks-diff-link": "אײַער רעדאקטירונג",
+ "notification-thanks": "[[User:$1|$1]] {{GENDER:$1|האט געדאנקט}} דיך פֿאר $2 אויף [[:$3]].",
+ "notification-thanks-flyout2": "[[User:$1|$1]] {{GENDER:$1|האט געדאנקט}} אײַך פֿאר אײַער רעדאקטירונג אויף $2.",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|האט אײַך געדאנקט}} פאר אײַער רעדאקטירונג אויף {{SITENAME}}",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|האט אײַך געדאנקט}} פאר אייר רעדאקטירונג אויף $2",
+ "notification-link-text-respond-to-user": "ענטפערן באניצער",
+ "log-name-thanks": "דאנק־לאגבוך",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|האט געדאנקט}} {{GENDER:$4|$3}}",
+ "thanks-confirmation-special": "ווילט איר שיקן עפנטלעך א דאַנק פאר דער רעדאַקטירונג?",
+ "notification-flow-thanks-post-link": "אייער הערה"
+}
diff --git a/Thanks/i18n/yue.json b/Thanks/i18n/yue.json
new file mode 100644
index 00000000..7e12f2a1
--- /dev/null
+++ b/Thanks/i18n/yue.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Antonytse",
+ "William915",
+ "Yueman"
+ ]
+ },
+ "thanks-thank": "多謝",
+ "thanks-thanked": "{{GENDER:$1|多謝咗}}",
+ "thanks-button-thank": "{{GENDER:$1|多謝}}",
+ "thanks-button-thanked": "{{GENDER:$1|多謝咗}}",
+ "thanks-error-undefined": "多謝失敗,麻煩再試多次。",
+ "thanks-error-invalidrevision": "錯嘅版本號",
+ "thanks-thank-tooltip": "{{GENDER:$1|送}}封多謝信畀呢個{{GENDER:$2|用戶}}",
+ "echo-category-title-edit-thank": "人哋嘅多謝"
+}
diff --git a/Thanks/i18n/zh-hans.json b/Thanks/i18n/zh-hans.json
new file mode 100644
index 00000000..71c1ced0
--- /dev/null
+++ b/Thanks/i18n/zh-hans.json
@@ -0,0 +1,64 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chiefwei",
+ "Fantasticfears",
+ "Hzy980512",
+ "Liuxinyu970226",
+ "Qiyue2001",
+ "Xiaomingyan",
+ "Yfdyh000",
+ "Zhuyifei1999",
+ "Mywood",
+ "Impersonator 1",
+ "王庭茂"
+ ]
+ },
+ "thanks-desc": "添加感谢用户进行编辑、评论等行为的链接。",
+ "thanks-thank": "感谢",
+ "thanks-thanked": "{{GENDER:$1|已感谢}}",
+ "thanks-button-thank": "{{GENDER:$1|感谢}}",
+ "thanks-button-thanked": "{{GENDER:$1|已感谢}}",
+ "thanks-error-undefined": "感谢操作失败,请重试。",
+ "thanks-error-invalidrevision": "版本ID无效。",
+ "thanks-error-ratelimited": "{{GENDER:$1|您}}的编辑可能已经超频。请等待一段时间后重试。",
+ "thanks-thank-tooltip": "{{GENDER:$1|发送}}感谢通知给该{{GENDER:$2|用户}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|取消}}感谢您的通知",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|发送}}感谢您的通知",
+ "thanks-confirmation2": "对此编辑{{GENDER:$1|发送}}公开感谢?",
+ "thanks-thanked-notice": "$1已收到您对{{GENDER:$2|他|她|他们}}的编辑做出的感谢。",
+ "thanks": "发送感谢",
+ "thanks-form-revid": "编辑的修订ID",
+ "thanks-already-thanked": "{{GENDER:$1|您}}已经对此编辑发送感谢。",
+ "echo-pref-subscription-edit-thank": "对我的编辑的感谢",
+ "echo-pref-tooltip-edit-thank": "当有人感谢我的编辑时通知我。",
+ "echo-category-title-edit-thank": "感谢",
+ "notification-thanks-diff-link": "编辑",
+ "notification-thanks": "[[User:$1|$1]]{{GENDER:$1|感谢}}你对[[:$3]]的$2。",
+ "notification-thanks-flyout2": "[[User:$1|$1]]{{GENDER:$1|感谢}}你对$2的编辑。",
+ "notification-thanks-email-subject": "$1{{GENDER:$1|感谢}}你在{{SITENAME}}的编辑",
+ "notification-thanks-email-batch-body": "$1{{GENDER:$1|感谢}}你对$2的编辑。",
+ "notification-link-text-respond-to-user": "回应用户",
+ "log-name-thanks": "感谢日志",
+ "log-description-thanks": "下面是得到其他用户感谢的用户的列表。",
+ "logentry-thanks-thank": "$1{{GENDER:$2|感谢}}{{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1感谢日志",
+ "thanks-error-no-id-specified": "您必须指定发送感谢的版本ID。",
+ "thanks-confirmation-special": "您希望对此编辑公开发送感谢么?",
+ "notification-link-text-view-post": "查看评论",
+ "thanks-error-invalidpostid": "帖子ID无效。",
+ "flow-thanks-confirmation-special": "您希望对此评论公开发送感谢么?",
+ "flow-thanks-thanked-notice": "$1已收到您对{{GENDER:$2|他|她|他们}}的评论做出的感谢。",
+ "notification-flow-thanks": "[[User:$1|$1]]感谢{{GENDER:$5|您}}在[[:$4]]的“$3”发表的$2。",
+ "notification-flow-thanks-post-link": "您的评论",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]]感谢了{{GENDER:$4|您}}在$3的“$2”发表的评论。",
+ "notification-flow-thanks-email-subject": "$1感谢了{{GENDER:$2|您}}在{{SITENAME}}发表的评论",
+ "notification-flow-thanks-email-batch-body": "$1感谢了{{GENDER:$4|您}}在$3的“$2”发表的评论。",
+ "apihelp-flowthank-description": "为一条Flow评论公开发送感谢通知。",
+ "apihelp-flowthank-param-postid": "要感谢的帖子的UUID。",
+ "apihelp-flowthank-example-1": "为UUID为xyz789的评论发送感谢",
+ "apihelp-thank-description": "向一名编辑者发送感谢通知。",
+ "apihelp-thank-param-rev": "要感谢某人的版本ID。",
+ "apihelp-thank-param-source": "一个描述请求来源的短字符串,例如“diff”或“history”。",
+ "apihelp-thank-example-1": "为修订ID456发送感谢,将差异页面作为来源"
+}
diff --git a/Thanks/i18n/zh-hant.json b/Thanks/i18n/zh-hant.json
new file mode 100644
index 00000000..fa830747
--- /dev/null
+++ b/Thanks/i18n/zh-hant.json
@@ -0,0 +1,54 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ch.Andrew",
+ "Fantasticfears",
+ "Liuxinyu970226",
+ "Simon Shek",
+ "Waihorace",
+ "Cwlin0416",
+ "LNDDYL"
+ ]
+ },
+ "thanks-desc": "提供可讓使用者感謝編輯、評論..等的連結。",
+ "thanks-thank": "感謝",
+ "thanks-thanked": "{{GENDER:$1|已感謝}}",
+ "thanks-button-thank": "{{GENDER:$1|感謝}}",
+ "thanks-button-thanked": "{{GENDER:$1|已感謝}}",
+ "thanks-error-undefined": "感謝操作失敗,請再試一次。",
+ "thanks-error-invalidrevision": "修訂 ID 無效。",
+ "thanks-error-ratelimited": "{{GENDER:$1|您}}已超出頻率限制,請稍後再試。",
+ "thanks-thank-tooltip": "{{GENDER:$1|傳送}}一則感謝通知給這位{{GENDER:$2|使用者}}",
+ "thanks-thank-tooltip-no": "{{GENDER:$1|取消}}感謝通知",
+ "thanks-thank-tooltip-yes": "{{GENDER:$1|傳送}}感謝通知",
+ "thanks-confirmation2": "公開{{GENDER:$1|傳送}}對此編輯的感謝嗎?",
+ "thanks-thanked-notice": "$1 已收到您對{{GENDER:$2|他的|她的|他們的}}編輯的感謝。",
+ "thanks": "發送感謝",
+ "thanks-form-revid": "編輯的修訂 ID",
+ "thanks-already-thanked": "{{GENDER:$1|您}}已經傳送過此編輯的感謝通知。",
+ "echo-pref-subscription-edit-thank": "對我的編輯表示感謝",
+ "echo-pref-tooltip-edit-thank": "當有人感謝我所做的編輯時,請通知我。",
+ "echo-category-title-edit-thank": "感謝",
+ "notification-thanks-diff-link": "您的編輯",
+ "notification-thanks": "[[User:$1|$1]] 已{{GENDER:$1|感謝}}您在 [[:$3]] 中 $2。",
+ "notification-thanks-flyout2": "[[User:$1|$1]] 已{{GENDER:$1|感謝}}您在 $2 上的編輯。",
+ "notification-thanks-email-subject": "$1 {{GENDER:$1|已感謝}}您於 {{SITENAME}} 上的編輯",
+ "notification-thanks-email-batch-body": "$1 {{GENDER:$1|已感謝}}您於 $2 上的編輯。",
+ "notification-link-text-respond-to-user": "回應使用者",
+ "log-name-thanks": "感謝日誌",
+ "log-description-thanks": "以下是得到其他人表示感謝的使用者清單。",
+ "logentry-thanks-thank": "$1 {{GENDER:$2|已感謝}} {{GENDER:$4|$3}}",
+ "log-show-hide-thanks": "$1 感謝日誌",
+ "thanks-error-no-id-specified": "您必須指定修訂 ID 以傳送感謝",
+ "thanks-confirmation-special": "您是否要對此編輯公開表達感謝?",
+ "notification-link-text-view-post": "檢視評論",
+ "thanks-error-invalidpostid": "張貼 ID 無效。",
+ "flow-thanks-confirmation-special": "您是否要對此評論公開表達感謝?",
+ "flow-thanks-thanked-notice": "$1 已收到您對{{GENDER:$2|他的|她的|他們的}}評論的感謝。",
+ "notification-flow-thanks": "[[User:$1|$1]] {{GENDER:$1|已感謝}}{{GENDER:$5|您}}於 [[:$4]] 的 \"$3\" 中的 $2。",
+ "notification-flow-thanks-post-link": "您的評論",
+ "notification-flow-thanks-flyout": "[[User:$1|$1]] {{GENDER:$1|已感謝}}{{GENDER:$4|您}}於 $3 的 \"$2\" 中的評論。",
+ "notification-flow-thanks-email-subject": "$1 {{GENDER:$1|已感謝}}{{GENDER:$2|您}}於 {{SITENAME}} 中的評論",
+ "notification-flow-thanks-email-batch-body": "$1 {{GENDER:$1|已感謝}}{{GENDER:$4|您}}於 $3 的 \"$2\" 中的評論。",
+ "apihelp-flowthank-description": "傳送公開感謝通知給 Flow 的評論。"
+}
diff --git a/Thanks/modules/ext.thanks.flowthank.js b/Thanks/modules/ext.thanks.flowthank.js
new file mode 100644
index 00000000..5f3309cf
--- /dev/null
+++ b/Thanks/modules/ext.thanks.flowthank.js
@@ -0,0 +1,58 @@
+( function ( $, mw ) {
+ 'use strict';
+
+ mw.thanks.thanked.cookieName = 'flow-thanked';
+ mw.thanks.thanked.attrName = 'data-flow-id';
+
+ var $thankedLabel = $( '<span></span>' )
+ .append( mw.msg( 'thanks-button-thanked', mw.user ) )
+ .addClass( 'mw-thanks-flow-thanked mw-ui-quiet' );
+
+ var reloadThankedState = function() {
+ $( 'a.mw-thanks-flow-thank-link' ).each( function( idx, el ) {
+ var $thankLink = $( el );
+ if ( mw.thanks.thanked.contains( $thankLink.closest( '.flow-post' ) ) ) {
+ $thankLink.before( $thankedLabel.clone() );
+ $thankLink.remove();
+ }
+ } );
+ };
+
+ var sendFlowThanks = function( $thankLink ) {
+ ( new mw.Api ).postWithToken( 'edit', {
+ 'action' : 'flowthank',
+ 'postid' : $thankLink.closest( '.flow-post' ).attr( mw.thanks.thanked.attrName )
+ } )
+ .done( function( data ) {
+ mw.thanks.thanked.push( $thankLink.closest( '.flow-post' ) );
+ $thankLink.before( $thankedLabel.clone() );
+ $thankLink.remove();
+ } )
+ .fail( function( errorCode, details ) {
+ // TODO: use something besides alert for the error messages
+ switch( errorCode ) {
+ case 'ratelimited':
+ alert( mw.msg( 'thanks-error-ratelimited', mw.user ) );
+ break;
+ default:
+ alert( mw.msg( 'thanks-error-undefined' ) );
+ }
+ } );
+ };
+
+ if ( $.isReady ) {
+ // This condition is required for soft-reloads
+ // to also trigger the reloadThankedState
+ reloadThankedState();
+ } else {
+ $( document ).ready( reloadThankedState );
+ }
+
+ // .on() is needed to make the button work for dynamically loaded posts
+ $( '.flow-board' ).on( 'click', 'a.mw-thanks-flow-thank-link', function( e ) {
+ var $thankLink = $( this );
+ e.preventDefault();
+ sendFlowThanks( $thankLink );
+ } );
+
+} )( jQuery, mediaWiki );
diff --git a/Thanks/modules/ext.thanks.mobilediff.js b/Thanks/modules/ext.thanks.mobilediff.js
new file mode 100644
index 00000000..166c216d
--- /dev/null
+++ b/Thanks/modules/ext.thanks.mobilediff.js
@@ -0,0 +1,112 @@
+( function( M, $ ) {
+ var api = M.require( 'api' ),
+ popup = M.require( 'toast' ),
+ SchemaMobileWebClickTracking = M.require( 'loggingSchemas/SchemaMobileWebClickTracking' ),
+ schema = new SchemaMobileWebClickTracking( {}, 'MobileWebDiffClickTracking' );
+
+ /**
+ * Create a thank button for a given edit
+ *
+ * @param {String} name The username of the user who made the edit
+ * @param {String} revision The revision the user created
+ * @param {String} gender The gender of the user who made the edit
+ */
+ function thankUser( name, revision, gender ) {
+ var d = $.Deferred();
+ api.getToken( 'edit' ).done( function( token ) {
+ api.post( {
+ 'action' : 'thank',
+ 'rev' : revision,
+ 'source' : 'mobilediff',
+ 'token' : token
+ } )
+ .done( function() {
+ popup.show( mw.msg( 'thanks-thanked-notice', name, gender ) );
+ d.resolve();
+ } )
+ .fail( function( errorCode ) {
+ switch( errorCode ) {
+ case 'invalidrevision':
+ popup.show( mw.msg( 'thanks-error-invalidrevision' ) );
+ break;
+ case 'ratelimited':
+ popup.show( mw.msg( 'thanks-error-ratelimited', gender ) );
+ break;
+ default:
+ popup.show( mw.msg( 'thanks-error-undefined' ) );
+ }
+ d.reject();
+ } );
+ } );
+ return d;
+ }
+
+ /**
+ * Create a thank button for a given edit
+ *
+ * @param {String} name The username of the user who made the edit
+ * @param {String} rev The revision the user created
+ * @param {String} gender The gender of the user who made the edit
+ */
+ function createThankLink( name, rev, gender ) {
+ var thankImg = mw.config.get( 'wgExtensionAssetsPath' ) + '/Thanks/WhiteSmiley.png',
+ thankImgTag = '<img width="25" height="20" src="' + thankImg + '" class="mw-mf-action-button-icon"/>',
+ $thankBtn;
+ // Don't make thank button for self
+ if ( name !== mw.config.get( 'wgUserName' ) ) {
+ // See if user has already been thanked for this edit
+ if ( mw.config.get( 'wgThanksAlreadySent' ) ) {
+ $thankBtn = $( '<button class="mw-mf-action-button mw-ui-button mw-ui-constructive thanked">' )
+ .prop( 'disabled', true )
+ .html( thankImgTag + mw.message( 'thanks-button-thanked', mw.user ).escaped() );
+ } else {
+ $thankBtn = $( '<button class="mw-mf-action-button mw-ui-button mw-ui-constructive">' )
+ .html( thankImgTag + mw.message( 'thanks-button-thank', mw.user ).escaped()
+ )
+ .on( 'click', function() {
+ var $this = $( this );
+ schema.log( {
+ name: 'thank',
+ destination: name
+ } );
+ if ( !$this.hasClass( 'thanked' ) ) {
+ thankUser( name, rev, gender ).done( function() {
+ $this.addClass( 'thanked' ).prop( 'disabled', true )
+ .html( thankImgTag + mw.message( 'thanks-button-thanked', mw.user ).escaped() );
+ } );
+ }
+ } );
+ }
+ return $thankBtn;
+ }
+ }
+
+ /**
+ * Initialise a thank button in the given container.
+ *
+ * @param {jQuery.Object} $user existing element with data attributes associated describing a user.
+ * @param {jQuery.Object} $container to render button in
+ */
+ function init( $user, $container ) {
+ var username = $user.data( 'user-name' ),
+ rev = $user.data( 'revision-id' ),
+ gender = $user.data( 'user-gender' ),
+ $thankBtn;
+
+ if ( !$user.hasClass( 'mw-mf-anon' ) ) {
+ $thankBtn = createThankLink( username, rev, gender );
+ if ( $thankBtn ) {
+ $thankBtn.prependTo( $container );
+ }
+ }
+ }
+
+ $( function () {
+ init( $( '.mw-mf-user' ), $( '#mw-mf-userinfo' ) );
+ } );
+
+ // Expose for testing purposes
+ mw.thanks = $.extend( {}, mw.thanks || {}, {
+ _mobileDiffInit: init
+ } );
+} )( mw.mobileFrontend, jQuery );
diff --git a/Thanks/modules/ext.thanks.revthank.js b/Thanks/modules/ext.thanks.revthank.js
new file mode 100644
index 00000000..6b98086d
--- /dev/null
+++ b/Thanks/modules/ext.thanks.revthank.js
@@ -0,0 +1,79 @@
+( function ( $, mw ) {
+ 'use strict';
+
+ var reloadThankedState = function() {
+ $( 'a.mw-thanks-thank-link' ).each( function( idx, el ) {
+ var $thankLink = $( el );
+ if ( mw.thanks.thanked.contains( $thankLink ) ) {
+ $thankLink.before( mw.msg( 'thanks-thanked' ) );
+ $thankLink.remove();
+ }
+ } );
+ };
+
+ // $thankLink is the element with the data-revision-id attribute
+ // $thankElement is the element to be removed on success
+ var sendThanks = function( $thankLink, $thankElement ) {
+ var source;
+ if ( mw.config.get( 'wgAction' ) === 'history' ) {
+ source = 'history';
+ } else {
+ source = 'diff';
+ }
+ ( new mw.Api ).postWithToken( 'edit', {
+ 'action' : 'thank',
+ 'rev' : $thankLink.attr( 'data-revision-id' ),
+ 'source' : source
+ } )
+ .done( function( data ) {
+ $thankElement.before( mw.message( 'thanks-thanked', mw.user ).escaped() );
+ $thankElement.remove();
+ mw.thanks.thanked.push( $thankLink );
+ } )
+ .fail( function( errorCode, details ) {
+ // TODO: use something besides alert for the error messages
+ switch( errorCode ) {
+ case 'invalidrevision':
+ alert( mw.msg( 'thanks-error-invalidrevision' ) );
+ break;
+ case 'ratelimited':
+ alert( mw.msg( 'thanks-error-ratelimited', mw.user ) );
+ break;
+ default:
+ alert( mw.msg( 'thanks-error-undefined' ) );
+ }
+ } );
+ };
+
+ if ( $.isReady ) {
+ // This condition is required for soft-reloads
+ // to also trigger the reloadThankedState
+ reloadThankedState();
+ } else {
+ $( document ).ready( reloadThankedState );
+ }
+
+ $( function() {
+ if ( mw.config.get( 'thanks-confirmation-required' ) ) {
+ $( 'a.mw-thanks-thank-link' ).confirmable( {
+ i18n: {
+ confirm: mw.msg( 'thanks-confirmation2', mw.user ),
+ noTitle: mw.msg( 'thanks-thank-tooltip-no', mw.user ),
+ yesTitle: mw.msg( 'thanks-thank-tooltip-yes', mw.user )
+ },
+ handler: function ( e ) {
+ var $thankLink = $( this );
+ e.preventDefault();
+ sendThanks( $thankLink, $thankLink.closest( '.jquery-confirmable-wrapper' ) );
+ }
+ } );
+ } else {
+ $( 'a.mw-thanks-thank-link' ).click( function ( e ) {
+ var $thankLink = $( this );
+ e.preventDefault();
+ sendThanks( $thankLink, $thankLink );
+ } );
+ }
+ } );
+
+} )( jQuery, mediaWiki );
diff --git a/Thanks/modules/ext.thanks.thank.js b/Thanks/modules/ext.thanks.thank.js
new file mode 100644
index 00000000..3ed831d6
--- /dev/null
+++ b/Thanks/modules/ext.thanks.thank.js
@@ -0,0 +1,39 @@
+( function ( $, mw ) {
+ 'use strict';
+
+ mw.thanks = {
+ // Keep track of which revisions and comments the user has already thanked for
+ thanked: {
+ maxHistory: 100,
+ cookieName: 'thanks-thanked',
+ attrName: 'data-revision-id',
+
+ load: function() {
+ var cookie = $.cookie( this.cookieName );
+ if ( cookie === null ) {
+ return [];
+ }
+ return unescape( cookie ).split( ',' );
+ },
+
+ push: function( $thankLink ) {
+ var saved = this.load();
+ saved.push( $thankLink.attr( this.attrName ) );
+ if ( saved.length > this.maxHistory ) { // prevent forever growing
+ saved = saved.slice( saved.length - this.maxHistory );
+ }
+ $.cookie( this.cookieName, escape( saved.join( ',' ) ) );
+ },
+
+ contains: function( $thankLink ) {
+ // $.inArray returns the index position or -1 if non-existant
+ if ( $.inArray( $thankLink.attr( this.attrName ), this.load() ) !== -1 ) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+ };
+
+} )( jQuery, mediaWiki );
diff --git a/Thanks/tests/ApiFlowThankIntegrationTest.php b/Thanks/tests/ApiFlowThankIntegrationTest.php
new file mode 100644
index 00000000..59794a51
--- /dev/null
+++ b/Thanks/tests/ApiFlowThankIntegrationTest.php
@@ -0,0 +1,230 @@
+<?php
+
+use Flow\Model\AbstractRevision;
+use Flow\Model\PostRevision;
+use Flow\Model\UUID;
+
+/**
+ * Integration tests for the Thanks Flow api module
+ *
+ * @covers ApiFlowThank
+ *
+ * @group Thanks
+ * @gropu Database
+ * @group medium
+ * @group API
+ * @group Flow
+ *
+ * @author Benjamin Chen
+ */
+class ApiFlowThankTest extends ApiTestCase {
+ /**
+ * @var PostRevision
+ */
+ public
+ $topic,
+ $postByOtherUser,
+ $postByMe;
+
+ public function setUp() {
+ parent::setUp();
+
+ if ( !class_exists( 'FlowHooks' ) ) {
+ $this->markTestSkipped( 'Flow is not installed' );
+ }
+
+ // mock topic and post
+ $this->topic = $this->generateObject();
+ $this->postByOtherUser = $this->generateObject( array(
+ 'tree_orig_user_id' => self::$users[ 'uploader' ]->user->getId(),
+ 'tree_parent_id' => $this->topic->getPostId()->getBinary(),
+ ), array(), 1 );
+ $this->postByMe = $this->generateObject( array(
+ 'tree_orig_user_id' => self::$users[ 'sysop' ]->user->getId(),
+ 'tree_parent_id' => $this->topic->getPostId()->getBinary(),
+ ), array(), 1 );
+
+ // Set up mock classes in Container.
+ $mockLoader = $this->getMockBuilder( '\Flow\Repository\RootPostLoader' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ $that = $this;
+ $mockLoader->expects( $this->any() )
+ ->method( 'getWithRoot' )
+ ->will( $this->returnCallback(
+ // Hard to work with class variables or callbacks,
+ // using anonymous function instead.
+ function( $postId ) use ( $that ) {
+ switch ( $postId ) {
+ case $that->postByOtherUser->getPostId():
+ return array(
+ 'post' => $that->postByOtherUser,
+ 'root' => $that->topic
+ );
+
+ case $that->postByMe->getPostId():
+ return array(
+ 'post' => $that->postByMe,
+ 'root' => $that->topic
+ );
+
+ default:
+ return array( 'post' => null );
+ }
+ }
+ ) );
+
+ $mockWorkflow = $this->getMock( '\Flow\Model\Workflow' );
+ $mockWorkflow->expects( $this->any() )
+ ->method( 'getOwnerTitle' )
+ ->will( $this->returnValue( new Title() ));
+
+ $mockStorage = $this->getMockBuilder( '\Flow\Data\ManagerGroup' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $mockStorage->expects( $this->any() )
+ ->method( 'get' )
+ ->will( $this->returnValue( $mockWorkflow ) );
+
+
+ $mockTemplating = $this->getMockBuilder( 'Flow\Templating' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $mockTemplating->expects( $this->any() )
+ ->method( 'getContent' )
+ ->will( $this->returnValue( 'test content' ) );
+
+ Flow\Container::reset();
+ $container = Flow\Container::getContainer();
+ $container[ 'loader.root_post' ] = $mockLoader;
+ $container[ 'storage' ] = $mockStorage;
+ $container[ 'templating' ] = $mockTemplating;
+
+ $this->doLogin( 'sysop' );
+ \DeferredUpdates::clearPendingUpdates();
+ }
+
+ public function testRequestWithoutToken(){
+ $this->setExpectedException( 'UsageException', 'The token parameter must be set' );
+ $this->doApiRequest( array(
+ 'action' => 'flowthank',
+ 'postid' => UUID::create( '42' )->getAlphadecimal(),
+ ) );
+ }
+
+ public function testInvalidRequest(){
+ $this->setExpectedException( 'UsageException', 'The postid parameter must be set' );
+ $this->doApiRequestWithToken( array( 'action' => 'flowthank' ) );
+ }
+
+ public function testValidRequest(){
+ list( $result,, ) = $this->doApiRequestWithToken( array(
+ 'action' => 'flowthank',
+ 'postid' => $this->postByOtherUser->getPostId()->getAlphadecimal(),
+ ) );
+ $this->assertSuccess( $result );
+ }
+
+ public function testRequestWithInvalidId(){
+ $this->setExpectedException( 'UsageException', 'Post ID is invalid' );
+ list( $result,, ) = $this->doApiRequestWithToken( array(
+ 'action' => 'flowthank',
+ 'postid' => UUID::create( '42' )->getAlphadecimal(),
+ ) );
+ }
+
+ public function testRequestWithOwnId(){
+ $this->setExpectedException( 'UsageException', 'You cannot thank yourself' );
+ list( $result,, ) = $this->doApiRequestWithToken( array(
+ 'action' => 'flowthank',
+ 'postid' => $this->postByMe->getPostId()->getAlphadecimal(),
+ ) );
+ }
+
+ protected function assertSuccess( $result ){
+ $this->assertEquals( 1, $result[ 'result' ][ 'success' ] );
+ }
+
+
+ /**
+ * This method is obtained from Flow/tests/PostRevisionTestCase.php
+ *
+ * Returns an array, representing flow_revision & flow_tree_revision db
+ * columns.
+ *
+ * You can pass in arguments to override default data.
+ * With no arguments tossed in, default data (resembling a newly-created
+ * topic title) will be returned.
+ *
+ * @param array[optional] $row DB row data (only specify override columns)
+ * @return array
+ */
+ protected function generateRow( array $row = array() ) {
+ $uuidPost = UUID::create();
+ $uuidRevision = UUID::create();
+
+ $user = User::newFromName( 'UTSysop' );
+ $userId = $user->getId();
+ $userIp = null;
+
+ return $row + array(
+ // flow_revision
+ 'rev_id' => $uuidRevision->getBinary(),
+ 'rev_type' => 'post',
+ 'rev_user_id' => $userId,
+ 'rev_user_ip' => $userIp,
+ 'rev_user_wiki' => wfWikiId(),
+ 'rev_parent_id' => null,
+ 'rev_flags' => 'html',
+ 'rev_content' => 'test content',
+ 'rev_change_type' => 'new-post',
+ 'rev_mod_state' => AbstractRevision::MODERATED_NONE,
+ 'rev_mod_user_id' => null,
+ 'rev_mod_user_ip' => null,
+ 'rev_mod_user_wiki' => null,
+ 'rev_mod_timestamp' => null,
+ 'rev_mod_reason' => null,
+ 'rev_last_edit_id' => null,
+ 'rev_edit_user_id' => null,
+ 'rev_edit_user_ip' => null,
+ 'rev_edit_user_wiki' => null,
+
+ // flow_tree_revision
+ 'tree_rev_descendant_id' => $uuidPost->getBinary(),
+ 'rev_type_id' => $uuidPost->getBinary(),
+ 'tree_rev_id' => $uuidRevision->getBinary(),
+ 'tree_orig_create_time' => wfTimestampNow(),
+ 'tree_orig_user_id' => $userId,
+ 'tree_orig_user_ip' => $userIp,
+ 'tree_orig_user_wiki' => wfWikiId(),
+ 'tree_parent_id' => null,
+ );
+ }
+
+ /**
+ * This method is obtained from Flow/tests/PostRevisionTestCase.php
+ *
+ * Returns a PostRevision object.
+ *
+ * You can pass in arguments to override default data.
+ * With no arguments tossed in, a default revision (resembling a newly-
+ * created topic title) will be returned.
+ *
+ * @param array[optional] $row DB row data (only specify override columns)
+ * @param array[optional] $children Array of child PostRevision objects
+ * @param int[optional] $depth Depth of the PostRevision object
+ * @return PostRevision
+ */
+ protected function generateObject( array $row = array(), $children = array(), $depth = 0 ) {
+ $row = $this->generateRow( $row );
+
+ $revision = PostRevision::fromStorageRow( $row );
+ $revision->setChildren( $children );
+ $revision->setDepth( $depth );
+
+ return $revision;
+ }
+
+}
diff --git a/Thanks/tests/ApiRevThankIntegrationTest.php b/Thanks/tests/ApiRevThankIntegrationTest.php
new file mode 100644
index 00000000..cd50b9b0
--- /dev/null
+++ b/Thanks/tests/ApiRevThankIntegrationTest.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Integration tests for the Thanks API module
+ *
+ * @covers ApiRevThank
+ *
+ * @group Thanks
+ * @group Database
+ * @group medium
+ * @group API
+ *
+ * @author Adam Shorland
+ */
+class ApiRevThankTest extends ApiTestCase {
+
+ public function setUp() {
+ parent::setUp();
+ $this->doLogin( 'sysop' );
+ \DeferredUpdates::clearPendingUpdates();
+ }
+
+ public function testRequestWithoutToken(){
+ $this->setExpectedException( 'UsageException', 'The token parameter must be set' );
+ $this->doApiRequest( array(
+ 'action' => 'thank',
+ 'source' => 'someSource',
+ 'rev' => 1,
+ ) );
+ }
+
+ public function testValidRequest(){
+ list( $result,, ) = $this->doApiRequestWithToken( array(
+ 'action' => 'thank',
+ 'rev' => $this->newRevId(),
+ ) );
+ $this->assertSuccess( $result );
+ }
+
+ public function testValidRequestWithSource(){
+ list( $result,, ) = $this->doApiRequestWithToken( array(
+ 'action' => 'thank',
+ 'source' => 'someSource',
+ 'rev' => $this->newRevId(),
+ ) );
+ $this->assertSuccess( $result );
+ }
+
+ protected function newRevId(){
+ // You can't thank yourself, kind of hacky
+ $this->setMwGlobals( 'wgUser' , self::$users['uploader']->user );
+
+ /** @var Status $result */
+ $result = $this->editPage( 'thanks' . rand( 0, 100 ), 'thanks' . rand( 0, 100 ), 'thanksSummary' );
+ $result = $result->getValue();
+ /** @var Revision $revision */
+ $revision = $result['revision'];
+
+ $this->setMwGlobals( 'wgUser' , self::$users['sysop']->user );
+
+ return $revision->getId();
+ }
+
+ protected function assertSuccess( $result ){
+ $this->assertEquals( array(
+ 'result' => array(
+ 'success' => 1,
+ 'recipient' => self::$users['uploader']->username,
+ ),
+ ), $result );
+ }
+
+ public function testInvalidRequest(){
+ $this->setExpectedException( 'UsageException' );
+ $this->doApiRequestWithToken( array( 'action' => 'thank' ) );
+ }
+
+}
diff --git a/Thanks/tests/ApiRevThankUnitTest.php b/Thanks/tests/ApiRevThankUnitTest.php
new file mode 100644
index 00000000..d731053d
--- /dev/null
+++ b/Thanks/tests/ApiRevThankUnitTest.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * Unit tests for the Thanks API module
+ *
+ * @group Thanks
+ * @group API
+ *
+ * @author Adam Shorland
+ */
+class ApiRevThankUnitTest extends MediaWikiTestCase {
+
+ static $moduleName = 'thank';
+
+ protected function getModule() {
+ return new ApiRevThank( new ApiMain(), self::$moduleName );
+ }
+
+ /**
+ * @dataProvider provideDieOnBadUser
+ * @covers ApiThank::dieOnBadUser
+ */
+ public function testDieOnBadUser( $user, $expectedError ) {
+ $module = $this->getModule();
+ $method = new ReflectionMethod( $module, 'dieOnBadUser' );
+ $method->setAccessible( true );
+
+ if( $expectedError ) {
+ $this->setExpectedException( 'UsageException', $expectedError );
+ }
+
+ $method->invoke( $module, $user );
+ //perhaps the method should return true.. For now we must do this
+ $this->assertTrue( true );
+ }
+
+ public function provideDieOnBadUser() {
+ $testCases = array();
+
+ $mockUser = $this->getMock( 'User' );
+ $mockUser->expects( $this->once() )
+ ->method( 'isAnon' )
+ ->will( $this->returnValue( true ) );
+
+ $testCases[ 'anon' ] = array( $mockUser, 'Anonymous users cannot send thanks' );
+
+ $mockUser = $this->getMock( 'User' );
+ $mockUser->expects( $this->once() )
+ ->method( 'isAnon' )
+ ->will( $this->returnValue( false ) );
+ $mockUser->expects( $this->once() )
+ ->method( 'pingLimiter' )
+ ->will( $this->returnValue( true ) );
+
+ $testCases[ 'ping' ] = array( $mockUser, "You've exceeded your rate limit. Please wait some time and try again" );
+
+ $mockUser = $this->getMock( 'User' );
+ $mockUser->expects( $this->once() )
+ ->method( 'isAnon' )
+ ->will( $this->returnValue( false ) );
+ $mockUser->expects( $this->once() )
+ ->method( 'pingLimiter' )
+ ->will( $this->returnValue( false ) );
+ $mockUser->expects( $this->once() )
+ ->method( 'isBlocked' )
+ ->will( $this->returnValue( true ) );
+
+ $testCases[ 'blocked' ] = array( $mockUser, 'You have been blocked from editing' );
+
+ return $testCases;
+ }
+
+ //@todo test userAlreadySentThanksForRevision
+ //@todo test getRevisionFromParams
+ //@todo test getTitleFromRevision
+ //@todo test getSourceFromParams
+ //@todo test getUserIdFromRevision
+ //@todo test markResultSuccess
+ //@todo test sendThanks
+
+}
diff --git a/Thanks/tests/qunit/test_ext.thanks.mobilediff.js b/Thanks/tests/qunit/test_ext.thanks.mobilediff.js
new file mode 100644
index 00000000..ecf6cacc
--- /dev/null
+++ b/Thanks/tests/qunit/test_ext.thanks.mobilediff.js
@@ -0,0 +1,22 @@
+( function ( $ ) {
+ QUnit.module( 'Thanks mobilediff' );
+
+ QUnit.test( 'render button for logged in users', 1, function ( assert ) {
+ var $container = $( '<div>' ),
+ $user = $( '<div>' ).data( 'user-name', 'jon' )
+ .data( 'revision-id', 1 )
+ .data( 'user-gender', 'male' );
+
+ mw.thanks._mobileDiffInit( $user, $container );
+ assert.strictEqual( $container.find( 'button' ).length, 1, 'Thanks button was created.' );
+ } );
+
+ QUnit.test( 'Do not render button for anon users', 1, function ( assert ) {
+ var $container = $( '<div>' ),
+ $user = $( '<div class="mw-mf-anon">' );
+
+ mw.thanks._mobileDiffInit( $user, $container );
+ assert.strictEqual( $container.find( 'button' ).length, 0, 'No thanks button was created.' );
+ } );
+
+}( jQuery ) );
diff --git a/Thanks/version b/Thanks/version
new file mode 100644
index 00000000..82714afc
--- /dev/null
+++ b/Thanks/version
@@ -0,0 +1,4 @@
+Thanks: REL1_25
+2015-06-16T21:25:52
+
+02fe700