From 3079d33145ff63edb23ad36b31cd1c5f51d74986 Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Thu, 29 Oct 2026 15:08:20 +0000 Subject: [PATCH 1/3] Send the token with User Registration AJAX logins; fix Spectra token lookup with several forms - User Registration's AJAX login posts only its own fields, so the wp_authenticate_user check never saw procaptcha-response and rejected every login. A jQuery prefilter now adds the token from the login form, and a failed login resets the widget. - Spectra reads hidden fields via getElementById('hidden'), which returns the first match on the page, so a second Spectra form (or one with its own hidden field first) sent the wrong or no token. Our input no longer has that id; a hidden element whose id is the field name lets Spectra's per-form loop send the form's own value. Co-Authored-By: Claude Opus 5.5 --- .../userRegistrationAjaxLogin.ts | 50 +++++++++++++++++++ .../integrations/procaptcha/ajaxFormsReset.ts | 11 ++++ .../procaptcha/procaptcha-integration.ts | 5 ++ prosopo-procaptcha/readme.txt | 2 + .../Spectra/Spectra_Form_Integration.php | 12 ++++- 5 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 assets/src/integrations/plugins/user-registration/userRegistrationAjaxLogin.ts diff --git a/assets/src/integrations/plugins/user-registration/userRegistrationAjaxLogin.ts b/assets/src/integrations/plugins/user-registration/userRegistrationAjaxLogin.ts new file mode 100644 index 0000000..525d8a7 --- /dev/null +++ b/assets/src/integrations/plugins/user-registration/userRegistrationAjaxLogin.ts @@ -0,0 +1,50 @@ +const LOGIN_ACTION = "action=user_registration_ajax_login_submit"; +const LOGIN_BUTTON_SELECTOR = "#user_registration_ajax_login_submit"; +const TOKEN_FIELD_NAME = "procaptcha-response"; + +const getLoginForms = (): HTMLFormElement[] => + Array.from(document.querySelectorAll(LOGIN_BUTTON_SELECTOR)) + .map((button) => button.closest("form")) + .filter((form): form is HTMLFormElement => null !== form); + +const getFormToken = (form: HTMLFormElement): string => { + const input = form.querySelector(`input[name="${TOKEN_FIELD_NAME}"]`); + + return input instanceof HTMLInputElement ? input.value : ""; +}; + +const getLoginToken = (): string => { + const forms = getLoginForms(); + // The clicked submit button is focused, so prefer its form when there are several. + const focusedForm = forms.find((form) => + form.contains(document.activeElement), + ); + const form = focusedForm || forms.find((form) => "" !== getFormToken(form)); + + return undefined !== form ? getFormToken(form) : ""; +}; + +/** + * With the "AJAX login" option on, User Registration posts only its own fields, + * so the token must be added for the WordPress authentication check to see it. + */ +const addTokenToUserRegistrationAjaxLogin = ($: JQueryStatic): void => { + $.ajaxPrefilter((options) => { + if ( + "string" !== typeof options.url || + false === options.url.includes(LOGIN_ACTION) || + "string" !== typeof options.data + ) { + return; + } + + const fields = new URLSearchParams(options.data); + + if (false === fields.has(TOKEN_FIELD_NAME)) { + fields.set(TOKEN_FIELD_NAME, getLoginToken()); + options.data = fields.toString(); + } + }); +}; + +export { addTokenToUserRegistrationAjaxLogin }; diff --git a/assets/src/integrations/procaptcha/ajaxFormsReset.ts b/assets/src/integrations/procaptcha/ajaxFormsReset.ts index 99d1f2b..8d68d19 100644 --- a/assets/src/integrations/procaptcha/ajaxFormsReset.ts +++ b/assets/src/integrations/procaptcha/ajaxFormsReset.ts @@ -141,6 +141,17 @@ const bindJQueryEvents = ($: JQueryStatic): void => { "user_registration_frontend_after_ajax_complete", (_event, _response, _type, $form) => requestReset($form), ); + // AJAX login: passes the submit button. On success the page redirects. + $document.on("user_registration_after_login_failed", (_event, $button) => + requestReset( + null !== $button && + "object" === typeof $button && + "closest" in $button && + "function" === typeof $button.closest + ? $button.closest("form") + : null, + ), + ); $(document.body).on("checkout_error", () => requestReset(document.querySelector("form.checkout")), diff --git a/assets/src/integrations/procaptcha/procaptcha-integration.ts b/assets/src/integrations/procaptcha/procaptcha-integration.ts index 26ef3a4..e026e59 100644 --- a/assets/src/integrations/procaptcha/procaptcha-integration.ts +++ b/assets/src/integrations/procaptcha/procaptcha-integration.ts @@ -4,6 +4,7 @@ import type Logger from "../../utils/logger/logger.js"; import FormIntegrationComponent from "#integrations/procaptcha/formIntegrationComponent.js"; import WidgetIntegrationComponent from "#integrations/procaptcha/widgetIntegrationComponent.js"; import { resetWidgetsAfterAjaxSubmissions } from "#integrations/procaptcha/ajaxFormsReset.js"; +import { addTokenToUserRegistrationAjaxLogin } from "#integrations/plugins/user-registration/userRegistrationAjaxLogin.js"; const integrationConnector = createIntegrationConnector(); @@ -40,3 +41,7 @@ integrationConnector.connectIntegration(formIntegration); integrationConnector.connectIntegration(widgetIntegration); resetWidgetsAfterAjaxSubmissions(); + +if ("function" === typeof window.jQuery) { + addTokenToUserRegistrationAjaxLogin(window.jQuery); +} diff --git a/prosopo-procaptcha/readme.txt b/prosopo-procaptcha/readme.txt index bd904d1..d6161b7 100644 --- a/prosopo-procaptcha/readme.txt +++ b/prosopo-procaptcha/readme.txt @@ -156,6 +156,8 @@ Absolutely! The plugin has a [public GitHub repository](https://github.com/proso = 1.24.0 (2026-10-29) = * Fix: forms that submit without reloading the page get a fresh captcha after each submission, as a solved captcha can be verified only once. Previously, resubmitting after another field failed validation was rejected. Covers Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Elementor Pro, Everest Forms, JetFormBuilder, User Registration, Beaver Builder, WooCommerce checkout and the Blocksy newsletter form +* Fix: User Registration login forms with the "AJAX login" option on now send the captcha token, so logins are no longer rejected +* Fix: Spectra forms send their own captcha token when a page has several Spectra forms, or a Spectra hidden field before the captcha * Feature: public JavaScript events - `prosopo-procaptcha:filled` (with the token) and `prosopo-procaptcha:cleared` are dispatched on the widget, and dispatching `prosopo-procaptcha:reset` on a form resets its captcha * Feature: failed verifications are written to the debug log when WP_DEBUG is on, with the API's status and reason, and the new `prosopo/procaptcha/verification_result` action receives every verification response, including the score diff --git a/prosopo-procaptcha/src/Integrations/Plugins/Spectra/Spectra_Form_Integration.php b/prosopo-procaptcha/src/Integrations/Plugins/Spectra/Spectra_Form_Integration.php index 0c84c76..550ec5c 100644 --- a/prosopo-procaptcha/src/Integrations/Plugins/Spectra/Spectra_Form_Integration.php +++ b/prosopo-procaptcha/src/Integrations/Plugins/Spectra/Spectra_Form_Integration.php @@ -67,9 +67,10 @@ protected function replace_stub_form_input_with_widget_field( string $form_conte Widget_Settings::ELEMENT_ATTRIBUTES => array( 'style' => 'margin: 0 0 20px', ), + // No id="hidden" (as Spectra's own hidden field has): Spectra reads that one + // via getElementById(), so only the first such field on the page is sent. Widget_Settings::HIDDEN_INPUT_ATTRIBUTES => array( 'class' => 'uagb-forms-hidden-input', - 'id' => 'hidden', 'name' => $this->stub_form_input_name, ), Widget_Settings::IS_DESIRED_ON_GUESTS => true, @@ -78,9 +79,16 @@ protected function replace_stub_form_input_with_widget_field( string $form_conte ) ); + // Spectra sends each form field under the text of the element whose id is the field's name + // (its field labels), reading the value from the submitted form itself, so it works with several forms per page. + $field_label = sprintf( + '', + esc_attr( $this->stub_form_input_name ) + ); + return $this->spectra_form->replace_input_in_form( $this->stub_form_input_name, - $widget_element, + $widget_element . $field_label, $form_content ); } From 2860324de32722802ec148f19fe1c2cbdafe66e7 Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Thu, 29 Oct 2026 15:27:05 +0000 Subject: [PATCH 2/3] Stop sending the visitor IP by default; make IP matching a setting Sending `ip` to /siteverify turns on IP matching, which rejects real visitors when the IP differs from the one that solved the captcha. Most sites are behind Cloudflare, where REMOTE_ADDR is Cloudflare's address, so 1.23.0's default could reject legitimate submissions. - New "Visitor IP matching" select on the General tab, off by default: Cloudflare (CF-Connecting-IP), another proxy (first X-Forwarded-For address) or a direct connection (REMOTE_ADDR). - The prosopo/procaptcha/visitor_ip filter now receives the IP from that setting (empty when off) plus REMOTE_ADDR, and can still override it. - Unit tests for each source, the default and the filter. - Translations for the new strings in de, es, fr, it and pt. Co-Authored-By: Claude Opus 5.5 --- .../tests/Unit/Visitor_Ip_Test.php | 76 ++++++++++++++++++ php-tools/code-quality/tests/bootstrap.php | 17 ++++ .../lang/prosopo-procaptcha-de_DE.l10n.php | 2 +- .../lang/prosopo-procaptcha-de_DE.mo | Bin 11061 -> 11509 bytes .../lang/prosopo-procaptcha-de_DE.po | 51 ++++++++---- .../lang/prosopo-procaptcha-es_ES.l10n.php | 2 +- .../lang/prosopo-procaptcha-es_ES.mo | Bin 11153 -> 11636 bytes .../lang/prosopo-procaptcha-es_ES.po | 51 ++++++++---- .../lang/prosopo-procaptcha-fr_FR.l10n.php | 2 +- .../lang/prosopo-procaptcha-fr_FR.mo | Bin 11300 -> 11788 bytes .../lang/prosopo-procaptcha-fr_FR.po | 51 ++++++++---- .../lang/prosopo-procaptcha-it_IT.l10n.php | 2 +- .../lang/prosopo-procaptcha-it_IT.mo | Bin 10993 -> 11473 bytes .../lang/prosopo-procaptcha-it_IT.po | 51 ++++++++---- .../lang/prosopo-procaptcha-pt_PT.l10n.php | 2 +- .../lang/prosopo-procaptcha-pt_PT.mo | Bin 11140 -> 11621 bytes .../lang/prosopo-procaptcha-pt_PT.po | 51 ++++++++---- .../lang/prosopo-procaptcha.pot | 46 ++++++++--- prosopo-procaptcha/readme.txt | 1 + .../General/Tab/General_Settings_Tab.php | 41 ++++++++-- .../src/Settings/Procaptcha_Settings.php | 10 +++ .../src/Widget/Procaptcha_Widget.php | 27 ++++++- 22 files changed, 378 insertions(+), 105 deletions(-) create mode 100644 php-tools/code-quality/tests/Unit/Visitor_Ip_Test.php diff --git a/php-tools/code-quality/tests/Unit/Visitor_Ip_Test.php b/php-tools/code-quality/tests/Unit/Visitor_Ip_Test.php new file mode 100644 index 0000000..e56fe72 --- /dev/null +++ b/php-tools/code-quality/tests/Unit/Visitor_Ip_Test.php @@ -0,0 +1,76 @@ + '172.68.1.1', + 'HTTP_CF_CONNECTING_IP' => '203.0.113.7', + 'HTTP_X_FORWARDED_FOR' => '198.51.100.9, 10.0.0.1', + ); + + protected function tearDown(): void { + $GLOBALS['test_filters'] = array(); + Mockery::close(); + } + + public function testNothingIsSentByDefault() { + $this->assertSame( '', $this->get_visitor_ip( '' ) ); + } + + public function testCloudflareHeader() { + $this->assertSame( '203.0.113.7', $this->get_visitor_ip( Procaptcha_Settings::VISITOR_IP_CLOUDFLARE ) ); + } + + public function testCloudflareWithoutHeaderSendsNothing() { + $this->assertSame( '', $this->get_visitor_ip( Procaptcha_Settings::VISITOR_IP_CLOUDFLARE, array( 'REMOTE_ADDR' => '172.68.1.1' ) ) ); + } + + public function testFirstForwardedForAddress() { + $this->assertSame( '198.51.100.9', $this->get_visitor_ip( Procaptcha_Settings::VISITOR_IP_X_FORWARDED_FOR ) ); + } + + public function testRemoteAddr() { + $this->assertSame( '172.68.1.1', $this->get_visitor_ip( Procaptcha_Settings::VISITOR_IP_REMOTE_ADDR ) ); + } + + public function testFilterCanEnableWhenOff() { + $GLOBALS['test_filters']['prosopo/procaptcha/visitor_ip'] = fn( $ip, $remote_addr ) => $remote_addr; + + $this->assertSame( '172.68.1.1', $this->get_visitor_ip( '' ) ); + } + + public function testInvalidIpIsNotSent() { + $this->assertSame( '', $this->get_visitor_ip( Procaptcha_Settings::VISITOR_IP_CLOUDFLARE, array( 'HTTP_CF_CONNECTING_IP' => 'not-an-ip' ) ) ); + } + + protected function get_visitor_ip( string $source, array $server = self::SERVER ): string { + $_SERVER = $server; + + $settings = Mockery::mock( Procaptcha_Settings::class ); + $settings->shouldReceive( 'get_visitor_ip_source' )->andReturn( $source ); + + $widget_class = get_class( + new class() extends Procaptcha_Widget { + // Skip the parent's constructor: only the settings are needed. + public function __construct() {} + + public function visitor_ip(): string { + return $this->get_visitor_ip(); + } + } + ); + $widget = new $widget_class(); + + $settings_property = new \ReflectionProperty( Procaptcha_Widget::class, 'procaptcha_settings' ); + $settings_property->setAccessible( true ); + $settings_property->setValue( $widget, $settings ); + + return $widget->visitor_ip(); + } +} diff --git a/php-tools/code-quality/tests/bootstrap.php b/php-tools/code-quality/tests/bootstrap.php index cea9f27..8e70265 100644 --- a/php-tools/code-quality/tests/bootstrap.php +++ b/php-tools/code-quality/tests/bootstrap.php @@ -7,6 +7,23 @@ function esc_html( string $var ): string { return htmlentities( $var, ENT_QUOTES ); } +function wp_unslash( $value ) { + return $value; +} + +function sanitize_text_field( $value ) { + return $value; +} + +// Runs a callback set in $GLOBALS['test_filters'][ $hook_name ], if any. +function apply_filters( string $hook_name, $value, ...$args ) { + $callback = $GLOBALS['test_filters'][ $hook_name ] ?? null; + + return null !== $callback ? + $callback( $value, ...$args ) : + $value; +} + require_once __DIR__ . '/../vendor/autoload.php'; require_once __DIR__ . '/TestCase.php'; require_once __DIR__ . '/../../../prosopo-procaptcha/prefixed-vendors/vendor/scoper-autoload.php'; diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.l10n.php b/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.l10n.php index 301fb6d..e07d483 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.l10n.php +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.l10n.php @@ -1,2 +1,2 @@ 'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'Kostenloses, DSGVO-konformes CAPTCHA gegen Spam-Bots für die WordPress-Kernformulare und 21 Formular-Plugins, Page-Builder und Themes. Ohne Cookies.','Prosopo Team'=>'Prosopo-Team','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Formularschutz für dieses Forum aktivieren (neues Thema, Antwort)','Procaptcha protection'=>'Procaptcha-Schutz','Disabled'=>'Deaktiviert','Enabled'=>'Aktiviert','Enable Procaptcha form protection'=>'Procaptcha-Formularschutz aktivieren','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Schützen Sie das Checkout-Formular','Protect the order tracking form'=>'Schützen Sie das Formular zur Bestellverfolgung','Core Forms'=>'Kernformulare','Protect the comment form:'=>'Schützen Sie das Kommentarfeld:','Protect the login form:'=>'Schützen Sie das Anmeldeformular:','Protect the lost password form:'=>'Schützen Sie das Formular für vergessenes Passwort:','Protect the post/page password form:'=>'Schützen Sie das Beitrags-/Seitenpasswort-Formular:','Protect the register form:'=>'Schützen Sie das Registrierungsformular:','Active Integrations'=>'Aktive Integrationen','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Das Procaptcha-Plugin erkennt kompatible Plugins auf Ihrer Website automatisch und aktiviert deren Integrationen. Klicken Sie auf einen Eintrag, um die passende Dokumentationsseite zu öffnen.','Note: Inactive plugins, even if compatible, are excluded.'=>'Hinweis: Inaktive Plugins werden nicht berücksichtigt, auch wenn sie kompatibel sind.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Ihr Lieblings-Plugin fehlt? %1$s Starten Sie ein Thema %2$s in unserem Support-Forum, und wir prüfen eine neue Integration.','General'=>'Allgemein','Your Secret Key:'=>'Ihr geheimer Schlüssel:','Your Site Key:'=>'Ihr Website-Schlüssel:','Theme:'=>'Design:','Language:'=>'Sprache:','Require from authorized users:'=>'Von autorisierten Benutzern verlangen:','Dark'=>'Dunkel','Light'=>'Hell','Same as the site'=>'Wie die Website','Visitor\'s browser language'=>'Browsersprache des Besuchers','Behavior'=>'Verhalten','Upgrade to Professional'=>'Auf Professional upgraden','Spam Filter: blocks disposable and throwaway email addresses'=>'Spam-Filter: blockiert Wegwerf-E-Mail-Adressen','VPN, proxy and datacenter filtering'=>'Filterung von VPNs, Proxys und Rechenzentren','Choose your challenge type, plus icon-order and audio challenges'=>'Wählen Sie den Challenge-Typ, dazu Symbol-Reihenfolge- und Audio-Challenges','A risk score and block reason for every decision'=>'Risikowert und Sperrgrund für jede Entscheidung','Up to 1M requests a month and 50 sites'=>'Bis zu 1 Mio. Anfragen pro Monat und 50 Websites','Email and Discord support, 99.9% uptime'=>'Support per E-Mail und Discord, 99,9 % Verfügbarkeit','Start a 30-day free trial'=>'30 Tage kostenlos testen','Procaptcha Settings'=>'Procaptcha-Einstellungen','Procaptcha'=>'Procaptcha','Settings'=>'Einstellungen','Statistics'=>'Statistiken','Open the Portal'=>'Portal öffnen','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Nutzung und Einstellungen Ihres Site-Keys. Konto und Website-Einstellungen verwalten Sie im Prosopo-Portal.','Your Site Key'=>'Ihr Site-Key','Change in the portal'=>'Im Portal ändern','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Mit Ihrem Tarif wählen Sie den Challenge-Typ für diesen Site-Key im Prosopo-Portal.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha zeigt nur Besuchern, die wie Bots wirken, eine Challenge und wählt dafür Proof of Work, Bild oder Puzzle. Einen einzelnen Challenge-Typ festlegen können Sie im Professional-Tarif.','Challenge type:'=>'Challenge-Typ:','Your Challenges'=>'Ihre Challenges','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (Challenge nur bei Bedarf)','Icon order'=>'Symbol-Reihenfolge','Image'=>'Bild','Proof of Work'=>'Arbeitsnachweis','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'von {total} geprüften Besuchen in diesem Monat','Bots stopped this month'=>'Diesen Monat gestoppte Bots','Checked by your server'=>'Von Ihrem Server geprüft','On track for about {forecast} of {limit} by the end of the month.'=>'Hochgerechnet etwa {forecast} von {limit} bis zum Monatsende.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Hochgerechnet etwa {forecast} bis zum Monatsende, über Ihrem Limit von {limit}.','Requests this month'=>'Anfragen in diesem Monat','{used} of {limit} requests used'=>'{used} von {limit} Anfragen genutzt','Day'=>'Tag','Hide the table'=>'Tabelle ausblenden','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent} % der Besucher haben die unsichtbare Prüfung ohne Challenge bestanden.','Visitors who saw nothing to solve'=>'Besucher ohne Aufgabe','Requests'=>'Anfragen','Challenges served'=>'Ausgelieferte Challenges','Your server checks {percent}% of solved captchas.'=>'Ihr Server prüft {percent} % der gelösten Captchas.','Setup check'=>'Einrichtungsprüfung','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Nur {percent} % der gelösten Captchas wurden von Ihrem Server geprüft. Möglicherweise nimmt ein Formular Einsendungen an, ohne das Procaptcha-Token zu verifizieren, sodass Bots es umgehen können.','How verification works'=>'So funktioniert die Verifizierung','Show as a table'=>'Als Tabelle anzeigen','Solved by visitors'=>'Von Besuchern gelöst','Total'=>'Gesamt','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Ihre Statistiken konnten nicht geladen werden. Prüfen Sie, ob Site-Key und Secret-Key im Tab Allgemein korrekt und gespeichert sind, und versuchen Sie es erneut.','Successfully loaded at'=>'Erfolgreich geladen um','Loading, please wait.'=>'Laden, bitte warten.','Refresh now'=>'Jetzt aktualisieren','Try again'=>'Erneut versuchen','View traffic analytics'=>'Traffic-Analysen ansehen','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'Traffic-Analysen sind in jedem Tarif enthalten. Die Diagramme finden Sie im Prosopo-Portal.','Traffic Analytics'=>'Verkehrsanalysen','Audio:'=>'Audio:','Icon order:'=>'Symbol-Reihenfolge:','Image:'=>'Bild:','Proof of Work:'=>'Arbeitsnachweis:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Monatliche Nutzung','Total Verification Requests:'=>'Gesamte Verifizierungsanfragen:','Please verify that you are human.'=>'Bitte bestätigen Sie, dass Sie ein Mensch sind.','Frictionless'=>'Reibungslos','Pow'=>'Pow','Save'=>'Speichern','Procaptcha for WordPress'=>'Procaptcha für WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'Kostenloses, DSGVO-konformes CAPTCHA gegen Spam-Bots. Ohne Cookies.','Docs'=>'Dokumentation','Website'=>'Website','Prosopo portal'=>'Prosopo-Portal','Settings successfully saved.'=>'Einstellungen erfolgreich gespeichert.','Get your free site key'=>'Kostenlosen Site-Key holen','Sign up for a free Prosopo account.'=>'Registrieren Sie sich kostenlos bei Prosopo.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Kopieren Sie Site-Key und Secret-Key aus dem Prosopo-Portal.','Paste them here, save, and turn on the forms you want to protect.'=>'Fügen Sie beide hier ein, speichern Sie und aktivieren Sie die Formulare, die Sie schützen möchten.','Free for 10,000 requests a month. No credit card.'=>'Kostenlos für 10.000 Anfragen pro Monat. Keine Kreditkarte nötig.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Vorschau: Wenn die Anmeldedaten gültig sind, sollten Sie in der Lage sein, das Captcha unten zu vervollständigen:','What protects your forms'=>'Was Ihre Formulare schützt','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Eine unsichtbare Prüfung: Die meisten Besucher müssen nichts lösen, nur Besucher, die wie Bots wirken, erhalten eine Challenge.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Eine versteckte Honeypot-Falle und die Sperrung bekannter missbräuchlicher Netzwerke.','No cookies and no tracking.'=>'Keine Cookies und kein Tracking.','All included on the free plan.'=>'Alles im kostenlosen Tarif enthalten.','Data processing agreement'=>'Auftragsverarbeitungsvertrag','Please setup your keys to see the statistics.'=>'Bitte richten Sie Ihre Schlüssel ein, um die Statistiken zu sehen.']]; \ No newline at end of file +return ['domain'=>'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'Kostenloses, DSGVO-konformes CAPTCHA gegen Spam-Bots für die WordPress-Kernformulare und 21 Formular-Plugins, Page-Builder und Themes. Ohne Cookies.','Prosopo Team'=>'Prosopo-Team','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Formularschutz für dieses Forum aktivieren (neues Thema, Antwort)','Procaptcha protection'=>'Procaptcha-Schutz','Disabled'=>'Deaktiviert','Enabled'=>'Aktiviert','Enable Procaptcha form protection'=>'Procaptcha-Formularschutz aktivieren','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Schützen Sie das Checkout-Formular','Protect the order tracking form'=>'Schützen Sie das Formular zur Bestellverfolgung','Core Forms'=>'Kernformulare','Protect the comment form:'=>'Schützen Sie das Kommentarfeld:','Protect the login form:'=>'Schützen Sie das Anmeldeformular:','Protect the lost password form:'=>'Schützen Sie das Formular für vergessenes Passwort:','Protect the post/page password form:'=>'Schützen Sie das Beitrags-/Seitenpasswort-Formular:','Protect the register form:'=>'Schützen Sie das Registrierungsformular:','Active Integrations'=>'Aktive Integrationen','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Das Procaptcha-Plugin erkennt kompatible Plugins auf Ihrer Website automatisch und aktiviert deren Integrationen. Klicken Sie auf einen Eintrag, um die passende Dokumentationsseite zu öffnen.','Note: Inactive plugins, even if compatible, are excluded.'=>'Hinweis: Inaktive Plugins werden nicht berücksichtigt, auch wenn sie kompatibel sind.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Ihr Lieblings-Plugin fehlt? %1$s Starten Sie ein Thema %2$s in unserem Support-Forum, und wir prüfen eine neue Integration.','General'=>'Allgemein','Your Secret Key:'=>'Ihr geheimer Schlüssel:','Your Site Key:'=>'Ihr Website-Schlüssel:','Theme:'=>'Design:','Language:'=>'Sprache:','Require from authorized users:'=>'Von autorisierten Benutzern verlangen:','Dark'=>'Dunkel','Light'=>'Hell','Same as the site'=>'Wie die Website','Visitor\'s browser language'=>'Browsersprache des Besuchers','Behavior'=>'Verhalten','Upgrade to Professional'=>'Auf Professional upgraden','Spam Filter: blocks disposable and throwaway email addresses'=>'Spam-Filter: blockiert Wegwerf-E-Mail-Adressen','VPN, proxy and datacenter filtering'=>'Filterung von VPNs, Proxys und Rechenzentren','Choose your challenge type, plus icon-order and audio challenges'=>'Wählen Sie den Challenge-Typ, dazu Symbol-Reihenfolge- und Audio-Challenges','A risk score and block reason for every decision'=>'Risikowert und Sperrgrund für jede Entscheidung','Up to 1M requests a month and 50 sites'=>'Bis zu 1 Mio. Anfragen pro Monat und 50 Websites','Email and Discord support, 99.9% uptime'=>'Support per E-Mail und Discord, 99,9 % Verfügbarkeit','Start a 30-day free trial'=>'30 Tage kostenlos testen','Procaptcha Settings'=>'Procaptcha-Einstellungen','Procaptcha'=>'Procaptcha','Settings'=>'Einstellungen','Statistics'=>'Statistiken','Open the Portal'=>'Portal öffnen','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Nutzung und Einstellungen Ihres Site-Keys. Konto und Website-Einstellungen verwalten Sie im Prosopo-Portal.','Your Site Key'=>'Ihr Site-Key','Change in the portal'=>'Im Portal ändern','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Mit Ihrem Tarif wählen Sie den Challenge-Typ für diesen Site-Key im Prosopo-Portal.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha zeigt nur Besuchern, die wie Bots wirken, eine Challenge und wählt dafür Proof of Work, Bild oder Puzzle. Einen einzelnen Challenge-Typ festlegen können Sie im Professional-Tarif.','Challenge type:'=>'Challenge-Typ:','Your Challenges'=>'Ihre Challenges','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (Challenge nur bei Bedarf)','Icon order'=>'Symbol-Reihenfolge','Image'=>'Bild','Proof of Work'=>'Arbeitsnachweis','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'von {total} geprüften Besuchen in diesem Monat','Bots stopped this month'=>'Diesen Monat gestoppte Bots','Checked by your server'=>'Von Ihrem Server geprüft','On track for about {forecast} of {limit} by the end of the month.'=>'Hochgerechnet etwa {forecast} von {limit} bis zum Monatsende.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Hochgerechnet etwa {forecast} bis zum Monatsende, über Ihrem Limit von {limit}.','Requests this month'=>'Anfragen in diesem Monat','{used} of {limit} requests used'=>'{used} von {limit} Anfragen genutzt','Day'=>'Tag','Hide the table'=>'Tabelle ausblenden','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent} % der Besucher haben die unsichtbare Prüfung ohne Challenge bestanden.','Visitors who saw nothing to solve'=>'Besucher ohne Aufgabe','Requests'=>'Anfragen','Challenges served'=>'Ausgelieferte Challenges','Your server checks {percent}% of solved captchas.'=>'Ihr Server prüft {percent} % der gelösten Captchas.','Setup check'=>'Einrichtungsprüfung','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Nur {percent} % der gelösten Captchas wurden von Ihrem Server geprüft. Möglicherweise nimmt ein Formular Einsendungen an, ohne das Procaptcha-Token zu verifizieren, sodass Bots es umgehen können.','How verification works'=>'So funktioniert die Verifizierung','Show as a table'=>'Als Tabelle anzeigen','Solved by visitors'=>'Von Besuchern gelöst','Total'=>'Gesamt','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Ihre Statistiken konnten nicht geladen werden. Prüfen Sie, ob Site-Key und Secret-Key im Tab Allgemein korrekt und gespeichert sind, und versuchen Sie es erneut.','Successfully loaded at'=>'Erfolgreich geladen um','Loading, please wait.'=>'Laden, bitte warten.','Refresh now'=>'Jetzt aktualisieren','Try again'=>'Erneut versuchen','View traffic analytics'=>'Traffic-Analysen ansehen','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'Traffic-Analysen sind in jedem Tarif enthalten. Die Diagramme finden Sie im Prosopo-Portal.','Traffic Analytics'=>'Verkehrsanalysen','Audio:'=>'Audio:','Icon order:'=>'Symbol-Reihenfolge:','Image:'=>'Bild:','Proof of Work:'=>'Arbeitsnachweis:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Monatliche Nutzung','Total Verification Requests:'=>'Gesamte Verifizierungsanfragen:','Please verify that you are human.'=>'Bitte bestätigen Sie, dass Sie ein Mensch sind.','Frictionless'=>'Reibungslos','Pow'=>'Pow','Save'=>'Speichern','Procaptcha for WordPress'=>'Procaptcha für WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'Kostenloses, DSGVO-konformes CAPTCHA gegen Spam-Bots. Ohne Cookies.','Docs'=>'Dokumentation','Website'=>'Website','Prosopo portal'=>'Prosopo-Portal','Settings successfully saved.'=>'Einstellungen erfolgreich gespeichert.','Get your free site key'=>'Kostenlosen Site-Key holen','Sign up for a free Prosopo account.'=>'Registrieren Sie sich kostenlos bei Prosopo.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Kopieren Sie Site-Key und Secret-Key aus dem Prosopo-Portal.','Paste them here, save, and turn on the forms you want to protect.'=>'Fügen Sie beide hier ein, speichern Sie und aktivieren Sie die Formulare, die Sie schützen möchten.','Free for 10,000 requests a month. No credit card.'=>'Kostenlos für 10.000 Anfragen pro Monat. Keine Kreditkarte nötig.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Vorschau: Wenn die Anmeldedaten gültig sind, sollten Sie in der Lage sein, das Captcha unten zu vervollständigen:','What protects your forms'=>'Was Ihre Formulare schützt','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Eine unsichtbare Prüfung: Die meisten Besucher müssen nichts lösen, nur Besucher, die wie Bots wirken, erhalten eine Challenge.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Eine versteckte Honeypot-Falle und die Sperrung bekannter missbräuchlicher Netzwerke.','No cookies and no tracking.'=>'Keine Cookies und kein Tracking.','All included on the free plan.'=>'Alles im kostenlosen Tarif enthalten.','Data processing agreement'=>'Auftragsverarbeitungsvertrag','Please setup your keys to see the statistics.'=>'Bitte richten Sie Ihre Schlüssel ein, um die Statistiken zu sehen.','Visitor IP matching:'=>'Abgleich der Besucher-IP:','Off (recommended)'=>'Aus (empfohlen)','On - site is behind Cloudflare'=>'An – Website läuft hinter Cloudflare','On - visitors connect directly (REMOTE_ADDR)'=>'An – Besucher verbinden sich direkt (REMOTE_ADDR)','On - site is behind another proxy (X-Forwarded-For)'=>'An – Website läuft hinter einem anderen Proxy (X-Forwarded-For)']]; \ No newline at end of file diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.mo b/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.mo index aeb6c5a6ae9bd103d4f2729fa23eac32d4297e80..1ef452ce8c5233ec84bccf2c13a6a994fc306742 100644 GIT binary patch delta 2409 zcmaLXe@xVM9LMpGA(8^h&k~64o5rsc!ICsI^bp+Gbo?khkQL+LdvL+s+1&w#t*eOs zq0KeKY*CwqxyIJk7}Xyxb=BM=Dr!wzL>sNO3j5(;%hguT7hJ2giXGp_=li|y_w#xG z_DH5NyRd}8SBu84`M8SiL3By z~4ii@!lZ@GzW=zBsF}Q&X6}ShRuoOpd4PL^PIENYd4JyVJe5nOuQQxn{ zJWRz~a3}7-`%t-@z^(WKK7k)$8S9(+cw-W{a2yNp6zYLVRA8UrTKq10ehqonB=HbK zlZDDW50!Z#CgL{KbLB|PrWSQy6Q*MeCbGWiWsrpfco&{RmFRO+iLc-tn82)?aSzs^ z51n`(NAWsVQ;E-@uD^kWcnwvNJib)rs;~hMU__a`%s@ST4cFtls0e5AJzPN6Fz1q% zGn&E_&S#L=%#YFQzoA+bPxLYe)%)G(Kv&dWyp{83lBs_tgR@*vDKDXV`V}gmc~k|o z8gm;5s@KJ+`$|xowhZ-r6B4Uw$Bo#Fe9UtkcHyh2z`jQ%9-B)2)#D^qdkOPUJ)A`K z>SNRbmyuY^BHn{>Y+d!V33Jg#W%?AlaTFCm9A(t}n~+PU9F?#O)skR@fi~N5ROv@h znM|NExq!-i8r6b1q@Cs`?8o1+9{X8kD}IIp7*90BYM#b?JdOMC15_*0S?ufz`d`A} zAQ!Gumtw3UJVn}vId}{o#|czLcCb@bp)ynjDp8xanu7xCL?zOPs@M>!VQ=)_?hh@NM$fizDu z>i3}&b^j1%>ivJ7fi}sTsGdwl&#$0LsCsGBrJ*X2feP4xYF#dBGj2iMw;ff%U8s3$ z(ZV)Vr3X;0ox!{agLwwZB+XiW&s|u<`5@knGk6g*iB2V+Ll6Fp%D7>}a_dG=m7Bs4 zPNQ~t<;LZf)Sz17MYX0MBNrG9Gf+e>>Z;Awj*9#U>ir%>EqoHW)to^KCy_PGJgPP8 z*f82dmADOiumHzUmHZS{sc%tx^&3>PYD;CDDx_8!b8#X*HIZ=M3wFr z?8Fq(QUH&j792x;{|>Sr%`7UgUr`Gt-?sdgWS{~oK_%>LWS|LZQKfzWc|}bxK8(k( z9uqb#m)MOja()t3(w#(6gw+)4=T zrQ^+MPp*kLyF*sK?K|uVbadJN0^{^sbB_*LF5A5nao5|U-JY<;17X7XTh#x1pY8SA zKC6ZFgSOwQ`Hv(tMGaN_K>o^Cu>NzuA7spuw*8Dko^IoMr?6q_a!ifD7wGnG&>AoXOPoVP3`M6+1cF zd@qOcI3=N+V@g(~0TNKZdihTiHCpgqna0$5F7v^8OjAC@Y_Ni2Dr-23olKw~a4HWo z0oGc~%||gMoWQM|#gyn5rW9uyuurW7lg9(spK`8MVPJWtLJJ?r&=5rk<^GB}XAg4LIY~ncX z;%pveO3*0E536)G7nuL$^hs=!7F(ANHuG)1%=R9Gq+*8flbXAjo6lvMav>AgGUg^7 zOs2Z%(Xxwk_&HO8!5+$m+L-+oGZ|jOUR=#&;#K-wdwJ7fiiIsq(;VX+{D%o-x~FII zUUqVQWj=cNg^iwIzW2+R&v#KQWjj^19AHZFO=W(b$zZL<>z(iaaD!xEBopyCrgjsV zCcKep%IQoBXE7T;z$PwbQoWw{^AxA?2KD%i%a{yKZ7St)-p5?%Jx+3dId72Ej1}fH z9M5#`W+vr3nN%NSQh$O6_#4wqyGLGVrUOi1Uo&6ZQ_R6$2 zB%66XzhVok)g!5z$Yf$B6VM!v;bTky>-b;lnc8o!yuXLZ*mo7r@EY@K9jKqnb~&r9GwGXEFe=PDlIe9n=+WOfU;@EDWH zl~>CqH?Wl-)f&ilsUP2csHUNM diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.po b/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.po index 14318c3..6d4624d 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.po +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-de_DE.po @@ -2,19 +2,20 @@ msgid "" msgstr "" "Project-Id-Version: Prosopo ProCaptcha 1.0.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/prosopo-procaptcha\n" -"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language: \n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: prosopo-procaptcha\n" #. Plugin Name of the plugin -#: prosopo-procaptcha.php src/Widget/Procaptcha_Widget.php:77 +#: prosopo-procaptcha.php +#: src/Widget/Procaptcha_Widget.php:77 msgid "Prosopo Procaptcha" msgstr "Prosopo Procaptcha" @@ -111,49 +112,49 @@ msgstr "Hinweis: Inaktive Plugins werden nicht berücksichtigt, auch wenn sie ko msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "Ihr Lieblings-Plugin fehlt? %1$s Starten Sie ein Thema %2$s in unserem Support-Forum, und wir prüfen eine neue Integration." -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "Allgemein" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "Ihr geheimer Schlüssel:" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "Ihr Website-Schlüssel:" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "Design:" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "Sprache:" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "Von autorisierten Benutzern verlangen:" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "Dunkel" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "Hell" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "Wie die Website" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "Browsersprache des Besuchers" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "Verhalten" @@ -494,3 +495,23 @@ msgstr "Auftragsverarbeitungsvertrag" #: src/Settings/Statistics/statistics_settings.blade.php:34 msgid "Please setup your keys to see the statistics." msgstr "Bitte richten Sie Ihre Schlüssel ein, um die Statistiken zu sehen." + +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "Abgleich der Besucher-IP:" + +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "Aus (empfohlen)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "An – Website läuft hinter Cloudflare" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "An – Besucher verbinden sich direkt (REMOTE_ADDR)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "An – Website läuft hinter einem anderen Proxy (X-Forwarded-For)" diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.l10n.php b/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.l10n.php index bb17abe..52432b9 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.l10n.php +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.l10n.php @@ -1,2 +1,2 @@ 'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito y conforme al RGPD que frena a los bots de spam en los formularios principales de WordPress y en 21 plugins de formularios, maquetadores y temas. Sin cookies.','Prosopo Team'=>'Equipo de Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Habilitar protección de formulario para este foro (nuevo tema, respuesta)','Procaptcha protection'=>'Protección de Procaptcha','Disabled'=>'Desactivado','Enabled'=>'Activado','Enable Procaptcha form protection'=>'Activar la protección de formularios de Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteger el formulario de pago','Protect the order tracking form'=>'Proteger el formulario de seguimiento de pedidos','Core Forms'=>'Formularios principales','Protect the comment form:'=>'Proteger el formulario de comentarios:','Protect the login form:'=>'Proteger el formulario de inicio de sesión:','Protect the lost password form:'=>'Proteger el formulario de contraseña olvidada:','Protect the post/page password form:'=>'Proteger el formulario de contraseña de publicación/página:','Protect the register form:'=>'Proteger el formulario de registro:','Active Integrations'=>'Integraciones activas','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'El plugin Procaptcha detecta automáticamente los plugins compatibles de tu sitio y activa sus integraciones. Haz clic en cualquier elemento para abrir su página de documentación.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: los plugins inactivos se excluyen aunque sean compatibles.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'¿No aparece tu plugin favorito? %1$s Abre un tema %2$s en nuestro foro de soporte y estudiaremos añadir la integración.','General'=>'General','Your Secret Key:'=>'Su clave secreta:','Your Site Key:'=>'Su clave del sitio:','Theme:'=>'Tema:','Language:'=>'Idioma:','Require from authorized users:'=>'Requerir de usuarios autorizados:','Dark'=>'Oscuro','Light'=>'Claro','Same as the site'=>'Igual que el sitio','Visitor\'s browser language'=>'Idioma del navegador del visitante','Behavior'=>'Comportamiento','Upgrade to Professional'=>'Pasar a Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro de spam: bloquea direcciones de correo desechables','VPN, proxy and datacenter filtering'=>'Filtrado de VPN, proxies y centros de datos','Choose your challenge type, plus icon-order and audio challenges'=>'Elige el tipo de desafío, además de desafíos de orden de iconos y de audio','A risk score and block reason for every decision'=>'Puntuación de riesgo y motivo de bloqueo en cada decisión','Up to 1M requests a month and 50 sites'=>'Hasta 1 M de solicitudes al mes y 50 sitios','Email and Discord support, 99.9% uptime'=>'Soporte por correo y Discord, 99,9 % de disponibilidad','Start a 30-day free trial'=>'Prueba gratis 30 días','Procaptcha Settings'=>'Configuración de Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Ajustes','Statistics'=>'Estadísticas','Open the Portal'=>'Abrir el portal','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Uso y ajustes de tu clave de sitio. Gestiona tu cuenta y los ajustes del sitio en el portal de Prosopo.','Your Site Key'=>'Tu clave de sitio','Change in the portal'=>'Cambiar en el portal','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Tu plan te permite elegir el tipo de desafío de esta clave de sitio en el portal de Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha solo muestra un desafío a los visitantes que parecen bots y elige para ellos un desafío de Proof of Work, de imagen o de rompecabezas. Elegir un único tipo de desafío forma parte del plan Professional.','Challenge type:'=>'Tipo de desafío:','Your Challenges'=>'Tus desafíos','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (desafío solo cuando hace falta)','Icon order'=>'Orden de iconos','Image'=>'Imagen','Proof of Work'=>'Prueba de trabajo','Jigsaw puzzle'=>'Rompecabezas','out of {total} visits checked this month'=>'de {total} visitas comprobadas este mes','Bots stopped this month'=>'Bots detenidos este mes','Checked by your server'=>'Comprobados por tu servidor','On track for about {forecast} of {limit} by the end of the month.'=>'Al ritmo actual, unas {forecast} de {limit} a final de mes.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Al ritmo actual, unas {forecast} a final de mes, por encima de tu límite de {limit}.','Requests this month'=>'Solicitudes este mes','{used} of {limit} requests used'=>'{used} de {limit} solicitudes usadas','Day'=>'Día','Hide the table'=>'Ocultar la tabla','{percent}% of visitors passed the invisible check without a challenge.'=>'El {percent} % de los visitantes superó la comprobación invisible sin desafío.','Visitors who saw nothing to solve'=>'Visitantes que no tuvieron nada que resolver','Requests'=>'Solicitudes','Challenges served'=>'Desafíos mostrados','Your server checks {percent}% of solved captchas.'=>'Tu servidor comprueba el {percent} % de los captchas resueltos.','Setup check'=>'Comprobación de la configuración','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Tu servidor solo comprobó el {percent} % de los captchas resueltos. Puede que un formulario acepte envíos sin verificar el token de Procaptcha, lo que permite a los bots saltárselo.','How verification works'=>'Cómo funciona la verificación','Show as a table'=>'Ver como tabla','Solved by visitors'=>'Resueltos por los visitantes','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'No se han podido cargar tus estadísticas. Comprueba que la clave de sitio y la clave secreta de la pestaña General son correctas y están guardadas, y vuelve a intentarlo.','Successfully loaded at'=>'Cargado exitosamente a las','Loading, please wait.'=>'Cargando, por favor espere.','Refresh now'=>'Actualizar ahora','Try again'=>'Reintentar','View traffic analytics'=>'Ver la analítica de tráfico','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'La analítica de tráfico está incluida en todos los planes. Consulta los gráficos en el portal de Prosopo.','Traffic Analytics'=>'Análisis de tráfico','Audio:'=>'Audio:','Icon order:'=>'Orden de iconos:','Image:'=>'Imagen:','Proof of Work:'=>'Prueba de trabajo:','Jigsaw puzzle:'=>'Rompecabezas:','Monthly Usage'=>'Uso mensual','Total Verification Requests:'=>'Solicitudes totales de verificación:','Please verify that you are human.'=>'Por favor, verifique que es humano.','Frictionless'=>'Sin fricción','Pow'=>'Pow','Save'=>'Guardar','Procaptcha for WordPress'=>'Procaptcha para WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito y conforme al RGPD que frena a los bots de spam. Sin cookies.','Docs'=>'Documentación','Website'=>'Sitio web','Prosopo portal'=>'Portal de Prosopo','Settings successfully saved.'=>'Ajustes guardados con éxito.','Get your free site key'=>'Consigue tu clave de sitio gratis','Sign up for a free Prosopo account.'=>'Crea una cuenta gratuita de Prosopo.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copia tu clave de sitio y tu clave secreta desde el portal de Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Pégalas aquí, guarda y activa los formularios que quieras proteger.','Free for 10,000 requests a month. No credit card.'=>'Gratis hasta 10.000 solicitudes al mes. Sin tarjeta de crédito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Vista previa: Si las credenciales son válidas, debería poder completar el captcha a continuación:','What protects your forms'=>'Qué protege tus formularios','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Una comprobación invisible: la mayoría de los visitantes no tiene que resolver nada y solo los que parecen bots reciben un desafío.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Una trampa honeypot oculta y el bloqueo de redes abusivas conocidas.','No cookies and no tracking.'=>'Sin cookies y sin rastreo.','All included on the free plan.'=>'Todo incluido en el plan gratuito.','Data processing agreement'=>'Acuerdo de tratamiento de datos','Please setup your keys to see the statistics.'=>'Por favor, configure sus claves para ver las estadísticas.']]; \ No newline at end of file +return ['domain'=>'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito y conforme al RGPD que frena a los bots de spam en los formularios principales de WordPress y en 21 plugins de formularios, maquetadores y temas. Sin cookies.','Prosopo Team'=>'Equipo de Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Habilitar protección de formulario para este foro (nuevo tema, respuesta)','Procaptcha protection'=>'Protección de Procaptcha','Disabled'=>'Desactivado','Enabled'=>'Activado','Enable Procaptcha form protection'=>'Activar la protección de formularios de Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteger el formulario de pago','Protect the order tracking form'=>'Proteger el formulario de seguimiento de pedidos','Core Forms'=>'Formularios principales','Protect the comment form:'=>'Proteger el formulario de comentarios:','Protect the login form:'=>'Proteger el formulario de inicio de sesión:','Protect the lost password form:'=>'Proteger el formulario de contraseña olvidada:','Protect the post/page password form:'=>'Proteger el formulario de contraseña de publicación/página:','Protect the register form:'=>'Proteger el formulario de registro:','Active Integrations'=>'Integraciones activas','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'El plugin Procaptcha detecta automáticamente los plugins compatibles de tu sitio y activa sus integraciones. Haz clic en cualquier elemento para abrir su página de documentación.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: los plugins inactivos se excluyen aunque sean compatibles.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'¿No aparece tu plugin favorito? %1$s Abre un tema %2$s en nuestro foro de soporte y estudiaremos añadir la integración.','General'=>'General','Your Secret Key:'=>'Su clave secreta:','Your Site Key:'=>'Su clave del sitio:','Theme:'=>'Tema:','Language:'=>'Idioma:','Require from authorized users:'=>'Requerir de usuarios autorizados:','Dark'=>'Oscuro','Light'=>'Claro','Same as the site'=>'Igual que el sitio','Visitor\'s browser language'=>'Idioma del navegador del visitante','Behavior'=>'Comportamiento','Upgrade to Professional'=>'Pasar a Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro de spam: bloquea direcciones de correo desechables','VPN, proxy and datacenter filtering'=>'Filtrado de VPN, proxies y centros de datos','Choose your challenge type, plus icon-order and audio challenges'=>'Elige el tipo de desafío, además de desafíos de orden de iconos y de audio','A risk score and block reason for every decision'=>'Puntuación de riesgo y motivo de bloqueo en cada decisión','Up to 1M requests a month and 50 sites'=>'Hasta 1 M de solicitudes al mes y 50 sitios','Email and Discord support, 99.9% uptime'=>'Soporte por correo y Discord, 99,9 % de disponibilidad','Start a 30-day free trial'=>'Prueba gratis 30 días','Procaptcha Settings'=>'Configuración de Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Ajustes','Statistics'=>'Estadísticas','Open the Portal'=>'Abrir el portal','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Uso y ajustes de tu clave de sitio. Gestiona tu cuenta y los ajustes del sitio en el portal de Prosopo.','Your Site Key'=>'Tu clave de sitio','Change in the portal'=>'Cambiar en el portal','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Tu plan te permite elegir el tipo de desafío de esta clave de sitio en el portal de Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha solo muestra un desafío a los visitantes que parecen bots y elige para ellos un desafío de Proof of Work, de imagen o de rompecabezas. Elegir un único tipo de desafío forma parte del plan Professional.','Challenge type:'=>'Tipo de desafío:','Your Challenges'=>'Tus desafíos','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (desafío solo cuando hace falta)','Icon order'=>'Orden de iconos','Image'=>'Imagen','Proof of Work'=>'Prueba de trabajo','Jigsaw puzzle'=>'Rompecabezas','out of {total} visits checked this month'=>'de {total} visitas comprobadas este mes','Bots stopped this month'=>'Bots detenidos este mes','Checked by your server'=>'Comprobados por tu servidor','On track for about {forecast} of {limit} by the end of the month.'=>'Al ritmo actual, unas {forecast} de {limit} a final de mes.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Al ritmo actual, unas {forecast} a final de mes, por encima de tu límite de {limit}.','Requests this month'=>'Solicitudes este mes','{used} of {limit} requests used'=>'{used} de {limit} solicitudes usadas','Day'=>'Día','Hide the table'=>'Ocultar la tabla','{percent}% of visitors passed the invisible check without a challenge.'=>'El {percent} % de los visitantes superó la comprobación invisible sin desafío.','Visitors who saw nothing to solve'=>'Visitantes que no tuvieron nada que resolver','Requests'=>'Solicitudes','Challenges served'=>'Desafíos mostrados','Your server checks {percent}% of solved captchas.'=>'Tu servidor comprueba el {percent} % de los captchas resueltos.','Setup check'=>'Comprobación de la configuración','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Tu servidor solo comprobó el {percent} % de los captchas resueltos. Puede que un formulario acepte envíos sin verificar el token de Procaptcha, lo que permite a los bots saltárselo.','How verification works'=>'Cómo funciona la verificación','Show as a table'=>'Ver como tabla','Solved by visitors'=>'Resueltos por los visitantes','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'No se han podido cargar tus estadísticas. Comprueba que la clave de sitio y la clave secreta de la pestaña General son correctas y están guardadas, y vuelve a intentarlo.','Successfully loaded at'=>'Cargado exitosamente a las','Loading, please wait.'=>'Cargando, por favor espere.','Refresh now'=>'Actualizar ahora','Try again'=>'Reintentar','View traffic analytics'=>'Ver la analítica de tráfico','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'La analítica de tráfico está incluida en todos los planes. Consulta los gráficos en el portal de Prosopo.','Traffic Analytics'=>'Análisis de tráfico','Audio:'=>'Audio:','Icon order:'=>'Orden de iconos:','Image:'=>'Imagen:','Proof of Work:'=>'Prueba de trabajo:','Jigsaw puzzle:'=>'Rompecabezas:','Monthly Usage'=>'Uso mensual','Total Verification Requests:'=>'Solicitudes totales de verificación:','Please verify that you are human.'=>'Por favor, verifique que es humano.','Frictionless'=>'Sin fricción','Pow'=>'Pow','Save'=>'Guardar','Procaptcha for WordPress'=>'Procaptcha para WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito y conforme al RGPD que frena a los bots de spam. Sin cookies.','Docs'=>'Documentación','Website'=>'Sitio web','Prosopo portal'=>'Portal de Prosopo','Settings successfully saved.'=>'Ajustes guardados con éxito.','Get your free site key'=>'Consigue tu clave de sitio gratis','Sign up for a free Prosopo account.'=>'Crea una cuenta gratuita de Prosopo.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copia tu clave de sitio y tu clave secreta desde el portal de Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Pégalas aquí, guarda y activa los formularios que quieras proteger.','Free for 10,000 requests a month. No credit card.'=>'Gratis hasta 10.000 solicitudes al mes. Sin tarjeta de crédito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Vista previa: Si las credenciales son válidas, debería poder completar el captcha a continuación:','What protects your forms'=>'Qué protege tus formularios','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Una comprobación invisible: la mayoría de los visitantes no tiene que resolver nada y solo los que parecen bots reciben un desafío.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Una trampa honeypot oculta y el bloqueo de redes abusivas conocidas.','No cookies and no tracking.'=>'Sin cookies y sin rastreo.','All included on the free plan.'=>'Todo incluido en el plan gratuito.','Data processing agreement'=>'Acuerdo de tratamiento de datos','Please setup your keys to see the statistics.'=>'Por favor, configure sus claves para ver las estadísticas.','Visitor IP matching:'=>'Coincidencia de IP del visitante:','Off (recommended)'=>'Desactivado (recomendado)','On - site is behind Cloudflare'=>'Activado: el sitio está detrás de Cloudflare','On - visitors connect directly (REMOTE_ADDR)'=>'Activado: los visitantes se conectan directamente (REMOTE_ADDR)','On - site is behind another proxy (X-Forwarded-For)'=>'Activado: el sitio está detrás de otro proxy (X-Forwarded-For)']]; \ No newline at end of file diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.mo b/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.mo index 8cc60c360cfdbd370a5647bc3df2a2a815a657ce..27036630e71b376eeb8dc9954e01020ac5731ff6 100644 GIT binary patch delta 2440 zcma*oYiv|S7{>8IsI^xp1x2CufY6Jz(59l&nsy5dv6xyZ5H3w6+uhT4wY$geF0DnA zjUXh5XsT6WY)opwOX3X*;s?@-gqVOeC>p>ECKxmbDwx&;jCjyBdB-`_wGiPV! zecze0bgvj$9X~m7-1CNikMcK-zmc)JGv?#u%U01G=Dq|ot}`YZEAeKm#}Kw-5`K%< z;%Ve#&T+W`M{zu6q!^QhIXKCfxS2!adOE!5!3HeHUQESfI1W$Yjrap9#xXq90!gUn znV65+I2|kSE^I{Q@&cCP%lHHy!AjOQ%hQZWr=tf8u@5!iFeV+P)i8aE$_*(^bQuK_2c4>MTbbkdlL8*v`?p-S`>s>DBG8KyJqZRo*z z3}H2XfZOpJR#S;zL-p^)V!Vi|NInl$xf)!FwHQ|>uhP(-?!+m05EbD`JcJ|28fIuh zBBNoP$o+r~r~FqvkI{y3Bl3!Yfc)5{c8$Ve3Ja zz896r9#kg#QJH^=+JaNacAE3J0sqG3xPetl@dR$fG@>C^(~SkV0~g^ZsI8dHV*AFh z|8r@0>G+kpRN$S2$DAgLGjKC*!Z%SBDdVK7Li138c#t_w9jZbtsD-;w8E-{C<`pir zIEV@)ow716ZkE!}gb$%2i=g)SSyUyqp%&`LJ8&14;Tc?vIXQ{5(25@J+wmRTh4*0- z2S}CMiL-GCRq>y3y59faXsE;BE>U@(1WK@hcM3~pg0W=4G%h4h3}&F^gLGJB2LQtxE>W)1^coP??pZDMjf_c z9E%q)fTO5WzM6*=%h;%e*Sq#&{5T!&(a_#KGc)nJ^ttXv^?&4g0x6a`i+PwjEAfL= zigUPs088*`ti&N?YV#MWk~0{jij<+wMpYj5Cn>Xx4!x%xs1k2>?MAlIyoe-Y_M*O`WJ-wB6pf6NL5SvM=z#)$fbwROuDuBrBV>kFUzCOvoHjr76f46EjTE98s$ z38AHYV9lf>sd29z_4#AL4qw1=!zOBO3Qe`!U2fTJ3P0#rb~JXN&kESF$br5nUYW-K z`MMK}I9KPi_===1&(P*XtxMVY!ZAB)MQx=>hQ4qj$C!`WQqQZ>9GIPJrA%Mo1jGJd Wz~nIh8= z(x_}9hJnhItVA;{BSJCMF#icb%+zS1dVb7>ae;HoF}S}>yGRHnBJ*q={UY~ooM%=D^1qEmHb3OzHpNYIfA1d-x*9@)XywyWQ+vHgP!L z=L{ZUTF_6HpSCgCoaXv3yN~A-W$}ozlGkzrpJ!u>MM^P2`YFvFOd>Ox6VGERvy|C* z73El7W`=eLXK^2sNDsl>H=lXl6HH<&nAX0=RAMVLf8||^TLgCUMxN)L9I7vwfn}V+ z27bVutmopst(E(Pqh0T3O8z_3f`6G34>Vv&;0C7jbC~!-w$Jzfaf{s8z)brprX}ku z@hwb+wo`6p2Xlgbbm;Our|>M(vN3iW&o%srdzg(I1{grTz`TE$gX~|rNVkf0e3&;e z)B7qNwrry=l|2=I$sGSV=T5<)bS7} z@gI7XiGy29^$>I7$C%zfLwlEv%*HKD1@~7xOw}((DVK7InW^4GTK_H#XAU-Ni29GS zctpSemu*bxcQU2@iY+|NcHAWWxRpZXO=hYOatTi{mAiXbDWiBllki$D;^s=ct*=fJ ztQ)TW$*^7^C0WLN?_Xy!e2Y2xUM8{cn3A5X_$%|RsPZ321AB4-H*hk~@jcd!Z2jB` x%AuU+Z1$;^rs|YOM>QYlP}^?fo|?YR>uPp)Xnvr_{!Y#32K29P9y@Ys)qk63%v%5e diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.po b/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.po index 9e342db..579d3a6 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.po +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-es_ES.po @@ -2,19 +2,20 @@ msgid "" msgstr "" "Project-Id-Version: Prosopo ProCaptcha 1.0.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/prosopo-procaptcha\n" -"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language: \n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: prosopo-procaptcha\n" #. Plugin Name of the plugin -#: prosopo-procaptcha.php src/Widget/Procaptcha_Widget.php:77 +#: prosopo-procaptcha.php +#: src/Widget/Procaptcha_Widget.php:77 msgid "Prosopo Procaptcha" msgstr "Prosopo Procaptcha" @@ -111,49 +112,49 @@ msgstr "Nota: los plugins inactivos se excluyen aunque sean compatibles." msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "¿No aparece tu plugin favorito? %1$s Abre un tema %2$s en nuestro foro de soporte y estudiaremos añadir la integración." -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "General" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "Su clave secreta:" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "Su clave del sitio:" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "Tema:" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "Idioma:" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "Requerir de usuarios autorizados:" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "Oscuro" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "Claro" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "Igual que el sitio" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "Idioma del navegador del visitante" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "Comportamiento" @@ -494,3 +495,23 @@ msgstr "Acuerdo de tratamiento de datos" #: src/Settings/Statistics/statistics_settings.blade.php:34 msgid "Please setup your keys to see the statistics." msgstr "Por favor, configure sus claves para ver las estadísticas." + +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "Coincidencia de IP del visitante:" + +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "Desactivado (recomendado)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "Activado: el sitio está detrás de Cloudflare" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "Activado: los visitantes se conectan directamente (REMOTE_ADDR)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "Activado: el sitio está detrás de otro proxy (X-Forwarded-For)" diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.l10n.php b/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.l10n.php index eff1bdf..fd2418d 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.l10n.php +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.l10n.php @@ -1,2 +1,2 @@ 'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuit et conforme au RGPD qui bloque les bots de spam sur les formulaires principaux de WordPress et 21 plugins de formulaires, constructeurs de pages et thèmes. Sans cookies.','Prosopo Team'=>'Équipe Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Activer la protection de formulaire pour ce forum (nouveau sujet, réponse)','Procaptcha protection'=>'Protection Procaptcha','Disabled'=>'Désactivé','Enabled'=>'Activé','Enable Procaptcha form protection'=>'Activer la protection des formulaires Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Protéger le formulaire de paiement','Protect the order tracking form'=>'Protéger le formulaire de suivi de commande','Core Forms'=>'Formulaires principaux','Protect the comment form:'=>'Protéger le formulaire de commentaire :','Protect the login form:'=>'Protéger le formulaire de connexion :','Protect the lost password form:'=>'Protéger le formulaire de mot de passe oublié :','Protect the post/page password form:'=>'Protéger le formulaire de mot de passe des articles/pages :','Protect the register form:'=>'Protéger le formulaire d\'inscription :','Active Integrations'=>'Intégrations actives','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Le plugin Procaptcha détecte automatiquement les plugins compatibles de votre site et active leurs intégrations. Cliquez sur un élément pour ouvrir la page de documentation correspondante.','Note: Inactive plugins, even if compatible, are excluded.'=>'Remarque : les plugins inactifs sont exclus, même s\'ils sont compatibles.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Votre plugin préféré n\'est pas dans la liste ? %1$s Ouvrez un sujet %2$s sur notre forum d\'assistance et nous étudierons son intégration.','General'=>'Général','Your Secret Key:'=>'Votre clé secrète :','Your Site Key:'=>'Votre clé de site :','Theme:'=>'Thème :','Language:'=>'Langue :','Require from authorized users:'=>'Exiger des utilisateurs autorisés :','Dark'=>'Sombre','Light'=>'Clair','Same as the site'=>'Identique au site','Visitor\'s browser language'=>'Langue du navigateur du visiteur','Behavior'=>'Comportement','Upgrade to Professional'=>'Passer à Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtre anti-spam : bloque les adresses e-mail jetables','VPN, proxy and datacenter filtering'=>'Filtrage des VPN, proxys et centres de données','Choose your challenge type, plus icon-order and audio challenges'=>'Choisissez le type de défi, plus les défis d\'ordre d\'icônes et audio','A risk score and block reason for every decision'=>'Un score de risque et un motif de blocage pour chaque décision','Up to 1M requests a month and 50 sites'=>'Jusqu\'à 1 M de requêtes par mois et 50 sites','Email and Discord support, 99.9% uptime'=>'Assistance par e-mail et Discord, disponibilité de 99,9 %','Start a 30-day free trial'=>'Essai gratuit de 30 jours','Procaptcha Settings'=>'Paramètres de Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Paramètres','Statistics'=>'Statistiques','Open the Portal'=>'Ouvrir le portail','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilisation et réglages de votre clé de site. Gérez votre compte et les réglages du site dans le portail Prosopo.','Your Site Key'=>'Votre clé de site','Change in the portal'=>'Modifier dans le portail','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Votre offre vous permet de choisir le type de défi de cette clé de site dans le portail Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha n\'affiche un défi qu\'aux visiteurs qui ressemblent à des bots, et choisit pour eux un défi Proof of Work, image ou puzzle. Choisir un seul type de défi fait partie de l\'offre Professional.','Challenge type:'=>'Type de défi :','Your Challenges'=>'Vos défis','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (défi uniquement si nécessaire)','Icon order'=>'Ordre des icônes','Image'=>'Image','Proof of Work'=>'Preuve de travail','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'sur {total} visites vérifiées ce mois-ci','Bots stopped this month'=>'Bots arrêtés ce mois-ci','Checked by your server'=>'Vérifiés par votre serveur','On track for about {forecast} of {limit} by the end of the month.'=>'Au rythme actuel, environ {forecast} sur {limit} d\'ici la fin du mois.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Au rythme actuel, environ {forecast} d\'ici la fin du mois, au-delà de votre limite de {limit}.','Requests this month'=>'Requêtes ce mois-ci','{used} of {limit} requests used'=>'{used} requêtes utilisées sur {limit}','Day'=>'Jour','Hide the table'=>'Masquer le tableau','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent} % des visiteurs ont passé la vérification invisible sans défi.','Visitors who saw nothing to solve'=>'Visiteurs qui n\'ont rien eu à résoudre','Requests'=>'Requêtes','Challenges served'=>'Défis affichés','Your server checks {percent}% of solved captchas.'=>'Votre serveur vérifie {percent} % des captchas résolus.','Setup check'=>'Vérification de la configuration','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Seuls {percent} % des captchas résolus ont été vérifiés par votre serveur. Un formulaire accepte peut-être des envois sans vérifier le jeton Procaptcha, ce qui permet aux bots de le contourner.','How verification works'=>'Fonctionnement de la vérification','Show as a table'=>'Afficher sous forme de tableau','Solved by visitors'=>'Résolus par les visiteurs','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Impossible de charger vos statistiques. Vérifiez que la clé de site et la clé secrète de l\'onglet Général sont correctes et enregistrées, puis réessayez.','Successfully loaded at'=>'Chargé avec succès à','Loading, please wait.'=>'Chargement en cours, veuillez patienter.','Refresh now'=>'Actualiser maintenant','Try again'=>'Réessayer','View traffic analytics'=>'Voir l\'analyse du trafic','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'L\'analyse du trafic est incluse dans toutes les offres. Consultez les graphiques dans le portail Prosopo.','Traffic Analytics'=>'Analyse du trafic','Audio:'=>'Audio :','Icon order:'=>'Ordre des icônes :','Image:'=>'Image :','Proof of Work:'=>'Preuve de travail :','Jigsaw puzzle:'=>'Puzzle :','Monthly Usage'=>'Utilisation mensuelle','Total Verification Requests:'=>'Total des demandes de vérification :','Please verify that you are human.'=>'Veuillez vérifier que vous êtes un humain.','Frictionless'=>'Sans friction','Pow'=>'Pow','Save'=>'Enregistrer','Procaptcha for WordPress'=>'Procaptcha pour WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuit et conforme au RGPD qui bloque les bots de spam. Sans cookies.','Docs'=>'Documentation','Website'=>'Site web','Prosopo portal'=>'Portail Prosopo','Settings successfully saved.'=>'Paramètres enregistrés avec succès.','Get your free site key'=>'Obtenez votre clé de site gratuite','Sign up for a free Prosopo account.'=>'Créez un compte Prosopo gratuit.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copiez votre clé de site et votre clé secrète depuis le portail Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Collez-les ici, enregistrez, puis activez les formulaires à protéger.','Free for 10,000 requests a month. No credit card.'=>'Gratuit jusqu\'à 10 000 requêtes par mois. Sans carte bancaire.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Aperçu : Si les identifiants sont valides, vous devriez pouvoir compléter le captcha ci-dessous :','What protects your forms'=>'Ce qui protège vos formulaires','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Une vérification invisible : la plupart des visiteurs n\'ont rien à résoudre, seuls ceux qui ressemblent à des bots reçoivent un défi.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Un piège honeypot caché et le blocage des réseaux abusifs connus.','No cookies and no tracking.'=>'Pas de cookies ni de pistage.','All included on the free plan.'=>'Tout est inclus dans l\'offre gratuite.','Data processing agreement'=>'Accord de traitement des données','Please setup your keys to see the statistics.'=>'Veuillez configurer vos clés pour voir les statistiques.']]; \ No newline at end of file +return ['domain'=>'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuit et conforme au RGPD qui bloque les bots de spam sur les formulaires principaux de WordPress et 21 plugins de formulaires, constructeurs de pages et thèmes. Sans cookies.','Prosopo Team'=>'Équipe Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Activer la protection de formulaire pour ce forum (nouveau sujet, réponse)','Procaptcha protection'=>'Protection Procaptcha','Disabled'=>'Désactivé','Enabled'=>'Activé','Enable Procaptcha form protection'=>'Activer la protection des formulaires Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Protéger le formulaire de paiement','Protect the order tracking form'=>'Protéger le formulaire de suivi de commande','Core Forms'=>'Formulaires principaux','Protect the comment form:'=>'Protéger le formulaire de commentaire :','Protect the login form:'=>'Protéger le formulaire de connexion :','Protect the lost password form:'=>'Protéger le formulaire de mot de passe oublié :','Protect the post/page password form:'=>'Protéger le formulaire de mot de passe des articles/pages :','Protect the register form:'=>'Protéger le formulaire d\'inscription :','Active Integrations'=>'Intégrations actives','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Le plugin Procaptcha détecte automatiquement les plugins compatibles de votre site et active leurs intégrations. Cliquez sur un élément pour ouvrir la page de documentation correspondante.','Note: Inactive plugins, even if compatible, are excluded.'=>'Remarque : les plugins inactifs sont exclus, même s\'ils sont compatibles.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Votre plugin préféré n\'est pas dans la liste ? %1$s Ouvrez un sujet %2$s sur notre forum d\'assistance et nous étudierons son intégration.','General'=>'Général','Your Secret Key:'=>'Votre clé secrète :','Your Site Key:'=>'Votre clé de site :','Theme:'=>'Thème :','Language:'=>'Langue :','Require from authorized users:'=>'Exiger des utilisateurs autorisés :','Dark'=>'Sombre','Light'=>'Clair','Same as the site'=>'Identique au site','Visitor\'s browser language'=>'Langue du navigateur du visiteur','Behavior'=>'Comportement','Upgrade to Professional'=>'Passer à Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtre anti-spam : bloque les adresses e-mail jetables','VPN, proxy and datacenter filtering'=>'Filtrage des VPN, proxys et centres de données','Choose your challenge type, plus icon-order and audio challenges'=>'Choisissez le type de défi, plus les défis d\'ordre d\'icônes et audio','A risk score and block reason for every decision'=>'Un score de risque et un motif de blocage pour chaque décision','Up to 1M requests a month and 50 sites'=>'Jusqu\'à 1 M de requêtes par mois et 50 sites','Email and Discord support, 99.9% uptime'=>'Assistance par e-mail et Discord, disponibilité de 99,9 %','Start a 30-day free trial'=>'Essai gratuit de 30 jours','Procaptcha Settings'=>'Paramètres de Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Paramètres','Statistics'=>'Statistiques','Open the Portal'=>'Ouvrir le portail','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilisation et réglages de votre clé de site. Gérez votre compte et les réglages du site dans le portail Prosopo.','Your Site Key'=>'Votre clé de site','Change in the portal'=>'Modifier dans le portail','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Votre offre vous permet de choisir le type de défi de cette clé de site dans le portail Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha n\'affiche un défi qu\'aux visiteurs qui ressemblent à des bots, et choisit pour eux un défi Proof of Work, image ou puzzle. Choisir un seul type de défi fait partie de l\'offre Professional.','Challenge type:'=>'Type de défi :','Your Challenges'=>'Vos défis','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (défi uniquement si nécessaire)','Icon order'=>'Ordre des icônes','Image'=>'Image','Proof of Work'=>'Preuve de travail','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'sur {total} visites vérifiées ce mois-ci','Bots stopped this month'=>'Bots arrêtés ce mois-ci','Checked by your server'=>'Vérifiés par votre serveur','On track for about {forecast} of {limit} by the end of the month.'=>'Au rythme actuel, environ {forecast} sur {limit} d\'ici la fin du mois.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Au rythme actuel, environ {forecast} d\'ici la fin du mois, au-delà de votre limite de {limit}.','Requests this month'=>'Requêtes ce mois-ci','{used} of {limit} requests used'=>'{used} requêtes utilisées sur {limit}','Day'=>'Jour','Hide the table'=>'Masquer le tableau','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent} % des visiteurs ont passé la vérification invisible sans défi.','Visitors who saw nothing to solve'=>'Visiteurs qui n\'ont rien eu à résoudre','Requests'=>'Requêtes','Challenges served'=>'Défis affichés','Your server checks {percent}% of solved captchas.'=>'Votre serveur vérifie {percent} % des captchas résolus.','Setup check'=>'Vérification de la configuration','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Seuls {percent} % des captchas résolus ont été vérifiés par votre serveur. Un formulaire accepte peut-être des envois sans vérifier le jeton Procaptcha, ce qui permet aux bots de le contourner.','How verification works'=>'Fonctionnement de la vérification','Show as a table'=>'Afficher sous forme de tableau','Solved by visitors'=>'Résolus par les visiteurs','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Impossible de charger vos statistiques. Vérifiez que la clé de site et la clé secrète de l\'onglet Général sont correctes et enregistrées, puis réessayez.','Successfully loaded at'=>'Chargé avec succès à','Loading, please wait.'=>'Chargement en cours, veuillez patienter.','Refresh now'=>'Actualiser maintenant','Try again'=>'Réessayer','View traffic analytics'=>'Voir l\'analyse du trafic','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'L\'analyse du trafic est incluse dans toutes les offres. Consultez les graphiques dans le portail Prosopo.','Traffic Analytics'=>'Analyse du trafic','Audio:'=>'Audio :','Icon order:'=>'Ordre des icônes :','Image:'=>'Image :','Proof of Work:'=>'Preuve de travail :','Jigsaw puzzle:'=>'Puzzle :','Monthly Usage'=>'Utilisation mensuelle','Total Verification Requests:'=>'Total des demandes de vérification :','Please verify that you are human.'=>'Veuillez vérifier que vous êtes un humain.','Frictionless'=>'Sans friction','Pow'=>'Pow','Save'=>'Enregistrer','Procaptcha for WordPress'=>'Procaptcha pour WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuit et conforme au RGPD qui bloque les bots de spam. Sans cookies.','Docs'=>'Documentation','Website'=>'Site web','Prosopo portal'=>'Portail Prosopo','Settings successfully saved.'=>'Paramètres enregistrés avec succès.','Get your free site key'=>'Obtenez votre clé de site gratuite','Sign up for a free Prosopo account.'=>'Créez un compte Prosopo gratuit.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copiez votre clé de site et votre clé secrète depuis le portail Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Collez-les ici, enregistrez, puis activez les formulaires à protéger.','Free for 10,000 requests a month. No credit card.'=>'Gratuit jusqu\'à 10 000 requêtes par mois. Sans carte bancaire.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Aperçu : Si les identifiants sont valides, vous devriez pouvoir compléter le captcha ci-dessous :','What protects your forms'=>'Ce qui protège vos formulaires','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Une vérification invisible : la plupart des visiteurs n\'ont rien à résoudre, seuls ceux qui ressemblent à des bots reçoivent un défi.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Un piège honeypot caché et le blocage des réseaux abusifs connus.','No cookies and no tracking.'=>'Pas de cookies ni de pistage.','All included on the free plan.'=>'Tout est inclus dans l\'offre gratuite.','Data processing agreement'=>'Accord de traitement des données','Please setup your keys to see the statistics.'=>'Veuillez configurer vos clés pour voir les statistiques.','Visitor IP matching:'=>'Correspondance de l\'IP du visiteur :','Off (recommended)'=>'Désactivé (recommandé)','On - site is behind Cloudflare'=>'Activé – le site est derrière Cloudflare','On - visitors connect directly (REMOTE_ADDR)'=>'Activé – les visiteurs se connectent directement (REMOTE_ADDR)','On - site is behind another proxy (X-Forwarded-For)'=>'Activé – le site est derrière un autre proxy (X-Forwarded-For)']]; \ No newline at end of file diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.mo b/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.mo index 27eeab8f485c0ab6974e16e973b3a45ee11aafca..498b70120e73c160af7858b29bcc2b3032e94cb5 100644 GIT binary patch delta 2445 zcmajfe@xVM9LMnw37zu80MSe|z9kBTBveq6V{J~f^dw-wEq2`F^Zk79`}w?o zeC~EPZ+bL#Iy?CV!{0jor}KYtoUV*H?)ukih9|f##f85_}$Phtw5!Rzrm zc7&*7(7#r~!#&6sp1wqX(WpdJ`R1@;9_#2*vamyl;oCJ!+* zxv0zwP??ut2Hu5wt`3RWJcRmO3r6ne0&EL*m+dqDU+zbdYs8_Z(sqchl8kI zeU94TBod1m!-vtu(N#}da5mbgOgG^w+>HvrMH#hzF*0T9PzkRO^DU^%cc21(6?F)E6YfQQ?tN6r51}e~ z4vEG5j*BtZidU=+=fs%Uz@QG_##+39t#}9JP|vpFQ9OkT>~*44Dfi<%yo~x?sNlqn zLl1gzHR_ZPqFVH2!V9RtQuz+X1{qikwD2e@<3CUp$(|MO>8yn1$g`#am7x!HMz&%Z zet-((JkH0d+$_K*)Q0O(rSC?48(x`B{n^XB%Y*_LLiPNIgk#9dB(Vy~n?ls@!Q#ZV z4>^~n3oEb}mFY0*aQ=!Mc#}-DM{qih$6-vt?+d9v!J1Jf6hL+nSz$h^bemC!<|X8` znxh!OGdLHUZi}DtPE;bh(82*^NplvpVMcNMYc~azU3%~Dj!J*d)j;AZT? zRXB~hs@LnW2M?fHwX(z*_Aq{2f-fRTo3kbT&$zNvVr^|!p<{c3e!m^?+TJ3wJYbbr zAz#?Gd?9OtS_|5P5pP?&+p+)iwmT3Eudy9#trL9eX{)fgWMR;Wx*e9&D6wRR zk41w{$npdO0oxO{ygv5L3b*q_W5d$rk2JK_*4H-{bq}ZK_4lP8a%EVH9<==Ku!j&< zSN6B&WTwUH2l_&8PuSNn(03(lcfdQ)S7d4vvm+b2t#&(}fE{8N+i`pYZ#nkWN&NqZ zBLT}D3G>u7IX!SyQrE5#vi{D`j*wu;zLKLINTeCIDR21NMEe7I{t5XDf{tT{)&>J! Zcfey4uGL;Z-rmSR3tE-^UllGM_ZRX7W(xoS delta 1963 zcmYMzduWzb90%}YbGf-zI&ZbqG@UwcsaT|$7xID`6BEfoyI2xZ5nT+#Y9loR#lTpB z6d7K~{;*;QCMjNuOpOI$f}v9OPY7jELggQQzU+m@v*&Z3^S;kHzsq?yFWb4a^?XD3 z_Tuj){{#J>s>)L-FZcN08HTTTp1_0b!(Ta=*VL5q42QCsZ}M8U(^cMe8^B$>fd|=} z->`2ft>uD2e-nRlChKZTnacavlN;HcTX_@TVPgE0UMc%3pC95#&&N2Fmv|@ZEh5%3 zmlN5-^=#vG`=tDJO8=4Y79&#|6AGw=OD zv6OB$$@l8mkG)xM|1#3xX5P*zT*UjiiL-c~J2}LvDdCsQ{ArHk0J|jPIZS1qt(0feDcQFYZViGvPBz(5jAf>;=l>Tq7V~qwa;bun zFd4niRBk`#@iZ53kdrKyvWh8n8&i>uOl$WrmDo#(x0VA2Q%xM_1Xfu!3r%JMYU514 z!2|r7EnGjSt8(9QyyqX8mi2O=(wau@y$()JrnZsBu?bRH}+qjiE z#79S|{}6*8Ot{Kbw;DDzcm15kGpDtMS@!L%SC8BIf#*)9 zMbC{X#jtGP0)A3!AjoocOvi~H4b^WQsUOs_ss2!pj)(iz)OAc6`gCo_vC;FZ{sUOE B#Mb}- diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.po b/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.po index 2e56050..6881ba5 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.po +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-fr_FR.po @@ -2,19 +2,20 @@ msgid "" msgstr "" "Project-Id-Version: Prosopo ProCaptcha 1.0.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/prosopo-procaptcha\n" -"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language: \n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: prosopo-procaptcha\n" #. Plugin Name of the plugin -#: prosopo-procaptcha.php src/Widget/Procaptcha_Widget.php:77 +#: prosopo-procaptcha.php +#: src/Widget/Procaptcha_Widget.php:77 msgid "Prosopo Procaptcha" msgstr "Prosopo Procaptcha" @@ -111,49 +112,49 @@ msgstr "Remarque : les plugins inactifs sont exclus, même s'ils sont compatible msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "Votre plugin préféré n'est pas dans la liste ? %1$s Ouvrez un sujet %2$s sur notre forum d'assistance et nous étudierons son intégration." -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "Général" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "Votre clé secrète :" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "Votre clé de site :" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "Thème :" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "Langue :" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "Exiger des utilisateurs autorisés :" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "Sombre" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "Clair" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "Identique au site" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "Langue du navigateur du visiteur" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "Comportement" @@ -494,3 +495,23 @@ msgstr "Accord de traitement des données" #: src/Settings/Statistics/statistics_settings.blade.php:34 msgid "Please setup your keys to see the statistics." msgstr "Veuillez configurer vos clés pour voir les statistiques." + +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "Correspondance de l'IP du visiteur :" + +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "Désactivé (recommandé)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "Activé – le site est derrière Cloudflare" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "Activé – les visiteurs se connectent directement (REMOTE_ADDR)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "Activé – le site est derrière un autre proxy (X-Forwarded-For)" diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.l10n.php b/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.l10n.php index 845464f..d75d908 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.l10n.php +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.l10n.php @@ -1,2 +1,2 @@ 'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito e conforme al GDPR che ferma i bot di spam sui moduli principali di WordPress e su 21 plugin di moduli, page builder e temi. Senza cookie.','Prosopo Team'=>'Team Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Abilita la protezione del modulo per questo forum (nuovo argomento, risposta)','Procaptcha protection'=>'Protezione Procaptcha','Disabled'=>'Disattivato','Enabled'=>'Attivato','Enable Procaptcha form protection'=>'Attiva la protezione dei moduli Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteggi il modulo di pagamento','Protect the order tracking form'=>'Proteggi il modulo di tracciamento degli ordini','Core Forms'=>'Moduli principali','Protect the comment form:'=>'Proteggi il modulo dei commenti:','Protect the login form:'=>'Proteggi il modulo di accesso:','Protect the lost password form:'=>'Proteggi il modulo per il recupero della password:','Protect the post/page password form:'=>'Proteggi il modulo per la password di post/pagina:','Protect the register form:'=>'Proteggi il modulo di registrazione:','Active Integrations'=>'Integrazioni attive','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Il plugin Procaptcha rileva automaticamente i plugin compatibili sul tuo sito e ne attiva le integrazioni. Fai clic su una voce per aprire la pagina della documentazione corrispondente.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: i plugin inattivi sono esclusi, anche se compatibili.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Il tuo plugin preferito non è nell\'elenco? %1$s Apri una discussione %2$s nel nostro forum di supporto e valuteremo la nuova integrazione.','General'=>'Generale','Your Secret Key:'=>'La tua chiave segreta:','Your Site Key:'=>'La tua chiave del sito:','Theme:'=>'Tema:','Language:'=>'Lingua:','Require from authorized users:'=>'Richiedi agli utenti autorizzati:','Dark'=>'Scuro','Light'=>'Chiaro','Same as the site'=>'Uguale al sito','Visitor\'s browser language'=>'Lingua del browser del visitatore','Behavior'=>'Comportamento','Upgrade to Professional'=>'Passa a Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro antispam: blocca gli indirizzi email usa e getta','VPN, proxy and datacenter filtering'=>'Filtro di VPN, proxy e data center','Choose your challenge type, plus icon-order and audio challenges'=>'Scegli il tipo di sfida, oltre alle sfide con ordine delle icone e audio','A risk score and block reason for every decision'=>'Punteggio di rischio e motivo del blocco per ogni decisione','Up to 1M requests a month and 50 sites'=>'Fino a 1 milione di richieste al mese e 50 siti','Email and Discord support, 99.9% uptime'=>'Supporto via email e Discord, disponibilità del 99,9%','Start a 30-day free trial'=>'Prova gratuita di 30 giorni','Procaptcha Settings'=>'Impostazioni di Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Impostazioni','Statistics'=>'Statistiche','Open the Portal'=>'Apri il portale','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilizzo e impostazioni della tua chiave del sito. Gestisci account e impostazioni del sito nel portale Prosopo.','Your Site Key'=>'La tua chiave del sito','Change in the portal'=>'Modifica nel portale','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Il tuo piano ti permette di scegliere il tipo di sfida per questa chiave del sito nel portale Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha mostra una sfida solo ai visitatori che sembrano bot e sceglie per loro una sfida Proof of Work, con immagini o puzzle. La scelta di un unico tipo di sfida fa parte del piano Professional.','Challenge type:'=>'Tipo di sfida:','Your Challenges'=>'Le tue sfide','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (sfida solo quando serve)','Icon order'=>'Ordine delle icone','Image'=>'Immagine','Proof of Work'=>'Prova di lavoro','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'su {total} visite controllate questo mese','Bots stopped this month'=>'Bot fermati questo mese','Checked by your server'=>'Controllati dal tuo server','On track for about {forecast} of {limit} by the end of the month.'=>'Di questo passo, circa {forecast} su {limit} entro fine mese.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Di questo passo, circa {forecast} entro fine mese, oltre il tuo limite di {limit}.','Requests this month'=>'Richieste questo mese','{used} of {limit} requests used'=>'{used} di {limit} richieste usate','Day'=>'Giorno','Hide the table'=>'Nascondi la tabella','{percent}% of visitors passed the invisible check without a challenge.'=>'Il {percent}% dei visitatori ha superato il controllo invisibile senza sfida.','Visitors who saw nothing to solve'=>'Visitatori senza nulla da risolvere','Requests'=>'Richieste','Challenges served'=>'Sfide mostrate','Your server checks {percent}% of solved captchas.'=>'Il tuo server controlla il {percent}% dei captcha risolti.','Setup check'=>'Controllo della configurazione','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Solo il {percent}% dei captcha risolti è stato controllato dal tuo server. Un modulo potrebbe accettare invii senza verificare il token Procaptcha, permettendo ai bot di aggirarlo.','How verification works'=>'Come funziona la verifica','Show as a table'=>'Mostra come tabella','Solved by visitors'=>'Risolti dai visitatori','Total'=>'Totale','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Non è stato possibile caricare le statistiche. Controlla che la chiave del sito e la chiave segreta nella scheda Generale siano corrette e salvate, poi riprova.','Successfully loaded at'=>'Caricato con successo alle','Loading, please wait.'=>'Caricamento in corso, attendere.','Refresh now'=>'Aggiorna ora','Try again'=>'Riprova','View traffic analytics'=>'Visualizza l\'analisi del traffico','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'L\'analisi del traffico è inclusa in ogni piano. Consulta i grafici nel portale Prosopo.','Traffic Analytics'=>'Analisi del traffico','Audio:'=>'Audio:','Icon order:'=>'Ordine delle icone:','Image:'=>'Immagine:','Proof of Work:'=>'Prova di lavoro:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Utilizzo mensile','Total Verification Requests:'=>'Richieste totali di verifica:','Please verify that you are human.'=>'Si prega di verificare che siate umani.','Frictionless'=>'Senza attrito','Pow'=>'Pow','Save'=>'Salva','Procaptcha for WordPress'=>'Procaptcha per WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito e conforme al GDPR che ferma i bot di spam. Senza cookie.','Docs'=>'Documentazione','Website'=>'Sito web','Prosopo portal'=>'Portale Prosopo','Settings successfully saved.'=>'Impostazioni salvate con successo.','Get your free site key'=>'Ottieni la tua chiave del sito gratuita','Sign up for a free Prosopo account.'=>'Crea un account Prosopo gratuito.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copia la chiave del sito e la chiave segreta dal portale Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Incollale qui, salva e attiva i moduli che vuoi proteggere.','Free for 10,000 requests a month. No credit card.'=>'Gratis fino a 10.000 richieste al mese. Nessuna carta di credito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Anteprima: se le credenziali sono valide, dovresti essere in grado di completare il captcha qui sotto:','What protects your forms'=>'Cosa protegge i tuoi moduli','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Un controllo invisibile: la maggior parte dei visitatori non deve risolvere nulla e solo chi sembra un bot riceve una sfida.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Una trappola honeypot nascosta e il blocco delle reti abusive note.','No cookies and no tracking.'=>'Nessun cookie e nessun tracciamento.','All included on the free plan.'=>'Tutto incluso nel piano gratuito.','Data processing agreement'=>'Accordo sul trattamento dei dati','Please setup your keys to see the statistics.'=>'Configura le tue chiavi per vedere le statistiche.']]; \ No newline at end of file +return ['domain'=>'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito e conforme al GDPR che ferma i bot di spam sui moduli principali di WordPress e su 21 plugin di moduli, page builder e temi. Senza cookie.','Prosopo Team'=>'Team Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Abilita la protezione del modulo per questo forum (nuovo argomento, risposta)','Procaptcha protection'=>'Protezione Procaptcha','Disabled'=>'Disattivato','Enabled'=>'Attivato','Enable Procaptcha form protection'=>'Attiva la protezione dei moduli Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteggi il modulo di pagamento','Protect the order tracking form'=>'Proteggi il modulo di tracciamento degli ordini','Core Forms'=>'Moduli principali','Protect the comment form:'=>'Proteggi il modulo dei commenti:','Protect the login form:'=>'Proteggi il modulo di accesso:','Protect the lost password form:'=>'Proteggi il modulo per il recupero della password:','Protect the post/page password form:'=>'Proteggi il modulo per la password di post/pagina:','Protect the register form:'=>'Proteggi il modulo di registrazione:','Active Integrations'=>'Integrazioni attive','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'Il plugin Procaptcha rileva automaticamente i plugin compatibili sul tuo sito e ne attiva le integrazioni. Fai clic su una voce per aprire la pagina della documentazione corrispondente.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: i plugin inattivi sono esclusi, anche se compatibili.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'Il tuo plugin preferito non è nell\'elenco? %1$s Apri una discussione %2$s nel nostro forum di supporto e valuteremo la nuova integrazione.','General'=>'Generale','Your Secret Key:'=>'La tua chiave segreta:','Your Site Key:'=>'La tua chiave del sito:','Theme:'=>'Tema:','Language:'=>'Lingua:','Require from authorized users:'=>'Richiedi agli utenti autorizzati:','Dark'=>'Scuro','Light'=>'Chiaro','Same as the site'=>'Uguale al sito','Visitor\'s browser language'=>'Lingua del browser del visitatore','Behavior'=>'Comportamento','Upgrade to Professional'=>'Passa a Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro antispam: blocca gli indirizzi email usa e getta','VPN, proxy and datacenter filtering'=>'Filtro di VPN, proxy e data center','Choose your challenge type, plus icon-order and audio challenges'=>'Scegli il tipo di sfida, oltre alle sfide con ordine delle icone e audio','A risk score and block reason for every decision'=>'Punteggio di rischio e motivo del blocco per ogni decisione','Up to 1M requests a month and 50 sites'=>'Fino a 1 milione di richieste al mese e 50 siti','Email and Discord support, 99.9% uptime'=>'Supporto via email e Discord, disponibilità del 99,9%','Start a 30-day free trial'=>'Prova gratuita di 30 giorni','Procaptcha Settings'=>'Impostazioni di Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Impostazioni','Statistics'=>'Statistiche','Open the Portal'=>'Apri il portale','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilizzo e impostazioni della tua chiave del sito. Gestisci account e impostazioni del sito nel portale Prosopo.','Your Site Key'=>'La tua chiave del sito','Change in the portal'=>'Modifica nel portale','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'Il tuo piano ti permette di scegliere il tipo di sfida per questa chiave del sito nel portale Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'Procaptcha mostra una sfida solo ai visitatori che sembrano bot e sceglie per loro una sfida Proof of Work, con immagini o puzzle. La scelta di un unico tipo di sfida fa parte del piano Professional.','Challenge type:'=>'Tipo di sfida:','Your Challenges'=>'Le tue sfide','Audio'=>'Audio','Frictionless (challenge only when needed)'=>'Frictionless (sfida solo quando serve)','Icon order'=>'Ordine delle icone','Image'=>'Immagine','Proof of Work'=>'Prova di lavoro','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'su {total} visite controllate questo mese','Bots stopped this month'=>'Bot fermati questo mese','Checked by your server'=>'Controllati dal tuo server','On track for about {forecast} of {limit} by the end of the month.'=>'Di questo passo, circa {forecast} su {limit} entro fine mese.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Di questo passo, circa {forecast} entro fine mese, oltre il tuo limite di {limit}.','Requests this month'=>'Richieste questo mese','{used} of {limit} requests used'=>'{used} di {limit} richieste usate','Day'=>'Giorno','Hide the table'=>'Nascondi la tabella','{percent}% of visitors passed the invisible check without a challenge.'=>'Il {percent}% dei visitatori ha superato il controllo invisibile senza sfida.','Visitors who saw nothing to solve'=>'Visitatori senza nulla da risolvere','Requests'=>'Richieste','Challenges served'=>'Sfide mostrate','Your server checks {percent}% of solved captchas.'=>'Il tuo server controlla il {percent}% dei captcha risolti.','Setup check'=>'Controllo della configurazione','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Solo il {percent}% dei captcha risolti è stato controllato dal tuo server. Un modulo potrebbe accettare invii senza verificare il token Procaptcha, permettendo ai bot di aggirarlo.','How verification works'=>'Come funziona la verifica','Show as a table'=>'Mostra come tabella','Solved by visitors'=>'Risolti dai visitatori','Total'=>'Totale','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Non è stato possibile caricare le statistiche. Controlla che la chiave del sito e la chiave segreta nella scheda Generale siano corrette e salvate, poi riprova.','Successfully loaded at'=>'Caricato con successo alle','Loading, please wait.'=>'Caricamento in corso, attendere.','Refresh now'=>'Aggiorna ora','Try again'=>'Riprova','View traffic analytics'=>'Visualizza l\'analisi del traffico','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'L\'analisi del traffico è inclusa in ogni piano. Consulta i grafici nel portale Prosopo.','Traffic Analytics'=>'Analisi del traffico','Audio:'=>'Audio:','Icon order:'=>'Ordine delle icone:','Image:'=>'Immagine:','Proof of Work:'=>'Prova di lavoro:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Utilizzo mensile','Total Verification Requests:'=>'Richieste totali di verifica:','Please verify that you are human.'=>'Si prega di verificare che siate umani.','Frictionless'=>'Senza attrito','Pow'=>'Pow','Save'=>'Salva','Procaptcha for WordPress'=>'Procaptcha per WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito e conforme al GDPR che ferma i bot di spam. Senza cookie.','Docs'=>'Documentazione','Website'=>'Sito web','Prosopo portal'=>'Portale Prosopo','Settings successfully saved.'=>'Impostazioni salvate con successo.','Get your free site key'=>'Ottieni la tua chiave del sito gratuita','Sign up for a free Prosopo account.'=>'Crea un account Prosopo gratuito.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copia la chiave del sito e la chiave segreta dal portale Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Incollale qui, salva e attiva i moduli che vuoi proteggere.','Free for 10,000 requests a month. No credit card.'=>'Gratis fino a 10.000 richieste al mese. Nessuna carta di credito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Anteprima: se le credenziali sono valide, dovresti essere in grado di completare il captcha qui sotto:','What protects your forms'=>'Cosa protegge i tuoi moduli','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Un controllo invisibile: la maggior parte dei visitatori non deve risolvere nulla e solo chi sembra un bot riceve una sfida.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Una trappola honeypot nascosta e il blocco delle reti abusive note.','No cookies and no tracking.'=>'Nessun cookie e nessun tracciamento.','All included on the free plan.'=>'Tutto incluso nel piano gratuito.','Data processing agreement'=>'Accordo sul trattamento dei dati','Please setup your keys to see the statistics.'=>'Configura le tue chiavi per vedere le statistiche.','Visitor IP matching:'=>'Corrispondenza IP del visitatore:','Off (recommended)'=>'Disattivato (consigliato)','On - site is behind Cloudflare'=>'Attivato – il sito è dietro Cloudflare','On - visitors connect directly (REMOTE_ADDR)'=>'Attivato – i visitatori si connettono direttamente (REMOTE_ADDR)','On - site is behind another proxy (X-Forwarded-For)'=>'Attivato – il sito è dietro un altro proxy (X-Forwarded-For)']]; \ No newline at end of file diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.mo b/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.mo index 0187c9a4c2b325c384edd6a160476bd8d4700eb6..4bf1349e4c0aa18091528c90c2f1c286df70ecfb 100644 GIT binary patch delta 2439 zcmajge@xVM9LMpGKk!UA5|pCM_$tzI2van*fRLXi8M7cK#>^eu7rZ*|3*Y-HCAO=X zwI=^Kjn;H+rje~*W8_+!>&IMci?paVZI*5{S2N9O=w`Lm^W|MLH@6(}_#!Nh$dcKUTHPczd z(9A+*9zbPYf_}UcwXOz<**u8)Tr1{a2>qOIdKt{Z?RYotLzUJ7UF=nu9F;-y{ zc40Msga>dUr>VrRq2}Mi61AlRPUE#9eW}M15O~Zn2XqqKCZ5M+KP9ejmoqi+wcG?03T)4{_~M3Q-ex)EvhAMf`KmEZdB>_ zqB1#z%H(5I=A)<Q~(){?RlmGNd|so8-maS*HV z0#eb0DW$&JxE3vJKppTXsuDe@ji1D&*pEec1RL=e)Lp2Uo!qz{_wf82-iP^IAO#vj zwQ4Ks^ZPNN@Bf<&l<_yH%kdNH(oCdIn$JNk2%>tv2o+!js&%y~SEc5g(PI8#RO|Xs zx4j?BaR_zJc?>2P_$X!StiE2SE>W(c&u8p}L6Q43@W1x+T2vZT4p(?Nn_5FSX_5Lv=Xw!!l?m>!W4x<7& zi3>2ZAo*O0Oqm|kJ_D!4nMOhEW+sQSbL+ zHx8i!n;T39QlGLj$CDd(ZSPUW}*o3R5=V;QcP z&))}p8dZt>;^ZH#WvFjM2vwPPiifxOveObB9af=hw>w>3b}Vd%gJyNiDzV}b&$c3Q ztIggRiG{7&sIw{D5e>Qabzg^Kjbkn7;I8j8@`hi}_`v748XmB^LS8!|be0WonEBGQ zL_FkqkHR+-rd ztSCtXqYN4QV5np-1ZqehN)cvI28EE>i`fg+@6R4+JkRqx_j&I7oaM}=iF4SO8`+C5@p8Vx#JGnZDV>$?4{)UGkJ-r6oXA>> zh_%e(c+TT`uH`NEFI6?ATx4Pfn>e3&U^NriI$q3emFr#fZ26F0<*<*O{1|icF4poC z^W4uAOX*>g+*iXv?9W>Jmyrfn@J8Ou`CPy@PUA`LV1reY!cUp`FFBTj?UEDEWHR$8 z7xOVD&`+3>9pz>GmI>f*wjMI5v#Pa97tNK^tmB`wcd6~yJwJpgK~u%)Ol|MuRa{xI zox@#satKdQ63TB($$Dsj1k|^`{HKZPP57=%VQM{(xp5)WluMWeR#8l41BbDl33M+f z^9U1QwaJ`(7*oP=e2X)g68*rG;-@)AgQWg6llninj(rqp5uf9De!~qMXg7P8 zZ5+kjoW)~I3F<|;uZPa&bk~2`y_r*`CC{y90^H0sY~5p!RE!gTQgZ_nP&0Gl7ACL< zD=w!PODny~%RXlFeNN+fCXoWz|XjYS$Nsi-2ts(PWU|Yvwf5K{ymDJ>}LbJD8}*+TNBAp zt$Z!-V6N9PC+lDqI?iP1J0^fLw0Eg;Q+i`0Q|k%L{gY|!(!y-Cj7fPL^V}QMujSxy z`M=5FxC!Mh{YG>*#~7x$CUP$qvWm3|oe~Y8a+V=XGfw1U&SgsXHgllemG4h-x$9q; zz#h>c31nmPpTRB@4pj~_O>~9{=seS{14nhAtbvJqY{ePOujF2~aRrz1UryrErc$? diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.po b/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.po index dbfafe4..0feeb6a 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.po +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-it_IT.po @@ -2,19 +2,20 @@ msgid "" msgstr "" "Project-Id-Version: Prosopo ProCaptcha 1.0.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/prosopo-procaptcha\n" -"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language: \n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: prosopo-procaptcha\n" #. Plugin Name of the plugin -#: prosopo-procaptcha.php src/Widget/Procaptcha_Widget.php:77 +#: prosopo-procaptcha.php +#: src/Widget/Procaptcha_Widget.php:77 msgid "Prosopo Procaptcha" msgstr "Prosopo Procaptcha" @@ -111,49 +112,49 @@ msgstr "Nota: i plugin inattivi sono esclusi, anche se compatibili." msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "Il tuo plugin preferito non è nell'elenco? %1$s Apri una discussione %2$s nel nostro forum di supporto e valuteremo la nuova integrazione." -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "Generale" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "La tua chiave segreta:" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "La tua chiave del sito:" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "Tema:" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "Lingua:" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "Richiedi agli utenti autorizzati:" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "Scuro" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "Chiaro" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "Uguale al sito" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "Lingua del browser del visitatore" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "Comportamento" @@ -494,3 +495,23 @@ msgstr "Accordo sul trattamento dei dati" #: src/Settings/Statistics/statistics_settings.blade.php:34 msgid "Please setup your keys to see the statistics." msgstr "Configura le tue chiavi per vedere le statistiche." + +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "Corrispondenza IP del visitatore:" + +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "Disattivato (consigliato)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "Attivato – il sito è dietro Cloudflare" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "Attivato – i visitatori si connettono direttamente (REMOTE_ADDR)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "Attivato – il sito è dietro un altro proxy (X-Forwarded-For)" diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.l10n.php b/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.l10n.php index 69536b0..4283ea1 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.l10n.php +++ b/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.l10n.php @@ -1,2 +1,2 @@ 'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito e em conformidade com o RGPD que trava os bots de spam nos formulários principais do WordPress e em 21 plugins de formulários, construtores de páginas e temas. Sem cookies.','Prosopo Team'=>'Equipe Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Ativar a proteção de formulário para este fórum (novo tópico, resposta)','Procaptcha protection'=>'Proteção Procaptcha','Disabled'=>'Desativado','Enabled'=>'Ativado','Enable Procaptcha form protection'=>'Ativar a proteção de formulários Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteger o formulário de checkout','Protect the order tracking form'=>'Proteger o formulário de rastreamento de pedidos','Core Forms'=>'Formulários principais','Protect the comment form:'=>'Proteger o formulário de comentários:','Protect the login form:'=>'Proteger o formulário de login:','Protect the lost password form:'=>'Proteger o formulário de recuperação de senha:','Protect the post/page password form:'=>'Proteger o formulário de senha de postagem/página:','Protect the register form:'=>'Proteger o formulário de registro:','Active Integrations'=>'Integrações ativas','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'O plugin Procaptcha deteta automaticamente os plugins compatíveis no seu site e ativa as respetivas integrações. Clique num item para abrir a página de documentação correspondente.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: os plugins inativos são excluídos, mesmo que sejam compatíveis.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'O seu plugin preferido não está na lista? %1$s Abra um tópico %2$s no nosso fórum de suporte e iremos considerar a nova integração.','General'=>'Geral','Your Secret Key:'=>'Sua chave secreta:','Your Site Key:'=>'Sua chave do site:','Theme:'=>'Tema:','Language:'=>'Idioma:','Require from authorized users:'=>'Exigir de usuários autorizados:','Dark'=>'Escuro','Light'=>'Claro','Same as the site'=>'Igual ao site','Visitor\'s browser language'=>'Idioma do navegador do visitante','Behavior'=>'Comportamento','Upgrade to Professional'=>'Mudar para Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro de spam: bloqueia endereços de email descartáveis','VPN, proxy and datacenter filtering'=>'Filtragem de VPN, proxies e centros de dados','Choose your challenge type, plus icon-order and audio challenges'=>'Escolha o tipo de desafio, mais desafios de ordem de ícones e de áudio','A risk score and block reason for every decision'=>'Pontuação de risco e motivo de bloqueio em cada decisão','Up to 1M requests a month and 50 sites'=>'Até 1 milhão de pedidos por mês e 50 sites','Email and Discord support, 99.9% uptime'=>'Suporte por email e Discord, 99,9% de disponibilidade','Start a 30-day free trial'=>'Experimente grátis durante 30 dias','Procaptcha Settings'=>'Configurações do Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Configurações','Statistics'=>'Estatísticas','Open the Portal'=>'Abrir o portal','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilização e definições da sua chave do site. Gira a sua conta e as definições do site no portal Prosopo.','Your Site Key'=>'A sua chave do site','Change in the portal'=>'Alterar no portal','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'O seu plano permite escolher o tipo de desafio desta chave do site no portal Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'O Procaptcha só mostra um desafio aos visitantes que parecem bots e escolhe para eles um desafio Proof of Work, de imagem ou de puzzle. Escolher um único tipo de desafio faz parte do plano Professional.','Challenge type:'=>'Tipo de desafio:','Your Challenges'=>'Os seus desafios','Audio'=>'Áudio','Frictionless (challenge only when needed)'=>'Frictionless (desafio apenas quando necessário)','Icon order'=>'Ordem dos ícones','Image'=>'Imagem','Proof of Work'=>'Prova de trabalho','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'de {total} visitas verificadas este mês','Bots stopped this month'=>'Bots travados este mês','Checked by your server'=>'Verificados pelo seu servidor','On track for about {forecast} of {limit} by the end of the month.'=>'Ao ritmo atual, cerca de {forecast} de {limit} até ao fim do mês.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Ao ritmo atual, cerca de {forecast} até ao fim do mês, acima do seu limite de {limit}.','Requests this month'=>'Pedidos este mês','{used} of {limit} requests used'=>'{used} de {limit} pedidos usados','Day'=>'Dia','Hide the table'=>'Ocultar a tabela','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent}% dos visitantes passaram a verificação invisível sem desafio.','Visitors who saw nothing to solve'=>'Visitantes sem nada para resolver','Requests'=>'Pedidos','Challenges served'=>'Desafios apresentados','Your server checks {percent}% of solved captchas.'=>'O seu servidor verifica {percent}% dos captchas resolvidos.','Setup check'=>'Verificação da configuração','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Apenas {percent}% dos captchas resolvidos foram verificados pelo seu servidor. Um formulário pode estar a aceitar envios sem verificar o token do Procaptcha, o que permite aos bots contorná-lo.','How verification works'=>'Como funciona a verificação','Show as a table'=>'Mostrar como tabela','Solved by visitors'=>'Resolvidos pelos visitantes','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Não foi possível carregar as suas estatísticas. Verifique se a chave do site e a chave secreta no separador Geral estão corretas e guardadas e tente novamente.','Successfully loaded at'=>'Carregado com sucesso em','Loading, please wait.'=>'Carregando, por favor aguarde.','Refresh now'=>'Atualizar agora','Try again'=>'Tentar novamente','View traffic analytics'=>'Ver a análise de tráfego','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'A análise de tráfego está incluída em todos os planos. Consulte os gráficos no portal Prosopo.','Traffic Analytics'=>'Análise de tráfego','Audio:'=>'Áudio:','Icon order:'=>'Ordem dos ícones:','Image:'=>'Imagem:','Proof of Work:'=>'Prova de trabalho:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Uso mensal','Total Verification Requests:'=>'Total de solicitações de verificação:','Please verify that you are human.'=>'Por favor, verifique que você é humano.','Frictionless'=>'Sem fricção','Pow'=>'Pow','Save'=>'Salvar','Procaptcha for WordPress'=>'Procaptcha para WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito e em conformidade com o RGPD que trava os bots de spam. Sem cookies.','Docs'=>'Documentação','Website'=>'Site','Prosopo portal'=>'Portal Prosopo','Settings successfully saved.'=>'Configurações salvas com sucesso.','Get your free site key'=>'Obtenha a sua chave do site gratuita','Sign up for a free Prosopo account.'=>'Crie uma conta Prosopo gratuita.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copie a chave do site e a chave secreta a partir do portal Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Cole-as aqui, guarde e ative os formulários que pretende proteger.','Free for 10,000 requests a month. No credit card.'=>'Grátis até 10 000 pedidos por mês. Sem cartão de crédito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Pré-visualização: se as credenciais forem válidas, você deverá conseguir completar o captcha abaixo:','What protects your forms'=>'O que protege os seus formulários','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Uma verificação invisível: a maioria dos visitantes não tem nada para resolver e só quem parece um bot recebe um desafio.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Uma armadilha honeypot oculta e o bloqueio de redes abusivas conhecidas.','No cookies and no tracking.'=>'Sem cookies e sem rastreio.','All included on the free plan.'=>'Tudo incluído no plano gratuito.','Data processing agreement'=>'Acordo de tratamento de dados','Please setup your keys to see the statistics.'=>'Configure suas chaves para ver as estatísticas.']]; \ No newline at end of file +return ['domain'=>'prosopo-procaptcha','plural-forms'=>NULL,'language'=>'','project-id-version'=>'Prosopo ProCaptcha 1.0.0','pot-creation-date'=>'2026-10-27T13:57:59+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.11.0','messages'=>['Prosopo Procaptcha'=>'Prosopo Procaptcha','Free, GDPR-compliant CAPTCHA that stops spam bots on WordPress core forms and 21 form plugins, page builders and themes. No cookies.'=>'CAPTCHA gratuito e em conformidade com o RGPD que trava os bots de spam nos formulários principais do WordPress e em 21 plugins de formulários, construtores de páginas e temas. Sem cookies.','Prosopo Team'=>'Equipe Prosopo','https://prosopo.io/'=>'https://prosopo.io/','Enable form protection for this forum (new topic, reply)'=>'Ativar a proteção de formulário para este fórum (novo tópico, resposta)','Procaptcha protection'=>'Proteção Procaptcha','Disabled'=>'Desativado','Enabled'=>'Ativado','Enable Procaptcha form protection'=>'Ativar a proteção de formulários Procaptcha','WooCommerce'=>'WooCommerce','Protect the checkout form'=>'Proteger o formulário de checkout','Protect the order tracking form'=>'Proteger o formulário de rastreamento de pedidos','Core Forms'=>'Formulários principais','Protect the comment form:'=>'Proteger o formulário de comentários:','Protect the login form:'=>'Proteger o formulário de login:','Protect the lost password form:'=>'Proteger o formulário de recuperação de senha:','Protect the post/page password form:'=>'Proteger o formulário de senha de postagem/página:','Protect the register form:'=>'Proteger o formulário de registro:','Active Integrations'=>'Integrações ativas','The Procaptcha plugin automatically detects compatible plugins on your site and enables their integrations. Click any item below to open a corresponding Docs page.'=>'O plugin Procaptcha deteta automaticamente os plugins compatíveis no seu site e ativa as respetivas integrações. Clique num item para abrir a página de documentação correspondente.','Note: Inactive plugins, even if compatible, are excluded.'=>'Nota: os plugins inativos são excluídos, mesmo que sejam compatíveis.','Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration.'=>'O seu plugin preferido não está na lista? %1$s Abra um tópico %2$s no nosso fórum de suporte e iremos considerar a nova integração.','General'=>'Geral','Your Secret Key:'=>'Sua chave secreta:','Your Site Key:'=>'Sua chave do site:','Theme:'=>'Tema:','Language:'=>'Idioma:','Require from authorized users:'=>'Exigir de usuários autorizados:','Dark'=>'Escuro','Light'=>'Claro','Same as the site'=>'Igual ao site','Visitor\'s browser language'=>'Idioma do navegador do visitante','Behavior'=>'Comportamento','Upgrade to Professional'=>'Mudar para Professional','Spam Filter: blocks disposable and throwaway email addresses'=>'Filtro de spam: bloqueia endereços de email descartáveis','VPN, proxy and datacenter filtering'=>'Filtragem de VPN, proxies e centros de dados','Choose your challenge type, plus icon-order and audio challenges'=>'Escolha o tipo de desafio, mais desafios de ordem de ícones e de áudio','A risk score and block reason for every decision'=>'Pontuação de risco e motivo de bloqueio em cada decisão','Up to 1M requests a month and 50 sites'=>'Até 1 milhão de pedidos por mês e 50 sites','Email and Discord support, 99.9% uptime'=>'Suporte por email e Discord, 99,9% de disponibilidade','Start a 30-day free trial'=>'Experimente grátis durante 30 dias','Procaptcha Settings'=>'Configurações do Procaptcha','Procaptcha'=>'Procaptcha','Settings'=>'Configurações','Statistics'=>'Estatísticas','Open the Portal'=>'Abrir o portal','Usage and settings for your site key. Manage your account and site settings in the Prosopo portal.'=>'Utilização e definições da sua chave do site. Gira a sua conta e as definições do site no portal Prosopo.','Your Site Key'=>'A sua chave do site','Change in the portal'=>'Alterar no portal','Your plan lets you choose the challenge type for this site key in the Prosopo portal.'=>'O seu plano permite escolher o tipo de desafio desta chave do site no portal Prosopo.','Procaptcha shows a challenge only to visitors who look like bots, and picks a Proof of Work, image or jigsaw puzzle challenge for them. Choosing a single challenge type is part of the Professional plan.'=>'O Procaptcha só mostra um desafio aos visitantes que parecem bots e escolhe para eles um desafio Proof of Work, de imagem ou de puzzle. Escolher um único tipo de desafio faz parte do plano Professional.','Challenge type:'=>'Tipo de desafio:','Your Challenges'=>'Os seus desafios','Audio'=>'Áudio','Frictionless (challenge only when needed)'=>'Frictionless (desafio apenas quando necessário)','Icon order'=>'Ordem dos ícones','Image'=>'Imagem','Proof of Work'=>'Prova de trabalho','Jigsaw puzzle'=>'Puzzle','out of {total} visits checked this month'=>'de {total} visitas verificadas este mês','Bots stopped this month'=>'Bots travados este mês','Checked by your server'=>'Verificados pelo seu servidor','On track for about {forecast} of {limit} by the end of the month.'=>'Ao ritmo atual, cerca de {forecast} de {limit} até ao fim do mês.','On track for about {forecast} by the end of the month, over your limit of {limit}.'=>'Ao ritmo atual, cerca de {forecast} até ao fim do mês, acima do seu limite de {limit}.','Requests this month'=>'Pedidos este mês','{used} of {limit} requests used'=>'{used} de {limit} pedidos usados','Day'=>'Dia','Hide the table'=>'Ocultar a tabela','{percent}% of visitors passed the invisible check without a challenge.'=>'{percent}% dos visitantes passaram a verificação invisível sem desafio.','Visitors who saw nothing to solve'=>'Visitantes sem nada para resolver','Requests'=>'Pedidos','Challenges served'=>'Desafios apresentados','Your server checks {percent}% of solved captchas.'=>'O seu servidor verifica {percent}% dos captchas resolvidos.','Setup check'=>'Verificação da configuração','Only {percent}% of solved captchas were checked by your server. A form may be accepting submissions without verifying the Procaptcha token, which lets bots skip it.'=>'Apenas {percent}% dos captchas resolvidos foram verificados pelo seu servidor. Um formulário pode estar a aceitar envios sem verificar o token do Procaptcha, o que permite aos bots contorná-lo.','How verification works'=>'Como funciona a verificação','Show as a table'=>'Mostrar como tabela','Solved by visitors'=>'Resolvidos pelos visitantes','Total'=>'Total','Your statistics could not be loaded. Check that the Site Key and Secret Key on the General tab are correct and saved, then try again.'=>'Não foi possível carregar as suas estatísticas. Verifique se a chave do site e a chave secreta no separador Geral estão corretas e guardadas e tente novamente.','Successfully loaded at'=>'Carregado com sucesso em','Loading, please wait.'=>'Carregando, por favor aguarde.','Refresh now'=>'Atualizar agora','Try again'=>'Tentar novamente','View traffic analytics'=>'Ver a análise de tráfego','Traffic analytics are included on every plan. See the charts in the Prosopo portal.'=>'A análise de tráfego está incluída em todos os planos. Consulte os gráficos no portal Prosopo.','Traffic Analytics'=>'Análise de tráfego','Audio:'=>'Áudio:','Icon order:'=>'Ordem dos ícones:','Image:'=>'Imagem:','Proof of Work:'=>'Prova de trabalho:','Jigsaw puzzle:'=>'Puzzle:','Monthly Usage'=>'Uso mensal','Total Verification Requests:'=>'Total de solicitações de verificação:','Please verify that you are human.'=>'Por favor, verifique que você é humano.','Frictionless'=>'Sem fricção','Pow'=>'Pow','Save'=>'Salvar','Procaptcha for WordPress'=>'Procaptcha para WordPress','Free, GDPR-compliant CAPTCHA that stops spam bots. No cookies.'=>'CAPTCHA gratuito e em conformidade com o RGPD que trava os bots de spam. Sem cookies.','Docs'=>'Documentação','Website'=>'Site','Prosopo portal'=>'Portal Prosopo','Settings successfully saved.'=>'Configurações salvas com sucesso.','Get your free site key'=>'Obtenha a sua chave do site gratuita','Sign up for a free Prosopo account.'=>'Crie uma conta Prosopo gratuita.','Copy your Site Key and Secret Key from the Prosopo portal.'=>'Copie a chave do site e a chave secreta a partir do portal Prosopo.','Paste them here, save, and turn on the forms you want to protect.'=>'Cole-as aqui, guarde e ative os formulários que pretende proteger.','Free for 10,000 requests a month. No credit card.'=>'Grátis até 10 000 pedidos por mês. Sem cartão de crédito.','Preview: if the credentials are valid, you should be able to complete the captcha below:'=>'Pré-visualização: se as credenciais forem válidas, você deverá conseguir completar o captcha abaixo:','What protects your forms'=>'O que protege os seus formulários','An invisible check: most visitors see nothing to solve, and only visitors who look like bots get a challenge.'=>'Uma verificação invisível: a maioria dos visitantes não tem nada para resolver e só quem parece um bot recebe um desafio.','A hidden honeypot trap, and blocking of known abusive networks.'=>'Uma armadilha honeypot oculta e o bloqueio de redes abusivas conhecidas.','No cookies and no tracking.'=>'Sem cookies e sem rastreio.','All included on the free plan.'=>'Tudo incluído no plano gratuito.','Data processing agreement'=>'Acordo de tratamento de dados','Please setup your keys to see the statistics.'=>'Configure suas chaves para ver as estatísticas.','Visitor IP matching:'=>'Correspondência do IP do visitante:','Off (recommended)'=>'Desativado (recomendado)','On - site is behind Cloudflare'=>'Ativado – o site está atrás do Cloudflare','On - visitors connect directly (REMOTE_ADDR)'=>'Ativado – os visitantes ligam-se diretamente (REMOTE_ADDR)','On - site is behind another proxy (X-Forwarded-For)'=>'Ativado – o site está atrás de outro proxy (X-Forwarded-For)']]; \ No newline at end of file diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.mo b/prosopo-procaptcha/lang/prosopo-procaptcha-pt_PT.mo index 4080aedbc1a1b6f2ebcc4101ffc88d8460b85347..32e502e037f7ea0018575a5ffb6739ed3c8c37ac 100644 GIT binary patch delta 2438 zcmajfe@vBC9LMoPcqIi)RMa%%F@JCgZ^6{9z@Z3Ow46yg$Q!xGdmr>VxQ{;fBK?@% z5@j{*4-;#dYoSuBtsjgvtvR!Ze^i>q%3Nm6=K7`Cn*M>a)%)XpX4%?ea9`(~`)syH_Nk)$zh-qi?9nd;V3GwK^%oY`~4wgt{KfF znr1R8^FmbSAI&q9_GW* z>5K+&4E<9`Z03SLeg$D&+~(nSPH7=p3p7 z+KshM0qU$vP|wXpUD^uN{4f%$S&h@M4f!=M^Dz(KMg{f@D)GQr>aQ~%&2D?K5Osz} zQD^lzYJ;zkSj;7S5VN?tI@2)DLIlvt$7z1UcKj2UV>`Q);z`_s*+fIEW;+J48yDfHsH4bdvx6C& z|6CgPGVnWf(Q8*uc#3obD#ES!B))~J%q(uI0-lWus2o|-)S?2lk(i8!s@O9)1$UwL zIe=A|L0OrXGBq@`a3ku$C}!d&)ERZ4GTx4J@m0J7zr_17z$67!hZVR2593Ry%BH~VfwE!>GLX?CF! zcppjHe1fXLcc`N-vUojHG#1iWfa`D`_Fx14iYnDToI@XOMO9+SZRznxP#Nt({o@)$ zRqhX5iy70>0W_l$YeU`sov0&v2UEvr^wUtr&+}3$<9)vSQ5zodJ&CMse#An|o?(oI zv#}JH`F7wO`UjAu&3V*i&YPL8;8fIpMKh_tMWdVnozcTM9M_^ItVb>IG*UIwjk?wS zXyHjzX)j|LjwdQTzZA7zE2`A(_yO+50M-Z7HU_D`N*7^3xBfYd;2zYS7|xd=oPfIJ zHRxg^>R<5y@?x0FNKs7w?dibEkkc|@9EKZFmD_}Ry}MEC_dG;HCI1+e*%yBQCw!Lv z71S;6D5gqy3iskfcGvRs>i+aAd05N!ZEQ20QBdQ4=(sB2(#)o_T7A<)*`T63MEO4qHBu&yR&$CFONYL2b8TS5uvYJN$ZvQo~x-uqca4i9TO9X#Ds8oOAX&=RD_m&Tl_0T62H%>6#v` z#m{qoZ}5AxdwQk3(CdHi(tJ^W0(Y}NFK`&I>Rrk*4rc||vnN~WQ#Sb;#BIEWyV;M& zIG~i~az^7i0~dKW`&5=Pg>zWNSJ;DZ@Or+*#P|_SDLcFVzK4za2RNMPc^j)OBGxjC z6FHY__!67!Un=^PaQ3oeu6pqDOU4GX5McU zOX+5lJlBT<*^kxsFO3>QIhnU}9_O=#(|DTivCgVV;UQ-HOOE3pyX3?(nan)J2lzA- z=s~7r$2pikFacaT_7}e!;rnV3BMn2nRD{t1{ z$ss&RNhp6XCF|w_B%rE(@}EmI%z(d@JDFO~Wgc9>T*`--1y)c@Wi9L3$^^QLQ+bpL zu+m^oUeAV8jfVri=uokd^so4sS;A-ZiAMi2mX98$&g|orE z%t;?*O0kl;Lz|hDZ(|OyhdDq8bKsNB8cF?mCiQ=FHG3=2LcYq0{GMw$z;5;~8#$6Y zIEyEk5)2dNXWiUv-lKoX?s=PLNQ9jrMUmtK8(wo6D^GB=g)dc4rGyn)S^6D;qT?8`#eAJi|Hct1by>F`KxA zd%2Yh)3<5@-Ngw!%+&NR=JNf^1YYlgX_iS$;Pa{4<#G1R`@dWx8?CxBP|C|){nxr| zWftB{pVHm=pcn($dwY;s_;V)J-!Uh;*wybXnsxd^najD2ckmM1c\n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Language: \n" "X-Generator: WP-CLI 2.11.0\n" "X-Domain: prosopo-procaptcha\n" #. Plugin Name of the plugin -#: prosopo-procaptcha.php src/Widget/Procaptcha_Widget.php:77 +#: prosopo-procaptcha.php +#: src/Widget/Procaptcha_Widget.php:77 msgid "Prosopo Procaptcha" msgstr "Prosopo Procaptcha" @@ -111,49 +112,49 @@ msgstr "Nota: os plugins inativos são excluídos, mesmo que sejam compatíveis. msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "O seu plugin preferido não está na lista? %1$s Abra um tópico %2$s no nosso fórum de suporte e iremos considerar a nova integração." -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "Geral" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "Sua chave secreta:" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "Sua chave do site:" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "Tema:" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "Idioma:" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "Exigir de usuários autorizados:" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "Escuro" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "Claro" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "Igual ao site" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "Idioma do navegador do visitante" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "Comportamento" @@ -494,3 +495,23 @@ msgstr "Acordo de tratamento de dados" #: src/Settings/Statistics/statistics_settings.blade.php:34 msgid "Please setup your keys to see the statistics." msgstr "Configure suas chaves para ver as estatísticas." + +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "Correspondência do IP do visitante:" + +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "Desativado (recomendado)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "Ativado – o site está atrás do Cloudflare" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "Ativado – os visitantes ligam-se diretamente (REMOTE_ADDR)" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "Ativado – o site está atrás de outro proxy (X-Forwarded-For)" diff --git a/prosopo-procaptcha/lang/prosopo-procaptcha.pot b/prosopo-procaptcha/lang/prosopo-procaptcha.pot index 181f4a7..dfb19fe 100644 --- a/prosopo-procaptcha/lang/prosopo-procaptcha.pot +++ b/prosopo-procaptcha/lang/prosopo-procaptcha.pot @@ -2,14 +2,14 @@ # This file is distributed under the GPLv2 or later. msgid "" msgstr "" -"Project-Id-Version: Prosopo Procaptcha 1.22.0\n" +"Project-Id-Version: Prosopo Procaptcha 1.24.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/prosopo-procaptcha\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-10-27T13:57:59+00:00\n" +"POT-Creation-Date: 2026-10-29T15:26:27+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: prosopo-procaptcha\n" @@ -113,49 +113,69 @@ msgstr "" msgid "Your favourite plugin is not listed? %1$s Start a thread %2$s in our support forum and we will consider adding the new integration." msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:30 +#: src/Settings/General/Tab/General_Settings_Tab.php:31 msgid "General" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:99 +#: src/Settings/General/Tab/General_Settings_Tab.php:114 msgid "Your Secret Key:" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:100 +#: src/Settings/General/Tab/General_Settings_Tab.php:115 msgid "Your Site Key:" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:101 +#: src/Settings/General/Tab/General_Settings_Tab.php:116 msgid "Theme:" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:102 +#: src/Settings/General/Tab/General_Settings_Tab.php:117 +msgid "Visitor IP matching:" +msgstr "" + +#: src/Settings/General/Tab/General_Settings_Tab.php:118 msgid "Language:" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:108 +#: src/Settings/General/Tab/General_Settings_Tab.php:124 msgid "Require from authorized users:" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:122 +#: src/Settings/General/Tab/General_Settings_Tab.php:140 #: src/Widget/Procaptcha_Widget.php:55 msgid "Dark" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:123 +#: src/Settings/General/Tab/General_Settings_Tab.php:141 #: src/Widget/Procaptcha_Widget.php:56 msgid "Light" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:126 +#: src/Settings/General/Tab/General_Settings_Tab.php:145 +msgid "Off (recommended)" +msgstr "" + +#: src/Settings/General/Tab/General_Settings_Tab.php:146 +msgid "On - site is behind Cloudflare" +msgstr "" + +#: src/Settings/General/Tab/General_Settings_Tab.php:147 +msgid "On - visitors connect directly (REMOTE_ADDR)" +msgstr "" + +#: src/Settings/General/Tab/General_Settings_Tab.php:148 +msgid "On - site is behind another proxy (X-Forwarded-For)" +msgstr "" + +#: src/Settings/General/Tab/General_Settings_Tab.php:151 msgid "Same as the site" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:127 +#: src/Settings/General/Tab/General_Settings_Tab.php:152 msgid "Visitor's browser language" msgstr "" -#: src/Settings/General/Tab/General_Settings_Tab.php:137 +#: src/Settings/General/Tab/General_Settings_Tab.php:162 msgid "Behavior" msgstr "" diff --git a/prosopo-procaptcha/readme.txt b/prosopo-procaptcha/readme.txt index d6161b7..4c575c1 100644 --- a/prosopo-procaptcha/readme.txt +++ b/prosopo-procaptcha/readme.txt @@ -155,6 +155,7 @@ Absolutely! The plugin has a [public GitHub repository](https://github.com/proso == Changelog == = 1.24.0 (2026-10-29) = +* Fix: the visitor's IP address is no longer sent for verification by default. Version 1.23.0 sent it, which turned on IP matching and could reject real visitors on sites behind Cloudflare or another proxy. IP matching is now the "Visitor IP matching" setting on the General tab, off by default, with a choice of where the IP comes from: Cloudflare, another proxy (X-Forwarded-For) or a direct connection. The `prosopo/procaptcha/visitor_ip` filter now receives the IP from that setting (empty when off) and REMOTE_ADDR * Fix: forms that submit without reloading the page get a fresh captcha after each submission, as a solved captcha can be verified only once. Previously, resubmitting after another field failed validation was rejected. Covers Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Elementor Pro, Everest Forms, JetFormBuilder, User Registration, Beaver Builder, WooCommerce checkout and the Blocksy newsletter form * Fix: User Registration login forms with the "AJAX login" option on now send the captcha token, so logins are no longer rejected * Fix: Spectra forms send their own captcha token when a page has several Spectra forms, or a Spectra hidden field before the captcha diff --git a/prosopo-procaptcha/src/Settings/General/Tab/General_Settings_Tab.php b/prosopo-procaptcha/src/Settings/General/Tab/General_Settings_Tab.php index a7737e3..4b447d6 100644 --- a/prosopo-procaptcha/src/Settings/General/Tab/General_Settings_Tab.php +++ b/prosopo-procaptcha/src/Settings/General/Tab/General_Settings_Tab.php @@ -22,6 +22,7 @@ final class General_Settings_Tab extends Settings_Tab_Base implements Procaptcha const THEME = 'theme'; const WIDGET_LANGUAGE = 'widget_language'; const IS_ENABLED_FOR_AUTHORIZED = 'is_enabled_for_authorized'; + const VISITOR_IP_MATCHING = 'visitor_ip_matching'; const LANGUAGE_SITE = 'site'; const LANGUAGE_VISITOR = 'visitor'; @@ -89,6 +90,20 @@ public function should_bypass_authorized_user(): bool { return ! $is_enabled_for_authorized; } + public function get_visitor_ip_source(): string { + $source = string( $this->get_settings(), self::VISITOR_IP_MATCHING ); + + $sources = array( + self::VISITOR_IP_CLOUDFLARE, + self::VISITOR_IP_X_FORWARDED_FOR, + self::VISITOR_IP_REMOTE_ADDR, + ); + + return in_array( $source, $sources, true ) ? + $source : + ''; + } + protected function get_option_name(): string { // For back compatibility. return self::OPTION_BASE; @@ -96,10 +111,11 @@ protected function get_option_name(): string { protected function get_string_settings(): array { return array( - self::SECRET_KEY => __( 'Your Secret Key:', 'prosopo-procaptcha' ), - self::SITE_KEY => __( 'Your Site Key:', 'prosopo-procaptcha' ), - self::THEME => __( 'Theme:', 'prosopo-procaptcha' ), - self::WIDGET_LANGUAGE => __( 'Language:', 'prosopo-procaptcha' ), + self::SECRET_KEY => __( 'Your Secret Key:', 'prosopo-procaptcha' ), + self::SITE_KEY => __( 'Your Site Key:', 'prosopo-procaptcha' ), + self::THEME => __( 'Theme:', 'prosopo-procaptcha' ), + self::VISITOR_IP_MATCHING => __( 'Visitor IP matching:', 'prosopo-procaptcha' ), + self::WIDGET_LANGUAGE => __( 'Language:', 'prosopo-procaptcha' ), ); } @@ -111,18 +127,27 @@ protected function get_bool_settings(): array { protected function get_default_values(): array { return array( - self::THEME => 'light', - self::WIDGET_LANGUAGE => self::LANGUAGE_SITE, + self::THEME => 'light', + // Off, as most sites are behind a proxy such as Cloudflare: matching the wrong IP rejects real visitors. + self::VISITOR_IP_MATCHING => self::VISITOR_IP_OFF, + self::WIDGET_LANGUAGE => self::LANGUAGE_SITE, ); } protected function get_select_inputs(): array { return array( - self::THEME => array( + self::THEME => array( 'dark' => __( 'Dark', 'prosopo-procaptcha' ), 'light' => __( 'Light', 'prosopo-procaptcha' ), ), - self::WIDGET_LANGUAGE => array( + // phpcs:ignore SlevomatCodingStandard.Arrays.AlphabeticallySortedByKeys.IncorrectKeyOrder -- Off first, as it's the default. + self::VISITOR_IP_MATCHING => array( + self::VISITOR_IP_OFF => __( 'Off (recommended)', 'prosopo-procaptcha' ), + self::VISITOR_IP_CLOUDFLARE => __( 'On - site is behind Cloudflare', 'prosopo-procaptcha' ), + self::VISITOR_IP_REMOTE_ADDR => __( 'On - visitors connect directly (REMOTE_ADDR)', 'prosopo-procaptcha' ), + self::VISITOR_IP_X_FORWARDED_FOR => __( 'On - site is behind another proxy (X-Forwarded-For)', 'prosopo-procaptcha' ), + ), + self::WIDGET_LANGUAGE => array( self::LANGUAGE_SITE => __( 'Same as the site', 'prosopo-procaptcha' ), self::LANGUAGE_VISITOR => __( "Visitor's browser language", 'prosopo-procaptcha' ), ), diff --git a/prosopo-procaptcha/src/Settings/Procaptcha_Settings.php b/prosopo-procaptcha/src/Settings/Procaptcha_Settings.php index 68a9b88..7de5003 100644 --- a/prosopo-procaptcha/src/Settings/Procaptcha_Settings.php +++ b/prosopo-procaptcha/src/Settings/Procaptcha_Settings.php @@ -7,6 +7,11 @@ defined( 'ABSPATH' ) || exit; interface Procaptcha_Settings { + const VISITOR_IP_OFF = 'off'; + const VISITOR_IP_CLOUDFLARE = 'cloudflare'; + const VISITOR_IP_X_FORWARDED_FOR = 'x_forwarded_for'; + const VISITOR_IP_REMOTE_ADDR = 'remote_addr'; + public function get_site_key(): string; public function get_secret_key(): string; @@ -19,4 +24,9 @@ public function get_theme(): string; public function get_language(): string; public function should_bypass_authorized_user(): bool; + + /** + * Where the visitor IP for matching comes from (one of the VISITOR_IP_* values), or empty when matching is off. + */ + public function get_visitor_ip_source(): string; } diff --git a/prosopo-procaptcha/src/Widget/Procaptcha_Widget.php b/prosopo-procaptcha/src/Widget/Procaptcha_Widget.php index ea07e52..5ce0790 100644 --- a/prosopo-procaptcha/src/Widget/Procaptcha_Widget.php +++ b/prosopo-procaptcha/src/Widget/Procaptcha_Widget.php @@ -267,14 +267,33 @@ protected function log_verification_failure( string $details ): void { } /** - * Sent to the verification API to improve bot detection. - * REMOTE_ADDR is used as it can't be spoofed; sites behind a proxy (e.g. Cloudflare) - * can supply the real visitor IP via the filter. + * Opt-in (Visitor IP matching setting): when sent, the verification API requires the token + * to be solved from the same IP, which rejects real visitors if the wrong IP is sent, + * e.g. the proxy's address on sites behind Cloudflare. */ protected function get_visitor_ip(): string { $remote_addr = Query_Arguments::get_non_action_string( 'REMOTE_ADDR', Query_Arguments::SERVER ); - $visitor_ip = apply_filters( 'prosopo/procaptcha/visitor_ip', $remote_addr ); + switch ( $this->procaptcha_settings->get_visitor_ip_source() ) { + case Procaptcha_Settings::VISITOR_IP_CLOUDFLARE: + $visitor_ip = Query_Arguments::get_non_action_string( 'HTTP_CF_CONNECTING_IP', Query_Arguments::SERVER ); + break; + case Procaptcha_Settings::VISITOR_IP_X_FORWARDED_FOR: + $forwarded_for = Query_Arguments::get_non_action_string( 'HTTP_X_FORWARDED_FOR', Query_Arguments::SERVER ); + // The first address is the client, the rest are proxies. + $visitor_ip = trim( explode( ',', $forwarded_for )[0] ); + break; + case Procaptcha_Settings::VISITOR_IP_REMOTE_ADDR: + $visitor_ip = $remote_addr; + break; + default: + $visitor_ip = ''; + break; + } + + // Overrides the IP sent for matching, return an empty string to send none. + // Receives the IP from the Visitor IP matching setting (empty when it's off) and REMOTE_ADDR. + $visitor_ip = apply_filters( 'prosopo/procaptcha/visitor_ip', $visitor_ip, $remote_addr ); return is_string( $visitor_ip ) && false !== filter_var( $visitor_ip, FILTER_VALIDATE_IP ) ? $visitor_ip : From cda71b4d746ddb0930c0a1d4e9a62de8908cea77 Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Thu, 29 Oct 2026 15:45:23 +0000 Subject: [PATCH 3/3] Don't clear the token on widget errors The widget calls error-callback for failed background requests too (e.g. the detector bundle or frictionless calls to the provider), which don't invalidate a token the visitor already has. Clearing our custom input on those emptied valid tokens in JS-driven forms; CI hit this with Formidable whenever the provider was unreachable. Expiry and reset still clear it. Co-Authored-By: Claude Opus 5.5 --- .../integrations/procaptcha/widgetIntegrationComponent.ts | 7 ++----- prosopo-procaptcha/readme.txt | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/assets/src/integrations/procaptcha/widgetIntegrationComponent.ts b/assets/src/integrations/procaptcha/widgetIntegrationComponent.ts index 2b83e4f..2791ccb 100644 --- a/assets/src/integrations/procaptcha/widgetIntegrationComponent.ts +++ b/assets/src/integrations/procaptcha/widgetIntegrationComponent.ts @@ -161,10 +161,6 @@ class WidgetIntegrationComponent implements WebComponent { clearToken, globalAttributes["expired-callback"], ), - "error-callback": this.chainCallback( - clearToken, - globalAttributes["error-callback"], - ), "reset-callback": this.chainCallback( clearToken, globalAttributes["reset-callback"], @@ -219,7 +215,8 @@ class WidgetIntegrationComponent implements WebComponent { } /** - * Called when the token expires, the widget errors or is reset: + * Called when the token expires or the widget is reset (not on errors: those include failed + * background requests, which don't invalidate a token the visitor already has): * the Procaptcha's JS removes its own input, but the custom one must be cleared manually, * otherwise JS-based forms keep submitting a token that the server will reject. */ diff --git a/prosopo-procaptcha/readme.txt b/prosopo-procaptcha/readme.txt index 4c575c1..4a11115 100644 --- a/prosopo-procaptcha/readme.txt +++ b/prosopo-procaptcha/readme.txt @@ -159,6 +159,7 @@ Absolutely! The plugin has a [public GitHub repository](https://github.com/proso * Fix: forms that submit without reloading the page get a fresh captcha after each submission, as a solved captcha can be verified only once. Previously, resubmitting after another field failed validation was rejected. Covers Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Elementor Pro, Everest Forms, JetFormBuilder, User Registration, Beaver Builder, WooCommerce checkout and the Blocksy newsletter form * Fix: User Registration login forms with the "AJAX login" option on now send the captcha token, so logins are no longer rejected * Fix: Spectra forms send their own captcha token when a page has several Spectra forms, or a Spectra hidden field before the captcha +* Fix: a widget error, such as a failed background request to Prosopo, no longer clears a token the visitor already has from JavaScript-driven forms * Feature: public JavaScript events - `prosopo-procaptcha:filled` (with the token) and `prosopo-procaptcha:cleared` are dispatched on the widget, and dispatching `prosopo-procaptcha:reset` on a form resets its captcha * Feature: failed verifications are written to the debug log when WP_DEBUG is on, with the API's status and reason, and the new `prosopo/procaptcha/verification_result` action receives every verification response, including the score