summaryrefslogtreecommitdiff
path: root/extensions/ConfirmEdit/ReCaptcha
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/ConfirmEdit/ReCaptcha')
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php101
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/extension.json21
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ar.json16
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ast.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json15
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/br.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/bs.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/cs.json15
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/cy.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json8
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/de.json16
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json8
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/en.json12
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/es.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/fa.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/fi.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/fr.json16
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/gl.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/he.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ia.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/id.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/it.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ja.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ko.json15
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/lb.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/mk.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ms.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/mt.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/nb.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json12
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/nl.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/oc.json8
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/pl.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/pms.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json9
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/pt.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json16
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/ru.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/si.json8
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json8
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json4
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/sv.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/sw.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/te.json13
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/tl.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/uk.json15
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/vi.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json15
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json14
-rw-r--r--extensions/ConfirmEdit/ReCaptcha/recaptchalib.php274
55 files changed, 1069 insertions, 0 deletions
diff --git a/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php b/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php
new file mode 100644
index 00000000..cd274a97
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.class.php
@@ -0,0 +1,101 @@
+<?php
+
+class ReCaptcha extends SimpleCaptcha {
+ // reCAPTHCA error code returned from recaptcha_check_answer
+ private $recaptcha_error = null;
+
+ /**
+ * Displays the reCAPTCHA widget.
+ * If $this->recaptcha_error is set, it will display an error in the widget.
+ *
+ */
+ function getForm() {
+ global $wgReCaptchaPublicKey, $wgReCaptchaTheme;
+
+ $useHttps = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' );
+ $js = 'var RecaptchaOptions = ' . Xml::encodeJsVar( array( 'theme' => $wgReCaptchaTheme, 'tabindex' => 1 ) );
+
+ return Html::inlineScript( $js ) . recaptcha_get_html( $wgReCaptchaPublicKey, $this->recaptcha_error, $useHttps );
+ }
+
+ /**
+ * Calls the library function recaptcha_check_answer to verify the users input.
+ * Sets $this->recaptcha_error if the user is incorrect.
+ * @return boolean
+ *
+ */
+ function passCaptcha() {
+ global $wgReCaptchaPrivateKey, $wgRequest;
+
+ // API is hardwired to return wpCaptchaId and wpCaptchaWord, so use that if the standard two are empty
+ $challenge = $wgRequest->getVal( 'recaptcha_challenge_field', $wgRequest->getVal( 'wpCaptchaId' ) );
+ $response = $wgRequest->getVal( 'recaptcha_response_field', $wgRequest->getVal( 'wpCaptchaWord' ) );
+
+ if ( $response === null ) {
+ // new captcha session
+ return false;
+ }
+
+ $ip = $wgRequest->getIP();
+
+ $recaptcha_response = recaptcha_check_answer(
+ $wgReCaptchaPrivateKey,
+ $ip,
+ $challenge,
+ $response
+ );
+
+ if ( !$recaptcha_response->is_valid ) {
+ $this->recaptcha_error = $recaptcha_response->error;
+ return false;
+ }
+
+ $recaptcha_error = null;
+
+ return true;
+
+ }
+
+ function addCaptchaAPI( &$resultArr ) {
+ global $wgReCaptchaPublicKey;
+
+ $resultArr['captcha']['type'] = 'recaptcha';
+ $resultArr['captcha']['mime'] = 'image/png';
+ $resultArr['captcha']['key'] = $wgReCaptchaPublicKey;
+ $resultArr['captcha']['error'] = $this->recaptcha_error;
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param $action string Action being performed
+ * @return string
+ */
+ function getMessage( $action ) {
+ $name = 'recaptcha-' . $action;
+ $text = wfMessage( $name )->text();
+
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfMessage( $name, $text )->isDisabled() ? wfMessage( 'recaptcha-edit' )->text() : $text;
+ }
+
+ public function APIGetAllowedParams( &$module, &$params, $flags ) {
+ if ( $flags && $this->isAPICaptchaModule( $module ) ) {
+ $params['recaptcha_challenge_field'] = null;
+ $params['recaptcha_response_field'] = null;
+ }
+
+ return true;
+ }
+
+ public function APIGetParamDescription( &$module, &$desc ) {
+ if ( $this->isAPICaptchaModule( $module ) ) {
+ $desc['recaptcha_challenge_field'] = 'Field from the ReCaptcha widget';
+ $desc['recaptcha_response_field'] = 'Field from the ReCaptcha widget';
+ }
+
+ return true;
+ }
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php b/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php
new file mode 100644
index 00000000..8a649faf
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/ReCaptcha.php
@@ -0,0 +1,13 @@
+<?php
+if ( function_exists( 'wfLoadExtension' ) ) {
+ wfLoadExtension( 'ConfirmEdit/ReCaptcha' );
+ // Keep i18n globals so mergeMessageFileList.php doesn't break
+ $wgMessagesDirs['ReCaptcha'] = __DIR__ . '/i18n';
+ /* wfWarn(
+ 'Deprecated PHP entry point used for ReCaptcha extension. Please use wfLoadExtension instead, ' .
+ 'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
+ ); */
+ return;
+} else {
+ die( 'This version of the Re^Captcha extension requires MediaWiki 1.25+' );
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/extension.json b/extensions/ConfirmEdit/ReCaptcha/extension.json
new file mode 100644
index 00000000..5f97810a
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/extension.json
@@ -0,0 +1,21 @@
+{
+ "name": "ReCaptcha",
+ "ExtensionFunctions": [
+ "efReCaptcha"
+ ],
+ "MessagesDirs": {
+ "ReCaptcha": [
+ "i18n"
+ ]
+ },
+ "AutoloadClasses": {
+ "ReCaptcha": "ReCaptcha.class.php"
+ },
+ "config": {
+ "CaptchaClass": "ReCaptcha",
+ "ReCaptchaPublicKey": "",
+ "ReCaptchaPrivateKey": "",
+ "ReCaptchaTheme": "red"
+ },
+ "callback": "ConfirmEditHooks::onReCaptchaSetup"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json
new file mode 100644
index 00000000..f328e93b
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ar.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Alexknight12",
+ "Ciphers",
+ "Meno25"
+ ]
+ },
+ "recaptcha-desc": "موديل reCAPTCHA لConfirm Edit",
+ "recaptcha-edit": "للمساعدة في الحماية ضد التحرير السبام، يرجى كتابة الكلمتين التي تراها في المربع أدناه :",
+ "recaptcha-addurl": "إن تعديلك يتضمن وصلات خارجية جديدة. للمساعدة في الحماية ضد السبام، يرجى كتابة الكلمتين التي تراها في المربع أدناه :",
+ "recaptcha-badlogin": "للمساعدة في الحماية ضد الكسر الآلي لكلمة السر، يرجى كتابة الكلمتين اللتين تراهما في المربع أدناه :",
+ "recaptcha-createaccount": "للمساعدة في الحماية ضد الإنشاء الآلي للحسابات، رجاء اكتب الكلمتين اللتين تراهما في المربع أدناه:",
+ "recaptcha-createaccount-fail": "جواب reCAPTCHA غير صحيح أو مفقود.",
+ "recaptcha-create": "للمساعدة في الحماية ضد الإنشاء الآلي للصفحات، يرجى كتابة الكلمتين اللتين تراهما في المربع أدناه :"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json
new file mode 100644
index 00000000..4f4763b4
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ast.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "recaptcha-edit": "Pa protexer la wiki escontra'l spam d'edición automáticu, pidimos-y qu'escriba les dos pallabres que se ven na caxella d'abaxo:",
+ "recaptcha-addurl": "La so edición incluye enllaces esternos nuevos. Pa protexer la wiki escontra'l spam automáticu, pidimos-y qu'escriba les dos pallabres que se ven na caxella d'abaxo:",
+ "recaptcha-badlogin": "Pa protexer la wiki escontra'l descifráu de claves automáticu, pidimos-y qu'escriba les dos pallabres que se ven na caxella d'abaxo:",
+ "recaptcha-createaccount": "Pa protexer la wiki escontra la creación de cuentes automática, pidimos-y qu'escriba les dos pallabres que se ven na caxella d'abaxo:",
+ "recaptcha-createaccount-fail": "Falta la rempuesta a la entruga de reCAPTCHA o ye incorreuta",
+ "recaptcha-create": "Pa protexer la wiki escontra la creación de páxines automática, pidimos-y qu'escriba les dos pallabres que se ven na caxella d'abaxo:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json b/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json
new file mode 100644
index 00000000..dc44d634
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/be-tarask.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Red Winged Duck"
+ ]
+ },
+ "recaptcha-edit": "Для абароны вікі ад аўтаматычнага спаму ў праўках, мы просім вас увесьці два словы, якія Вы бачыце ў полі ніжэй:",
+ "recaptcha-addurl": "Вашае рэдагаваньне ўтрымлівае новыя вонкавыя спасылкі. Для абароны вікі ад аўтаматызаванага спаму, мо просім вас увесьці два словы, якія Вы бачыце ў полі ніжэй:",
+ "recaptcha-badlogin": "Для абароны вікі ад аўтаматызаванага ўзлому паролю, мы просім вас увесьці два словы, якія Вы бачыце ў полі ніжэй:",
+ "recaptcha-createaccount": "Для абароны вікі ад аўтаматычнага стварэньня рахункаў, мы просім вас увесьці два словы, якія Вы бачыце ў полі ніжэй:",
+ "recaptcha-createaccount-fail": "Адказ reCAPTCHA няслушны ці адсутнічае.",
+ "recaptcha-create": "Для абароны вікі ад аўтаматычнага стварэньня старонак, мы просім вас увесьці два словы, якія Вы бачыце ў полі ніжэй:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/br.json b/extensions/ConfirmEdit/ReCaptcha/i18n/br.json
new file mode 100644
index 00000000..9f2a54e9
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/br.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fohanno",
+ "Fulup"
+ ]
+ },
+ "recaptcha-edit": "Evit sikour en em wareziñ diouzh ar stroboù emgefre, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-addurl": "Liamm diavaez nevez zo bet degaset ganeoc'h. Evit sikour en em wareziñ diouzh ar stroboù, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-badlogin": "Evit sikour da wareziñ ar wiki diouzh an diskuliañ gerioù-tremen emgefre dre daolioù-esae, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-createaccount": "Evit sikour d'en em wareziñ diouzh ar c'hrouiñ kontoù emgefre, merkit an daou c'her a welit er voest dindan :",
+ "recaptcha-createaccount-fail": "Respont reCAPTHCA faziek pe ezvezant.",
+ "recaptcha-create": "Evit sikour d'en em wareziñ diouzh ar c'hrouiñ pajennoù emgefre, merkit an daou c'her a welit er voest dindan :"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json b/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json
new file mode 100644
index 00000000..6290f98d
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/bs.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator"
+ ]
+ },
+ "recaptcha-edit": "Da bismo pomogli protiv automatiziranog spam uređivanja, molimo upišite dvije riječi koje vidite u kutiju ispod:",
+ "recaptcha-addurl": "Vaše izmjene uključuju nove vanjske linkove. Da bismo pomogli protiv automatiziranog spama, molimo upišite dvije riječi koje vidite u kutiju ispod.",
+ "recaptcha-badlogin": "Da bismo pomogli protiv automatiziranog probijanja šifre, molimo upišite dvije riječi koje vidite u kutiju ispod:",
+ "recaptcha-createaccount": "Da bismo pomogli protiv automatiziranog pravljenja računa, molimo upišite dvije riječi koje vidite u kutiju ispod:",
+ "recaptcha-createaccount-fail": "Neispravan ili nedostajući reCAPTCHA odgovor.",
+ "recaptcha-create": "Da bismo pomogli protiv automatiziranog pravljenja stranica, molimo upišite dvije riječi koje vidite u kutiju ispod:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json b/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json
new file mode 100644
index 00000000..4e78eb99
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/cs.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jkjk",
+ "Mormegil"
+ ]
+ },
+ "recaptcha-desc": "Podpora reCAPTCHA pro rozšíření Confirm Edit",
+ "recaptcha-edit": "V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání dvou slov, která vidíte v rámečku níže:",
+ "recaptcha-addurl": "Vaše editace obsahuje nové externí odkazy. V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání dvou slov, která vidíte v rámečku níže:",
+ "recaptcha-badlogin": "V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o opsání dvou slov, která vidíte v rámečku níže:",
+ "recaptcha-createaccount": "V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o opsání dvou slov, která vidíte v rámečku níže:",
+ "recaptcha-createaccount-fail": "Nesprávná nebo chybějící odpověď na reCAPTCHA.",
+ "recaptcha-create": "V zájmu ochrany před automatickým zakládáním stránek vás prosíme o opsání dvou slov, která vidíte v rámečku níže:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json b/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json
new file mode 100644
index 00000000..27cef7cc
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/cy.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "recaptcha-edit": "Er mwyn arbed y wici rhag i olygyddion awtomatig osod sbam, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-addurl": "Mae'ch golygiad yn cynnwys cysylltiadau allanol newydd. Er mwyn arbed y wici rhag sbam awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-badlogin": "Er mwyn arbed y wici rhag peiriannau sy'n datrys cyfrineiriau'n awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-createaccount": "Er mwyn arbed y wici rhag peiriannau sy'n dechrau cyfrifon yn awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:",
+ "recaptcha-createaccount-fail": "Mae'r ateb i'r pos CAPTCHA yn anghywir neu yn eisiau.",
+ "recaptcha-create": "Er mwyn arbed y wici rhag peiriannau sy'n dechrau tudalennau yn awtomatig, byddwch gystal â theipio'r ddau air sydd i'w gweld yn y blwch isod:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json b/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json
new file mode 100644
index 00000000..aacaf4f5
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/de-formal.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln"
+ ]
+ },
+ "recaptcha-createaccount": "Zum Schutz gegen die automatisierte Erstellung von Benutzerkonten bitten wir Sie, die folgenden beiden Wörter in das untenstehende Feld einzugeben:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/de.json b/extensions/ConfirmEdit/ReCaptcha/i18n/de.json
new file mode 100644
index 00000000..c0b98b5f
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/de.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kghbln",
+ "Metalhead64",
+ "Umherirrender"
+ ]
+ },
+ "recaptcha-desc": "reCAPTCHA-Module für die Erweiterung „Confirm Edit“",
+ "recaptcha-edit": "Zum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die beiden folgenden Wörter in das untenstehende Feld einzugeben:",
+ "recaptcha-addurl": "Deine Bearbeitung enthält neue externe Links. Zum Schutz des Wikis vor automatisiertem Spam bitten wir dich, die beiden folgenden Wörter in das folgende Feld einzugeben:",
+ "recaptcha-badlogin": "Zum Schutz des Wikis gegen automatisiertes Knacken von Passwörtern bitten wir dich, die beiden folgenden Wörter in das folgende Feld einzugeben:",
+ "recaptcha-createaccount": "Zum Schutz des Wikis gegen die automatisierte Erstellung von Benutzerkonten bitten wir dich, die folgenden beiden Wörter in das untenstehende Feld einzugeben:",
+ "recaptcha-createaccount-fail": "Fehlerhafte oder fehlende reCAPTCHA Antwort.",
+ "recaptcha-create": "Zum Schutz des Wikis gegen automatisierte Erstellung von Seiten bitten wir dich, die beiden folgenden Wörter in das folgende Feld einzugeben:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json b/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json
new file mode 100644
index 00000000..546db343
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/dsb.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "recaptcha-createaccount-fail": "Wopacne abo felujuce wótegrono reCAPTCHA."
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/en.json b/extensions/ConfirmEdit/ReCaptcha/i18n/en.json
new file mode 100644
index 00000000..1f40166d
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/en.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "recaptcha-desc": "reCAPTCHA module for Confirm Edit",
+ "recaptcha-edit": "To protect the wiki against automated edit spam, we kindly ask you to type the two words you see in the box below:",
+ "recaptcha-addurl": "Your edit includes new external links. To protect the wiki against automated spam, we kindly ask you to type the two words you see in the box below:",
+ "recaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to type the two words you see in the box below:",
+ "recaptcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to type the two words you see in the box below:",
+ "recaptcha-createaccount-fail": "Incorrect or missing reCAPTCHA answer.",
+ "recaptcha-create": "To protect the wiki against automated page creation, we kindly ask you to type the two words you see in the box below:"
+} \ No newline at end of file
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/es.json b/extensions/ConfirmEdit/ReCaptcha/i18n/es.json
new file mode 100644
index 00000000..9ccbef30
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/es.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fitoschido",
+ "Sporeunai"
+ ]
+ },
+ "recaptcha-edit": "Para ayudar a protegernos contra el spam de ediciones automáticas, seleccione sólo las fotos de gatos en el cuadro siguiente:",
+ "recaptcha-addurl": "La edición incluye nuevos enlaces externos. Para proteger la wiki contra el spam automatizado, le rogamos que escriba las dos palabras que ves en el cuadro siguiente:",
+ "recaptcha-badlogin": "Para proteger el wiki contra el robo automatizado de contraseñas, te pedimos por favor que selecciones únicamente las fotos de gatos en el cuadro siguiente:",
+ "recaptcha-createaccount": "Para protegernos de la creación automática de cuentas, escribe las dos palabras que ves en el cuadro de abajo:",
+ "recaptcha-createaccount-fail": "ReCAPTCHA incorrecto o sin responder.",
+ "recaptcha-create": "Para proteger contra creación automatizada página wiki, amablemente le pedimos que escriba las dos palabras que ves en el cuadro siguiente:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json b/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json
new file mode 100644
index 00000000..8e5e6ee1
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/fa.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armin1392",
+ "Ebraminio"
+ ]
+ },
+ "recaptcha-edit": "برای محافظت ویکی دربرابر ویرایش خودکار اسپم، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-addurl": "ویرایش شما شامل پیوندهای خارجی جدید است. برای محافظت ویکی در برابر هرزنگاری خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-badlogin": "برای محافظت ویکی دربرابر رخنهٔ رمز عبور به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-createaccount": "برای محافظت ویکی دربرابر ایجاد حساب به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:",
+ "recaptcha-createaccount-fail": "پاسخ نادرست یا عدم وجود ری‌سی‌اِی‌پی‌تی‌سی‌اچ‌اِی.",
+ "recaptcha-create": "برای محافظت ویکی دربرابر ایجاد صفحه به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json b/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json
new file mode 100644
index 00000000..59ef145a
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/fi.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Nedergard",
+ "VezonThunder"
+ ]
+ },
+ "recaptcha-edit": "Suojana automaattisia roskamuokkauksia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-addurl": "Muokkauksesi sisältää uusia ulkoisia linkkejä. Suojana automaattista roskapostia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-badlogin": "Suojana automaattisia salasanamurtoja vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-createaccount": "Suojana automaattista tunnusten luontia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:",
+ "recaptcha-createaccount-fail": "Väärä tai puuttuva reCAPTCHA-vastaus.",
+ "recaptcha-create": "Suojana automaattista sivujen luontia vastaan sinun on syötettävä kaksi näkemääsi sanaa laatikkoon alla:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json b/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json
new file mode 100644
index 00000000..ea3eb0a2
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/fr.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gomoko",
+ "Urhixidur",
+ "Verdy p"
+ ]
+ },
+ "recaptcha-desc": "module reCAPTCHA pour Confirmer Modifier",
+ "recaptcha-edit": "Afin de protéger le wiki du spam des modifications automatisées, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre ci-dessous :",
+ "recaptcha-addurl": "Votre contribution contient des liens vers un site externe. Pour protéger le wiki contre le spam automatisé, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit :",
+ "recaptcha-badlogin": "Pour protéger le wiki des essais automatiques de cassage de mot de passe, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit:",
+ "recaptcha-createaccount": "Pour protéger le wiki des créations automatiques de compte, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit :",
+ "recaptcha-createaccount-fail": "Réponse de reCAPTCHA fausse ou manquante.",
+ "recaptcha-create": "Pour protéger le wiki des créations automatiques de pages, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit :"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json b/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json
new file mode 100644
index 00000000..f57ac76a
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/gl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño"
+ ]
+ },
+ "recaptcha-desc": "Módulo de reCAPTCHA para Confirm Edit",
+ "recaptcha-edit": "Para protexer o wiki contra o spam automático, introduza as dúas palabras que vexa na caixa:",
+ "recaptcha-addurl": "A súa edición inclúe novas ligazóns externas. Para protexer o wiki contra o spam automático, introduza as dúas palabras que vexa na caixa:",
+ "recaptcha-badlogin": "Para protexer o wiki contra o roubo de contrasinais, introduza as dúas palabras que vexa na caixa:",
+ "recaptcha-createaccount": "Para protexer o wiki contra a creación automática de contas, introduza as dúas palabras que vexa na caixa:",
+ "recaptcha-createaccount-fail": "Falta a resposta ao reCAPTCHA ou esta é incorrecta.",
+ "recaptcha-create": "Para protexer o wiki contra a creación automática de páxinas, introduza as dúas palabras que vexa na caixa:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json b/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json
new file mode 100644
index 00000000..6407d0f7
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/gsw.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Holder"
+ ]
+ },
+ "recaptcha-edit": "Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-addurl": "In Dyre Bearbeitg het s neji extärni Links. Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-badlogin": "Zum Schutz gege automatisiert Knacken vu Passwerter, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-createaccount": "Zum Schutz gege s automatisiert Aalege vu Benutzerkonte, gib bitte di beide Werter in s Fäld unten yy:",
+ "recaptcha-createaccount-fail": "D reCAPTCHA-Antwort isch fählerhaft oder si fählt.",
+ "recaptcha-create": "Zum Schutz gege s automatisiert Aalege vu Syte, gib bitte di beide Werter in s Fäld unten yy:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/he.json b/extensions/ConfirmEdit/ReCaptcha/i18n/he.json
new file mode 100644
index 00000000..e9dcec87
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/he.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yona b"
+ ]
+ },
+ "recaptcha-edit": "אינכם משתמש רשום. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.",
+ "recaptcha-addurl": "עריכתכם כוללת קישורים חיצוניים חדשים. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.",
+ "recaptcha-badlogin": "כהגנה מפני מפצחי סיסמאות אוטומטיים, אנא הקלידו את שתי המילים שלהלן:",
+ "recaptcha-createaccount": "כהגנה מפני יצירה אוטומטית של חשבונות, נא הקלידו את שתי המילים שלהלן:",
+ "recaptcha-createaccount-fail": "לא הוקלדו מילות האישור, או שהוקלדו מילים לא נכונות. נסו שנית.",
+ "recaptcha-create": "אינכם משתמש רשום. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה."
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json b/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json
new file mode 100644
index 00000000..c37e61f2
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/hsb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "recaptcha-edit": "Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-addurl": "Twoja změna wobsahuje nowe eksterne wotkazy. Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-badlogin": "Zo by wiki přećiwo awtomatizowanemu złamanju hesłow škitał, zapisaj prošu dwě słowje, kotrejž widźiš, do slědowaceho pola:",
+ "recaptcha-createaccount": "Zo by wiki přećiwo awtomatiskemu wutworjenju konta škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:",
+ "recaptcha-createaccount-fail": "Wopačna abo falowaca wotmołwa reCAPTCHA.",
+ "recaptcha-create": "Zo by wiki přećiwo awtomatiskemu wutworjenju strony škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json
new file mode 100644
index 00000000..9df3bc12
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ia.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "recaptcha-edit": "Pro adjutar a proteger le wiki contra le spam automatisate, per favor dactylographa le duo parolas que tu vide in le quadro sequente:",
+ "recaptcha-addurl": "Iste modification include nove ligamines externe. Pro adjutar a proteger le wiki contra le spam automatisate, per favor dactylographa le duo parolas que tu vide in le quadro sequente:",
+ "recaptcha-badlogin": "Pro adjutar a proteger le wiki contra le furto automatisate de contrasignos, per favor dactylographa le duo parolas que tu vide in le quadro sequente:",
+ "recaptcha-createaccount": "Pro adjutar a proteger le wiki contra le creation automatisate de contos, per favor dactylographa le duo parolas que tu vide in le quadro sequente:",
+ "recaptcha-createaccount-fail": "Responsa reCAPTCHA incorrecte o mancante.",
+ "recaptcha-create": "Pro adjutar a proteger le wiki contra le creation automatisate de paginas, per favor dactylographa le duo parolas que tu vide in le quadro sequente:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/id.json b/extensions/ConfirmEdit/ReCaptcha/i18n/id.json
new file mode 100644
index 00000000..45b3df2d
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/id.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "IvanLanin"
+ ]
+ },
+ "recaptcha-edit": "Untuk membantu pelindungan terhadap spam penyuntingan otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-addurl": "Suntingan Anda menyertakan pranala eksternal baru. Untuk membantu pelindungan terhadap spam otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-badlogin": "Untuk membantu pelindungan terhadap perengkahan sandi otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-createaccount": "Untuk membantu pelindungan terhadap pembuatan akun otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:",
+ "recaptcha-createaccount-fail": "Jawaban reCAPTCHA tidak benar atau tidak dimasukkan.",
+ "recaptcha-create": "Untuk membantu pelindungan terhadap pembuatan halaman otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/it.json b/extensions/ConfirmEdit/ReCaptcha/i18n/it.json
new file mode 100644
index 00000000..f4da7d4c
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/it.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Nemo bis"
+ ]
+ },
+ "recaptcha-edit": "Per proteggere il wiki dalle modifiche automatiche che aggiungono spam, ti chiediamo gentilmente di scrivere le due parole mostrate nel riquadro sottostante:",
+ "recaptcha-addurl": "La tua modifica aggiunge qualche nuovo collegamento esterno. Per proteggere il wiki dallo spam automatico, ti chiediamo gentilmente di scrivere le due parole mostrate nel riquadro sottostante:",
+ "recaptcha-badlogin": "Per proteggere il wiki dalla forzatura automatica delle password, ti chiediamo gentilmente di scrivere le due parole mostrate nel riquadro sottostante:",
+ "recaptcha-createaccount": "Per proteggere il wiki dalla creazione automatica di nuovi accessi, ti chiediamo gentilmente di scrivere le due parole mostrate nel riquadro sottostante:",
+ "recaptcha-createaccount-fail": "Risposta reCAPTCHA mancante o errata.",
+ "recaptcha-create": "Per proteggere il wiki dalla creazione automatica di pagine, ti chiediamo gentilmente di scrivere le due parole mostrate nel riquadro sottostante:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json
new file mode 100644
index 00000000..9f07a7c4
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ja.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Shirayuki"
+ ]
+ },
+ "recaptcha-desc": "Confirm Edit 用 reCAPTCHA モジュール",
+ "recaptcha-edit": "ウィキへの自動編集スパム攻撃を防ぐため、お手数をおかけしますが下の画像に表示されている 2 つの単語を入力してください:",
+ "recaptcha-addurl": "あなたは新しい外部リンクを追加しようとしています。ウィキへの自動スパム攻撃を防ぐため、お手数をおかけしますが下の画像に表示されている 2 つの単語を入力してください:",
+ "recaptcha-badlogin": "ウィキへの自動パスワードクラック攻撃を防ぐため、お手数をおかけしますが下の画像に表示されている 2 つの単語を入力してください:",
+ "recaptcha-createaccount": "ウィキでのアカウント自動作成を防ぐため、お手数をおかけしますが下の画像に表示されている 2 つの単語を入力してください:",
+ "recaptcha-createaccount-fail": "文字列が正しくない、または入力されていません。",
+ "recaptcha-create": "ウィキでのページの自動作成を防ぐため、お手数をおかけしますが下の画像に表示されている 2 つの単語を入力してください:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json
new file mode 100644
index 00000000..83522f6d
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ko.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Priviet",
+ "아라"
+ ]
+ },
+ "recaptcha-desc": "편집 확인에 대한 reCAPCHA 모듈",
+ "recaptcha-edit": "자동 편집 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:",
+ "recaptcha-addurl": "편집에 새로운 바깥 고리가 포함되어 있습니다. 자동 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:",
+ "recaptcha-badlogin": "자동 비밀번호 크래킹으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:",
+ "recaptcha-createaccount": "자동화된 계정 만들기로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:",
+ "recaptcha-createaccount-fail": "reCAPTCHA 답이 올바르지 않거나 없습니다.",
+ "recaptcha-create": "자동 문서 생성을 막기 위해 아래 상자에 보이는 두 낱말을 입력하세요:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json
new file mode 100644
index 00000000..8bb7cf94
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ksh.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "recaptcha-edit": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje et automattesche Ändere un SPAM em Wiki schöze.",
+ "recaptcha-addurl": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje automattesch en et Wiki jebraate SPAM schöze, nohdämm en Dingem Beidraach {{PLURAL:$1|ene neue Lengk dren es|neue Lengks dren sin|kein neue Lengks dren sin}}.",
+ "recaptcha-badlogin": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje et automattesche Paßwoot Knacke em Wiki schöze.",
+ "recaptcha-createaccount": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje SPAM un automattesch aanjelaate Zohjäng nohm Wiki schöze.",
+ "recaptcha-createaccount-fail": "Dat wohr en verkehte udder jaa kei Antwoot op dat Kaptscha.",
+ "recaptcha-create": "Schrief di zwei Wööt en dä Kaste onge erin.\nDat sull jääje SPAM un automattesch aanjelaate Sigge em Wiki schöze."
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json b/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json
new file mode 100644
index 00000000..d6060b47
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/lb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "recaptcha-edit": "Fir d'Wiki géint automatiséierte Spam ze schützen, froe mir Iech déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner anzeginn:",
+ "recaptcha-addurl": "An Ärer Ännerung sinn nei extern Linken! Fir dës Wikie géint automatiséierte Spam ze schütze, froe mir Iech déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner anzeginn:",
+ "recaptcha-badlogin": "Fir d'Wiki géint d'automatiséiert Hacke vu Passwierder ze schützen, froe mir Iech déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner anzeginn:",
+ "recaptcha-createaccount": "Fir d'Wiki géint d'automatiséiert Uleeë vu Benotzerkonten ze schützen, froe mir Iech déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner anzeginn:",
+ "recaptcha-createaccount-fail": "reCAPTCHA Äntwert feelt oder ass net korrekt.",
+ "recaptcha-create": "Fir d'Wiki géint d'automatiséiert Uleeë vu Säiten ze schützen, froe mir Iech déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner anzeginn:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json b/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json
new file mode 100644
index 00000000..32274ddc
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/mk.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "recaptcha-desc": "Модул reCAPTCHA за потврда на уредувања",
+ "recaptcha-edit": "Како заштитна мерка против автоматизиран спам, би ве замолиле да ги внесете двата збора прикажани во полето:",
+ "recaptcha-addurl": "Во вашите измени има нови надворешни врски. Како заштитна мерка против автоматизиран спам, би ве замолиле да внесете двата збора прикажани во полето:",
+ "recaptcha-badlogin": "Како заштитна мерка против автоматизирано провалување на лозинки, би ве замолиле да внесете двата збора прикажани во полето:",
+ "recaptcha-createaccount": "Како заштитна мерка против автоматизирано создавање на сметки, би ве замолиле да внесете двата збора прикажани во полето:",
+ "recaptcha-createaccount-fail": "reCAPTCHA доби погрешен одговор или одговорот недостасува.",
+ "recaptcha-create": "Како заштитна мерка против автоматизирано создавање на страници, би ве замолиле да внесете двата збора прикажани во полето:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json
new file mode 100644
index 00000000..5d43a353
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ms.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia"
+ ]
+ },
+ "recaptcha-edit": "Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-addurl": "Suntingan anda termasuk pautan luar baru. Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-badlogin": "Untuk membanteras kegiatan meneka kata laluan secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-createaccount": "Untuk membanteras kegiatan membuka akaun secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:",
+ "recaptcha-createaccount-fail": "Jawapan reCAPTCHA tidak betul atau tidak ada.",
+ "recaptcha-create": "Untuk membanteras kegiatan mencipta laman secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json b/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json
new file mode 100644
index 00000000..fd799424
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/mt.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chrisportelli"
+ ]
+ },
+ "recaptcha-edit": "Sabiex tgħinna nipproteġu kontra l-modifiki li jżidu spam, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-addurl": "Il-modifika tiegħek tinkludi ħoloq esterni ġodda. Sabiex tipproteġi kontra spam awtomatiku, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-badlogin": "Sabiex tgħinna nipproteġu kontra l-infurzar awtomatiku tal-passwords, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-createaccount": "Sabiex tgħinna nipproteġu kontra l-ħolqien awtomatiku ta' kontijiet ġodda, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:",
+ "recaptcha-createaccount-fail": "Tweġiba reCAPTCHA ħażina jew nieqsa.",
+ "recaptcha-create": "Sabiex tgħinna nipproteġu kontra l-ħolqien awtomatiku ta' paġni, jekk jogħġbok ikteb iż-żewġ kelmiet li tara fil-kaxxa t'hawn taħt:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json b/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json
new file mode 100644
index 00000000..7cc7da16
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/nb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Event"
+ ]
+ },
+ "recaptcha-edit": "Som beskyttelse mot automatisk redigert spam, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-addurl": "Din redigering inneholder nye eksterne lenker. Som beskyttelse mot automatisk spam, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-badlogin": "Som beskyttelse mot automatisk passordknekking, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-createaccount": "Som beskyttelse mot automatisk opprettelse av brukerkonto, vennligst skriv inn de to ordene du ser i boksen under:",
+ "recaptcha-createaccount-fail": "Feil eller manglende reCAPTCHA-svar.",
+ "recaptcha-create": "Som beskyttelse mot automatisk opprettelse av side, vennligst skriv inn de to ordene du ser i boksen under:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json b/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json
new file mode 100644
index 00000000..f321d6a0
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/nl-informal.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Siebrand"
+ ]
+ },
+ "recaptcha-edit": "Voer ter bescherming tegen geautomatiseerde spam de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-addurl": "Je bewerking bevat nieuwe externe koppelingen. Voer ter bescherming tegen geautomatiseerde spam de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-badlogin": "Voer ter bescherming tegen het automatisch kraken van wachtwoorden de twee woorden die je ziet in het invoervenster in:",
+ "recaptcha-createaccount": "Om het automatisch aanmaken van gebruikers tegen te gaan moet je de twee woorden die je ziet invoeren:",
+ "recaptcha-create": "Om het automatisch aanmaken van pagina's tegen te gaan moet je de twee woorden die je ziet invoeren:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json b/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json
new file mode 100644
index 00000000..a108f255
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/nl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "HanV",
+ "Siebrand"
+ ]
+ },
+ "recaptcha-edit": "Voer ter bescherming tegen geautomatiseerde spam de twee woorden in die u in het onderstaande venster ziet:",
+ "recaptcha-addurl": "Uw bewerking bevat nieuwe externe koppelingen. Voer ter bescherming tegen geautomatiseerde spam de twee woorden in die u ziet in het onderstaande venster:",
+ "recaptcha-badlogin": "Voer ter bescherming tegen het automatisch kraken van wachtwoorden de twee woorden in die u ziet in het invoervenster:",
+ "recaptcha-createaccount": "Om het automatisch aanmaken van gebruikers tegen te gaan moet u de twee woorden in het onderstaande venster invoeren:",
+ "recaptcha-createaccount-fail": "Het reCAPTCHA-antwoord is onjuist of niet ingevoerd.",
+ "recaptcha-create": "Om het automatisch aanmaken van een pagina tegen te gaan moet u de twee woorden invoeren die in het onderstaande veld staan:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json b/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json
new file mode 100644
index 00000000..657f9f90
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/oc.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "recaptcha-createaccount-fail": "Responsa de reCAPTCHA faussa o mancanta."
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json b/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json
new file mode 100644
index 00000000..1a94b709
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/pl.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "WTM"
+ ]
+ },
+ "recaptcha-edit": "W celu ochrony przed zautomatyzowanym spamem, proszę wpisać dwa widoczne słowa w poniższym polu:",
+ "recaptcha-addurl": "Wprowadzony przez ciebie tekst zawiera nowe linki zewnętrzne. W celu ochrony przed zautomatyzowanym spamem, proszę wpisać dwa widoczne słowa w poniższym polu:",
+ "recaptcha-badlogin": "W celu ochrony przed zautomatyzowanym łamaniem haseł, proszę wpisać dwa widoczne słowa w poniższym polu:",
+ "recaptcha-createaccount": "W celu ochrony przed zautomatyzowanym tworzeniem kont, proszę wpisać dwa widoczne słowa w poniższym polu:",
+ "recaptcha-createaccount-fail": "Odpowiedź na reCAPTCHA jest fałszywa lub brakująca.",
+ "recaptcha-create": "W celu ochrony przed przed automatycznym tworzeniem stron, proszę wpisać dwa widoczne słowa w poniższym polu:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json b/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json
new file mode 100644
index 00000000..7f25a5f3
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/pms.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "recaptcha-edit": "Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ "recaptcha-addurl": "Soa modìfica a conten d'anliure esterne neuv. Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ "recaptcha-badlogin": "Për giuté a protege contra la forsadura automatisà ëd le ciav, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ "recaptcha-createaccount": "Për giuté a protege contra la creassion automatisà ëd cont, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ "recaptcha-createaccount-fail": "Rispòsta ëd reCAPTCHA fàussa o mancanta.",
+ "recaptcha-create": "Për giuté a protege contra la creassion automatisà ëd pàgine, për piasì ch'a scriv le doe paròle ch'a s-ciàira ant la casela sì-sota:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json b/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json
new file mode 100644
index 00000000..c0a101ef
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/pt-br.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": [],
+ "recaptcha-edit": "Para ajudar a prevenir contra vandalismos, por favor digite as duas palavras que você vê na caixa abaixo:",
+ "recaptcha-addurl": "A sua edição inclui ligações externas. Para ajudar a prevenir contra vandalismos, por favor digite as duas palavras que você vê na caixa abaixo:",
+ "recaptcha-badlogin": "Para ajudar a prevenir contra tentativas de desbloquear senhas, por favor digite as duas palavras que você vê na caixa abaixo:",
+ "recaptcha-createaccount": "Para ajudar a prevenir contra criação automatizada de usuários, por favor digite as duas palavras que você vê na caixa abaixo:",
+ "recaptcha-createaccount-fail": "Resposta incorreta ao reCAPTCHA.",
+ "recaptcha-create": "Para ajudar a prevenir contra criação automatizada de páginas, por favor digite as duas palavras que você vê na caixa abaixo:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json b/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json
new file mode 100644
index 00000000..ff48c572
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/pt.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "Fúlvio"
+ ]
+ },
+ "recaptcha-edit": "Para proteger esta wiki contra o spam de edições automáticas, por favor, digite as duas palavras que você vê na caixa abaixo:",
+ "recaptcha-addurl": "A sua edição contém links externos novos. Para proteger esta wiki contra o spam automatizado, escreva as duas palavras visíveis na caixa abaixo:",
+ "recaptcha-badlogin": "Para proteger esta wiki contra mecanismos automatizados de descoberta de palavras-chave, por favor escreva as duas palavras visíveis abaixo:",
+ "recaptcha-createaccount": "Para proteger esta wiki contra a criação de contas automatizada, por favor escreva as duas palavras visíveis abaixo:",
+ "recaptcha-createaccount-fail": "A resposta ao reCAPTCHA é errada.",
+ "recaptcha-create": "Para proteger esta wiki contra a criação de páginas automatizada, por favor escreva as duas palavras visíveis abaixo:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json b/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json
new file mode 100644
index 00000000..4a39d9c4
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/qqq.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Raymond",
+ "Shirayuki",
+ "Umherirrender"
+ ]
+ },
+ "recaptcha-desc": "{{Optional}}\n{{desc}}",
+ "recaptcha-edit": "{{Related|ConfirmEdit-edit}}",
+ "recaptcha-addurl": "{{Related|ConfirmEdit-addurl}}",
+ "recaptcha-badlogin": "{{Related|ConfirmEdit-badlogin}}",
+ "recaptcha-createaccount": "{{Related|ConfirmEdit-createaccount}}",
+ "recaptcha-createaccount-fail": "{{Related|ConfirmEdit-createaccount-fail}}",
+ "recaptcha-create": "{{Related|ConfirmEdit-create}}"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json b/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json
new file mode 100644
index 00000000..8e743e05
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/roa-tara.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "recaptcha-edit": "Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-addurl": "Le cangiaminde tune 'ngludone collegaminde de fore nuève. Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-badlogin": "Pe proteggere condre le futteminde automatece de le passuord, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-createaccount": "Pe proteggere condre le ccrejaziune automatece de le cunde, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:",
+ "recaptcha-createaccount-fail": "Resposte reCAPTCHA ingorrette o mangande.",
+ "recaptcha-create": "Pe proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json b/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json
new file mode 100644
index 00000000..64d48523
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/ru.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Okras",
+ "Александр Сигачёв"
+ ]
+ },
+ "recaptcha-edit": "В целях защиты от автоматического спама в правках просим вас ввести два слова, которые вы видите ниже:",
+ "recaptcha-addurl": "Ваша правка содержит новые внешние ссылки. В целях защиты от автоматического спама просим вас ввести два слова, которые вы видите в рамке ниже:",
+ "recaptcha-badlogin": "В целях защиты от автоматического подбора пароля просим вас ввести два слова, которые вы видите в рамке ниже:",
+ "recaptcha-createaccount": "В целях защиты от автоматического создания учётных записей просим вас ввести два слова, которые вы видите в рамке ниже:",
+ "recaptcha-createaccount-fail": "Ответ reCAPTCHA неправильный или отсутствует.",
+ "recaptcha-create": "В целях защиты от автоматического создания страниц просим вас ввести два слова, которые вы видите в рамке ниже:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/si.json b/extensions/ConfirmEdit/ReCaptcha/i18n/si.json
new file mode 100644
index 00000000..c6ab0ee2
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/si.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "recaptcha-createaccount-fail": "වැරදි හෝ දක්නට නොමැති reCAPTCHA පිළිතුර."
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json b/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json
new file mode 100644
index 00000000..b1d49d49
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/sr-ec.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rancher"
+ ]
+ },
+ "recaptcha-desc": "Модул reCAPTCHA за потврду уређивања"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json b/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json
new file mode 100644
index 00000000..1781239b
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/sr-el.json
@@ -0,0 +1,4 @@
+{
+ "@metadata": [],
+ "recaptcha-desc": "Modul reCAPTCHA za potvrdu uređivanja"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json b/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json
new file mode 100644
index 00000000..a625398f
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/sv.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "WikiPhoenix"
+ ]
+ },
+ "recaptcha-edit": "För att skydda wikin mot automatiskt redigerings-spam ber vi dig att skriva de två orden du ser i rutan nedan.",
+ "recaptcha-addurl": "Din redigering innehåller nya externa länkar. För att skydda wikin mot automatiserat spam ber vi dig att skriva de två ordern du ser i rutan nedan:",
+ "recaptcha-badlogin": "För att skydda wikin mot automatiserade försök att knäcka lösenord ber vi dig att skriva in de två orden du ser i rutan nedan:",
+ "recaptcha-createaccount": "För att skydda wikin mot automatiskt kontoskapande ber vi dig att skriva de två orden som du ser i rutan nedan:",
+ "recaptcha-createaccount-fail": "Du har angivit ett felaktig svar för reCAPTCHA.",
+ "recaptcha-create": "För att skydda wikin mot automatiserade sidskapande ber vi dig att skriva in de två orden du ser i rutan nedan:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json b/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json
new file mode 100644
index 00000000..245de04c
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/sw.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Lloffiwr"
+ ]
+ },
+ "recaptcha-edit": "Ili kusaidia kuzuia mashine zisihariri, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-addurl": "Haririo lako lina viungo vipya vya nje. Ili kusaidia katika kuzuisha viungo visivyotakiwa visiwekwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-badlogin": "Ili kusaidia katika kuzuia neno lako la siri lisigunduliwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-createaccount": "Ili kusaidia kuzuia akaunti zisifunguliwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:",
+ "recaptcha-createaccount-fail": "Jibu la swali la CAPTCHA si sahihi au halipo.",
+ "recaptcha-create": "Ili kusaidia kuzuia kurasa zisianzishwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/te.json b/extensions/ConfirmEdit/ReCaptcha/i18n/te.json
new file mode 100644
index 00000000..9b994825
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/te.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ravichandra"
+ ]
+ },
+ "recaptcha-edit": "వికీలో యాంత్రికంగా మార్పులు చేసే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-addurl": "మీ మార్పులు కొత్త బాహ్య లింకులు కలిగి ఉన్నాయి. వికీలో యాంత్రికంగా మార్పులు చేసే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-badlogin": "వికీలో పాస్‌వర్డ్ దొంగిలించే స్పామర్లను నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-createaccount": "వికీలో యాంత్రికంగా ఖాతా సృష్టించేవారిని నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:",
+ "recaptcha-createaccount-fail": "reCAPTCHA సమాధానం తప్పుగా ఇచ్చారు లేదా అసలే ఇవ్వలేదు.",
+ "recaptcha-create": "వికీలో యాంత్రికంగా పేజీ సృష్టించేవారిని నియంత్రించడానికి కింద పెట్టెలో ఉన్న రెండు పదాలను టైపు చెయ్యండి:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json b/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json
new file mode 100644
index 00000000..6b843b72
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/tl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "recaptcha-desc": "Modulo ng reCAPTCHA para sa Pagtiyak ng Pagbago",
+ "recaptcha-edit": "Upang makatulong sa pagprutekta laban sa kusang basurang pamamatnugot, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-addurl": "Ang pagbabago mo ay nagsasama ng bagong panlabas na mga kawing. Upang makatulong sa pagprutekta laban sa kusang paglusob ng basurang-liham, paki imakinilya ang dalawang mga salitang nakikita sa loob ng kahong nasa ibaba:",
+ "recaptcha-badlogin": "Upang makatulong sa pagsasanggalang laban sa kusang panghuhula ng hudyat, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-createaccount": "Upang makatulong sa pagprutekta laban sa kusang paglikha ng akawnt, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:",
+ "recaptcha-createaccount-fail": "Hindi tama o nawawalang sagot sa reCAPTCHA.",
+ "recaptcha-create": "Upang makatulong sa pagprutekta laban sa kusang paglikha ng pahina, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json b/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json
new file mode 100644
index 00000000..172b2974
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/uk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Andriykopanytsia",
+ "Base",
+ "Тест"
+ ]
+ },
+ "recaptcha-edit": "Для запобігання автоматичному спаму у редагуваннях просимо вас ввести два слова, які Ви бачите у блоці нижче:",
+ "recaptcha-addurl": "Ваше редагування містить зовнішні посилання. Для запобігання автоматичному спаму у редагуваннях просимо вас ввести два слова, які Ви бачите у блоці нижче:",
+ "recaptcha-badlogin": "Для запобігання автоматичному підбору паролю просимо вас ввести два слова, які Ви бачите у блоці нижче:",
+ "recaptcha-createaccount": "Для запобігання автоматичному створенню облікових записів просимо вас ввести два слова, які Ви бачите у блоці нижче:",
+ "recaptcha-createaccount-fail": "Відповідь reCAPTCHA неправильна або відсутня.",
+ "recaptcha-create": "З метою захисту вікі від автоматичного створення сторінки просимо вас ввести два слова, які ви бачите у блоці нижче:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json b/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json
new file mode 100644
index 00000000..a8888c40
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/vi.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen"
+ ]
+ },
+ "recaptcha-desc": "Mô đun reCAPTCHA cho Confirm Edit",
+ "recaptcha-edit": "Để giúp tránh các sửa đổi spam tự động, xin vui lòng gõ hai từ mà bạn nhìn thấy vào hộp dưới đây:",
+ "recaptcha-addurl": "Sửa đổi của bạn có chứa liên kết ngoài mới. Để giúp tránh các sửa đổi spam tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-badlogin": "Để giúp tránh bẻ khóa mật khẩu tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-createaccount": "Để giúp tránh việc mở tài khoản tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:",
+ "recaptcha-createaccount-fail": "Thiếu câu trả lời reCAPTCHA hoặc câu trả lời không đúng.",
+ "recaptcha-create": "Để giúp tránh việc tạo trang tự động, xin vui lòng gõ hai từ mà bạn nhìn vào hộp dưới đây:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json b/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json
new file mode 100644
index 00000000..df915f45
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hans.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hydra",
+ "Hzy980512",
+ "Onecountry"
+ ]
+ },
+ "recaptcha-edit": "为了避免垃圾用户自动编辑,请键入下面框中的两个单词:",
+ "recaptcha-addurl": "您的编辑包含新的外部链接。为了避免垃圾用户自动编辑,请键入下面框中的两个单词:",
+ "recaptcha-badlogin": "为避免自动密码破解,请键入下面框中的两个单词:",
+ "recaptcha-createaccount": "为了避免创建自动垃圾用户,请键入下面框中的两个单词:",
+ "recaptcha-createaccount-fail": "reCAPTCHA 答案不正确或未填写。",
+ "recaptcha-create": "为了避免垃圾用户自动创建页面,请键入下面框中的两个单词:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json b/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json
new file mode 100644
index 00000000..c920d527
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/i18n/zh-hant.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "StephDC",
+ "Cwlin0416"
+ ]
+ },
+ "recaptcha-edit": "為了防止垃圾編輯程式,我們要麻煩您輸入在下面的方框中顯示的兩個單字:",
+ "recaptcha-addurl": "您的編輯使用了新的外部連結。為了防止垃圾編輯程式,我們要麻煩您輸入在下面的方框中顯示的兩個單字:",
+ "recaptcha-badlogin": "為了防止密碼破解程式,我們要麻煩您輸入在下面的方框中顯示的兩個單字:",
+ "recaptcha-createaccount": "為了防止自動註冊程式,我們要麻煩您輸入在下面的方框中顯示的兩個單字:",
+ "recaptcha-createaccount-fail": "不正確或者未輸入 reCAPTCHA 回答。",
+ "recaptcha-create": "為了防止自動建立頁面程式,我們要麻煩您輸入在下面的方框中顯示的兩個單字:"
+}
diff --git a/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php b/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php
new file mode 100644
index 00000000..a04f5673
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha/recaptchalib.php
@@ -0,0 +1,274 @@
+<?php
+/**
+ * This is a PHP library that handles calling reCAPTCHA.
+ * - Documentation and latest version
+ * http://recaptcha.net/plugins/php/
+ * - Get a reCAPTCHA API Key
+ * https://www.google.com/recaptcha/admin/create
+ * - Discussion group
+ * http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ * Mike Crawford
+ * Ben Maurer
+ *
+ * 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.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define( "RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api" );
+define( "RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api" );
+define( "RECAPTCHA_VERIFY_SERVER", "www.google.com" );
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode ( $data ) {
+ $req = "";
+ foreach ( $data as $key => $value )
+ $req .= $key . '=' . urlencode( stripslashes( $value ) ) . '&';
+
+ // Cut the last '&'
+ $req = substr( $req, 0, strlen( $req ) -1 );
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post( $host, $path, $data, $port = 80 ) {
+
+ $req = _recaptcha_qsencode ( $data );
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen( $req ) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if ( false == ( $fs = @fsockopen( $host, $port, $errno, $errstr, 10 ) ) ) {
+ die ( 'Could not open socket' );
+ }
+
+ fwrite( $fs, $http_request );
+
+ while ( !feof( $fs ) )
+ $response .= fgets( $fs, 1160 ); // One TCP-IP packet
+ fclose( $fs );
+ $response = explode( "\r\n\r\n", $response, 2 );
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ( $pubkey, $error = null, $use_ssl = false )
+{
+ if ( $pubkey == null || $pubkey == '' ) {
+ die ( "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>" );
+ }
+
+ if ( $use_ssl ) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ( $error ) {
+ $errorpart = "&amp;error=" . $error;
+ }
+ return '<script type="text/javascript" src="' . $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+ <noscript>
+ <iframe src="' . $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
+ <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+ <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+ </noscript>';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ public $is_valid;
+ public $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ( $privkey, $remoteip, $challenge, $response, $extra_params = array() )
+{
+ if ( $privkey == null || $privkey == '' ) {
+ die ( "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>" );
+ }
+
+ if ( $remoteip == null || $remoteip == '' ) {
+ die ( "For security reasons, you must pass the remote ip to reCAPTCHA" );
+ }
+
+
+
+ // discard spam submissions
+ if ( $challenge == null || strlen( $challenge ) == 0 || $response == null || strlen( $response ) == 0 ) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post ( RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ( "\n", $response [1] );
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if ( trim ( $answers [0] ) == 'true' ) {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ( $domain = null, $appname = null ) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode ( array ( 'domains' => $domain, 'app' => $appname ) );
+}
+
+function _recaptcha_aes_pad( $val ) {
+ $block_size = 16;
+ $numpad = $block_size - ( strlen ( $val ) % $block_size );
+ return str_pad( $val, strlen ( $val ) + $numpad, chr( $numpad ) );
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt( $val, $ky ) {
+ if ( ! function_exists ( "mcrypt_encrypt" ) ) {
+ die ( "To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed." );
+ }
+ $mode = MCRYPT_MODE_CBC;
+ $enc = MCRYPT_RIJNDAEL_128;
+ $val = _recaptcha_aes_pad( $val );
+ return mcrypt_encrypt( $enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" );
+}
+
+
+function _recaptcha_mailhide_urlbase64 ( $x ) {
+ return strtr( base64_encode ( $x ), '+/', '-_' );
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url( $pubkey, $privkey, $email ) {
+ if ( $pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null ) {
+ die ( "To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>" );
+ }
+
+
+ $ky = pack( 'H*', $privkey );
+ $cryptmail = _recaptcha_aes_encrypt ( $email, $ky );
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ( $cryptmail );
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ( $email ) {
+ $arr = preg_split( "/@/", $email );
+
+ if ( strlen ( $arr[0] ) <= 4 ) {
+ $arr[0] = substr ( $arr[0], 0, 1 );
+ } elseif ( strlen ( $arr[0] ) <= 6 ) {
+ $arr[0] = substr ( $arr[0], 0, 3 );
+ } else {
+ $arr[0] = substr ( $arr[0], 0, 4 );
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html( $pubkey, $privkey, $email ) {
+ $emailparts = _recaptcha_mailhide_email_parts ( $email );
+ $url = recaptcha_mailhide_url ( $pubkey, $privkey, $email );
+
+ return htmlentities( $emailparts[0] ) . "<a href='" . htmlentities ( $url ) .
+ "' onclick=\"window.open('" . htmlentities ( $url ) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ( $emailparts [1] );
+
+}