diff options
Diffstat (limited to 'extensions/ConfirmEdit/ReCaptchaNoCaptcha')
17 files changed, 357 insertions, 0 deletions
diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php new file mode 100644 index 00000000..7631b82f --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.class.php @@ -0,0 +1,148 @@ +<?php +class ReCaptchaNoCaptcha extends SimpleCaptcha { + private $error = null; + /** + * Get the captcha form. + * @return string + */ + function getForm( OutputPage $out ) { + global $wgReCaptchaSiteKey; + + // Insert reCAPTCHA script. + // See https://developers.google.com/recaptcha/docs/faq + $out->addHeadItem( + 'g-recaptchascript', + '<script src="https://www.google.com/recaptcha/api.js" async defer></script>' + ); + $output = Html::element( 'div', array( + 'class' => array( + 'g-recaptcha', + 'mw-confirmedit-captcha-fail' => !!$this->error, + ), + 'data-sitekey' => $wgReCaptchaSiteKey + ) ); + $htmlUrlencoded = htmlspecialchars( urlencode( $wgReCaptchaSiteKey ) ); + $output .= <<<HTML +<noscript> + <div style="width: 302px; height: 422px;"> + <div style="width: 302px; height: 422px; position: relative;"> + <div style="width: 302px; height: 422px; position: absolute;"> + <iframe src="https://www.google.com/recaptcha/api/fallback?k={$htmlUrlencoded}" + frameborder="0" scrolling="no" + style="width: 302px; height:422px; border-style: none;"> + </iframe> + </div> + <div style="width: 300px; height: 60px; border-style: none; + bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px; + background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;"> + <textarea id="g-recaptcha-response" name="g-recaptcha-response" + class="g-recaptcha-response" + style="width: 250px; height: 40px; border: 1px solid #c1c1c1; + margin: 10px 25px; padding: 0px; resize: none;" > + </textarea> + </div> + </div> + </div> +</noscript> +HTML; + return $output; + } + + protected function logCheckError( $info ) { + if ( $info instanceof Status ) { + $errors = $status->getErrorsArray(); + $error = $errors[0][0]; + } elseif ( is_array( $info ) ) { + $error = implode( ',', $info ); + } else { + $error = $info; + } + wfDebugLog( 'captcha', 'Unable to validate response: ' . $error ); + } + + /** + * Check, if the user solved the captcha. + * + * Based on reference implementation: + * https://github.com/google/recaptcha#php + * + * @return boolean + */ + function passCaptcha() { + global $wgRequest, $wgReCaptchaSecretKey, $wgReCaptchaSendRemoteIP; + + $url = 'https://www.google.com/recaptcha/api/siteverify'; + // Build data to append to request + $data = array( + 'secret' => $wgReCaptchaSecretKey, + 'response' => $wgRequest->getVal( 'g-recaptcha-response' ), + ); + if ( $wgReCaptchaSendRemoteIP ) { + $data['remoteip'] = $wgRequest->getIP(); + } + $url = wfAppendQuery( $url, $data ); + $request = MWHttpRequest::factory( $url, array( 'method' => 'GET' ) ); + $status = $request->execute(); + if ( !$status->isOK() ) { + $this->error = 'http'; + $this->logStatusError( $status ); + return false; + } + $response = FormatJson::decode( $request->getContent(), true ); + if ( !$response ) { + $this->error = 'json'; + $this->logStatusError( $this->error ); + return false; + } + if ( isset( $response['error-codes'] ) ) { + $this->error = 'recaptcha-api'; + $this->logCheckError( $response['error-codes'] ); + return false; + } + + return $response['success']; + } + + function addCaptchaAPI( &$resultArr ) { + global $wgReCaptchaSiteKey; + + $resultArr['captcha']['type'] = 'recaptchanocaptcha'; + $resultArr['captcha']['mime'] = 'image/png'; + $resultArr['captcha']['key'] = $wgReCaptchaSiteKey; + $resultArr['captcha']['error'] = $this->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 Wikitext + */ + function getMessage( $action ) { + $name = 'renocaptcha-' . $action; + $msg = wfMessage( $name ); + + $text = $msg->isDisabled() ? wfMessage( 'renocaptcha-edit' )->text() : $msg->text(); + if ( $this->error ) { + $text = '<div class="error">' . $text . '</div>'; + } + return $text; + } + + public function APIGetAllowedParams( &$module, &$params, $flags ) { + if ( $flags && $this->isAPICaptchaModule( $module ) ) { + $params['g-recaptcha-response'] = null; + } + + return true; + } + + public function APIGetParamDescription( &$module, &$desc ) { + if ( $this->isAPICaptchaModule( $module ) ) { + $desc['g-recaptcha-response'] = 'Field from the ReCaptcha widget'; + } + + return true; + } +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php new file mode 100644 index 00000000..e7528b7a --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/ReCaptchaNoCaptcha.php @@ -0,0 +1,13 @@ +<?php +if ( function_exists( 'wfLoadExtension' ) ) { + wfLoadExtension( 'ConfirmEdit/ReCaptchaNoCaptcha' ); + // Keep i18n globals so mergeMessageFileList.php doesn't break + $wgMessagesDirs['ReCaptchaNoCaptcha'] = __DIR__ . '/i18n'; + /* wfWarn( + 'Deprecated PHP entry point used for ReCaptchaNoCaptcha extension. Please use wfLoadExtension instead, ' . + 'see https://www.mediawiki.org/wiki/Extension_registration for more details.' + ); */ + return; +} else { + die( 'This version of the ReCaptchaNoCaptcha extension requires MediaWiki 1.25+' ); +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json new file mode 100644 index 00000000..25379bc6 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json @@ -0,0 +1,17 @@ +{ + "name": "ReCaptchaNoCaptcha", + "MessagesDirs": { + "ReCaptchaNoCaptcha": [ + "i18n" + ] + }, + "AutoloadClasses": { + "ReCaptchaNoCaptcha": "ReCaptchaNoCaptcha.class.php" + }, + "config": { + "CaptchaClass": "ReCaptchaNoCaptcha", + "ReCaptchaSiteKey": "", + "ReCaptchaSecretKey": "", + "ReCaptchaSendRemoteIP": false + } +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json new file mode 100644 index 00000000..2669f48e --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ast.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Xuacu" + ] + }, + "renocaptcha-edit": "Pa protexer la wiki escontra'l spam d'ediciones automatizáu, pidímoste que resuelvas el siguiente CAPTCHA:", + "renocaptcha-addurl": "La to edición incluye enllaces esternos nuevos. Pa protexer la wiki escontra'l spam automáticu, pidímoste que resuelvas el siguiente CAPTCHA:", + "renocaptcha-badlogin": "Para protexer la wiki escontra'l frayamientu automáticu de contraseñes, pidímoste amablemente que resuelvas el siguiente CAPTCHA:", + "renocaptcha-createaccount": "Pa protexer la wiki escontra la creación de cuentes automatizada, pidímoste que resuelvas el siguiente CAPTCHA:", + "renocaptcha-createaccount-fail": "Paez que nun resolvisti'l CAPTCHA.", + "renocaptcha-create": "Pa protexer la wiki escontra la creación de páxines automatizada, pidímoste que resuelvas el siguiente CAPTCHA:", + "renocaptcha-noscript": "Por desgracia desactivasti JavaScript, polo que nun podemos reconocer automáticamente si yes humanu o non. Resuelve'l CAPTCHA de más arriba y copia'l testu resultante nel siguiente cuadru de testu:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json new file mode 100644 index 00000000..782ef932 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/de.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Metalhead64" + ] + }, + "renocaptcha-edit": "Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:", + "renocaptcha-addurl": "Deine Bearbeitung enthält neue Weblinks. Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:", + "renocaptcha-badlogin": "Um das Wiki vor automatisiertem Knacken des Passwortes zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:", + "renocaptcha-createaccount": "Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:", + "renocaptcha-createaccount-fail": "Es scheint, als ob du das CAPTCHA nicht gelöst hast.", + "renocaptcha-create": "Um das Wiki vor automatisierter Seitenerstellung zu schützen, bitten wir dich, das folgende CAPTCHA zu lösen:", + "renocaptcha-noscript": "Da du leider JavaScript deaktiviert hast, konnten wir nicht feststellen, ob du ein Mensch bist oder nicht. Bitte löse das obige CAPTCHA und kopiere den resultierenden Text in das folgende Textfeld:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json new file mode 100644 index 00000000..f924c5d6 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/en.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [] + }, + "renocaptcha-edit": "To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:", + "renocaptcha-addurl": "Your edit includes new external links. To protect the wiki against automated spam, we kindly ask you to solve the following CAPTCHA:", + "renocaptcha-badlogin": "To protect the wiki against automated password cracking, we kindly ask you to solve the following CAPTCHA:", + "renocaptcha-createaccount": "To protect the wiki against automated account creation, we kindly ask you to solve the following CAPTCHA:", + "renocaptcha-createaccount-fail": "It seems you haven't solved the CAPTCHA.", + "renocaptcha-create": "To protect the wiki against automated page creation, we kindly ask you to solve the following CAPTCHA:", + "renocaptcha-noscript": "Unhappily you have disabled JavaScript, so we can't recognize automatically, if you're a human or not. Please solve the CAPTCHA above and copy the resulting text into the following textarea:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json new file mode 100644 index 00000000..c0ff07d7 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/es.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Macofe" + ] + }, + "renocaptcha-edit": "Para proteger el wiki contra el spam automatizado, te pedimos que resuelvas el siguiente CAPTCHA:", + "renocaptcha-addurl": "Tu edición incluye enlaces externos nuevos. Para proteger el wiki contra el spam automatizado, te pedimos que resuelvas el siguiente CAPTCHA:", + "renocaptcha-badlogin": "Para proteger el wiki contra el descifrado automatizado de contraseñas, te pedimos que resuelvas el siguiente CAPTCHA:", + "renocaptcha-createaccount": "Para proteger el wiki contra la creación automatizada de cuentas, te pedimos que resuelvas el siguiente CAPTCHA:", + "renocaptcha-createaccount-fail": "Parece que no has resuelto el CAPTCHA.", + "renocaptcha-create": "Para proteger el wiki contra la creación automatizada de páginas, te pedimos que resuelvas el siguiente CAPTCHA:", + "renocaptcha-noscript": "Por desgracia has desactivado JavaScript, por lo que no se puede reconocer automáticamente, si eres un humano o no. Resuelve el CAPTCHA de arriba y copia el texto resultante en el siguiente cuadro:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json new file mode 100644 index 00000000..85962dd7 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/fr.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Wladek92" + ] + }, + "renocaptcha-edit": "Pour protéger le wiki contre les spams de modifications automatiques, nous vous demandons de bien vouloir résoudre le CAPTCHA suivant:", + "renocaptcha-addurl": "Votre édition comprend de nouveaux liens externes. Pour protéger le wiki contre les spams automatisées, nous vous demandons de bien vouloir résoudre le CAPTCHA suivant:", + "renocaptcha-badlogin": "Pour protéger le wiki contre les spams automatisés de craquage des mots de passe, nous vous prions de bien vouloir résoudre le CAPTCHA suivant:", + "renocaptcha-createaccount": "Pour protéger le wiki contre la création automatisée des pages, nous vous prions de bien vouloir résoudre le CAPTCHA suivant:", + "renocaptcha-createaccount-fail": "Il semble que vous n'ayiez pas résolu le CAPTCHA.", + "renocaptcha-create": "Pour protéger le wiki contre la création automatisée de pages, nous vous prions de bien vouloir résoudre le CAPTCHA suivant:", + "renocaptcha-noscript": "Malheureusement, vous avez désactivé JavaScript, donc nous ne pouvons pas reconnaître automatiquement, si vous êtes un humain ou pas. Veuillez résoudre le CAPTCHA ci-dessus et copiez le texte qui en résulte dans la zone de texte suivante :" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json new file mode 100644 index 00000000..418ef29e --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/gl.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Elisardojm" + ] + }, + "renocaptcha-edit": "Para protexer a wiki contra edicións de spam automatizadas, por iso pedímoslle amablemente que resolva o seguinte CAPTCHA:", + "renocaptcha-addurl": "A súa edición inclúe novas ligazóns externas. Para protexer a wiki contra o spam automático, pedímoslle amablemente que resolva o seguinte CAPTCHA:", + "renocaptcha-badlogin": "Para protexer a wiki contra a ruptura automática de contrasinais, pedímoslle amablemente que resolva o seguinte CAPTCHA:", + "renocaptcha-createaccount": "Para protexer a wiki contra a creación automática de contas, pedímoslle amablemente que resolva o seguinte CAPTCHA:", + "renocaptcha-createaccount-fail": "Parece que non resolveu o CAPTCHA.", + "renocaptcha-create": "Para protexer a wiki contra a creación automática de páxinas, pedímoslle amablemente que resolva o seguinte CAPTCHA:", + "renocaptcha-noscript": "Desafortunadamente desactivou o JavaScript, polo que non podemos recoñecer automaticamente se vostede é unha persoa ou non. Por favor, resolva o CAPTCHA de arriba e copie o texto coa solución na seguinte área de texto:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json new file mode 100644 index 00000000..6ecc8918 --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/ht.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Bfpage" + ] + }, + "renocaptcha-createaccount-fail": "Li sanble ou pa te rezoud CAPTCHA la.", + "renocaptcha-create": "Pou pwoteje wiki sa a nan paj kreyasyon fè pa yon machin oswa pwogram otomatik ki fonksyone, nou dous mande w yo rezoud CAPTCHA sa a:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json new file mode 100644 index 00000000..09884e6e --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/lb.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Robby" + ] + }, + "renocaptcha-createaccount-fail": "Et schéngt wéi wann Dir de CAPTCHA net geléist hätt." +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json new file mode 100644 index 00000000..96f644df --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/mk.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Bjankuloski06" + ] + }, + "renocaptcha-edit": "Со цел да го заштитиме викито од автоматизирани спам-уредувања, би ве замолиле да го решите прикажаното на сликичката:", + "renocaptcha-addurl": "Во уредувањето имате ставено нови надворешни врски. Со цел да го заштитиме викито од автоматизиран спам, би ве замолиле да го решите прикажаното на сликичката:", + "renocaptcha-badlogin": "Со цел да го заштитиме викито од автоматизирано пробивање на лозинки, би ве замолиле да го решите прикажаното на сликичката:", + "renocaptcha-createaccount": "Со цел да го заштитиме викито од автоматизирано создавање на сметки, би ве замолиле да го решите прикажаното на сликичката:", + "renocaptcha-createaccount-fail": "Го немате решено прикажаното на сликичката.", + "renocaptcha-create": "Со цел да го заштитиме викито од автоматизирано создавање на страници, би ве замолиле да го решите прикажаното на сликичката:", + "renocaptcha-noscript": "За несреќа, ја имате исклучено JavaScript, па затоа не можеме автоматски да одредиме дали сте човек или не. Решете го прикажаното на сликичката погоре и прекопирајте го добиеното во следново поле:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json new file mode 100644 index 00000000..56263a4a --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pl.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Chrumps" + ] + }, + "renocaptcha-edit": "W celu ochrony przed zautomatyzowanym spamem edycyjnym, proszę wpisać poniższy tekst CAPTCHA:", + "renocaptcha-addurl": "Wprowadzony przez Ciebie tekst zawiera nowe linki zewnętrzne. W celu ochrony przed zautomatyzowanym spamem, proszę wpisać poniższy tekst CAPTCHA:", + "renocaptcha-badlogin": "W celu ochrony przed zautomatyzowanym łamaniem hasła, proszę wpisać poniższy tekst CAPTCHA:", + "renocaptcha-createaccount": "W celu ochrony przed zautomatyzowanym utworzeniem konta, proszę wpisać poniższy tekst CAPTCHA:", + "renocaptcha-createaccount-fail": "Wydaje się, że CAPTCHA nie został wpisany prawidłowo.", + "renocaptcha-create": "W celu ochrony przed zautomatyzowanym utworzeniem strony, proszę wpisać poniższy tekst CAPTCHA:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json new file mode 100644 index 00000000..67c417aa --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/pt.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Vitorvicentevalente" + ] + }, + "renocaptcha-edit": "Para proteger a wiki contra a edição automatizada de spam, pedimos gentilmente que resolva o seguinte código CAPTCHA:", + "renocaptcha-addurl": "A sua edição inclui novas ligações externas. Para proteger a wiki contra o spam automático, pedimos gentilmente que resolva o seguinte código CAPTCHA:", + "renocaptcha-createaccount": "Para proteger a wiki contra a criação automatizada de conta, pedimos que resolva o seguinte código CAPTCHA:", + "renocaptcha-createaccount-fail": "Parece que não resolveu o código CAPTCHA ainda.", + "renocaptcha-create": "Para proteger a wiki contra a criação automatizada de páginas novas, pedimos que resolva o seguinte código CAPTCHA:", + "renocaptcha-noscript": "Infelizmente desativou o JavaScript, o que nos impossibilita de reconhecer automaticamente se é um humano ou não. Por favor, resolva o código CAPTCHA abaixo e copie o resultado para o campo de texto seguinte:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json new file mode 100644 index 00000000..c778953b --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/qqq.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [] + }, + "renocaptcha-edit": "Message above the CAPTCHA for edit action.", + "renocaptcha-addurl": "Message above the CAPTCHA for addurl (user added new external links to the page) action.", + "renocaptcha-badlogin": "Message above the CAPTCHA for badlogin action.", + "renocaptcha-createaccount": "Message above the CAPTCHA for createaccount (user creates a new account) action.", + "renocaptcha-createaccount-fail": "Error message, when the CAPTCHA isn't solved correctly.", + "renocaptcha-create": "Message above the CAPTCHA for create (user creates a new page) action.", + "renocaptcha-noscript": "This messages is warning you have javascript disabled so you have to manualy input the text into the textbox." +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json new file mode 100644 index 00000000..11715edd --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/uk.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Ата" + ] + }, + "renocaptcha-edit": "Щоб захистити вікі від автоматичного спаму в редагуваннях, ми уклінно просимо Вас ввести CAPTCHA:", + "renocaptcha-addurl": "Ваше редагування містить нові зовнішні посилання. Щоб захистити вікі від автоматичного спаму в редагуваннях, ми уклінно просимо Вас ввести CAPTCHA:", + "renocaptcha-badlogin": "Щоб захистити вікі від автоматичного зламування паролів, ми уклінно просимо Вас ввести CAPTCHA:", + "renocaptcha-createaccount": "Щоб захистити вікі від автоматичного створення облікових записів, ми уклінно просимо Вас ввести CAPTCHA:", + "renocaptcha-createaccount-fail": "Схоже, Вам не вдалося ввести CAPTCHA.", + "renocaptcha-create": "Щоб захистити вікі від автоматичного створення сторінок, ми уклінно просимо Вас ввести CAPTCHA:", + "renocaptcha-noscript": "На жаль, Ви вимкнули JavaScript, і ми не можемо розпізнати автоматично, людина Ви чи ні. Будь ласка, введіть текст із CAPTCHA, що вгорі, у відповідне текстове поле:" +} diff --git a/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json new file mode 100644 index 00000000..8079d98a --- /dev/null +++ b/extensions/ConfirmEdit/ReCaptchaNoCaptcha/i18n/zh-hans.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Liuxinyu970226" + ] + }, + "renocaptcha-edit": "为保护wiki免于自动化编辑破坏,我们希望您输入下面的验证码:", + "renocaptcha-addurl": "您的编辑包含新的外部链接。为保护wiki免于自动化破坏,我们希望您输入下面的验证码:", + "renocaptcha-badlogin": "为保护wiki免于自动化密码破解,我们希望您输入下面的验证码:", + "renocaptcha-createaccount": "为保护wiki免于自动化账户创建,我们希望您输入下面的验证码:", + "renocaptcha-createaccount-fail": "看起来您未输入正确的验证码。", + "renocaptcha-create": "为保护wiki免于自动化页面创建,我们希望您输入下面的验证码:", + "renocaptcha-noscript": "不幸的是,您禁用了JavaScript,因此我们不能自动识别您是否是一个人。请识别上方的验证码,并将结果文本复制至下面的文本区域:" +} |